diff --git a/analyseOTA/css/app.0571a937.css b/analyseOTA/css/app.0571a937.css new file mode 100644 index 0000000..5abff26 --- /dev/null +++ b/analyseOTA/css/app.0571a937.css @@ -0,0 +1 @@ +h3{text-align:center}.file-select>.select-button[data-v-0630c5ec]{padding:3rem;border-radius:.3rem;border:4px dashed #eaebec;text-align:center;font-weight:700;cursor:pointer}.file-select>input[type=file][data-v-0630c5ec]{display:none}.file-hover[data-v-0630c5ec]{background-color:#95e995}.url-input[data-v-0630c5ec]{border-radius:.3rem;margin-top:.5rem;width:100%}.url-invalid[data-v-0630c5ec]{border:3px solid red}.url-valid[data-v-0630c5ec]{border:3px dashed #6a9dd0}.url-valid[data-v-0630c5ec]:focus{border:3px solid #6a9dd0}ul[data-v-44174082]{padding:5px}li[data-v-44174082]{list-style-type:none}.toggle[data-v-21e569e9]{display:block;cursor:pointer}li[data-v-21e569e9]{list-style-type:none}.hex[data-v-21e569e9]{word-break:break-all}.inactive[data-v-21e569e9]:after{content:" ▶️"}.active[data-v-21e569e9]{color:rgb(var(--v-theme-secondary-darken-1))}.active[data-v-21e569e9]:after{content:" 🔽"}.new-partition[data-v-21e569e9]{color:rgb(var(--v-theme-success))}.align strong[data-v-4b9027e2]{display:inline-block;width:50%;position:relative;padding-right:10px;text-align:right}.align strong[data-v-4b9027e2]:after{content:":"}li[data-v-4b9027e2]{list-style-type:none}.wrap[data-v-4b9027e2]{width:50%;display:inline-block;white-space:pre-wrap;word-break:break-all;font-family:inherit}.signature[data-v-5dd4ca12]{overflow:scroll;height:200px;width:100%;word-break:break-all;text-align:center}.partial-info[data-v-5dd4ca12]{padding:5px}.download-btn[data-v-5dd4ca12]{text-align:center;justify-content:center;display:flex;align-content:center;margin:0 auto}ul>li[data-v-533f2336]{display:inline-block;list-style-type:none;margin-left:5%;margin-right:5%;top:0;height:50px}.chart[data-v-5d1cb486]{height:400px}.list-data[data-v-b6f71732]{text-align:center}.tooltip[data-v-b6f71732]{position:relative;display:inline-block}.tooltip .tooltiptext[data-v-b6f71732]{visibility:hidden;width:120px;background-color:#000;color:#fff;text-align:center;border-radius:6px;padding:5px 0;position:absolute;z-index:1}.tooltip:hover .tooltiptext[data-v-b6f71732]{visibility:visible}center[data-v-50c6f348]{margin:15vw}h1[data-v-50c6f348]{color:var(--border);font-size:2em} \ No newline at end of file diff --git a/analyseOTA/css/app.0cd4b717.css b/analyseOTA/css/app.0cd4b717.css new file mode 100644 index 0000000..2c293ba --- /dev/null +++ b/analyseOTA/css/app.0cd4b717.css @@ -0,0 +1 @@ +h3{text-align:center}.file-select>.select-button[data-v-0630c5ec]{padding:3rem;border-radius:.3rem;border:4px dashed #eaebec;text-align:center;font-weight:700;cursor:pointer}.file-select>input[type=file][data-v-0630c5ec]{display:none}.file-hover[data-v-0630c5ec]{background-color:#95e995}.url-input[data-v-0630c5ec]{border-radius:.3rem;margin-top:.5rem;width:100%}.url-invalid[data-v-0630c5ec]{border:3px solid red}.url-valid[data-v-0630c5ec]{border:3px dashed #6a9dd0}.url-valid[data-v-0630c5ec]:focus{border:3px solid #6a9dd0}ul[data-v-44174082]{padding:5px}li[data-v-44174082]{list-style-type:none}.toggle[data-v-6dba348a]{display:block;cursor:pointer}li[data-v-6dba348a]{list-style-type:none}.hex[data-v-6dba348a]{word-break:break-all}.inactive[data-v-6dba348a]:after{content:" ▶️"}.active[data-v-6dba348a]{color:rgb(var(--v-theme-secondary-darken-1))}.active[data-v-6dba348a]:after{content:" 🔽"}.new-partition[data-v-6dba348a]{color:rgb(var(--v-theme-success))}.align strong[data-v-24adde54]{display:inline-block;width:50%;position:relative;padding-right:10px;text-align:right}.align strong[data-v-24adde54]:after{content:":"}li[data-v-24adde54]{list-style-type:none}.wrap[data-v-24adde54]{width:50%;display:inline-block;white-space:pre-wrap;word-break:break-all;font-family:inherit}.signature[data-v-05db67f2]{overflow:scroll;height:200px;width:100%;word-break:break-all;text-align:center}.partial-info[data-v-05db67f2]{padding:5px}.download-btn[data-v-05db67f2]{text-align:center;justify-content:center;display:flex;align-content:center;margin:0 auto}ul>li[data-v-533f2336]{display:inline-block;list-style-type:none;margin-left:5%;margin-right:5%;top:0;height:50px}.chart[data-v-5d1cb486]{height:400px}.list-data[data-v-44b569bd]{text-align:center}.tooltip[data-v-44b569bd]{position:relative;display:inline-block}.tooltip .tooltiptext[data-v-44b569bd]{visibility:hidden;width:120px;background-color:#000;color:#fff;text-align:center;border-radius:6px;padding:5px 0;position:absolute;z-index:1}.tooltip:hover .tooltiptext[data-v-44b569bd]{visibility:visible}center[data-v-50c6f348]{margin:15vw}h1[data-v-50c6f348]{color:var(--border);font-size:2em} \ No newline at end of file diff --git a/analyseOTA/css/app.1bd0b109.css b/analyseOTA/css/app.1bd0b109.css new file mode 100644 index 0000000..15eebbc --- /dev/null +++ b/analyseOTA/css/app.1bd0b109.css @@ -0,0 +1 @@ +h3{text-align:center}.file-select>.select-button[data-v-0630c5ec]{padding:3rem;border-radius:.3rem;border:4px dashed #eaebec;text-align:center;font-weight:700;cursor:pointer}.file-select>input[type=file][data-v-0630c5ec]{display:none}.file-hover[data-v-0630c5ec]{background-color:#95e995}.url-input[data-v-0630c5ec]{border-radius:.3rem;margin-top:.5rem;width:100%}.url-invalid[data-v-0630c5ec]{border:3px solid red}.url-valid[data-v-0630c5ec]{border:3px dashed #6a9dd0}.url-valid[data-v-0630c5ec]:focus{border:3px solid #6a9dd0}ul[data-v-44174082]{padding:5px}li[data-v-44174082]{list-style-type:none}.toggle[data-v-6dba348a]{display:block;cursor:pointer}li[data-v-6dba348a]{list-style-type:none}.hex[data-v-6dba348a]{word-break:break-all}.inactive[data-v-6dba348a]:after{content:" ▶️"}.active[data-v-6dba348a]{color:rgb(var(--v-theme-secondary-darken-1))}.active[data-v-6dba348a]:after{content:" 🔽"}.new-partition[data-v-6dba348a]{color:rgb(var(--v-theme-success))}.align strong[data-v-7df356bf]{display:inline-block;width:50%;position:relative;padding-right:10px;text-align:right}.align strong[data-v-7df356bf]:after{content:":"}li[data-v-7df356bf]{list-style-type:none}.wrap[data-v-7df356bf]{width:50%;display:inline-block;white-space:pre-wrap;word-break:break-all;font-family:inherit}.signature[data-v-05db67f2]{overflow:scroll;height:200px;width:100%;word-break:break-all;text-align:center}.partial-info[data-v-05db67f2]{padding:5px}.download-btn[data-v-05db67f2]{text-align:center;justify-content:center;display:flex;align-content:center;margin:0 auto}ul>li[data-v-533f2336]{display:inline-block;list-style-type:none;margin-left:5%;margin-right:5%;top:0;height:50px}.chart[data-v-5d1cb486]{height:400px}.list-data[data-v-44b569bd]{text-align:center}.tooltip[data-v-44b569bd]{position:relative;display:inline-block}.tooltip .tooltiptext[data-v-44b569bd]{visibility:hidden;width:120px;background-color:#000;color:#fff;text-align:center;border-radius:6px;padding:5px 0;position:absolute;z-index:1}.tooltip:hover .tooltiptext[data-v-44b569bd]{visibility:visible}center[data-v-50c6f348]{margin:15vw}h1[data-v-50c6f348]{color:var(--border);font-size:2em} \ No newline at end of file diff --git a/analyseOTA/css/app.3049ab47.css b/analyseOTA/css/app.3049ab47.css new file mode 100644 index 0000000..c325b79 --- /dev/null +++ b/analyseOTA/css/app.3049ab47.css @@ -0,0 +1 @@ +h3{text-align:center}.file-select>.select-button[data-v-0630c5ec]{padding:3rem;border-radius:.3rem;border:4px dashed #eaebec;text-align:center;font-weight:700;cursor:pointer}.file-select>input[type=file][data-v-0630c5ec]{display:none}.file-hover[data-v-0630c5ec]{background-color:#95e995}.url-input[data-v-0630c5ec]{border-radius:.3rem;margin-top:.5rem;width:100%}.url-invalid[data-v-0630c5ec]{border:3px solid red}.url-valid[data-v-0630c5ec]{border:3px dashed #6a9dd0}.url-valid[data-v-0630c5ec]:focus{border:3px solid #6a9dd0}ul[data-v-44174082]{padding:5px}li[data-v-44174082]{list-style-type:none}.toggle[data-v-21e569e9]{display:block;cursor:pointer}li[data-v-21e569e9]{list-style-type:none}.hex[data-v-21e569e9]{word-break:break-all}.inactive[data-v-21e569e9]:after{content:" ▶️"}.active[data-v-21e569e9]{color:rgb(var(--v-theme-secondary-darken-1))}.active[data-v-21e569e9]:after{content:" 🔽"}.new-partition[data-v-21e569e9]{color:rgb(var(--v-theme-success))}.align strong[data-v-78cae893]{display:inline-block;width:50%;position:relative;padding-right:10px;text-align:right}.align strong[data-v-78cae893]:after{content:":"}li[data-v-78cae893]{list-style-type:none}.wrap[data-v-78cae893]{width:50%;display:inline-block;white-space:pre-wrap;word-break:break-all;font-family:inherit}.signature[data-v-5dd4ca12]{overflow:scroll;height:200px;width:100%;word-break:break-all;text-align:center}.partial-info[data-v-5dd4ca12]{padding:5px}.download-btn[data-v-5dd4ca12]{text-align:center;justify-content:center;display:flex;align-content:center;margin:0 auto}ul>li[data-v-533f2336]{display:inline-block;list-style-type:none;margin-left:5%;margin-right:5%;top:0;height:50px}.chart[data-v-5d1cb486]{height:400px}.list-data[data-v-4d98493f]{text-align:center}.tooltip[data-v-4d98493f]{position:relative;display:inline-block}.tooltip .tooltiptext[data-v-4d98493f]{visibility:hidden;width:120px;background-color:#000;color:#fff;text-align:center;border-radius:6px;padding:5px 0;position:absolute;z-index:1}.tooltip:hover .tooltiptext[data-v-4d98493f]{visibility:visible}center[data-v-50c6f348]{margin:15vw}h1[data-v-50c6f348]{color:var(--border);font-size:2em} \ No newline at end of file diff --git a/analyseOTA/css/app.46edfe9e.css b/analyseOTA/css/app.46edfe9e.css new file mode 100644 index 0000000..109ead4 --- /dev/null +++ b/analyseOTA/css/app.46edfe9e.css @@ -0,0 +1 @@ +h3{text-align:center}.file-select>.select-button[data-v-0630c5ec]{padding:3rem;border-radius:.3rem;border:4px dashed #eaebec;text-align:center;font-weight:700;cursor:pointer}.file-select>input[type=file][data-v-0630c5ec]{display:none}.file-hover[data-v-0630c5ec]{background-color:#95e995}.url-input[data-v-0630c5ec]{border-radius:.3rem;margin-top:.5rem;width:100%}.url-invalid[data-v-0630c5ec]{border:3px solid red}.url-valid[data-v-0630c5ec]{border:3px dashed #6a9dd0}.url-valid[data-v-0630c5ec]:focus{border:3px solid #6a9dd0}ul[data-v-44174082]{padding:5px}li[data-v-44174082]{list-style-type:none}.toggle[data-v-6dba348a]{display:block;cursor:pointer}li[data-v-6dba348a]{list-style-type:none}.hex[data-v-6dba348a]{word-break:break-all}.inactive[data-v-6dba348a]:after{content:" ▶️"}.active[data-v-6dba348a]{color:rgb(var(--v-theme-secondary-darken-1))}.active[data-v-6dba348a]:after{content:" 🔽"}.new-partition[data-v-6dba348a]{color:rgb(var(--v-theme-success))}.align strong[data-v-0514c264]{display:inline-block;width:50%;position:relative;padding-right:10px;text-align:right}.align strong[data-v-0514c264]:after{content:":"}li[data-v-0514c264]{list-style-type:none}.wrap[data-v-0514c264]{width:50%;display:inline-block;white-space:pre-wrap;word-break:break-all;font-family:inherit}.signature[data-v-05db67f2]{overflow:scroll;height:200px;width:100%;word-break:break-all;text-align:center}.partial-info[data-v-05db67f2]{padding:5px}.download-btn[data-v-05db67f2]{text-align:center;justify-content:center;display:flex;align-content:center;margin:0 auto}ul>li[data-v-533f2336]{display:inline-block;list-style-type:none;margin-left:5%;margin-right:5%;top:0;height:50px}.chart[data-v-5d1cb486]{height:400px}.list-data[data-v-44b569bd]{text-align:center}.tooltip[data-v-44b569bd]{position:relative;display:inline-block}.tooltip .tooltiptext[data-v-44b569bd]{visibility:hidden;width:120px;background-color:#000;color:#fff;text-align:center;border-radius:6px;padding:5px 0;position:absolute;z-index:1}.tooltip:hover .tooltiptext[data-v-44b569bd]{visibility:visible}center[data-v-50c6f348]{margin:15vw}h1[data-v-50c6f348]{color:var(--border);font-size:2em} \ No newline at end of file diff --git a/analyseOTA/css/app.5c6a5388.css b/analyseOTA/css/app.5c6a5388.css new file mode 100644 index 0000000..844b0b8 --- /dev/null +++ b/analyseOTA/css/app.5c6a5388.css @@ -0,0 +1 @@ +h3{text-align:center}.file-select>.select-button[data-v-0630c5ec]{padding:3rem;border-radius:.3rem;border:4px dashed #eaebec;text-align:center;font-weight:700;cursor:pointer}.file-select>input[type=file][data-v-0630c5ec]{display:none}.file-hover[data-v-0630c5ec]{background-color:#95e995}.url-input[data-v-0630c5ec]{border-radius:.3rem;margin-top:.5rem;width:100%}.url-invalid[data-v-0630c5ec]{border:3px solid red}.url-valid[data-v-0630c5ec]{border:3px dashed #6a9dd0}.url-valid[data-v-0630c5ec]:focus{border:3px solid #6a9dd0}ul[data-v-44174082]{padding:5px}li[data-v-44174082]{list-style-type:none}.toggle[data-v-6dba348a]{display:block;cursor:pointer}li[data-v-6dba348a]{list-style-type:none}.hex[data-v-6dba348a]{word-break:break-all}.inactive[data-v-6dba348a]:after{content:" ▶️"}.active[data-v-6dba348a]{color:rgb(var(--v-theme-secondary-darken-1))}.active[data-v-6dba348a]:after{content:" 🔽"}.new-partition[data-v-6dba348a]{color:rgb(var(--v-theme-success))}.align strong[data-v-24adde54]{display:inline-block;width:50%;position:relative;padding-right:10px;text-align:right}.align strong[data-v-24adde54]:after{content:":"}li[data-v-24adde54]{list-style-type:none}.wrap[data-v-24adde54]{width:50%;display:inline-block;white-space:pre-wrap;word-break:break-all;font-family:inherit}.signature[data-v-05db67f2]{overflow:scroll;height:200px;width:100%;word-break:break-all;text-align:center}.partial-info[data-v-05db67f2]{padding:5px}.download-btn[data-v-05db67f2]{text-align:center;justify-content:center;display:flex;align-content:center;margin:0 auto}ul>li[data-v-533f2336]{display:inline-block;list-style-type:none;margin-left:5%;margin-right:5%;top:0;height:50px}.chart[data-v-5d1cb486]{height:400px}.list-data[data-v-b6f71732]{text-align:center}.tooltip[data-v-b6f71732]{position:relative;display:inline-block}.tooltip .tooltiptext[data-v-b6f71732]{visibility:hidden;width:120px;background-color:#000;color:#fff;text-align:center;border-radius:6px;padding:5px 0;position:absolute;z-index:1}.tooltip:hover .tooltiptext[data-v-b6f71732]{visibility:visible}center[data-v-50c6f348]{margin:15vw}h1[data-v-50c6f348]{color:var(--border);font-size:2em} \ No newline at end of file diff --git a/analyseOTA/css/app.b8cf1bf8.css b/analyseOTA/css/app.b8cf1bf8.css new file mode 100644 index 0000000..3e665eb --- /dev/null +++ b/analyseOTA/css/app.b8cf1bf8.css @@ -0,0 +1 @@ +h3{text-align:center}.file-select>.select-button[data-v-0630c5ec]{padding:3rem;border-radius:.3rem;border:4px dashed #eaebec;text-align:center;font-weight:700;cursor:pointer}.file-select>input[type=file][data-v-0630c5ec]{display:none}.file-hover[data-v-0630c5ec]{background-color:#95e995}.url-input[data-v-0630c5ec]{border-radius:.3rem;margin-top:.5rem;width:100%}.url-invalid[data-v-0630c5ec]{border:3px solid red}.url-valid[data-v-0630c5ec]{border:3px dashed #6a9dd0}.url-valid[data-v-0630c5ec]:focus{border:3px solid #6a9dd0}ul[data-v-44174082]{padding:5px}li[data-v-44174082]{list-style-type:none}.toggle[data-v-21e569e9]{display:block;cursor:pointer}li[data-v-21e569e9]{list-style-type:none}.hex[data-v-21e569e9]{word-break:break-all}.inactive[data-v-21e569e9]:after{content:" ▶️"}.active[data-v-21e569e9]{color:rgb(var(--v-theme-secondary-darken-1))}.active[data-v-21e569e9]:after{content:" 🔽"}.new-partition[data-v-21e569e9]{color:rgb(var(--v-theme-success))}.align strong[data-v-149f2bbc]{display:inline-block;width:50%;position:relative;padding-right:10px;text-align:right}.align strong[data-v-149f2bbc]:after{content:":"}li[data-v-149f2bbc]{list-style-type:none}.wrap[data-v-149f2bbc]{width:50%;display:inline-block;white-space:pre-wrap;word-break:break-all;font-family:inherit}.signature[data-v-5dd4ca12]{overflow:scroll;height:200px;width:100%;word-break:break-all;text-align:center}.partial-info[data-v-5dd4ca12]{padding:5px}.download-btn[data-v-5dd4ca12]{text-align:center;justify-content:center;display:flex;align-content:center;margin:0 auto}ul>li[data-v-533f2336]{display:inline-block;list-style-type:none;margin-left:5%;margin-right:5%;top:0;height:50px}.chart[data-v-5d1cb486]{height:400px}.list-data[data-v-20303229]{text-align:center}.tooltip[data-v-20303229]{position:relative;display:inline-block}.tooltip .tooltiptext[data-v-20303229]{visibility:hidden;width:120px;background-color:#000;color:#fff;text-align:center;border-radius:6px;padding:5px 0;position:absolute;z-index:1}.tooltip:hover .tooltiptext[data-v-20303229]{visibility:visible}center[data-v-50c6f348]{margin:15vw}h1[data-v-50c6f348]{color:var(--border);font-size:2em} \ No newline at end of file diff --git a/analyseOTA/css/app.d085fe3a.css b/analyseOTA/css/app.d085fe3a.css new file mode 100644 index 0000000..82e9fc2 --- /dev/null +++ b/analyseOTA/css/app.d085fe3a.css @@ -0,0 +1 @@ +h3{text-align:center}.file-select>.select-button[data-v-0630c5ec]{padding:3rem;border-radius:.3rem;border:4px dashed #eaebec;text-align:center;font-weight:700;cursor:pointer}.file-select>input[type=file][data-v-0630c5ec]{display:none}.file-hover[data-v-0630c5ec]{background-color:#95e995}.url-input[data-v-0630c5ec]{border-radius:.3rem;margin-top:.5rem;width:100%}.url-invalid[data-v-0630c5ec]{border:3px solid red}.url-valid[data-v-0630c5ec]{border:3px dashed #6a9dd0}.url-valid[data-v-0630c5ec]:focus{border:3px solid #6a9dd0}ul[data-v-44174082]{padding:5px}li[data-v-44174082]{list-style-type:none}.toggle[data-v-6dba348a]{display:block;cursor:pointer}li[data-v-6dba348a]{list-style-type:none}.hex[data-v-6dba348a]{word-break:break-all}.inactive[data-v-6dba348a]:after{content:" ▶️"}.active[data-v-6dba348a]{color:rgb(var(--v-theme-secondary-darken-1))}.active[data-v-6dba348a]:after{content:" 🔽"}.new-partition[data-v-6dba348a]{color:rgb(var(--v-theme-success))}.align strong[data-v-62f2be1b]{display:inline-block;width:50%;position:relative;padding-right:10px;text-align:right}.align strong[data-v-62f2be1b]:after{content:":"}li[data-v-62f2be1b]{list-style-type:none}.wrap[data-v-62f2be1b]{width:50%;display:inline-block;white-space:pre-wrap;word-break:break-all;font-family:inherit}.signature[data-v-05db67f2]{overflow:scroll;height:200px;width:100%;word-break:break-all;text-align:center}.partial-info[data-v-05db67f2]{padding:5px}.download-btn[data-v-05db67f2]{text-align:center;justify-content:center;display:flex;align-content:center;margin:0 auto}ul>li[data-v-533f2336]{display:inline-block;list-style-type:none;margin-left:5%;margin-right:5%;top:0;height:50px}.chart[data-v-5d1cb486]{height:400px}.list-data[data-v-44b569bd]{text-align:center}.tooltip[data-v-44b569bd]{position:relative;display:inline-block}.tooltip .tooltiptext[data-v-44b569bd]{visibility:hidden;width:120px;background-color:#000;color:#fff;text-align:center;border-radius:6px;padding:5px 0;position:absolute;z-index:1}.tooltip:hover .tooltiptext[data-v-44b569bd]{visibility:visible}center[data-v-50c6f348]{margin:15vw}h1[data-v-50c6f348]{color:var(--border);font-size:2em} \ No newline at end of file diff --git a/analyseOTA/css/app.d58e1a7f.css b/analyseOTA/css/app.d58e1a7f.css new file mode 100644 index 0000000..a932396 --- /dev/null +++ b/analyseOTA/css/app.d58e1a7f.css @@ -0,0 +1 @@ +h3{text-align:center}.file-select>.select-button[data-v-0630c5ec]{padding:3rem;border-radius:.3rem;border:4px dashed #eaebec;text-align:center;font-weight:700;cursor:pointer}.file-select>input[type=file][data-v-0630c5ec]{display:none}.file-hover[data-v-0630c5ec]{background-color:#95e995}.url-input[data-v-0630c5ec]{border-radius:.3rem;margin-top:.5rem;width:100%}.url-invalid[data-v-0630c5ec]{border:3px solid red}.url-valid[data-v-0630c5ec]{border:3px dashed #6a9dd0}.url-valid[data-v-0630c5ec]:focus{border:3px solid #6a9dd0}ul[data-v-44174082]{padding:5px}li[data-v-44174082]{list-style-type:none}.toggle[data-v-21e569e9]{display:block;cursor:pointer}li[data-v-21e569e9]{list-style-type:none}.hex[data-v-21e569e9]{word-break:break-all}.inactive[data-v-21e569e9]:after{content:" ▶️"}.active[data-v-21e569e9]{color:rgb(var(--v-theme-secondary-darken-1))}.active[data-v-21e569e9]:after{content:" 🔽"}.new-partition[data-v-21e569e9]{color:rgb(var(--v-theme-success))}.align strong[data-v-4b9027e2]{display:inline-block;width:50%;position:relative;padding-right:10px;text-align:right}.align strong[data-v-4b9027e2]:after{content:":"}li[data-v-4b9027e2]{list-style-type:none}.wrap[data-v-4b9027e2]{width:50%;display:inline-block;white-space:pre-wrap;word-break:break-all;font-family:inherit}.signature[data-v-05db67f2]{overflow:scroll;height:200px;width:100%;word-break:break-all;text-align:center}.partial-info[data-v-05db67f2]{padding:5px}.download-btn[data-v-05db67f2]{text-align:center;justify-content:center;display:flex;align-content:center;margin:0 auto}ul>li[data-v-533f2336]{display:inline-block;list-style-type:none;margin-left:5%;margin-right:5%;top:0;height:50px}.chart[data-v-5d1cb486]{height:400px}.list-data[data-v-b6f71732]{text-align:center}.tooltip[data-v-b6f71732]{position:relative;display:inline-block}.tooltip .tooltiptext[data-v-b6f71732]{visibility:hidden;width:120px;background-color:#000;color:#fff;text-align:center;border-radius:6px;padding:5px 0;position:absolute;z-index:1}.tooltip:hover .tooltiptext[data-v-b6f71732]{visibility:visible}center[data-v-50c6f348]{margin:15vw}h1[data-v-50c6f348]{color:var(--border);font-size:2em} \ No newline at end of file diff --git a/analyseOTA/css/chunk-vendors.1a75245f.css b/analyseOTA/css/chunk-vendors.1a75245f.css new file mode 100644 index 0000000..8d69eeb --- /dev/null +++ b/analyseOTA/css/chunk-vendors.1a75245f.css @@ -0,0 +1,5 @@ +@keyframes v-shake{59%{margin-left:0}60%,80%{margin-left:2px}70%,90%{margin-left:-2px}}.bg-black{background-color:#000!important;border-color:#000!important}.text-black{color:#000!important;caret-color:#000!important}.bg-white{background-color:#fff!important;border-color:#fff!important}.text-white{color:#fff!important;caret-color:#fff!important}.bg-transparent{background-color:transparent!important;border-color:transparent!important}.text-transparent{color:transparent!important;caret-color:transparent!important}.bg-red{background-color:#f44336!important;border-color:#f44336!important}.text-red{color:#f44336!important;caret-color:#f44336!important}.bg-red-lighten-5{background-color:#ffebee!important;border-color:#ffebee!important}.text-red-lighten-5{color:#ffebee!important;caret-color:#ffebee!important}.bg-red-lighten-4{background-color:#ffcdd2!important;border-color:#ffcdd2!important}.text-red-lighten-4{color:#ffcdd2!important;caret-color:#ffcdd2!important}.bg-red-lighten-3{background-color:#ef9a9a!important;border-color:#ef9a9a!important}.text-red-lighten-3{color:#ef9a9a!important;caret-color:#ef9a9a!important}.bg-red-lighten-2{background-color:#e57373!important;border-color:#e57373!important}.text-red-lighten-2{color:#e57373!important;caret-color:#e57373!important}.bg-red-lighten-1{background-color:#ef5350!important;border-color:#ef5350!important}.text-red-lighten-1{color:#ef5350!important;caret-color:#ef5350!important}.bg-red-darken-1{background-color:#e53935!important;border-color:#e53935!important}.text-red-darken-1{color:#e53935!important;caret-color:#e53935!important}.bg-red-darken-2{background-color:#d32f2f!important;border-color:#d32f2f!important}.text-red-darken-2{color:#d32f2f!important;caret-color:#d32f2f!important}.bg-red-darken-3{background-color:#c62828!important;border-color:#c62828!important}.text-red-darken-3{color:#c62828!important;caret-color:#c62828!important}.bg-red-darken-4{background-color:#b71c1c!important;border-color:#b71c1c!important}.text-red-darken-4{color:#b71c1c!important;caret-color:#b71c1c!important}.bg-red-accent-1{background-color:#ff8a80!important;border-color:#ff8a80!important}.text-red-accent-1{color:#ff8a80!important;caret-color:#ff8a80!important}.bg-red-accent-2{background-color:#ff5252!important;border-color:#ff5252!important}.text-red-accent-2{color:#ff5252!important;caret-color:#ff5252!important}.bg-red-accent-3{background-color:#ff1744!important;border-color:#ff1744!important}.text-red-accent-3{color:#ff1744!important;caret-color:#ff1744!important}.bg-red-accent-4{background-color:#d50000!important;border-color:#d50000!important}.text-red-accent-4{color:#d50000!important;caret-color:#d50000!important}.bg-pink{background-color:#e91e63!important;border-color:#e91e63!important}.text-pink{color:#e91e63!important;caret-color:#e91e63!important}.bg-pink-lighten-5{background-color:#fce4ec!important;border-color:#fce4ec!important}.text-pink-lighten-5{color:#fce4ec!important;caret-color:#fce4ec!important}.bg-pink-lighten-4{background-color:#f8bbd0!important;border-color:#f8bbd0!important}.text-pink-lighten-4{color:#f8bbd0!important;caret-color:#f8bbd0!important}.bg-pink-lighten-3{background-color:#f48fb1!important;border-color:#f48fb1!important}.text-pink-lighten-3{color:#f48fb1!important;caret-color:#f48fb1!important}.bg-pink-lighten-2{background-color:#f06292!important;border-color:#f06292!important}.text-pink-lighten-2{color:#f06292!important;caret-color:#f06292!important}.bg-pink-lighten-1{background-color:#ec407a!important;border-color:#ec407a!important}.text-pink-lighten-1{color:#ec407a!important;caret-color:#ec407a!important}.bg-pink-darken-1{background-color:#d81b60!important;border-color:#d81b60!important}.text-pink-darken-1{color:#d81b60!important;caret-color:#d81b60!important}.bg-pink-darken-2{background-color:#c2185b!important;border-color:#c2185b!important}.text-pink-darken-2{color:#c2185b!important;caret-color:#c2185b!important}.bg-pink-darken-3{background-color:#ad1457!important;border-color:#ad1457!important}.text-pink-darken-3{color:#ad1457!important;caret-color:#ad1457!important}.bg-pink-darken-4{background-color:#880e4f!important;border-color:#880e4f!important}.text-pink-darken-4{color:#880e4f!important;caret-color:#880e4f!important}.bg-pink-accent-1{background-color:#ff80ab!important;border-color:#ff80ab!important}.text-pink-accent-1{color:#ff80ab!important;caret-color:#ff80ab!important}.bg-pink-accent-2{background-color:#ff4081!important;border-color:#ff4081!important}.text-pink-accent-2{color:#ff4081!important;caret-color:#ff4081!important}.bg-pink-accent-3{background-color:#f50057!important;border-color:#f50057!important}.text-pink-accent-3{color:#f50057!important;caret-color:#f50057!important}.bg-pink-accent-4{background-color:#c51162!important;border-color:#c51162!important}.text-pink-accent-4{color:#c51162!important;caret-color:#c51162!important}.bg-purple{background-color:#9c27b0!important;border-color:#9c27b0!important}.text-purple{color:#9c27b0!important;caret-color:#9c27b0!important}.bg-purple-lighten-5{background-color:#f3e5f5!important;border-color:#f3e5f5!important}.text-purple-lighten-5{color:#f3e5f5!important;caret-color:#f3e5f5!important}.bg-purple-lighten-4{background-color:#e1bee7!important;border-color:#e1bee7!important}.text-purple-lighten-4{color:#e1bee7!important;caret-color:#e1bee7!important}.bg-purple-lighten-3{background-color:#ce93d8!important;border-color:#ce93d8!important}.text-purple-lighten-3{color:#ce93d8!important;caret-color:#ce93d8!important}.bg-purple-lighten-2{background-color:#ba68c8!important;border-color:#ba68c8!important}.text-purple-lighten-2{color:#ba68c8!important;caret-color:#ba68c8!important}.bg-purple-lighten-1{background-color:#ab47bc!important;border-color:#ab47bc!important}.text-purple-lighten-1{color:#ab47bc!important;caret-color:#ab47bc!important}.bg-purple-darken-1{background-color:#8e24aa!important;border-color:#8e24aa!important}.text-purple-darken-1{color:#8e24aa!important;caret-color:#8e24aa!important}.bg-purple-darken-2{background-color:#7b1fa2!important;border-color:#7b1fa2!important}.text-purple-darken-2{color:#7b1fa2!important;caret-color:#7b1fa2!important}.bg-purple-darken-3{background-color:#6a1b9a!important;border-color:#6a1b9a!important}.text-purple-darken-3{color:#6a1b9a!important;caret-color:#6a1b9a!important}.bg-purple-darken-4{background-color:#4a148c!important;border-color:#4a148c!important}.text-purple-darken-4{color:#4a148c!important;caret-color:#4a148c!important}.bg-purple-accent-1{background-color:#ea80fc!important;border-color:#ea80fc!important}.text-purple-accent-1{color:#ea80fc!important;caret-color:#ea80fc!important}.bg-purple-accent-2{background-color:#e040fb!important;border-color:#e040fb!important}.text-purple-accent-2{color:#e040fb!important;caret-color:#e040fb!important}.bg-purple-accent-3{background-color:#d500f9!important;border-color:#d500f9!important}.text-purple-accent-3{color:#d500f9!important;caret-color:#d500f9!important}.bg-purple-accent-4{background-color:#a0f!important;border-color:#a0f!important}.text-purple-accent-4{color:#a0f!important;caret-color:#a0f!important}.bg-deep-purple{background-color:#673ab7!important;border-color:#673ab7!important}.text-deep-purple{color:#673ab7!important;caret-color:#673ab7!important}.bg-deep-purple-lighten-5{background-color:#ede7f6!important;border-color:#ede7f6!important}.text-deep-purple-lighten-5{color:#ede7f6!important;caret-color:#ede7f6!important}.bg-deep-purple-lighten-4{background-color:#d1c4e9!important;border-color:#d1c4e9!important}.text-deep-purple-lighten-4{color:#d1c4e9!important;caret-color:#d1c4e9!important}.bg-deep-purple-lighten-3{background-color:#b39ddb!important;border-color:#b39ddb!important}.text-deep-purple-lighten-3{color:#b39ddb!important;caret-color:#b39ddb!important}.bg-deep-purple-lighten-2{background-color:#9575cd!important;border-color:#9575cd!important}.text-deep-purple-lighten-2{color:#9575cd!important;caret-color:#9575cd!important}.bg-deep-purple-lighten-1{background-color:#7e57c2!important;border-color:#7e57c2!important}.text-deep-purple-lighten-1{color:#7e57c2!important;caret-color:#7e57c2!important}.bg-deep-purple-darken-1{background-color:#5e35b1!important;border-color:#5e35b1!important}.text-deep-purple-darken-1{color:#5e35b1!important;caret-color:#5e35b1!important}.bg-deep-purple-darken-2{background-color:#512da8!important;border-color:#512da8!important}.text-deep-purple-darken-2{color:#512da8!important;caret-color:#512da8!important}.bg-deep-purple-darken-3{background-color:#4527a0!important;border-color:#4527a0!important}.text-deep-purple-darken-3{color:#4527a0!important;caret-color:#4527a0!important}.bg-deep-purple-darken-4{background-color:#311b92!important;border-color:#311b92!important}.text-deep-purple-darken-4{color:#311b92!important;caret-color:#311b92!important}.bg-deep-purple-accent-1{background-color:#b388ff!important;border-color:#b388ff!important}.text-deep-purple-accent-1{color:#b388ff!important;caret-color:#b388ff!important}.bg-deep-purple-accent-2{background-color:#7c4dff!important;border-color:#7c4dff!important}.text-deep-purple-accent-2{color:#7c4dff!important;caret-color:#7c4dff!important}.bg-deep-purple-accent-3{background-color:#651fff!important;border-color:#651fff!important}.text-deep-purple-accent-3{color:#651fff!important;caret-color:#651fff!important}.bg-deep-purple-accent-4{background-color:#6200ea!important;border-color:#6200ea!important}.text-deep-purple-accent-4{color:#6200ea!important;caret-color:#6200ea!important}.bg-indigo{background-color:#3f51b5!important;border-color:#3f51b5!important}.text-indigo{color:#3f51b5!important;caret-color:#3f51b5!important}.bg-indigo-lighten-5{background-color:#e8eaf6!important;border-color:#e8eaf6!important}.text-indigo-lighten-5{color:#e8eaf6!important;caret-color:#e8eaf6!important}.bg-indigo-lighten-4{background-color:#c5cae9!important;border-color:#c5cae9!important}.text-indigo-lighten-4{color:#c5cae9!important;caret-color:#c5cae9!important}.bg-indigo-lighten-3{background-color:#9fa8da!important;border-color:#9fa8da!important}.text-indigo-lighten-3{color:#9fa8da!important;caret-color:#9fa8da!important}.bg-indigo-lighten-2{background-color:#7986cb!important;border-color:#7986cb!important}.text-indigo-lighten-2{color:#7986cb!important;caret-color:#7986cb!important}.bg-indigo-lighten-1{background-color:#5c6bc0!important;border-color:#5c6bc0!important}.text-indigo-lighten-1{color:#5c6bc0!important;caret-color:#5c6bc0!important}.bg-indigo-darken-1{background-color:#3949ab!important;border-color:#3949ab!important}.text-indigo-darken-1{color:#3949ab!important;caret-color:#3949ab!important}.bg-indigo-darken-2{background-color:#303f9f!important;border-color:#303f9f!important}.text-indigo-darken-2{color:#303f9f!important;caret-color:#303f9f!important}.bg-indigo-darken-3{background-color:#283593!important;border-color:#283593!important}.text-indigo-darken-3{color:#283593!important;caret-color:#283593!important}.bg-indigo-darken-4{background-color:#1a237e!important;border-color:#1a237e!important}.text-indigo-darken-4{color:#1a237e!important;caret-color:#1a237e!important}.bg-indigo-accent-1{background-color:#8c9eff!important;border-color:#8c9eff!important}.text-indigo-accent-1{color:#8c9eff!important;caret-color:#8c9eff!important}.bg-indigo-accent-2{background-color:#536dfe!important;border-color:#536dfe!important}.text-indigo-accent-2{color:#536dfe!important;caret-color:#536dfe!important}.bg-indigo-accent-3{background-color:#3d5afe!important;border-color:#3d5afe!important}.text-indigo-accent-3{color:#3d5afe!important;caret-color:#3d5afe!important}.bg-indigo-accent-4{background-color:#304ffe!important;border-color:#304ffe!important}.text-indigo-accent-4{color:#304ffe!important;caret-color:#304ffe!important}.bg-blue{background-color:#2196f3!important;border-color:#2196f3!important}.text-blue{color:#2196f3!important;caret-color:#2196f3!important}.bg-blue-lighten-5{background-color:#e3f2fd!important;border-color:#e3f2fd!important}.text-blue-lighten-5{color:#e3f2fd!important;caret-color:#e3f2fd!important}.bg-blue-lighten-4{background-color:#bbdefb!important;border-color:#bbdefb!important}.text-blue-lighten-4{color:#bbdefb!important;caret-color:#bbdefb!important}.bg-blue-lighten-3{background-color:#90caf9!important;border-color:#90caf9!important}.text-blue-lighten-3{color:#90caf9!important;caret-color:#90caf9!important}.bg-blue-lighten-2{background-color:#64b5f6!important;border-color:#64b5f6!important}.text-blue-lighten-2{color:#64b5f6!important;caret-color:#64b5f6!important}.bg-blue-lighten-1{background-color:#42a5f5!important;border-color:#42a5f5!important}.text-blue-lighten-1{color:#42a5f5!important;caret-color:#42a5f5!important}.bg-blue-darken-1{background-color:#1e88e5!important;border-color:#1e88e5!important}.text-blue-darken-1{color:#1e88e5!important;caret-color:#1e88e5!important}.bg-blue-darken-2{background-color:#1976d2!important;border-color:#1976d2!important}.text-blue-darken-2{color:#1976d2!important;caret-color:#1976d2!important}.bg-blue-darken-3{background-color:#1565c0!important;border-color:#1565c0!important}.text-blue-darken-3{color:#1565c0!important;caret-color:#1565c0!important}.bg-blue-darken-4{background-color:#0d47a1!important;border-color:#0d47a1!important}.text-blue-darken-4{color:#0d47a1!important;caret-color:#0d47a1!important}.bg-blue-accent-1{background-color:#82b1ff!important;border-color:#82b1ff!important}.text-blue-accent-1{color:#82b1ff!important;caret-color:#82b1ff!important}.bg-blue-accent-2{background-color:#448aff!important;border-color:#448aff!important}.text-blue-accent-2{color:#448aff!important;caret-color:#448aff!important}.bg-blue-accent-3{background-color:#2979ff!important;border-color:#2979ff!important}.text-blue-accent-3{color:#2979ff!important;caret-color:#2979ff!important}.bg-blue-accent-4{background-color:#2962ff!important;border-color:#2962ff!important}.text-blue-accent-4{color:#2962ff!important;caret-color:#2962ff!important}.bg-light-blue{background-color:#03a9f4!important;border-color:#03a9f4!important}.text-light-blue{color:#03a9f4!important;caret-color:#03a9f4!important}.bg-light-blue-lighten-5{background-color:#e1f5fe!important;border-color:#e1f5fe!important}.text-light-blue-lighten-5{color:#e1f5fe!important;caret-color:#e1f5fe!important}.bg-light-blue-lighten-4{background-color:#b3e5fc!important;border-color:#b3e5fc!important}.text-light-blue-lighten-4{color:#b3e5fc!important;caret-color:#b3e5fc!important}.bg-light-blue-lighten-3{background-color:#81d4fa!important;border-color:#81d4fa!important}.text-light-blue-lighten-3{color:#81d4fa!important;caret-color:#81d4fa!important}.bg-light-blue-lighten-2{background-color:#4fc3f7!important;border-color:#4fc3f7!important}.text-light-blue-lighten-2{color:#4fc3f7!important;caret-color:#4fc3f7!important}.bg-light-blue-lighten-1{background-color:#29b6f6!important;border-color:#29b6f6!important}.text-light-blue-lighten-1{color:#29b6f6!important;caret-color:#29b6f6!important}.bg-light-blue-darken-1{background-color:#039be5!important;border-color:#039be5!important}.text-light-blue-darken-1{color:#039be5!important;caret-color:#039be5!important}.bg-light-blue-darken-2{background-color:#0288d1!important;border-color:#0288d1!important}.text-light-blue-darken-2{color:#0288d1!important;caret-color:#0288d1!important}.bg-light-blue-darken-3{background-color:#0277bd!important;border-color:#0277bd!important}.text-light-blue-darken-3{color:#0277bd!important;caret-color:#0277bd!important}.bg-light-blue-darken-4{background-color:#01579b!important;border-color:#01579b!important}.text-light-blue-darken-4{color:#01579b!important;caret-color:#01579b!important}.bg-light-blue-accent-1{background-color:#80d8ff!important;border-color:#80d8ff!important}.text-light-blue-accent-1{color:#80d8ff!important;caret-color:#80d8ff!important}.bg-light-blue-accent-2{background-color:#40c4ff!important;border-color:#40c4ff!important}.text-light-blue-accent-2{color:#40c4ff!important;caret-color:#40c4ff!important}.bg-light-blue-accent-3{background-color:#00b0ff!important;border-color:#00b0ff!important}.text-light-blue-accent-3{color:#00b0ff!important;caret-color:#00b0ff!important}.bg-light-blue-accent-4{background-color:#0091ea!important;border-color:#0091ea!important}.text-light-blue-accent-4{color:#0091ea!important;caret-color:#0091ea!important}.bg-cyan{background-color:#00bcd4!important;border-color:#00bcd4!important}.text-cyan{color:#00bcd4!important;caret-color:#00bcd4!important}.bg-cyan-lighten-5{background-color:#e0f7fa!important;border-color:#e0f7fa!important}.text-cyan-lighten-5{color:#e0f7fa!important;caret-color:#e0f7fa!important}.bg-cyan-lighten-4{background-color:#b2ebf2!important;border-color:#b2ebf2!important}.text-cyan-lighten-4{color:#b2ebf2!important;caret-color:#b2ebf2!important}.bg-cyan-lighten-3{background-color:#80deea!important;border-color:#80deea!important}.text-cyan-lighten-3{color:#80deea!important;caret-color:#80deea!important}.bg-cyan-lighten-2{background-color:#4dd0e1!important;border-color:#4dd0e1!important}.text-cyan-lighten-2{color:#4dd0e1!important;caret-color:#4dd0e1!important}.bg-cyan-lighten-1{background-color:#26c6da!important;border-color:#26c6da!important}.text-cyan-lighten-1{color:#26c6da!important;caret-color:#26c6da!important}.bg-cyan-darken-1{background-color:#00acc1!important;border-color:#00acc1!important}.text-cyan-darken-1{color:#00acc1!important;caret-color:#00acc1!important}.bg-cyan-darken-2{background-color:#0097a7!important;border-color:#0097a7!important}.text-cyan-darken-2{color:#0097a7!important;caret-color:#0097a7!important}.bg-cyan-darken-3{background-color:#00838f!important;border-color:#00838f!important}.text-cyan-darken-3{color:#00838f!important;caret-color:#00838f!important}.bg-cyan-darken-4{background-color:#006064!important;border-color:#006064!important}.text-cyan-darken-4{color:#006064!important;caret-color:#006064!important}.bg-cyan-accent-1{background-color:#84ffff!important;border-color:#84ffff!important}.text-cyan-accent-1{color:#84ffff!important;caret-color:#84ffff!important}.bg-cyan-accent-2{background-color:#18ffff!important;border-color:#18ffff!important}.text-cyan-accent-2{color:#18ffff!important;caret-color:#18ffff!important}.bg-cyan-accent-3{background-color:#00e5ff!important;border-color:#00e5ff!important}.text-cyan-accent-3{color:#00e5ff!important;caret-color:#00e5ff!important}.bg-cyan-accent-4{background-color:#00b8d4!important;border-color:#00b8d4!important}.text-cyan-accent-4{color:#00b8d4!important;caret-color:#00b8d4!important}.bg-teal{background-color:#009688!important;border-color:#009688!important}.text-teal{color:#009688!important;caret-color:#009688!important}.bg-teal-lighten-5{background-color:#e0f2f1!important;border-color:#e0f2f1!important}.text-teal-lighten-5{color:#e0f2f1!important;caret-color:#e0f2f1!important}.bg-teal-lighten-4{background-color:#b2dfdb!important;border-color:#b2dfdb!important}.text-teal-lighten-4{color:#b2dfdb!important;caret-color:#b2dfdb!important}.bg-teal-lighten-3{background-color:#80cbc4!important;border-color:#80cbc4!important}.text-teal-lighten-3{color:#80cbc4!important;caret-color:#80cbc4!important}.bg-teal-lighten-2{background-color:#4db6ac!important;border-color:#4db6ac!important}.text-teal-lighten-2{color:#4db6ac!important;caret-color:#4db6ac!important}.bg-teal-lighten-1{background-color:#26a69a!important;border-color:#26a69a!important}.text-teal-lighten-1{color:#26a69a!important;caret-color:#26a69a!important}.bg-teal-darken-1{background-color:#00897b!important;border-color:#00897b!important}.text-teal-darken-1{color:#00897b!important;caret-color:#00897b!important}.bg-teal-darken-2{background-color:#00796b!important;border-color:#00796b!important}.text-teal-darken-2{color:#00796b!important;caret-color:#00796b!important}.bg-teal-darken-3{background-color:#00695c!important;border-color:#00695c!important}.text-teal-darken-3{color:#00695c!important;caret-color:#00695c!important}.bg-teal-darken-4{background-color:#004d40!important;border-color:#004d40!important}.text-teal-darken-4{color:#004d40!important;caret-color:#004d40!important}.bg-teal-accent-1{background-color:#a7ffeb!important;border-color:#a7ffeb!important}.text-teal-accent-1{color:#a7ffeb!important;caret-color:#a7ffeb!important}.bg-teal-accent-2{background-color:#64ffda!important;border-color:#64ffda!important}.text-teal-accent-2{color:#64ffda!important;caret-color:#64ffda!important}.bg-teal-accent-3{background-color:#1de9b6!important;border-color:#1de9b6!important}.text-teal-accent-3{color:#1de9b6!important;caret-color:#1de9b6!important}.bg-teal-accent-4{background-color:#00bfa5!important;border-color:#00bfa5!important}.text-teal-accent-4{color:#00bfa5!important;caret-color:#00bfa5!important}.bg-green{background-color:#4caf50!important;border-color:#4caf50!important}.text-green{color:#4caf50!important;caret-color:#4caf50!important}.bg-green-lighten-5{background-color:#e8f5e9!important;border-color:#e8f5e9!important}.text-green-lighten-5{color:#e8f5e9!important;caret-color:#e8f5e9!important}.bg-green-lighten-4{background-color:#c8e6c9!important;border-color:#c8e6c9!important}.text-green-lighten-4{color:#c8e6c9!important;caret-color:#c8e6c9!important}.bg-green-lighten-3{background-color:#a5d6a7!important;border-color:#a5d6a7!important}.text-green-lighten-3{color:#a5d6a7!important;caret-color:#a5d6a7!important}.bg-green-lighten-2{background-color:#81c784!important;border-color:#81c784!important}.text-green-lighten-2{color:#81c784!important;caret-color:#81c784!important}.bg-green-lighten-1{background-color:#66bb6a!important;border-color:#66bb6a!important}.text-green-lighten-1{color:#66bb6a!important;caret-color:#66bb6a!important}.bg-green-darken-1{background-color:#43a047!important;border-color:#43a047!important}.text-green-darken-1{color:#43a047!important;caret-color:#43a047!important}.bg-green-darken-2{background-color:#388e3c!important;border-color:#388e3c!important}.text-green-darken-2{color:#388e3c!important;caret-color:#388e3c!important}.bg-green-darken-3{background-color:#2e7d32!important;border-color:#2e7d32!important}.text-green-darken-3{color:#2e7d32!important;caret-color:#2e7d32!important}.bg-green-darken-4{background-color:#1b5e20!important;border-color:#1b5e20!important}.text-green-darken-4{color:#1b5e20!important;caret-color:#1b5e20!important}.bg-green-accent-1{background-color:#b9f6ca!important;border-color:#b9f6ca!important}.text-green-accent-1{color:#b9f6ca!important;caret-color:#b9f6ca!important}.bg-green-accent-2{background-color:#69f0ae!important;border-color:#69f0ae!important}.text-green-accent-2{color:#69f0ae!important;caret-color:#69f0ae!important}.bg-green-accent-3{background-color:#00e676!important;border-color:#00e676!important}.text-green-accent-3{color:#00e676!important;caret-color:#00e676!important}.bg-green-accent-4{background-color:#00c853!important;border-color:#00c853!important}.text-green-accent-4{color:#00c853!important;caret-color:#00c853!important}.bg-light-green{background-color:#8bc34a!important;border-color:#8bc34a!important}.text-light-green{color:#8bc34a!important;caret-color:#8bc34a!important}.bg-light-green-lighten-5{background-color:#f1f8e9!important;border-color:#f1f8e9!important}.text-light-green-lighten-5{color:#f1f8e9!important;caret-color:#f1f8e9!important}.bg-light-green-lighten-4{background-color:#dcedc8!important;border-color:#dcedc8!important}.text-light-green-lighten-4{color:#dcedc8!important;caret-color:#dcedc8!important}.bg-light-green-lighten-3{background-color:#c5e1a5!important;border-color:#c5e1a5!important}.text-light-green-lighten-3{color:#c5e1a5!important;caret-color:#c5e1a5!important}.bg-light-green-lighten-2{background-color:#aed581!important;border-color:#aed581!important}.text-light-green-lighten-2{color:#aed581!important;caret-color:#aed581!important}.bg-light-green-lighten-1{background-color:#9ccc65!important;border-color:#9ccc65!important}.text-light-green-lighten-1{color:#9ccc65!important;caret-color:#9ccc65!important}.bg-light-green-darken-1{background-color:#7cb342!important;border-color:#7cb342!important}.text-light-green-darken-1{color:#7cb342!important;caret-color:#7cb342!important}.bg-light-green-darken-2{background-color:#689f38!important;border-color:#689f38!important}.text-light-green-darken-2{color:#689f38!important;caret-color:#689f38!important}.bg-light-green-darken-3{background-color:#558b2f!important;border-color:#558b2f!important}.text-light-green-darken-3{color:#558b2f!important;caret-color:#558b2f!important}.bg-light-green-darken-4{background-color:#33691e!important;border-color:#33691e!important}.text-light-green-darken-4{color:#33691e!important;caret-color:#33691e!important}.bg-light-green-accent-1{background-color:#ccff90!important;border-color:#ccff90!important}.text-light-green-accent-1{color:#ccff90!important;caret-color:#ccff90!important}.bg-light-green-accent-2{background-color:#b2ff59!important;border-color:#b2ff59!important}.text-light-green-accent-2{color:#b2ff59!important;caret-color:#b2ff59!important}.bg-light-green-accent-3{background-color:#76ff03!important;border-color:#76ff03!important}.text-light-green-accent-3{color:#76ff03!important;caret-color:#76ff03!important}.bg-light-green-accent-4{background-color:#64dd17!important;border-color:#64dd17!important}.text-light-green-accent-4{color:#64dd17!important;caret-color:#64dd17!important}.bg-lime{background-color:#cddc39!important;border-color:#cddc39!important}.text-lime{color:#cddc39!important;caret-color:#cddc39!important}.bg-lime-lighten-5{background-color:#f9fbe7!important;border-color:#f9fbe7!important}.text-lime-lighten-5{color:#f9fbe7!important;caret-color:#f9fbe7!important}.bg-lime-lighten-4{background-color:#f0f4c3!important;border-color:#f0f4c3!important}.text-lime-lighten-4{color:#f0f4c3!important;caret-color:#f0f4c3!important}.bg-lime-lighten-3{background-color:#e6ee9c!important;border-color:#e6ee9c!important}.text-lime-lighten-3{color:#e6ee9c!important;caret-color:#e6ee9c!important}.bg-lime-lighten-2{background-color:#dce775!important;border-color:#dce775!important}.text-lime-lighten-2{color:#dce775!important;caret-color:#dce775!important}.bg-lime-lighten-1{background-color:#d4e157!important;border-color:#d4e157!important}.text-lime-lighten-1{color:#d4e157!important;caret-color:#d4e157!important}.bg-lime-darken-1{background-color:#c0ca33!important;border-color:#c0ca33!important}.text-lime-darken-1{color:#c0ca33!important;caret-color:#c0ca33!important}.bg-lime-darken-2{background-color:#afb42b!important;border-color:#afb42b!important}.text-lime-darken-2{color:#afb42b!important;caret-color:#afb42b!important}.bg-lime-darken-3{background-color:#9e9d24!important;border-color:#9e9d24!important}.text-lime-darken-3{color:#9e9d24!important;caret-color:#9e9d24!important}.bg-lime-darken-4{background-color:#827717!important;border-color:#827717!important}.text-lime-darken-4{color:#827717!important;caret-color:#827717!important}.bg-lime-accent-1{background-color:#f4ff81!important;border-color:#f4ff81!important}.text-lime-accent-1{color:#f4ff81!important;caret-color:#f4ff81!important}.bg-lime-accent-2{background-color:#eeff41!important;border-color:#eeff41!important}.text-lime-accent-2{color:#eeff41!important;caret-color:#eeff41!important}.bg-lime-accent-3{background-color:#c6ff00!important;border-color:#c6ff00!important}.text-lime-accent-3{color:#c6ff00!important;caret-color:#c6ff00!important}.bg-lime-accent-4{background-color:#aeea00!important;border-color:#aeea00!important}.text-lime-accent-4{color:#aeea00!important;caret-color:#aeea00!important}.bg-yellow{background-color:#ffeb3b!important;border-color:#ffeb3b!important}.text-yellow{color:#ffeb3b!important;caret-color:#ffeb3b!important}.bg-yellow-lighten-5{background-color:#fffde7!important;border-color:#fffde7!important}.text-yellow-lighten-5{color:#fffde7!important;caret-color:#fffde7!important}.bg-yellow-lighten-4{background-color:#fff9c4!important;border-color:#fff9c4!important}.text-yellow-lighten-4{color:#fff9c4!important;caret-color:#fff9c4!important}.bg-yellow-lighten-3{background-color:#fff59d!important;border-color:#fff59d!important}.text-yellow-lighten-3{color:#fff59d!important;caret-color:#fff59d!important}.bg-yellow-lighten-2{background-color:#fff176!important;border-color:#fff176!important}.text-yellow-lighten-2{color:#fff176!important;caret-color:#fff176!important}.bg-yellow-lighten-1{background-color:#ffee58!important;border-color:#ffee58!important}.text-yellow-lighten-1{color:#ffee58!important;caret-color:#ffee58!important}.bg-yellow-darken-1{background-color:#fdd835!important;border-color:#fdd835!important}.text-yellow-darken-1{color:#fdd835!important;caret-color:#fdd835!important}.bg-yellow-darken-2{background-color:#fbc02d!important;border-color:#fbc02d!important}.text-yellow-darken-2{color:#fbc02d!important;caret-color:#fbc02d!important}.bg-yellow-darken-3{background-color:#f9a825!important;border-color:#f9a825!important}.text-yellow-darken-3{color:#f9a825!important;caret-color:#f9a825!important}.bg-yellow-darken-4{background-color:#f57f17!important;border-color:#f57f17!important}.text-yellow-darken-4{color:#f57f17!important;caret-color:#f57f17!important}.bg-yellow-accent-1{background-color:#ffff8d!important;border-color:#ffff8d!important}.text-yellow-accent-1{color:#ffff8d!important;caret-color:#ffff8d!important}.bg-yellow-accent-2{background-color:#ff0!important;border-color:#ff0!important}.text-yellow-accent-2{color:#ff0!important;caret-color:#ff0!important}.bg-yellow-accent-3{background-color:#ffea00!important;border-color:#ffea00!important}.text-yellow-accent-3{color:#ffea00!important;caret-color:#ffea00!important}.bg-yellow-accent-4{background-color:#ffd600!important;border-color:#ffd600!important}.text-yellow-accent-4{color:#ffd600!important;caret-color:#ffd600!important}.bg-amber{background-color:#ffc107!important;border-color:#ffc107!important}.text-amber{color:#ffc107!important;caret-color:#ffc107!important}.bg-amber-lighten-5{background-color:#fff8e1!important;border-color:#fff8e1!important}.text-amber-lighten-5{color:#fff8e1!important;caret-color:#fff8e1!important}.bg-amber-lighten-4{background-color:#ffecb3!important;border-color:#ffecb3!important}.text-amber-lighten-4{color:#ffecb3!important;caret-color:#ffecb3!important}.bg-amber-lighten-3{background-color:#ffe082!important;border-color:#ffe082!important}.text-amber-lighten-3{color:#ffe082!important;caret-color:#ffe082!important}.bg-amber-lighten-2{background-color:#ffd54f!important;border-color:#ffd54f!important}.text-amber-lighten-2{color:#ffd54f!important;caret-color:#ffd54f!important}.bg-amber-lighten-1{background-color:#ffca28!important;border-color:#ffca28!important}.text-amber-lighten-1{color:#ffca28!important;caret-color:#ffca28!important}.bg-amber-darken-1{background-color:#ffb300!important;border-color:#ffb300!important}.text-amber-darken-1{color:#ffb300!important;caret-color:#ffb300!important}.bg-amber-darken-2{background-color:#ffa000!important;border-color:#ffa000!important}.text-amber-darken-2{color:#ffa000!important;caret-color:#ffa000!important}.bg-amber-darken-3{background-color:#ff8f00!important;border-color:#ff8f00!important}.text-amber-darken-3{color:#ff8f00!important;caret-color:#ff8f00!important}.bg-amber-darken-4{background-color:#ff6f00!important;border-color:#ff6f00!important}.text-amber-darken-4{color:#ff6f00!important;caret-color:#ff6f00!important}.bg-amber-accent-1{background-color:#ffe57f!important;border-color:#ffe57f!important}.text-amber-accent-1{color:#ffe57f!important;caret-color:#ffe57f!important}.bg-amber-accent-2{background-color:#ffd740!important;border-color:#ffd740!important}.text-amber-accent-2{color:#ffd740!important;caret-color:#ffd740!important}.bg-amber-accent-3{background-color:#ffc400!important;border-color:#ffc400!important}.text-amber-accent-3{color:#ffc400!important;caret-color:#ffc400!important}.bg-amber-accent-4{background-color:#ffab00!important;border-color:#ffab00!important}.text-amber-accent-4{color:#ffab00!important;caret-color:#ffab00!important}.bg-orange{background-color:#ff9800!important;border-color:#ff9800!important}.text-orange{color:#ff9800!important;caret-color:#ff9800!important}.bg-orange-lighten-5{background-color:#fff3e0!important;border-color:#fff3e0!important}.text-orange-lighten-5{color:#fff3e0!important;caret-color:#fff3e0!important}.bg-orange-lighten-4{background-color:#ffe0b2!important;border-color:#ffe0b2!important}.text-orange-lighten-4{color:#ffe0b2!important;caret-color:#ffe0b2!important}.bg-orange-lighten-3{background-color:#ffcc80!important;border-color:#ffcc80!important}.text-orange-lighten-3{color:#ffcc80!important;caret-color:#ffcc80!important}.bg-orange-lighten-2{background-color:#ffb74d!important;border-color:#ffb74d!important}.text-orange-lighten-2{color:#ffb74d!important;caret-color:#ffb74d!important}.bg-orange-lighten-1{background-color:#ffa726!important;border-color:#ffa726!important}.text-orange-lighten-1{color:#ffa726!important;caret-color:#ffa726!important}.bg-orange-darken-1{background-color:#fb8c00!important;border-color:#fb8c00!important}.text-orange-darken-1{color:#fb8c00!important;caret-color:#fb8c00!important}.bg-orange-darken-2{background-color:#f57c00!important;border-color:#f57c00!important}.text-orange-darken-2{color:#f57c00!important;caret-color:#f57c00!important}.bg-orange-darken-3{background-color:#ef6c00!important;border-color:#ef6c00!important}.text-orange-darken-3{color:#ef6c00!important;caret-color:#ef6c00!important}.bg-orange-darken-4{background-color:#e65100!important;border-color:#e65100!important}.text-orange-darken-4{color:#e65100!important;caret-color:#e65100!important}.bg-orange-accent-1{background-color:#ffd180!important;border-color:#ffd180!important}.text-orange-accent-1{color:#ffd180!important;caret-color:#ffd180!important}.bg-orange-accent-2{background-color:#ffab40!important;border-color:#ffab40!important}.text-orange-accent-2{color:#ffab40!important;caret-color:#ffab40!important}.bg-orange-accent-3{background-color:#ff9100!important;border-color:#ff9100!important}.text-orange-accent-3{color:#ff9100!important;caret-color:#ff9100!important}.bg-orange-accent-4{background-color:#ff6d00!important;border-color:#ff6d00!important}.text-orange-accent-4{color:#ff6d00!important;caret-color:#ff6d00!important}.bg-deep-orange{background-color:#ff5722!important;border-color:#ff5722!important}.text-deep-orange{color:#ff5722!important;caret-color:#ff5722!important}.bg-deep-orange-lighten-5{background-color:#fbe9e7!important;border-color:#fbe9e7!important}.text-deep-orange-lighten-5{color:#fbe9e7!important;caret-color:#fbe9e7!important}.bg-deep-orange-lighten-4{background-color:#ffccbc!important;border-color:#ffccbc!important}.text-deep-orange-lighten-4{color:#ffccbc!important;caret-color:#ffccbc!important}.bg-deep-orange-lighten-3{background-color:#ffab91!important;border-color:#ffab91!important}.text-deep-orange-lighten-3{color:#ffab91!important;caret-color:#ffab91!important}.bg-deep-orange-lighten-2{background-color:#ff8a65!important;border-color:#ff8a65!important}.text-deep-orange-lighten-2{color:#ff8a65!important;caret-color:#ff8a65!important}.bg-deep-orange-lighten-1{background-color:#ff7043!important;border-color:#ff7043!important}.text-deep-orange-lighten-1{color:#ff7043!important;caret-color:#ff7043!important}.bg-deep-orange-darken-1{background-color:#f4511e!important;border-color:#f4511e!important}.text-deep-orange-darken-1{color:#f4511e!important;caret-color:#f4511e!important}.bg-deep-orange-darken-2{background-color:#e64a19!important;border-color:#e64a19!important}.text-deep-orange-darken-2{color:#e64a19!important;caret-color:#e64a19!important}.bg-deep-orange-darken-3{background-color:#d84315!important;border-color:#d84315!important}.text-deep-orange-darken-3{color:#d84315!important;caret-color:#d84315!important}.bg-deep-orange-darken-4{background-color:#bf360c!important;border-color:#bf360c!important}.text-deep-orange-darken-4{color:#bf360c!important;caret-color:#bf360c!important}.bg-deep-orange-accent-1{background-color:#ff9e80!important;border-color:#ff9e80!important}.text-deep-orange-accent-1{color:#ff9e80!important;caret-color:#ff9e80!important}.bg-deep-orange-accent-2{background-color:#ff6e40!important;border-color:#ff6e40!important}.text-deep-orange-accent-2{color:#ff6e40!important;caret-color:#ff6e40!important}.bg-deep-orange-accent-3{background-color:#ff3d00!important;border-color:#ff3d00!important}.text-deep-orange-accent-3{color:#ff3d00!important;caret-color:#ff3d00!important}.bg-deep-orange-accent-4{background-color:#dd2c00!important;border-color:#dd2c00!important}.text-deep-orange-accent-4{color:#dd2c00!important;caret-color:#dd2c00!important}.bg-brown{background-color:#795548!important;border-color:#795548!important}.text-brown{color:#795548!important;caret-color:#795548!important}.bg-brown-lighten-5{background-color:#efebe9!important;border-color:#efebe9!important}.text-brown-lighten-5{color:#efebe9!important;caret-color:#efebe9!important}.bg-brown-lighten-4{background-color:#d7ccc8!important;border-color:#d7ccc8!important}.text-brown-lighten-4{color:#d7ccc8!important;caret-color:#d7ccc8!important}.bg-brown-lighten-3{background-color:#bcaaa4!important;border-color:#bcaaa4!important}.text-brown-lighten-3{color:#bcaaa4!important;caret-color:#bcaaa4!important}.bg-brown-lighten-2{background-color:#a1887f!important;border-color:#a1887f!important}.text-brown-lighten-2{color:#a1887f!important;caret-color:#a1887f!important}.bg-brown-lighten-1{background-color:#8d6e63!important;border-color:#8d6e63!important}.text-brown-lighten-1{color:#8d6e63!important;caret-color:#8d6e63!important}.bg-brown-darken-1{background-color:#6d4c41!important;border-color:#6d4c41!important}.text-brown-darken-1{color:#6d4c41!important;caret-color:#6d4c41!important}.bg-brown-darken-2{background-color:#5d4037!important;border-color:#5d4037!important}.text-brown-darken-2{color:#5d4037!important;caret-color:#5d4037!important}.bg-brown-darken-3{background-color:#4e342e!important;border-color:#4e342e!important}.text-brown-darken-3{color:#4e342e!important;caret-color:#4e342e!important}.bg-brown-darken-4{background-color:#3e2723!important;border-color:#3e2723!important}.text-brown-darken-4{color:#3e2723!important;caret-color:#3e2723!important}.bg-blue-grey{background-color:#607d8b!important;border-color:#607d8b!important}.text-blue-grey{color:#607d8b!important;caret-color:#607d8b!important}.bg-blue-grey-lighten-5{background-color:#eceff1!important;border-color:#eceff1!important}.text-blue-grey-lighten-5{color:#eceff1!important;caret-color:#eceff1!important}.bg-blue-grey-lighten-4{background-color:#cfd8dc!important;border-color:#cfd8dc!important}.text-blue-grey-lighten-4{color:#cfd8dc!important;caret-color:#cfd8dc!important}.bg-blue-grey-lighten-3{background-color:#b0bec5!important;border-color:#b0bec5!important}.text-blue-grey-lighten-3{color:#b0bec5!important;caret-color:#b0bec5!important}.bg-blue-grey-lighten-2{background-color:#90a4ae!important;border-color:#90a4ae!important}.text-blue-grey-lighten-2{color:#90a4ae!important;caret-color:#90a4ae!important}.bg-blue-grey-lighten-1{background-color:#78909c!important;border-color:#78909c!important}.text-blue-grey-lighten-1{color:#78909c!important;caret-color:#78909c!important}.bg-blue-grey-darken-1{background-color:#546e7a!important;border-color:#546e7a!important}.text-blue-grey-darken-1{color:#546e7a!important;caret-color:#546e7a!important}.bg-blue-grey-darken-2{background-color:#455a64!important;border-color:#455a64!important}.text-blue-grey-darken-2{color:#455a64!important;caret-color:#455a64!important}.bg-blue-grey-darken-3{background-color:#37474f!important;border-color:#37474f!important}.text-blue-grey-darken-3{color:#37474f!important;caret-color:#37474f!important}.bg-blue-grey-darken-4{background-color:#263238!important;border-color:#263238!important}.text-blue-grey-darken-4{color:#263238!important;caret-color:#263238!important}.bg-grey{background-color:#9e9e9e!important;border-color:#9e9e9e!important}.text-grey{color:#9e9e9e!important;caret-color:#9e9e9e!important}.bg-grey-lighten-5{background-color:#fafafa!important;border-color:#fafafa!important}.text-grey-lighten-5{color:#fafafa!important;caret-color:#fafafa!important}.bg-grey-lighten-4{background-color:#f5f5f5!important;border-color:#f5f5f5!important}.text-grey-lighten-4{color:#f5f5f5!important;caret-color:#f5f5f5!important}.bg-grey-lighten-3{background-color:#eee!important;border-color:#eee!important}.text-grey-lighten-3{color:#eee!important;caret-color:#eee!important}.bg-grey-lighten-2{background-color:#e0e0e0!important;border-color:#e0e0e0!important}.text-grey-lighten-2{color:#e0e0e0!important;caret-color:#e0e0e0!important}.bg-grey-lighten-1{background-color:#bdbdbd!important;border-color:#bdbdbd!important}.text-grey-lighten-1{color:#bdbdbd!important;caret-color:#bdbdbd!important}.bg-grey-darken-1{background-color:#757575!important;border-color:#757575!important}.text-grey-darken-1{color:#757575!important;caret-color:#757575!important}.bg-grey-darken-2{background-color:#616161!important;border-color:#616161!important}.text-grey-darken-2{color:#616161!important;caret-color:#616161!important}.bg-grey-darken-3{background-color:#424242!important;border-color:#424242!important}.text-grey-darken-3{color:#424242!important;caret-color:#424242!important}.bg-grey-darken-4{background-color:#212121!important;border-color:#212121!important}.text-grey-darken-4{color:#212121!important;caret-color:#212121!important}.bg-shades-black{background-color:#000!important;border-color:#000!important}.text-shades-black{color:#000!important;caret-color:#000!important}.bg-shades-white{background-color:#fff!important;border-color:#fff!important}.text-shades-white{color:#fff!important;caret-color:#fff!important}.bg-shades-transparent{background-color:transparent!important;border-color:transparent!important}.text-shades-transparent{color:transparent!important;caret-color:transparent!important}/*! + * ress.css • v2.0.4 + * MIT License + * github.com/filipelinhares/ress + */html{box-sizing:border-box;overflow-y:scroll;-webkit-text-size-adjust:100%;word-break:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4}*,:after,:before{background-repeat:no-repeat;box-sizing:inherit}:after,:before{text-decoration:inherit;vertical-align:inherit}*{padding:0;margin:0}hr{overflow:visible;height:0}details,main{display:block}summary{display:list-item}small{font-size:80%}[hidden]{display:none}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}a{background-color:transparent}a:active,a:hover{outline-width:0}code,kbd,pre,samp{font-family:monospace,monospace}pre{font-size:1em}b,strong{font-weight:bolder}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}input{border-radius:0}[disabled]{cursor:default}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{overflow:auto;resize:vertical}button,input,optgroup,select,textarea{font:inherit}optgroup{font-weight:700}button{overflow:visible}button,select{text-transform:none}[role=button],[type=button],[type=reset],[type=submit],button{cursor:pointer;color:inherit}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button:-moz-focusring{outline:1px dotted ButtonText}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}button,input,select,textarea{background-color:transparent;border-style:none}select{-moz-appearance:none;-webkit-appearance:none}select::-ms-expand{display:none}select::-ms-value{color:currentColor}legend{border:0;color:inherit;display:table;white-space:normal;max-width:100%}::-webkit-file-upload-button{-webkit-appearance:button;color:inherit;font:inherit}::-ms-clear,::-ms-reveal{display:none}img{border-style:none}progress{vertical-align:baseline}@media screen{[hidden~=screen]{display:inherit}[hidden~=screen]:not(:active):not(:focus):not(:target){position:absolute!important;clip:rect(0 0 0 0)!important}}[aria-busy=true]{cursor:progress}[aria-controls]{cursor:pointer}[aria-disabled=true]{cursor:default}.elevation-24{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)!important}.elevation-23{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)!important}.elevation-22{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)!important}.elevation-21{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)!important}.elevation-20{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)!important}.elevation-19{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)!important}.elevation-18{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)!important}.elevation-17{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)!important}.elevation-16{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)!important}.elevation-15{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)!important}.elevation-14{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)!important}.elevation-13{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)!important}.elevation-12{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)!important}.elevation-11{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)!important}.elevation-10{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)!important}.elevation-9{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)!important}.elevation-8{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)!important}.elevation-7{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)!important}.elevation-6{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)!important}.elevation-5{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)!important}.elevation-4{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)!important}.elevation-3{box-shadow:0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12)!important}.elevation-2{box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)!important}.elevation-1{box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12)!important}.elevation-0{box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)!important}.carousel-transition-enter-from{transform:translate(100%)}.carousel-transition-leave-from,.carousel-transition-leave-to{position:absolute;top:0;transform:translate(-100%)}.carousel-reverse-transition-enter-from{transform:translate(-100%)}.carousel-reverse-transition-leave-from,.carousel-reverse-transition-leave-to{position:absolute;top:0;transform:translate(100%)}.dialog-transition-enter-active{transition:225ms cubic-bezier(0,0,.2,1)}.dialog-transition-leave-active{transition:125ms cubic-bezier(.4,0,1,1)}.dialog-transition-enter-active,.dialog-transition-leave-active{transition-property:transform,opacity}.dialog-transition-enter-from,.dialog-transition-leave-to{transform:scale(.9);opacity:0}.dialog-transition-enter-to,.dialog-transition-leave-from{opacity:1}.dialog-bottom-transition-enter-from,.dialog-bottom-transition-leave-to{transform:translateY(100%)}.dialog-top-transition-enter-from,.dialog-top-transition-leave-to{transform:translateY(-100%)}.picker-reverse-transition-enter-from,.picker-reverse-transition-leave-to,.picker-transition-enter-from,.picker-transition-leave-to{opacity:0}.picker-reverse-transition-leave-active,.picker-reverse-transition-leave-from,.picker-reverse-transition-leave-to,.picker-transition-leave-active,.picker-transition-leave-from,.picker-transition-leave-to{position:absolute!important}.picker-transition-enter-from{transform:translateY(100%)}.picker-reverse-transition-enter-from,.picker-transition-leave-to{transform:translateY(-100%)}.picker-reverse-transition-leave-to{transform:translateY(100%)}.picker-title-transition-enter-to,.picker-title-transition-leave-from{transform:translate(0)}.picker-title-transition-enter-from{transform:translate(-100%)}.picker-title-transition-leave-to{opacity:0;transform:translate(100%)}.picker-title-transition-leave-active,.picker-title-transition-leave-from,.picker-title-transition-leave-to{position:absolute!important}.tab-transition-enter-from{transform:translate(100%)}.tab-transition-leave-active,.tab-transition-leave-from{position:absolute;top:0}.tab-transition-leave-to{position:absolute}.tab-reverse-transition-enter-from,.tab-transition-leave-to{transform:translate(-100%)}.tab-reverse-transition-leave-from,.tab-reverse-transition-leave-to{top:0;position:absolute;transform:translate(100%)}.expand-transition-enter-active,.expand-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.expand-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.expand-x-transition-enter-active,.expand-x-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.expand-x-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.scale-transition-enter-active,.scale-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.scale-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.scale-transition-enter-from,.scale-transition-leave-from,.scale-transition-leave-to{opacity:0;transform:scale(0)}.scale-rotate-transition-enter-active,.scale-rotate-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.scale-rotate-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.scale-rotate-transition-enter-from,.scale-rotate-transition-leave,.scale-rotate-transition-leave-to{opacity:0;transform:scale(0) rotate(-45deg)}.scale-rotate-reverse-transition-enter-active,.scale-rotate-reverse-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.scale-rotate-reverse-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.scale-rotate-reverse-transition-enter-from,.scale-rotate-reverse-transition-leave-from,.scale-rotate-reverse-transition-leave-to{opacity:0;transform:scale(0) rotate(45deg)}.message-transition-enter-active,.message-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.message-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.message-transition-enter-from,.message-transition-leave-to{opacity:0;transform:translateY(-15px)}.message-transition-leave-active,.message-transition-leave-from{position:absolute}.slide-y-transition-enter-active,.slide-y-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.slide-y-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.slide-y-transition-enter-from,.slide-y-transition-leave-to{opacity:0;transform:translateY(-15px)}.slide-y-reverse-transition-enter-active,.slide-y-reverse-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.slide-y-reverse-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.slide-y-reverse-transition-enter-from,.slide-y-reverse-transition-leave-to{opacity:0;transform:translateY(15px)}.scroll-y-transition-enter-active,.scroll-y-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.scroll-y-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.scroll-y-transition-enter-from,.scroll-y-transition-leave-to{opacity:0}.scroll-y-transition-enter-from{transform:translateY(-15px)}.scroll-y-transition-leave-to{transform:translateY(15px)}.scroll-y-reverse-transition-enter-active,.scroll-y-reverse-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.scroll-y-reverse-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.scroll-y-reverse-transition-enter-from,.scroll-y-reverse-transition-leave-to{opacity:0}.scroll-y-reverse-transition-enter-from{transform:translateY(15px)}.scroll-y-reverse-transition-leave-to{transform:translateY(-15px)}.scroll-x-transition-enter-active,.scroll-x-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.scroll-x-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.scroll-x-transition-enter-from,.scroll-x-transition-leave-to{opacity:0}.scroll-x-transition-enter-from{transform:translateX(-15px)}.scroll-x-transition-leave-to{transform:translateX(15px)}.scroll-x-reverse-transition-enter-active,.scroll-x-reverse-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.scroll-x-reverse-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.scroll-x-reverse-transition-enter-from,.scroll-x-reverse-transition-leave-to{opacity:0}.scroll-x-reverse-transition-enter-from{transform:translateX(15px)}.scroll-x-reverse-transition-leave-to{transform:translateX(-15px)}.slide-x-transition-enter-active,.slide-x-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.slide-x-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.slide-x-transition-enter-from,.slide-x-transition-leave-to{opacity:0;transform:translateX(-15px)}.slide-x-reverse-transition-enter-active,.slide-x-reverse-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.slide-x-reverse-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.slide-x-reverse-transition-enter-from,.slide-x-reverse-transition-leave-to{opacity:0;transform:translateX(15px)}.fade-transition-enter-active,.fade-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.fade-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.fade-transition-enter-from,.fade-transition-leave-to{opacity:0!important}.fab-transition-enter-active,.fab-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.fab-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.fab-transition-enter-from,.fab-transition-leave-to{transform:scale(0) rotate(-45deg)}.v-locale--is-rtl{direction:rtl}.v-locale--is-ltr{direction:ltr}.blockquote{padding:16px 0 16px 24px;font-size:18px;font-weight:300}html{font-family:Roboto,sans-serif;line-height:1.5;font-size:16px;overflow-x:hidden;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:rgba(0,0,0,0);padding-right:var(--v-scrollbar-offset)}html.overflow-y-hidden{overflow-y:hidden!important}:root{--v-theme-background:#fff;--v-theme-on-background:#000;--v-theme-surface:#fff;--v-theme-on-surface:#000;--v-theme-overlay-multiplier:1;--v-scrollbar-offset:0px}@supports(-webkit-touch-callout:none){body{cursor:pointer}}@media only print{.hidden-print-only{display:none!important}}@media only screen{.hidden-screen-only{display:none!important}}@media(max-width:599px){.hidden-xs{display:none!important}}@media(min-width:600px)and (max-width:959px){.hidden-sm{display:none!important}}@media(min-width:960px)and (max-width:1279px){.hidden-md{display:none!important}}@media(min-width:1280px)and (max-width:1919px){.hidden-lg{display:none!important}}@media(min-width:1920px)and (max-width:2559px){.hidden-xl{display:none!important}}@media(min-width:2560px){.hidden-xxl{display:none!important}}@media(min-width:600px){.hidden-sm-and-up{display:none!important}}@media(min-width:960px){.hidden-md-and-up{display:none!important}}@media(min-width:1280px){.hidden-lg-and-up{display:none!important}}@media(min-width:1920px){.hidden-xl-and-up{display:none!important}}@media(max-width:959px){.hidden-sm-and-down{display:none!important}}@media(max-width:1279px){.hidden-md-and-down{display:none!important}}@media(max-width:1919px){.hidden-lg-and-down{display:none!important}}@media(max-width:2559px){.hidden-xl-and-down{display:none!important}}.d-sr-only,.d-sr-only-focusable:not(:focus){border:0!important;clip:rect(0,0,0,0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.font-weight-thin{font-weight:100!important}.font-weight-light{font-weight:300!important}.font-weight-regular{font-weight:400!important}.font-weight-medium{font-weight:500!important}.font-weight-bold{font-weight:700!important}.font-weight-black{font-weight:900!important}.font-italic{font-style:italic!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.float-none{float:none!important}.float-left{float:left!important}.float-right{float:right!important}.v-locale--is-rtl .float-end{float:left!important}.v-locale--is-ltr .float-end,.v-locale--is-rtl .float-start{float:right!important}.v-locale--is-ltr .float-start{float:left!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-start{justify-content:flex-start!important}.justify-end{justify-content:flex-end!important}.justify-center{justify-content:center!important}.justify-space-between{justify-content:space-between!important}.justify-space-around{justify-content:space-around!important}.align-start{align-items:flex-start!important}.align-end{align-items:flex-end!important}.align-center{align-items:center!important}.align-baseline{align-items:baseline!important}.align-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-space-between{align-content:space-between!important}.align-content-space-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-6{order:6!important}.order-7{order:7!important}.order-8{order:8!important}.order-9{order:9!important}.order-10{order:10!important}.order-11{order:11!important}.order-12{order:12!important}.order-last{order:13!important}.ma-0{margin:0!important}.ma-1{margin:4px!important}.ma-2{margin:8px!important}.ma-3{margin:12px!important}.ma-4{margin:16px!important}.ma-5{margin:20px!important}.ma-6{margin:24px!important}.ma-7{margin:28px!important}.ma-8{margin:32px!important}.ma-9{margin:36px!important}.ma-10{margin:40px!important}.ma-11{margin:44px!important}.ma-12{margin:48px!important}.ma-13{margin:52px!important}.ma-14{margin:56px!important}.ma-15{margin:60px!important}.ma-16{margin:64px!important}.ma-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:4px!important;margin-left:4px!important}.mx-2{margin-right:8px!important;margin-left:8px!important}.mx-3{margin-right:12px!important;margin-left:12px!important}.mx-4{margin-right:16px!important;margin-left:16px!important}.mx-5{margin-right:20px!important;margin-left:20px!important}.mx-6{margin-right:24px!important;margin-left:24px!important}.mx-7{margin-right:28px!important;margin-left:28px!important}.mx-8{margin-right:32px!important;margin-left:32px!important}.mx-9{margin-right:36px!important;margin-left:36px!important}.mx-10{margin-right:40px!important;margin-left:40px!important}.mx-11{margin-right:44px!important;margin-left:44px!important}.mx-12{margin-right:48px!important;margin-left:48px!important}.mx-13{margin-right:52px!important;margin-left:52px!important}.mx-14{margin-right:56px!important;margin-left:56px!important}.mx-15{margin-right:60px!important;margin-left:60px!important}.mx-16{margin-right:64px!important;margin-left:64px!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:4px!important;margin-bottom:4px!important}.my-2{margin-top:8px!important;margin-bottom:8px!important}.my-3{margin-top:12px!important;margin-bottom:12px!important}.my-4{margin-top:16px!important;margin-bottom:16px!important}.my-5{margin-top:20px!important;margin-bottom:20px!important}.my-6{margin-top:24px!important;margin-bottom:24px!important}.my-7{margin-top:28px!important;margin-bottom:28px!important}.my-8{margin-top:32px!important;margin-bottom:32px!important}.my-9{margin-top:36px!important;margin-bottom:36px!important}.my-10{margin-top:40px!important;margin-bottom:40px!important}.my-11{margin-top:44px!important;margin-bottom:44px!important}.my-12{margin-top:48px!important;margin-bottom:48px!important}.my-13{margin-top:52px!important;margin-bottom:52px!important}.my-14{margin-top:56px!important;margin-bottom:56px!important}.my-15{margin-top:60px!important;margin-bottom:60px!important}.my-16{margin-top:64px!important;margin-bottom:64px!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:4px!important}.mt-2{margin-top:8px!important}.mt-3{margin-top:12px!important}.mt-4{margin-top:16px!important}.mt-5{margin-top:20px!important}.mt-6{margin-top:24px!important}.mt-7{margin-top:28px!important}.mt-8{margin-top:32px!important}.mt-9{margin-top:36px!important}.mt-10{margin-top:40px!important}.mt-11{margin-top:44px!important}.mt-12{margin-top:48px!important}.mt-13{margin-top:52px!important}.mt-14{margin-top:56px!important}.mt-15{margin-top:60px!important}.mt-16{margin-top:64px!important}.mt-auto{margin-top:auto!important}.mr-0{margin-right:0!important}.mr-1{margin-right:4px!important}.mr-2{margin-right:8px!important}.mr-3{margin-right:12px!important}.mr-4{margin-right:16px!important}.mr-5{margin-right:20px!important}.mr-6{margin-right:24px!important}.mr-7{margin-right:28px!important}.mr-8{margin-right:32px!important}.mr-9{margin-right:36px!important}.mr-10{margin-right:40px!important}.mr-11{margin-right:44px!important}.mr-12{margin-right:48px!important}.mr-13{margin-right:52px!important}.mr-14{margin-right:56px!important}.mr-15{margin-right:60px!important}.mr-16{margin-right:64px!important}.mr-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:4px!important}.mb-2{margin-bottom:8px!important}.mb-3{margin-bottom:12px!important}.mb-4{margin-bottom:16px!important}.mb-5{margin-bottom:20px!important}.mb-6{margin-bottom:24px!important}.mb-7{margin-bottom:28px!important}.mb-8{margin-bottom:32px!important}.mb-9{margin-bottom:36px!important}.mb-10{margin-bottom:40px!important}.mb-11{margin-bottom:44px!important}.mb-12{margin-bottom:48px!important}.mb-13{margin-bottom:52px!important}.mb-14{margin-bottom:56px!important}.mb-15{margin-bottom:60px!important}.mb-16{margin-bottom:64px!important}.mb-auto{margin-bottom:auto!important}.ml-0{margin-left:0!important}.ml-1{margin-left:4px!important}.ml-2{margin-left:8px!important}.ml-3{margin-left:12px!important}.ml-4{margin-left:16px!important}.ml-5{margin-left:20px!important}.ml-6{margin-left:24px!important}.ml-7{margin-left:28px!important}.ml-8{margin-left:32px!important}.ml-9{margin-left:36px!important}.ml-10{margin-left:40px!important}.ml-11{margin-left:44px!important}.ml-12{margin-left:48px!important}.ml-13{margin-left:52px!important}.ml-14{margin-left:56px!important}.ml-15{margin-left:60px!important}.ml-16{margin-left:64px!important}.ml-auto{margin-left:auto!important}.v-locale--is-ltr .ms-0{margin-left:0!important}.v-locale--is-rtl .ms-0{margin-right:0!important}.v-locale--is-ltr .ms-1{margin-left:4px!important}.v-locale--is-rtl .ms-1{margin-right:4px!important}.v-locale--is-ltr .ms-2{margin-left:8px!important}.v-locale--is-rtl .ms-2{margin-right:8px!important}.v-locale--is-ltr .ms-3{margin-left:12px!important}.v-locale--is-rtl .ms-3{margin-right:12px!important}.v-locale--is-ltr .ms-4{margin-left:16px!important}.v-locale--is-rtl .ms-4{margin-right:16px!important}.v-locale--is-ltr .ms-5{margin-left:20px!important}.v-locale--is-rtl .ms-5{margin-right:20px!important}.v-locale--is-ltr .ms-6{margin-left:24px!important}.v-locale--is-rtl .ms-6{margin-right:24px!important}.v-locale--is-ltr .ms-7{margin-left:28px!important}.v-locale--is-rtl .ms-7{margin-right:28px!important}.v-locale--is-ltr .ms-8{margin-left:32px!important}.v-locale--is-rtl .ms-8{margin-right:32px!important}.v-locale--is-ltr .ms-9{margin-left:36px!important}.v-locale--is-rtl .ms-9{margin-right:36px!important}.v-locale--is-ltr .ms-10{margin-left:40px!important}.v-locale--is-rtl .ms-10{margin-right:40px!important}.v-locale--is-ltr .ms-11{margin-left:44px!important}.v-locale--is-rtl .ms-11{margin-right:44px!important}.v-locale--is-ltr .ms-12{margin-left:48px!important}.v-locale--is-rtl .ms-12{margin-right:48px!important}.v-locale--is-ltr .ms-13{margin-left:52px!important}.v-locale--is-rtl .ms-13{margin-right:52px!important}.v-locale--is-ltr .ms-14{margin-left:56px!important}.v-locale--is-rtl .ms-14{margin-right:56px!important}.v-locale--is-ltr .ms-15{margin-left:60px!important}.v-locale--is-rtl .ms-15{margin-right:60px!important}.v-locale--is-ltr .ms-16{margin-left:64px!important}.v-locale--is-rtl .ms-16{margin-right:64px!important}.v-locale--is-ltr .ms-auto{margin-left:auto!important}.v-locale--is-rtl .ms-auto{margin-right:auto!important}.v-locale--is-ltr .me-0{margin-right:0!important}.v-locale--is-rtl .me-0{margin-left:0!important}.v-locale--is-ltr .me-1{margin-right:4px!important}.v-locale--is-rtl .me-1{margin-left:4px!important}.v-locale--is-ltr .me-2{margin-right:8px!important}.v-locale--is-rtl .me-2{margin-left:8px!important}.v-locale--is-ltr .me-3{margin-right:12px!important}.v-locale--is-rtl .me-3{margin-left:12px!important}.v-locale--is-ltr .me-4{margin-right:16px!important}.v-locale--is-rtl .me-4{margin-left:16px!important}.v-locale--is-ltr .me-5{margin-right:20px!important}.v-locale--is-rtl .me-5{margin-left:20px!important}.v-locale--is-ltr .me-6{margin-right:24px!important}.v-locale--is-rtl .me-6{margin-left:24px!important}.v-locale--is-ltr .me-7{margin-right:28px!important}.v-locale--is-rtl .me-7{margin-left:28px!important}.v-locale--is-ltr .me-8{margin-right:32px!important}.v-locale--is-rtl .me-8{margin-left:32px!important}.v-locale--is-ltr .me-9{margin-right:36px!important}.v-locale--is-rtl .me-9{margin-left:36px!important}.v-locale--is-ltr .me-10{margin-right:40px!important}.v-locale--is-rtl .me-10{margin-left:40px!important}.v-locale--is-ltr .me-11{margin-right:44px!important}.v-locale--is-rtl .me-11{margin-left:44px!important}.v-locale--is-ltr .me-12{margin-right:48px!important}.v-locale--is-rtl .me-12{margin-left:48px!important}.v-locale--is-ltr .me-13{margin-right:52px!important}.v-locale--is-rtl .me-13{margin-left:52px!important}.v-locale--is-ltr .me-14{margin-right:56px!important}.v-locale--is-rtl .me-14{margin-left:56px!important}.v-locale--is-ltr .me-15{margin-right:60px!important}.v-locale--is-rtl .me-15{margin-left:60px!important}.v-locale--is-ltr .me-16{margin-right:64px!important}.v-locale--is-rtl .me-16{margin-left:64px!important}.v-locale--is-ltr .me-auto{margin-right:auto!important}.v-locale--is-rtl .me-auto{margin-left:auto!important}.ma-n1{margin:-4px!important}.ma-n2{margin:-8px!important}.ma-n3{margin:-12px!important}.ma-n4{margin:-16px!important}.ma-n5{margin:-20px!important}.ma-n6{margin:-24px!important}.ma-n7{margin:-28px!important}.ma-n8{margin:-32px!important}.ma-n9{margin:-36px!important}.ma-n10{margin:-40px!important}.ma-n11{margin:-44px!important}.ma-n12{margin:-48px!important}.ma-n13{margin:-52px!important}.ma-n14{margin:-56px!important}.ma-n15{margin:-60px!important}.ma-n16{margin:-64px!important}.mx-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-n16{margin-right:-64px!important;margin-left:-64px!important}.my-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-n1{margin-top:-4px!important}.mt-n2{margin-top:-8px!important}.mt-n3{margin-top:-12px!important}.mt-n4{margin-top:-16px!important}.mt-n5{margin-top:-20px!important}.mt-n6{margin-top:-24px!important}.mt-n7{margin-top:-28px!important}.mt-n8{margin-top:-32px!important}.mt-n9{margin-top:-36px!important}.mt-n10{margin-top:-40px!important}.mt-n11{margin-top:-44px!important}.mt-n12{margin-top:-48px!important}.mt-n13{margin-top:-52px!important}.mt-n14{margin-top:-56px!important}.mt-n15{margin-top:-60px!important}.mt-n16{margin-top:-64px!important}.mr-n1{margin-right:-4px!important}.mr-n2{margin-right:-8px!important}.mr-n3{margin-right:-12px!important}.mr-n4{margin-right:-16px!important}.mr-n5{margin-right:-20px!important}.mr-n6{margin-right:-24px!important}.mr-n7{margin-right:-28px!important}.mr-n8{margin-right:-32px!important}.mr-n9{margin-right:-36px!important}.mr-n10{margin-right:-40px!important}.mr-n11{margin-right:-44px!important}.mr-n12{margin-right:-48px!important}.mr-n13{margin-right:-52px!important}.mr-n14{margin-right:-56px!important}.mr-n15{margin-right:-60px!important}.mr-n16{margin-right:-64px!important}.mb-n1{margin-bottom:-4px!important}.mb-n2{margin-bottom:-8px!important}.mb-n3{margin-bottom:-12px!important}.mb-n4{margin-bottom:-16px!important}.mb-n5{margin-bottom:-20px!important}.mb-n6{margin-bottom:-24px!important}.mb-n7{margin-bottom:-28px!important}.mb-n8{margin-bottom:-32px!important}.mb-n9{margin-bottom:-36px!important}.mb-n10{margin-bottom:-40px!important}.mb-n11{margin-bottom:-44px!important}.mb-n12{margin-bottom:-48px!important}.mb-n13{margin-bottom:-52px!important}.mb-n14{margin-bottom:-56px!important}.mb-n15{margin-bottom:-60px!important}.mb-n16{margin-bottom:-64px!important}.ml-n1{margin-left:-4px!important}.ml-n2{margin-left:-8px!important}.ml-n3{margin-left:-12px!important}.ml-n4{margin-left:-16px!important}.ml-n5{margin-left:-20px!important}.ml-n6{margin-left:-24px!important}.ml-n7{margin-left:-28px!important}.ml-n8{margin-left:-32px!important}.ml-n9{margin-left:-36px!important}.ml-n10{margin-left:-40px!important}.ml-n11{margin-left:-44px!important}.ml-n12{margin-left:-48px!important}.ml-n13{margin-left:-52px!important}.ml-n14{margin-left:-56px!important}.ml-n15{margin-left:-60px!important}.ml-n16{margin-left:-64px!important}.v-locale--is-ltr .ms-n1{margin-left:-4px!important}.v-locale--is-rtl .ms-n1{margin-right:-4px!important}.v-locale--is-ltr .ms-n2{margin-left:-8px!important}.v-locale--is-rtl .ms-n2{margin-right:-8px!important}.v-locale--is-ltr .ms-n3{margin-left:-12px!important}.v-locale--is-rtl .ms-n3{margin-right:-12px!important}.v-locale--is-ltr .ms-n4{margin-left:-16px!important}.v-locale--is-rtl .ms-n4{margin-right:-16px!important}.v-locale--is-ltr .ms-n5{margin-left:-20px!important}.v-locale--is-rtl .ms-n5{margin-right:-20px!important}.v-locale--is-ltr .ms-n6{margin-left:-24px!important}.v-locale--is-rtl .ms-n6{margin-right:-24px!important}.v-locale--is-ltr .ms-n7{margin-left:-28px!important}.v-locale--is-rtl .ms-n7{margin-right:-28px!important}.v-locale--is-ltr .ms-n8{margin-left:-32px!important}.v-locale--is-rtl .ms-n8{margin-right:-32px!important}.v-locale--is-ltr .ms-n9{margin-left:-36px!important}.v-locale--is-rtl .ms-n9{margin-right:-36px!important}.v-locale--is-ltr .ms-n10{margin-left:-40px!important}.v-locale--is-rtl .ms-n10{margin-right:-40px!important}.v-locale--is-ltr .ms-n11{margin-left:-44px!important}.v-locale--is-rtl .ms-n11{margin-right:-44px!important}.v-locale--is-ltr .ms-n12{margin-left:-48px!important}.v-locale--is-rtl .ms-n12{margin-right:-48px!important}.v-locale--is-ltr .ms-n13{margin-left:-52px!important}.v-locale--is-rtl .ms-n13{margin-right:-52px!important}.v-locale--is-ltr .ms-n14{margin-left:-56px!important}.v-locale--is-rtl .ms-n14{margin-right:-56px!important}.v-locale--is-ltr .ms-n15{margin-left:-60px!important}.v-locale--is-rtl .ms-n15{margin-right:-60px!important}.v-locale--is-ltr .ms-n16{margin-left:-64px!important}.v-locale--is-rtl .ms-n16{margin-right:-64px!important}.v-locale--is-ltr .me-n1{margin-right:-4px!important}.v-locale--is-rtl .me-n1{margin-left:-4px!important}.v-locale--is-ltr .me-n2{margin-right:-8px!important}.v-locale--is-rtl .me-n2{margin-left:-8px!important}.v-locale--is-ltr .me-n3{margin-right:-12px!important}.v-locale--is-rtl .me-n3{margin-left:-12px!important}.v-locale--is-ltr .me-n4{margin-right:-16px!important}.v-locale--is-rtl .me-n4{margin-left:-16px!important}.v-locale--is-ltr .me-n5{margin-right:-20px!important}.v-locale--is-rtl .me-n5{margin-left:-20px!important}.v-locale--is-ltr .me-n6{margin-right:-24px!important}.v-locale--is-rtl .me-n6{margin-left:-24px!important}.v-locale--is-ltr .me-n7{margin-right:-28px!important}.v-locale--is-rtl .me-n7{margin-left:-28px!important}.v-locale--is-ltr .me-n8{margin-right:-32px!important}.v-locale--is-rtl .me-n8{margin-left:-32px!important}.v-locale--is-ltr .me-n9{margin-right:-36px!important}.v-locale--is-rtl .me-n9{margin-left:-36px!important}.v-locale--is-ltr .me-n10{margin-right:-40px!important}.v-locale--is-rtl .me-n10{margin-left:-40px!important}.v-locale--is-ltr .me-n11{margin-right:-44px!important}.v-locale--is-rtl .me-n11{margin-left:-44px!important}.v-locale--is-ltr .me-n12{margin-right:-48px!important}.v-locale--is-rtl .me-n12{margin-left:-48px!important}.v-locale--is-ltr .me-n13{margin-right:-52px!important}.v-locale--is-rtl .me-n13{margin-left:-52px!important}.v-locale--is-ltr .me-n14{margin-right:-56px!important}.v-locale--is-rtl .me-n14{margin-left:-56px!important}.v-locale--is-ltr .me-n15{margin-right:-60px!important}.v-locale--is-rtl .me-n15{margin-left:-60px!important}.v-locale--is-ltr .me-n16{margin-right:-64px!important}.v-locale--is-rtl .me-n16{margin-left:-64px!important}.pa-0{padding:0!important}.pa-1{padding:4px!important}.pa-2{padding:8px!important}.pa-3{padding:12px!important}.pa-4{padding:16px!important}.pa-5{padding:20px!important}.pa-6{padding:24px!important}.pa-7{padding:28px!important}.pa-8{padding:32px!important}.pa-9{padding:36px!important}.pa-10{padding:40px!important}.pa-11{padding:44px!important}.pa-12{padding:48px!important}.pa-13{padding:52px!important}.pa-14{padding:56px!important}.pa-15{padding:60px!important}.pa-16{padding:64px!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:4px!important;padding-left:4px!important}.px-2{padding-right:8px!important;padding-left:8px!important}.px-3{padding-right:12px!important;padding-left:12px!important}.px-4{padding-right:16px!important;padding-left:16px!important}.px-5{padding-right:20px!important;padding-left:20px!important}.px-6{padding-right:24px!important;padding-left:24px!important}.px-7{padding-right:28px!important;padding-left:28px!important}.px-8{padding-right:32px!important;padding-left:32px!important}.px-9{padding-right:36px!important;padding-left:36px!important}.px-10{padding-right:40px!important;padding-left:40px!important}.px-11{padding-right:44px!important;padding-left:44px!important}.px-12{padding-right:48px!important;padding-left:48px!important}.px-13{padding-right:52px!important;padding-left:52px!important}.px-14{padding-right:56px!important;padding-left:56px!important}.px-15{padding-right:60px!important;padding-left:60px!important}.px-16{padding-right:64px!important;padding-left:64px!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:4px!important;padding-bottom:4px!important}.py-2{padding-top:8px!important;padding-bottom:8px!important}.py-3{padding-top:12px!important;padding-bottom:12px!important}.py-4{padding-top:16px!important;padding-bottom:16px!important}.py-5{padding-top:20px!important;padding-bottom:20px!important}.py-6{padding-top:24px!important;padding-bottom:24px!important}.py-7{padding-top:28px!important;padding-bottom:28px!important}.py-8{padding-top:32px!important;padding-bottom:32px!important}.py-9{padding-top:36px!important;padding-bottom:36px!important}.py-10{padding-top:40px!important;padding-bottom:40px!important}.py-11{padding-top:44px!important;padding-bottom:44px!important}.py-12{padding-top:48px!important;padding-bottom:48px!important}.py-13{padding-top:52px!important;padding-bottom:52px!important}.py-14{padding-top:56px!important;padding-bottom:56px!important}.py-15{padding-top:60px!important;padding-bottom:60px!important}.py-16{padding-top:64px!important;padding-bottom:64px!important}.pt-0{padding-top:0!important}.pt-1{padding-top:4px!important}.pt-2{padding-top:8px!important}.pt-3{padding-top:12px!important}.pt-4{padding-top:16px!important}.pt-5{padding-top:20px!important}.pt-6{padding-top:24px!important}.pt-7{padding-top:28px!important}.pt-8{padding-top:32px!important}.pt-9{padding-top:36px!important}.pt-10{padding-top:40px!important}.pt-11{padding-top:44px!important}.pt-12{padding-top:48px!important}.pt-13{padding-top:52px!important}.pt-14{padding-top:56px!important}.pt-15{padding-top:60px!important}.pt-16{padding-top:64px!important}.pr-0{padding-right:0!important}.pr-1{padding-right:4px!important}.pr-2{padding-right:8px!important}.pr-3{padding-right:12px!important}.pr-4{padding-right:16px!important}.pr-5{padding-right:20px!important}.pr-6{padding-right:24px!important}.pr-7{padding-right:28px!important}.pr-8{padding-right:32px!important}.pr-9{padding-right:36px!important}.pr-10{padding-right:40px!important}.pr-11{padding-right:44px!important}.pr-12{padding-right:48px!important}.pr-13{padding-right:52px!important}.pr-14{padding-right:56px!important}.pr-15{padding-right:60px!important}.pr-16{padding-right:64px!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:4px!important}.pb-2{padding-bottom:8px!important}.pb-3{padding-bottom:12px!important}.pb-4{padding-bottom:16px!important}.pb-5{padding-bottom:20px!important}.pb-6{padding-bottom:24px!important}.pb-7{padding-bottom:28px!important}.pb-8{padding-bottom:32px!important}.pb-9{padding-bottom:36px!important}.pb-10{padding-bottom:40px!important}.pb-11{padding-bottom:44px!important}.pb-12{padding-bottom:48px!important}.pb-13{padding-bottom:52px!important}.pb-14{padding-bottom:56px!important}.pb-15{padding-bottom:60px!important}.pb-16{padding-bottom:64px!important}.pl-0{padding-left:0!important}.pl-1{padding-left:4px!important}.pl-2{padding-left:8px!important}.pl-3{padding-left:12px!important}.pl-4{padding-left:16px!important}.pl-5{padding-left:20px!important}.pl-6{padding-left:24px!important}.pl-7{padding-left:28px!important}.pl-8{padding-left:32px!important}.pl-9{padding-left:36px!important}.pl-10{padding-left:40px!important}.pl-11{padding-left:44px!important}.pl-12{padding-left:48px!important}.pl-13{padding-left:52px!important}.pl-14{padding-left:56px!important}.pl-15{padding-left:60px!important}.pl-16{padding-left:64px!important}.v-locale--is-ltr .ps-0{padding-left:0!important}.v-locale--is-rtl .ps-0{padding-right:0!important}.v-locale--is-ltr .ps-1{padding-left:4px!important}.v-locale--is-rtl .ps-1{padding-right:4px!important}.v-locale--is-ltr .ps-2{padding-left:8px!important}.v-locale--is-rtl .ps-2{padding-right:8px!important}.v-locale--is-ltr .ps-3{padding-left:12px!important}.v-locale--is-rtl .ps-3{padding-right:12px!important}.v-locale--is-ltr .ps-4{padding-left:16px!important}.v-locale--is-rtl .ps-4{padding-right:16px!important}.v-locale--is-ltr .ps-5{padding-left:20px!important}.v-locale--is-rtl .ps-5{padding-right:20px!important}.v-locale--is-ltr .ps-6{padding-left:24px!important}.v-locale--is-rtl .ps-6{padding-right:24px!important}.v-locale--is-ltr .ps-7{padding-left:28px!important}.v-locale--is-rtl .ps-7{padding-right:28px!important}.v-locale--is-ltr .ps-8{padding-left:32px!important}.v-locale--is-rtl .ps-8{padding-right:32px!important}.v-locale--is-ltr .ps-9{padding-left:36px!important}.v-locale--is-rtl .ps-9{padding-right:36px!important}.v-locale--is-ltr .ps-10{padding-left:40px!important}.v-locale--is-rtl .ps-10{padding-right:40px!important}.v-locale--is-ltr .ps-11{padding-left:44px!important}.v-locale--is-rtl .ps-11{padding-right:44px!important}.v-locale--is-ltr .ps-12{padding-left:48px!important}.v-locale--is-rtl .ps-12{padding-right:48px!important}.v-locale--is-ltr .ps-13{padding-left:52px!important}.v-locale--is-rtl .ps-13{padding-right:52px!important}.v-locale--is-ltr .ps-14{padding-left:56px!important}.v-locale--is-rtl .ps-14{padding-right:56px!important}.v-locale--is-ltr .ps-15{padding-left:60px!important}.v-locale--is-rtl .ps-15{padding-right:60px!important}.v-locale--is-ltr .ps-16{padding-left:64px!important}.v-locale--is-rtl .ps-16{padding-right:64px!important}.v-locale--is-ltr .pe-0{padding-right:0!important}.v-locale--is-rtl .pe-0{padding-left:0!important}.v-locale--is-ltr .pe-1{padding-right:4px!important}.v-locale--is-rtl .pe-1{padding-left:4px!important}.v-locale--is-ltr .pe-2{padding-right:8px!important}.v-locale--is-rtl .pe-2{padding-left:8px!important}.v-locale--is-ltr .pe-3{padding-right:12px!important}.v-locale--is-rtl .pe-3{padding-left:12px!important}.v-locale--is-ltr .pe-4{padding-right:16px!important}.v-locale--is-rtl .pe-4{padding-left:16px!important}.v-locale--is-ltr .pe-5{padding-right:20px!important}.v-locale--is-rtl .pe-5{padding-left:20px!important}.v-locale--is-ltr .pe-6{padding-right:24px!important}.v-locale--is-rtl .pe-6{padding-left:24px!important}.v-locale--is-ltr .pe-7{padding-right:28px!important}.v-locale--is-rtl .pe-7{padding-left:28px!important}.v-locale--is-ltr .pe-8{padding-right:32px!important}.v-locale--is-rtl .pe-8{padding-left:32px!important}.v-locale--is-ltr .pe-9{padding-right:36px!important}.v-locale--is-rtl .pe-9{padding-left:36px!important}.v-locale--is-ltr .pe-10{padding-right:40px!important}.v-locale--is-rtl .pe-10{padding-left:40px!important}.v-locale--is-ltr .pe-11{padding-right:44px!important}.v-locale--is-rtl .pe-11{padding-left:44px!important}.v-locale--is-ltr .pe-12{padding-right:48px!important}.v-locale--is-rtl .pe-12{padding-left:48px!important}.v-locale--is-ltr .pe-13{padding-right:52px!important}.v-locale--is-rtl .pe-13{padding-left:52px!important}.v-locale--is-ltr .pe-14{padding-right:56px!important}.v-locale--is-rtl .pe-14{padding-left:56px!important}.v-locale--is-ltr .pe-15{padding-right:60px!important}.v-locale--is-rtl .pe-15{padding-left:60px!important}.v-locale--is-ltr .pe-16{padding-right:64px!important}.v-locale--is-rtl .pe-16{padding-left:64px!important}.rounded-0{border-radius:0!important}.rounded-sm{border-radius:2px!important}.rounded{border-radius:4px!important}.rounded-lg{border-radius:8px!important}.rounded-xl{border-radius:24px!important}.rounded-pill{border-radius:9999px!important}.rounded-circle{border-radius:50%!important}.rounded-shaped{border-radius:24px 0!important}.rounded-t-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-t-sm{border-top-left-radius:2px!important;border-top-right-radius:2px!important}.rounded-t{border-top-left-radius:4px!important;border-top-right-radius:4px!important}.rounded-t-lg{border-top-left-radius:8px!important;border-top-right-radius:8px!important}.rounded-t-xl{border-top-left-radius:24px!important;border-top-right-radius:24px!important}.rounded-t-pill{border-top-left-radius:9999px!important;border-top-right-radius:9999px!important}.rounded-t-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-t-shaped{border-top-left-radius:24px!important}.rounded-r-0,.rounded-t-shaped{border-top-right-radius:0!important}.rounded-r-0{border-bottom-right-radius:0!important}.rounded-r-sm{border-top-right-radius:2px!important;border-bottom-right-radius:2px!important}.rounded-r{border-top-right-radius:4px!important;border-bottom-right-radius:4px!important}.rounded-r-lg{border-top-right-radius:8px!important;border-bottom-right-radius:8px!important}.rounded-r-xl{border-top-right-radius:24px!important;border-bottom-right-radius:24px!important}.rounded-r-pill{border-top-right-radius:9999px!important;border-bottom-right-radius:9999px!important}.rounded-r-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-r-shaped{border-top-right-radius:24px!important}.rounded-b-0,.rounded-r-shaped{border-bottom-right-radius:0!important}.rounded-b-0{border-bottom-left-radius:0!important}.rounded-b-sm{border-bottom-left-radius:2px!important;border-bottom-right-radius:2px!important}.rounded-b{border-bottom-left-radius:4px!important;border-bottom-right-radius:4px!important}.rounded-b-lg{border-bottom-left-radius:8px!important;border-bottom-right-radius:8px!important}.rounded-b-xl{border-bottom-left-radius:24px!important;border-bottom-right-radius:24px!important}.rounded-b-pill{border-bottom-left-radius:9999px!important;border-bottom-right-radius:9999px!important}.rounded-b-circle{border-bottom-left-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-b-shaped{border-bottom-left-radius:24px!important;border-bottom-right-radius:0!important}.rounded-l-0{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.rounded-l-sm{border-top-left-radius:2px!important;border-bottom-left-radius:2px!important}.rounded-l{border-top-left-radius:4px!important;border-bottom-left-radius:4px!important}.rounded-l-lg{border-top-left-radius:8px!important;border-bottom-left-radius:8px!important}.rounded-l-xl{border-top-left-radius:24px!important;border-bottom-left-radius:24px!important}.rounded-l-pill{border-top-left-radius:9999px!important;border-bottom-left-radius:9999px!important}.rounded-l-circle{border-top-left-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-l-shaped{border-top-left-radius:24px!important;border-bottom-left-radius:0!important}.rounded-tl-0{border-top-left-radius:0!important}.rounded-tl-sm{border-top-left-radius:2px!important}.rounded-tl{border-top-left-radius:4px!important}.rounded-tl-lg{border-top-left-radius:8px!important}.rounded-tl-xl{border-top-left-radius:24px!important}.rounded-tl-pill{border-top-left-radius:9999px!important}.rounded-tl-circle{border-top-left-radius:50%!important}.rounded-tl-shaped{border-top-left-radius:24px 0!important}.rounded-tr-0{border-top-right-radius:0!important}.rounded-tr-sm{border-top-right-radius:2px!important}.rounded-tr{border-top-right-radius:4px!important}.rounded-tr-lg{border-top-right-radius:8px!important}.rounded-tr-xl{border-top-right-radius:24px!important}.rounded-tr-pill{border-top-right-radius:9999px!important}.rounded-tr-circle{border-top-right-radius:50%!important}.rounded-tr-shaped{border-top-right-radius:24px 0!important}.rounded-br-0{border-bottom-right-radius:0!important}.rounded-br-sm{border-bottom-right-radius:2px!important}.rounded-br{border-bottom-right-radius:4px!important}.rounded-br-lg{border-bottom-right-radius:8px!important}.rounded-br-xl{border-bottom-right-radius:24px!important}.rounded-br-pill{border-bottom-right-radius:9999px!important}.rounded-br-circle{border-bottom-right-radius:50%!important}.rounded-br-shaped{border-bottom-right-radius:24px 0!important}.rounded-bl-0{border-bottom-left-radius:0!important}.rounded-bl-sm{border-bottom-left-radius:2px!important}.rounded-bl{border-bottom-left-radius:4px!important}.rounded-bl-lg{border-bottom-left-radius:8px!important}.rounded-bl-xl{border-bottom-left-radius:24px!important}.rounded-bl-pill{border-bottom-left-radius:9999px!important}.rounded-bl-circle{border-bottom-left-radius:50%!important}.rounded-bl-shaped{border-bottom-left-radius:24px 0!important}.border-0{border-width:0!important}.border,.border-0{border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border{border-width:thin!important}.border-sm{border-width:1px!important}.border-md,.border-sm{border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-md{border-width:2px!important}.border-lg{border-width:4px!important}.border-lg,.border-xl{border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-xl{border-width:8px!important}.border-opacity-0{--v-border-opacity:0!important}.border-opacity{--v-border-opacity:.12!important}.border-opacity-25{--v-border-opacity:.25!important}.border-opacity-50{--v-border-opacity:.5!important}.border-opacity-75{--v-border-opacity:.75!important}.border-opacity-100{--v-border-opacity:1!important}.border-t-0{border-top-width:0!important}.border-t,.border-t-0{border-top-style:solid!important;border-top-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t{border-top-width:thin!important}.border-t-sm{border-top-width:1px!important}.border-t-md,.border-t-sm{border-top-style:solid!important;border-top-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-md{border-top-width:2px!important}.border-t-lg{border-top-width:4px!important}.border-t-lg,.border-t-xl{border-top-style:solid!important;border-top-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-xl{border-top-width:8px!important}.border-r-0{border-right-width:0!important}.border-r,.border-r-0{border-right-style:solid!important;border-right-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-r{border-right-width:thin!important}.border-r-sm{border-right-width:1px!important}.border-r-md,.border-r-sm{border-right-style:solid!important;border-right-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-r-md{border-right-width:2px!important}.border-r-lg{border-right-width:4px!important}.border-r-lg,.border-r-xl{border-right-style:solid!important;border-right-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-r-xl{border-right-width:8px!important}.border-b-0{border-bottom-width:0!important}.border-b,.border-b-0{border-bottom-style:solid!important;border-bottom-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b{border-bottom-width:thin!important}.border-b-sm{border-bottom-width:1px!important}.border-b-md,.border-b-sm{border-bottom-style:solid!important;border-bottom-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-md{border-bottom-width:2px!important}.border-b-lg{border-bottom-width:4px!important}.border-b-lg,.border-b-xl{border-bottom-style:solid!important;border-bottom-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-xl{border-bottom-width:8px!important}.border-l-0{border-left-width:0!important}.border-l,.border-l-0{border-left-style:solid!important;border-left-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-l{border-left-width:thin!important}.border-l-sm{border-left-width:1px!important}.border-l-md,.border-l-sm{border-left-style:solid!important;border-left-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-l-md{border-left-width:2px!important}.border-l-lg{border-left-width:4px!important}.border-l-lg,.border-l-xl{border-left-style:solid!important;border-left-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-l-xl{border-left-width:8px!important}.border-solid{border-style:solid!important}.border-dashed{border-style:dashed!important}.border-dotted{border-style:dotted!important}.border-double{border-style:double!important}.border-none{border-style:none!important}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}.text-justify{text-align:justify!important}.text-start{text-align:start!important}.text-end{text-align:end!important}.text-decoration-line-through{text-decoration:line-through!important}.text-decoration-none{text-decoration:none!important}.text-decoration-overline{text-decoration:overline!important}.text-decoration-underline{text-decoration:underline!important}.text-wrap{white-space:normal!important}.text-no-wrap{white-space:nowrap!important}.text-pre{white-space:pre!important}.text-pre-line{white-space:pre-line!important}.text-pre-wrap{white-space:pre-wrap!important}.text-break{overflow-wrap:break-word!important;word-break:break-word!important}.text-high-emphasis{opacity:var(--v-high-emphasis-opacity)!important}.text-medium-emphasis{opacity:var(--v-medium-emphasis-opacity)!important}.text-disabled{opacity:var(--v-disabled-opacity)!important}.text-truncate{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}.text-none{text-transform:none!important}.text-capitalize{text-transform:capitalize!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-h1{font-size:6rem!important;line-height:6rem;letter-spacing:-.015625em!important}.text-h1,.text-h2{font-weight:300;font-family:Roboto,sans-serif!important}.text-h2{font-size:3.75rem!important;line-height:3.75rem;letter-spacing:-.0083333333em!important}.text-h3{font-size:3rem!important;line-height:3.125rem;letter-spacing:normal!important}.text-h3,.text-h4{font-weight:400;font-family:Roboto,sans-serif!important}.text-h4{font-size:2.125rem!important;line-height:2.5rem;letter-spacing:.0073529412em!important}.text-h5{font-size:1.5rem!important;font-weight:400;letter-spacing:normal!important}.text-h5,.text-h6{line-height:2rem;font-family:Roboto,sans-serif!important}.text-h6{font-size:1.25rem!important;font-weight:500;letter-spacing:.0125em!important}.text-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important}.text-subtitle-1,.text-subtitle-2{font-family:Roboto,sans-serif!important}.text-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important}.text-body-1{font-size:1rem!important;line-height:1.5rem;letter-spacing:.03125em!important}.text-body-1,.text-body-2{font-weight:400;font-family:Roboto,sans-serif!important}.text-body-2{line-height:1.25rem;letter-spacing:.0178571429em!important}.text-body-2,.text-button{font-size:.875rem!important}.text-button{font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif!important;text-transform:uppercase!important}.text-caption{font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important}.text-caption,.text-overline{font-size:.75rem!important;font-family:Roboto,sans-serif!important}.text-overline{font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;text-transform:uppercase!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-fixed{position:fixed!important}.position-absolute{position:absolute!important}.position-sticky{position:sticky!important}@media(min-width:600px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.float-sm-none{float:none!important}.float-sm-left{float:left!important}.float-sm-right{float:right!important}.v-locale--is-rtl .float-sm-end{float:left!important}.v-locale--is-ltr .float-sm-end,.v-locale--is-rtl .float-sm-start{float:right!important}.v-locale--is-ltr .float-sm-start{float:left!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-sm-start{justify-content:flex-start!important}.justify-sm-end{justify-content:flex-end!important}.justify-sm-center{justify-content:center!important}.justify-sm-space-between{justify-content:space-between!important}.justify-sm-space-around{justify-content:space-around!important}.align-sm-start{align-items:flex-start!important}.align-sm-end{align-items:flex-end!important}.align-sm-center{align-items:center!important}.align-sm-baseline{align-items:baseline!important}.align-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-space-between{align-content:space-between!important}.align-content-sm-space-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-6{order:6!important}.order-sm-7{order:7!important}.order-sm-8{order:8!important}.order-sm-9{order:9!important}.order-sm-10{order:10!important}.order-sm-11{order:11!important}.order-sm-12{order:12!important}.order-sm-last{order:13!important}.ma-sm-0{margin:0!important}.ma-sm-1{margin:4px!important}.ma-sm-2{margin:8px!important}.ma-sm-3{margin:12px!important}.ma-sm-4{margin:16px!important}.ma-sm-5{margin:20px!important}.ma-sm-6{margin:24px!important}.ma-sm-7{margin:28px!important}.ma-sm-8{margin:32px!important}.ma-sm-9{margin:36px!important}.ma-sm-10{margin:40px!important}.ma-sm-11{margin:44px!important}.ma-sm-12{margin:48px!important}.ma-sm-13{margin:52px!important}.ma-sm-14{margin:56px!important}.ma-sm-15{margin:60px!important}.ma-sm-16{margin:64px!important}.ma-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:4px!important;margin-left:4px!important}.mx-sm-2{margin-right:8px!important;margin-left:8px!important}.mx-sm-3{margin-right:12px!important;margin-left:12px!important}.mx-sm-4{margin-right:16px!important;margin-left:16px!important}.mx-sm-5{margin-right:20px!important;margin-left:20px!important}.mx-sm-6{margin-right:24px!important;margin-left:24px!important}.mx-sm-7{margin-right:28px!important;margin-left:28px!important}.mx-sm-8{margin-right:32px!important;margin-left:32px!important}.mx-sm-9{margin-right:36px!important;margin-left:36px!important}.mx-sm-10{margin-right:40px!important;margin-left:40px!important}.mx-sm-11{margin-right:44px!important;margin-left:44px!important}.mx-sm-12{margin-right:48px!important;margin-left:48px!important}.mx-sm-13{margin-right:52px!important;margin-left:52px!important}.mx-sm-14{margin-right:56px!important;margin-left:56px!important}.mx-sm-15{margin-right:60px!important;margin-left:60px!important}.mx-sm-16{margin-right:64px!important;margin-left:64px!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:4px!important;margin-bottom:4px!important}.my-sm-2{margin-top:8px!important;margin-bottom:8px!important}.my-sm-3{margin-top:12px!important;margin-bottom:12px!important}.my-sm-4{margin-top:16px!important;margin-bottom:16px!important}.my-sm-5{margin-top:20px!important;margin-bottom:20px!important}.my-sm-6{margin-top:24px!important;margin-bottom:24px!important}.my-sm-7{margin-top:28px!important;margin-bottom:28px!important}.my-sm-8{margin-top:32px!important;margin-bottom:32px!important}.my-sm-9{margin-top:36px!important;margin-bottom:36px!important}.my-sm-10{margin-top:40px!important;margin-bottom:40px!important}.my-sm-11{margin-top:44px!important;margin-bottom:44px!important}.my-sm-12{margin-top:48px!important;margin-bottom:48px!important}.my-sm-13{margin-top:52px!important;margin-bottom:52px!important}.my-sm-14{margin-top:56px!important;margin-bottom:56px!important}.my-sm-15{margin-top:60px!important;margin-bottom:60px!important}.my-sm-16{margin-top:64px!important;margin-bottom:64px!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:4px!important}.mt-sm-2{margin-top:8px!important}.mt-sm-3{margin-top:12px!important}.mt-sm-4{margin-top:16px!important}.mt-sm-5{margin-top:20px!important}.mt-sm-6{margin-top:24px!important}.mt-sm-7{margin-top:28px!important}.mt-sm-8{margin-top:32px!important}.mt-sm-9{margin-top:36px!important}.mt-sm-10{margin-top:40px!important}.mt-sm-11{margin-top:44px!important}.mt-sm-12{margin-top:48px!important}.mt-sm-13{margin-top:52px!important}.mt-sm-14{margin-top:56px!important}.mt-sm-15{margin-top:60px!important}.mt-sm-16{margin-top:64px!important}.mt-sm-auto{margin-top:auto!important}.mr-sm-0{margin-right:0!important}.mr-sm-1{margin-right:4px!important}.mr-sm-2{margin-right:8px!important}.mr-sm-3{margin-right:12px!important}.mr-sm-4{margin-right:16px!important}.mr-sm-5{margin-right:20px!important}.mr-sm-6{margin-right:24px!important}.mr-sm-7{margin-right:28px!important}.mr-sm-8{margin-right:32px!important}.mr-sm-9{margin-right:36px!important}.mr-sm-10{margin-right:40px!important}.mr-sm-11{margin-right:44px!important}.mr-sm-12{margin-right:48px!important}.mr-sm-13{margin-right:52px!important}.mr-sm-14{margin-right:56px!important}.mr-sm-15{margin-right:60px!important}.mr-sm-16{margin-right:64px!important}.mr-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:4px!important}.mb-sm-2{margin-bottom:8px!important}.mb-sm-3{margin-bottom:12px!important}.mb-sm-4{margin-bottom:16px!important}.mb-sm-5{margin-bottom:20px!important}.mb-sm-6{margin-bottom:24px!important}.mb-sm-7{margin-bottom:28px!important}.mb-sm-8{margin-bottom:32px!important}.mb-sm-9{margin-bottom:36px!important}.mb-sm-10{margin-bottom:40px!important}.mb-sm-11{margin-bottom:44px!important}.mb-sm-12{margin-bottom:48px!important}.mb-sm-13{margin-bottom:52px!important}.mb-sm-14{margin-bottom:56px!important}.mb-sm-15{margin-bottom:60px!important}.mb-sm-16{margin-bottom:64px!important}.mb-sm-auto{margin-bottom:auto!important}.ml-sm-0{margin-left:0!important}.ml-sm-1{margin-left:4px!important}.ml-sm-2{margin-left:8px!important}.ml-sm-3{margin-left:12px!important}.ml-sm-4{margin-left:16px!important}.ml-sm-5{margin-left:20px!important}.ml-sm-6{margin-left:24px!important}.ml-sm-7{margin-left:28px!important}.ml-sm-8{margin-left:32px!important}.ml-sm-9{margin-left:36px!important}.ml-sm-10{margin-left:40px!important}.ml-sm-11{margin-left:44px!important}.ml-sm-12{margin-left:48px!important}.ml-sm-13{margin-left:52px!important}.ml-sm-14{margin-left:56px!important}.ml-sm-15{margin-left:60px!important}.ml-sm-16{margin-left:64px!important}.ml-sm-auto{margin-left:auto!important}.v-locale--is-ltr .ms-sm-0{margin-left:0!important}.v-locale--is-rtl .ms-sm-0{margin-right:0!important}.v-locale--is-ltr .ms-sm-1{margin-left:4px!important}.v-locale--is-rtl .ms-sm-1{margin-right:4px!important}.v-locale--is-ltr .ms-sm-2{margin-left:8px!important}.v-locale--is-rtl .ms-sm-2{margin-right:8px!important}.v-locale--is-ltr .ms-sm-3{margin-left:12px!important}.v-locale--is-rtl .ms-sm-3{margin-right:12px!important}.v-locale--is-ltr .ms-sm-4{margin-left:16px!important}.v-locale--is-rtl .ms-sm-4{margin-right:16px!important}.v-locale--is-ltr .ms-sm-5{margin-left:20px!important}.v-locale--is-rtl .ms-sm-5{margin-right:20px!important}.v-locale--is-ltr .ms-sm-6{margin-left:24px!important}.v-locale--is-rtl .ms-sm-6{margin-right:24px!important}.v-locale--is-ltr .ms-sm-7{margin-left:28px!important}.v-locale--is-rtl .ms-sm-7{margin-right:28px!important}.v-locale--is-ltr .ms-sm-8{margin-left:32px!important}.v-locale--is-rtl .ms-sm-8{margin-right:32px!important}.v-locale--is-ltr .ms-sm-9{margin-left:36px!important}.v-locale--is-rtl .ms-sm-9{margin-right:36px!important}.v-locale--is-ltr .ms-sm-10{margin-left:40px!important}.v-locale--is-rtl .ms-sm-10{margin-right:40px!important}.v-locale--is-ltr .ms-sm-11{margin-left:44px!important}.v-locale--is-rtl .ms-sm-11{margin-right:44px!important}.v-locale--is-ltr .ms-sm-12{margin-left:48px!important}.v-locale--is-rtl .ms-sm-12{margin-right:48px!important}.v-locale--is-ltr .ms-sm-13{margin-left:52px!important}.v-locale--is-rtl .ms-sm-13{margin-right:52px!important}.v-locale--is-ltr .ms-sm-14{margin-left:56px!important}.v-locale--is-rtl .ms-sm-14{margin-right:56px!important}.v-locale--is-ltr .ms-sm-15{margin-left:60px!important}.v-locale--is-rtl .ms-sm-15{margin-right:60px!important}.v-locale--is-ltr .ms-sm-16{margin-left:64px!important}.v-locale--is-rtl .ms-sm-16{margin-right:64px!important}.v-locale--is-ltr .ms-sm-auto{margin-left:auto!important}.v-locale--is-rtl .ms-sm-auto{margin-right:auto!important}.v-locale--is-ltr .me-sm-0{margin-right:0!important}.v-locale--is-rtl .me-sm-0{margin-left:0!important}.v-locale--is-ltr .me-sm-1{margin-right:4px!important}.v-locale--is-rtl .me-sm-1{margin-left:4px!important}.v-locale--is-ltr .me-sm-2{margin-right:8px!important}.v-locale--is-rtl .me-sm-2{margin-left:8px!important}.v-locale--is-ltr .me-sm-3{margin-right:12px!important}.v-locale--is-rtl .me-sm-3{margin-left:12px!important}.v-locale--is-ltr .me-sm-4{margin-right:16px!important}.v-locale--is-rtl .me-sm-4{margin-left:16px!important}.v-locale--is-ltr .me-sm-5{margin-right:20px!important}.v-locale--is-rtl .me-sm-5{margin-left:20px!important}.v-locale--is-ltr .me-sm-6{margin-right:24px!important}.v-locale--is-rtl .me-sm-6{margin-left:24px!important}.v-locale--is-ltr .me-sm-7{margin-right:28px!important}.v-locale--is-rtl .me-sm-7{margin-left:28px!important}.v-locale--is-ltr .me-sm-8{margin-right:32px!important}.v-locale--is-rtl .me-sm-8{margin-left:32px!important}.v-locale--is-ltr .me-sm-9{margin-right:36px!important}.v-locale--is-rtl .me-sm-9{margin-left:36px!important}.v-locale--is-ltr .me-sm-10{margin-right:40px!important}.v-locale--is-rtl .me-sm-10{margin-left:40px!important}.v-locale--is-ltr .me-sm-11{margin-right:44px!important}.v-locale--is-rtl .me-sm-11{margin-left:44px!important}.v-locale--is-ltr .me-sm-12{margin-right:48px!important}.v-locale--is-rtl .me-sm-12{margin-left:48px!important}.v-locale--is-ltr .me-sm-13{margin-right:52px!important}.v-locale--is-rtl .me-sm-13{margin-left:52px!important}.v-locale--is-ltr .me-sm-14{margin-right:56px!important}.v-locale--is-rtl .me-sm-14{margin-left:56px!important}.v-locale--is-ltr .me-sm-15{margin-right:60px!important}.v-locale--is-rtl .me-sm-15{margin-left:60px!important}.v-locale--is-ltr .me-sm-16{margin-right:64px!important}.v-locale--is-rtl .me-sm-16{margin-left:64px!important}.v-locale--is-ltr .me-sm-auto{margin-right:auto!important}.v-locale--is-rtl .me-sm-auto{margin-left:auto!important}.ma-sm-n1{margin:-4px!important}.ma-sm-n2{margin:-8px!important}.ma-sm-n3{margin:-12px!important}.ma-sm-n4{margin:-16px!important}.ma-sm-n5{margin:-20px!important}.ma-sm-n6{margin:-24px!important}.ma-sm-n7{margin:-28px!important}.ma-sm-n8{margin:-32px!important}.ma-sm-n9{margin:-36px!important}.ma-sm-n10{margin:-40px!important}.ma-sm-n11{margin:-44px!important}.ma-sm-n12{margin:-48px!important}.ma-sm-n13{margin:-52px!important}.ma-sm-n14{margin:-56px!important}.ma-sm-n15{margin:-60px!important}.ma-sm-n16{margin:-64px!important}.mx-sm-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-sm-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-sm-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-sm-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-sm-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-sm-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-sm-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-sm-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-sm-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-sm-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-sm-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-sm-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-sm-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-sm-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-sm-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-sm-n16{margin-right:-64px!important;margin-left:-64px!important}.my-sm-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-sm-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-sm-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-sm-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-sm-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-sm-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-sm-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-sm-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-sm-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-sm-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-sm-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-sm-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-sm-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-sm-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-sm-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-sm-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-sm-n1{margin-top:-4px!important}.mt-sm-n2{margin-top:-8px!important}.mt-sm-n3{margin-top:-12px!important}.mt-sm-n4{margin-top:-16px!important}.mt-sm-n5{margin-top:-20px!important}.mt-sm-n6{margin-top:-24px!important}.mt-sm-n7{margin-top:-28px!important}.mt-sm-n8{margin-top:-32px!important}.mt-sm-n9{margin-top:-36px!important}.mt-sm-n10{margin-top:-40px!important}.mt-sm-n11{margin-top:-44px!important}.mt-sm-n12{margin-top:-48px!important}.mt-sm-n13{margin-top:-52px!important}.mt-sm-n14{margin-top:-56px!important}.mt-sm-n15{margin-top:-60px!important}.mt-sm-n16{margin-top:-64px!important}.mr-sm-n1{margin-right:-4px!important}.mr-sm-n2{margin-right:-8px!important}.mr-sm-n3{margin-right:-12px!important}.mr-sm-n4{margin-right:-16px!important}.mr-sm-n5{margin-right:-20px!important}.mr-sm-n6{margin-right:-24px!important}.mr-sm-n7{margin-right:-28px!important}.mr-sm-n8{margin-right:-32px!important}.mr-sm-n9{margin-right:-36px!important}.mr-sm-n10{margin-right:-40px!important}.mr-sm-n11{margin-right:-44px!important}.mr-sm-n12{margin-right:-48px!important}.mr-sm-n13{margin-right:-52px!important}.mr-sm-n14{margin-right:-56px!important}.mr-sm-n15{margin-right:-60px!important}.mr-sm-n16{margin-right:-64px!important}.mb-sm-n1{margin-bottom:-4px!important}.mb-sm-n2{margin-bottom:-8px!important}.mb-sm-n3{margin-bottom:-12px!important}.mb-sm-n4{margin-bottom:-16px!important}.mb-sm-n5{margin-bottom:-20px!important}.mb-sm-n6{margin-bottom:-24px!important}.mb-sm-n7{margin-bottom:-28px!important}.mb-sm-n8{margin-bottom:-32px!important}.mb-sm-n9{margin-bottom:-36px!important}.mb-sm-n10{margin-bottom:-40px!important}.mb-sm-n11{margin-bottom:-44px!important}.mb-sm-n12{margin-bottom:-48px!important}.mb-sm-n13{margin-bottom:-52px!important}.mb-sm-n14{margin-bottom:-56px!important}.mb-sm-n15{margin-bottom:-60px!important}.mb-sm-n16{margin-bottom:-64px!important}.ml-sm-n1{margin-left:-4px!important}.ml-sm-n2{margin-left:-8px!important}.ml-sm-n3{margin-left:-12px!important}.ml-sm-n4{margin-left:-16px!important}.ml-sm-n5{margin-left:-20px!important}.ml-sm-n6{margin-left:-24px!important}.ml-sm-n7{margin-left:-28px!important}.ml-sm-n8{margin-left:-32px!important}.ml-sm-n9{margin-left:-36px!important}.ml-sm-n10{margin-left:-40px!important}.ml-sm-n11{margin-left:-44px!important}.ml-sm-n12{margin-left:-48px!important}.ml-sm-n13{margin-left:-52px!important}.ml-sm-n14{margin-left:-56px!important}.ml-sm-n15{margin-left:-60px!important}.ml-sm-n16{margin-left:-64px!important}.v-locale--is-ltr .ms-sm-n1{margin-left:-4px!important}.v-locale--is-rtl .ms-sm-n1{margin-right:-4px!important}.v-locale--is-ltr .ms-sm-n2{margin-left:-8px!important}.v-locale--is-rtl .ms-sm-n2{margin-right:-8px!important}.v-locale--is-ltr .ms-sm-n3{margin-left:-12px!important}.v-locale--is-rtl .ms-sm-n3{margin-right:-12px!important}.v-locale--is-ltr .ms-sm-n4{margin-left:-16px!important}.v-locale--is-rtl .ms-sm-n4{margin-right:-16px!important}.v-locale--is-ltr .ms-sm-n5{margin-left:-20px!important}.v-locale--is-rtl .ms-sm-n5{margin-right:-20px!important}.v-locale--is-ltr .ms-sm-n6{margin-left:-24px!important}.v-locale--is-rtl .ms-sm-n6{margin-right:-24px!important}.v-locale--is-ltr .ms-sm-n7{margin-left:-28px!important}.v-locale--is-rtl .ms-sm-n7{margin-right:-28px!important}.v-locale--is-ltr .ms-sm-n8{margin-left:-32px!important}.v-locale--is-rtl .ms-sm-n8{margin-right:-32px!important}.v-locale--is-ltr .ms-sm-n9{margin-left:-36px!important}.v-locale--is-rtl .ms-sm-n9{margin-right:-36px!important}.v-locale--is-ltr .ms-sm-n10{margin-left:-40px!important}.v-locale--is-rtl .ms-sm-n10{margin-right:-40px!important}.v-locale--is-ltr .ms-sm-n11{margin-left:-44px!important}.v-locale--is-rtl .ms-sm-n11{margin-right:-44px!important}.v-locale--is-ltr .ms-sm-n12{margin-left:-48px!important}.v-locale--is-rtl .ms-sm-n12{margin-right:-48px!important}.v-locale--is-ltr .ms-sm-n13{margin-left:-52px!important}.v-locale--is-rtl .ms-sm-n13{margin-right:-52px!important}.v-locale--is-ltr .ms-sm-n14{margin-left:-56px!important}.v-locale--is-rtl .ms-sm-n14{margin-right:-56px!important}.v-locale--is-ltr .ms-sm-n15{margin-left:-60px!important}.v-locale--is-rtl .ms-sm-n15{margin-right:-60px!important}.v-locale--is-ltr .ms-sm-n16{margin-left:-64px!important}.v-locale--is-rtl .ms-sm-n16{margin-right:-64px!important}.v-locale--is-ltr .me-sm-n1{margin-right:-4px!important}.v-locale--is-rtl .me-sm-n1{margin-left:-4px!important}.v-locale--is-ltr .me-sm-n2{margin-right:-8px!important}.v-locale--is-rtl .me-sm-n2{margin-left:-8px!important}.v-locale--is-ltr .me-sm-n3{margin-right:-12px!important}.v-locale--is-rtl .me-sm-n3{margin-left:-12px!important}.v-locale--is-ltr .me-sm-n4{margin-right:-16px!important}.v-locale--is-rtl .me-sm-n4{margin-left:-16px!important}.v-locale--is-ltr .me-sm-n5{margin-right:-20px!important}.v-locale--is-rtl .me-sm-n5{margin-left:-20px!important}.v-locale--is-ltr .me-sm-n6{margin-right:-24px!important}.v-locale--is-rtl .me-sm-n6{margin-left:-24px!important}.v-locale--is-ltr .me-sm-n7{margin-right:-28px!important}.v-locale--is-rtl .me-sm-n7{margin-left:-28px!important}.v-locale--is-ltr .me-sm-n8{margin-right:-32px!important}.v-locale--is-rtl .me-sm-n8{margin-left:-32px!important}.v-locale--is-ltr .me-sm-n9{margin-right:-36px!important}.v-locale--is-rtl .me-sm-n9{margin-left:-36px!important}.v-locale--is-ltr .me-sm-n10{margin-right:-40px!important}.v-locale--is-rtl .me-sm-n10{margin-left:-40px!important}.v-locale--is-ltr .me-sm-n11{margin-right:-44px!important}.v-locale--is-rtl .me-sm-n11{margin-left:-44px!important}.v-locale--is-ltr .me-sm-n12{margin-right:-48px!important}.v-locale--is-rtl .me-sm-n12{margin-left:-48px!important}.v-locale--is-ltr .me-sm-n13{margin-right:-52px!important}.v-locale--is-rtl .me-sm-n13{margin-left:-52px!important}.v-locale--is-ltr .me-sm-n14{margin-right:-56px!important}.v-locale--is-rtl .me-sm-n14{margin-left:-56px!important}.v-locale--is-ltr .me-sm-n15{margin-right:-60px!important}.v-locale--is-rtl .me-sm-n15{margin-left:-60px!important}.v-locale--is-ltr .me-sm-n16{margin-right:-64px!important}.v-locale--is-rtl .me-sm-n16{margin-left:-64px!important}.pa-sm-0{padding:0!important}.pa-sm-1{padding:4px!important}.pa-sm-2{padding:8px!important}.pa-sm-3{padding:12px!important}.pa-sm-4{padding:16px!important}.pa-sm-5{padding:20px!important}.pa-sm-6{padding:24px!important}.pa-sm-7{padding:28px!important}.pa-sm-8{padding:32px!important}.pa-sm-9{padding:36px!important}.pa-sm-10{padding:40px!important}.pa-sm-11{padding:44px!important}.pa-sm-12{padding:48px!important}.pa-sm-13{padding:52px!important}.pa-sm-14{padding:56px!important}.pa-sm-15{padding:60px!important}.pa-sm-16{padding:64px!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:4px!important;padding-left:4px!important}.px-sm-2{padding-right:8px!important;padding-left:8px!important}.px-sm-3{padding-right:12px!important;padding-left:12px!important}.px-sm-4{padding-right:16px!important;padding-left:16px!important}.px-sm-5{padding-right:20px!important;padding-left:20px!important}.px-sm-6{padding-right:24px!important;padding-left:24px!important}.px-sm-7{padding-right:28px!important;padding-left:28px!important}.px-sm-8{padding-right:32px!important;padding-left:32px!important}.px-sm-9{padding-right:36px!important;padding-left:36px!important}.px-sm-10{padding-right:40px!important;padding-left:40px!important}.px-sm-11{padding-right:44px!important;padding-left:44px!important}.px-sm-12{padding-right:48px!important;padding-left:48px!important}.px-sm-13{padding-right:52px!important;padding-left:52px!important}.px-sm-14{padding-right:56px!important;padding-left:56px!important}.px-sm-15{padding-right:60px!important;padding-left:60px!important}.px-sm-16{padding-right:64px!important;padding-left:64px!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:4px!important;padding-bottom:4px!important}.py-sm-2{padding-top:8px!important;padding-bottom:8px!important}.py-sm-3{padding-top:12px!important;padding-bottom:12px!important}.py-sm-4{padding-top:16px!important;padding-bottom:16px!important}.py-sm-5{padding-top:20px!important;padding-bottom:20px!important}.py-sm-6{padding-top:24px!important;padding-bottom:24px!important}.py-sm-7{padding-top:28px!important;padding-bottom:28px!important}.py-sm-8{padding-top:32px!important;padding-bottom:32px!important}.py-sm-9{padding-top:36px!important;padding-bottom:36px!important}.py-sm-10{padding-top:40px!important;padding-bottom:40px!important}.py-sm-11{padding-top:44px!important;padding-bottom:44px!important}.py-sm-12{padding-top:48px!important;padding-bottom:48px!important}.py-sm-13{padding-top:52px!important;padding-bottom:52px!important}.py-sm-14{padding-top:56px!important;padding-bottom:56px!important}.py-sm-15{padding-top:60px!important;padding-bottom:60px!important}.py-sm-16{padding-top:64px!important;padding-bottom:64px!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:4px!important}.pt-sm-2{padding-top:8px!important}.pt-sm-3{padding-top:12px!important}.pt-sm-4{padding-top:16px!important}.pt-sm-5{padding-top:20px!important}.pt-sm-6{padding-top:24px!important}.pt-sm-7{padding-top:28px!important}.pt-sm-8{padding-top:32px!important}.pt-sm-9{padding-top:36px!important}.pt-sm-10{padding-top:40px!important}.pt-sm-11{padding-top:44px!important}.pt-sm-12{padding-top:48px!important}.pt-sm-13{padding-top:52px!important}.pt-sm-14{padding-top:56px!important}.pt-sm-15{padding-top:60px!important}.pt-sm-16{padding-top:64px!important}.pr-sm-0{padding-right:0!important}.pr-sm-1{padding-right:4px!important}.pr-sm-2{padding-right:8px!important}.pr-sm-3{padding-right:12px!important}.pr-sm-4{padding-right:16px!important}.pr-sm-5{padding-right:20px!important}.pr-sm-6{padding-right:24px!important}.pr-sm-7{padding-right:28px!important}.pr-sm-8{padding-right:32px!important}.pr-sm-9{padding-right:36px!important}.pr-sm-10{padding-right:40px!important}.pr-sm-11{padding-right:44px!important}.pr-sm-12{padding-right:48px!important}.pr-sm-13{padding-right:52px!important}.pr-sm-14{padding-right:56px!important}.pr-sm-15{padding-right:60px!important}.pr-sm-16{padding-right:64px!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:4px!important}.pb-sm-2{padding-bottom:8px!important}.pb-sm-3{padding-bottom:12px!important}.pb-sm-4{padding-bottom:16px!important}.pb-sm-5{padding-bottom:20px!important}.pb-sm-6{padding-bottom:24px!important}.pb-sm-7{padding-bottom:28px!important}.pb-sm-8{padding-bottom:32px!important}.pb-sm-9{padding-bottom:36px!important}.pb-sm-10{padding-bottom:40px!important}.pb-sm-11{padding-bottom:44px!important}.pb-sm-12{padding-bottom:48px!important}.pb-sm-13{padding-bottom:52px!important}.pb-sm-14{padding-bottom:56px!important}.pb-sm-15{padding-bottom:60px!important}.pb-sm-16{padding-bottom:64px!important}.pl-sm-0{padding-left:0!important}.pl-sm-1{padding-left:4px!important}.pl-sm-2{padding-left:8px!important}.pl-sm-3{padding-left:12px!important}.pl-sm-4{padding-left:16px!important}.pl-sm-5{padding-left:20px!important}.pl-sm-6{padding-left:24px!important}.pl-sm-7{padding-left:28px!important}.pl-sm-8{padding-left:32px!important}.pl-sm-9{padding-left:36px!important}.pl-sm-10{padding-left:40px!important}.pl-sm-11{padding-left:44px!important}.pl-sm-12{padding-left:48px!important}.pl-sm-13{padding-left:52px!important}.pl-sm-14{padding-left:56px!important}.pl-sm-15{padding-left:60px!important}.pl-sm-16{padding-left:64px!important}.v-locale--is-ltr .ps-sm-0{padding-left:0!important}.v-locale--is-rtl .ps-sm-0{padding-right:0!important}.v-locale--is-ltr .ps-sm-1{padding-left:4px!important}.v-locale--is-rtl .ps-sm-1{padding-right:4px!important}.v-locale--is-ltr .ps-sm-2{padding-left:8px!important}.v-locale--is-rtl .ps-sm-2{padding-right:8px!important}.v-locale--is-ltr .ps-sm-3{padding-left:12px!important}.v-locale--is-rtl .ps-sm-3{padding-right:12px!important}.v-locale--is-ltr .ps-sm-4{padding-left:16px!important}.v-locale--is-rtl .ps-sm-4{padding-right:16px!important}.v-locale--is-ltr .ps-sm-5{padding-left:20px!important}.v-locale--is-rtl .ps-sm-5{padding-right:20px!important}.v-locale--is-ltr .ps-sm-6{padding-left:24px!important}.v-locale--is-rtl .ps-sm-6{padding-right:24px!important}.v-locale--is-ltr .ps-sm-7{padding-left:28px!important}.v-locale--is-rtl .ps-sm-7{padding-right:28px!important}.v-locale--is-ltr .ps-sm-8{padding-left:32px!important}.v-locale--is-rtl .ps-sm-8{padding-right:32px!important}.v-locale--is-ltr .ps-sm-9{padding-left:36px!important}.v-locale--is-rtl .ps-sm-9{padding-right:36px!important}.v-locale--is-ltr .ps-sm-10{padding-left:40px!important}.v-locale--is-rtl .ps-sm-10{padding-right:40px!important}.v-locale--is-ltr .ps-sm-11{padding-left:44px!important}.v-locale--is-rtl .ps-sm-11{padding-right:44px!important}.v-locale--is-ltr .ps-sm-12{padding-left:48px!important}.v-locale--is-rtl .ps-sm-12{padding-right:48px!important}.v-locale--is-ltr .ps-sm-13{padding-left:52px!important}.v-locale--is-rtl .ps-sm-13{padding-right:52px!important}.v-locale--is-ltr .ps-sm-14{padding-left:56px!important}.v-locale--is-rtl .ps-sm-14{padding-right:56px!important}.v-locale--is-ltr .ps-sm-15{padding-left:60px!important}.v-locale--is-rtl .ps-sm-15{padding-right:60px!important}.v-locale--is-ltr .ps-sm-16{padding-left:64px!important}.v-locale--is-rtl .ps-sm-16{padding-right:64px!important}.v-locale--is-ltr .pe-sm-0{padding-right:0!important}.v-locale--is-rtl .pe-sm-0{padding-left:0!important}.v-locale--is-ltr .pe-sm-1{padding-right:4px!important}.v-locale--is-rtl .pe-sm-1{padding-left:4px!important}.v-locale--is-ltr .pe-sm-2{padding-right:8px!important}.v-locale--is-rtl .pe-sm-2{padding-left:8px!important}.v-locale--is-ltr .pe-sm-3{padding-right:12px!important}.v-locale--is-rtl .pe-sm-3{padding-left:12px!important}.v-locale--is-ltr .pe-sm-4{padding-right:16px!important}.v-locale--is-rtl .pe-sm-4{padding-left:16px!important}.v-locale--is-ltr .pe-sm-5{padding-right:20px!important}.v-locale--is-rtl .pe-sm-5{padding-left:20px!important}.v-locale--is-ltr .pe-sm-6{padding-right:24px!important}.v-locale--is-rtl .pe-sm-6{padding-left:24px!important}.v-locale--is-ltr .pe-sm-7{padding-right:28px!important}.v-locale--is-rtl .pe-sm-7{padding-left:28px!important}.v-locale--is-ltr .pe-sm-8{padding-right:32px!important}.v-locale--is-rtl .pe-sm-8{padding-left:32px!important}.v-locale--is-ltr .pe-sm-9{padding-right:36px!important}.v-locale--is-rtl .pe-sm-9{padding-left:36px!important}.v-locale--is-ltr .pe-sm-10{padding-right:40px!important}.v-locale--is-rtl .pe-sm-10{padding-left:40px!important}.v-locale--is-ltr .pe-sm-11{padding-right:44px!important}.v-locale--is-rtl .pe-sm-11{padding-left:44px!important}.v-locale--is-ltr .pe-sm-12{padding-right:48px!important}.v-locale--is-rtl .pe-sm-12{padding-left:48px!important}.v-locale--is-ltr .pe-sm-13{padding-right:52px!important}.v-locale--is-rtl .pe-sm-13{padding-left:52px!important}.v-locale--is-ltr .pe-sm-14{padding-right:56px!important}.v-locale--is-rtl .pe-sm-14{padding-left:56px!important}.v-locale--is-ltr .pe-sm-15{padding-right:60px!important}.v-locale--is-rtl .pe-sm-15{padding-left:60px!important}.v-locale--is-ltr .pe-sm-16{padding-right:64px!important}.v-locale--is-rtl .pe-sm-16{padding-left:64px!important}.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}.text-sm-justify{text-align:justify!important}.text-sm-start{text-align:start!important}.text-sm-end{text-align:end!important}.text-sm-h1{font-size:6rem!important;line-height:6rem;letter-spacing:-.015625em!important}.text-sm-h1,.text-sm-h2{font-weight:300;font-family:Roboto,sans-serif!important}.text-sm-h2{font-size:3.75rem!important;line-height:3.75rem;letter-spacing:-.0083333333em!important}.text-sm-h3{font-size:3rem!important;line-height:3.125rem;letter-spacing:normal!important}.text-sm-h3,.text-sm-h4{font-weight:400;font-family:Roboto,sans-serif!important}.text-sm-h4{font-size:2.125rem!important;line-height:2.5rem;letter-spacing:.0073529412em!important}.text-sm-h5{font-size:1.5rem!important;font-weight:400;letter-spacing:normal!important}.text-sm-h5,.text-sm-h6{line-height:2rem;font-family:Roboto,sans-serif!important}.text-sm-h6{font-size:1.25rem!important;font-weight:500;letter-spacing:.0125em!important}.text-sm-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif!important}.text-sm-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif!important}.text-sm-body-1{font-size:1rem!important;line-height:1.5rem;letter-spacing:.03125em!important}.text-sm-body-1,.text-sm-body-2{font-weight:400;font-family:Roboto,sans-serif!important}.text-sm-body-2{font-size:.875rem!important;line-height:1.25rem;letter-spacing:.0178571429em!important}.text-sm-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif!important;text-transform:uppercase!important}.text-sm-caption{font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important}.text-sm-caption,.text-sm-overline{font-size:.75rem!important;font-family:Roboto,sans-serif!important}.text-sm-overline{font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;text-transform:uppercase!important}}@media(min-width:960px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.float-md-none{float:none!important}.float-md-left{float:left!important}.float-md-right{float:right!important}.v-locale--is-rtl .float-md-end{float:left!important}.v-locale--is-ltr .float-md-end,.v-locale--is-rtl .float-md-start{float:right!important}.v-locale--is-ltr .float-md-start{float:left!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-md-start{justify-content:flex-start!important}.justify-md-end{justify-content:flex-end!important}.justify-md-center{justify-content:center!important}.justify-md-space-between{justify-content:space-between!important}.justify-md-space-around{justify-content:space-around!important}.align-md-start{align-items:flex-start!important}.align-md-end{align-items:flex-end!important}.align-md-center{align-items:center!important}.align-md-baseline{align-items:baseline!important}.align-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-space-between{align-content:space-between!important}.align-content-md-space-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-6{order:6!important}.order-md-7{order:7!important}.order-md-8{order:8!important}.order-md-9{order:9!important}.order-md-10{order:10!important}.order-md-11{order:11!important}.order-md-12{order:12!important}.order-md-last{order:13!important}.ma-md-0{margin:0!important}.ma-md-1{margin:4px!important}.ma-md-2{margin:8px!important}.ma-md-3{margin:12px!important}.ma-md-4{margin:16px!important}.ma-md-5{margin:20px!important}.ma-md-6{margin:24px!important}.ma-md-7{margin:28px!important}.ma-md-8{margin:32px!important}.ma-md-9{margin:36px!important}.ma-md-10{margin:40px!important}.ma-md-11{margin:44px!important}.ma-md-12{margin:48px!important}.ma-md-13{margin:52px!important}.ma-md-14{margin:56px!important}.ma-md-15{margin:60px!important}.ma-md-16{margin:64px!important}.ma-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:4px!important;margin-left:4px!important}.mx-md-2{margin-right:8px!important;margin-left:8px!important}.mx-md-3{margin-right:12px!important;margin-left:12px!important}.mx-md-4{margin-right:16px!important;margin-left:16px!important}.mx-md-5{margin-right:20px!important;margin-left:20px!important}.mx-md-6{margin-right:24px!important;margin-left:24px!important}.mx-md-7{margin-right:28px!important;margin-left:28px!important}.mx-md-8{margin-right:32px!important;margin-left:32px!important}.mx-md-9{margin-right:36px!important;margin-left:36px!important}.mx-md-10{margin-right:40px!important;margin-left:40px!important}.mx-md-11{margin-right:44px!important;margin-left:44px!important}.mx-md-12{margin-right:48px!important;margin-left:48px!important}.mx-md-13{margin-right:52px!important;margin-left:52px!important}.mx-md-14{margin-right:56px!important;margin-left:56px!important}.mx-md-15{margin-right:60px!important;margin-left:60px!important}.mx-md-16{margin-right:64px!important;margin-left:64px!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:4px!important;margin-bottom:4px!important}.my-md-2{margin-top:8px!important;margin-bottom:8px!important}.my-md-3{margin-top:12px!important;margin-bottom:12px!important}.my-md-4{margin-top:16px!important;margin-bottom:16px!important}.my-md-5{margin-top:20px!important;margin-bottom:20px!important}.my-md-6{margin-top:24px!important;margin-bottom:24px!important}.my-md-7{margin-top:28px!important;margin-bottom:28px!important}.my-md-8{margin-top:32px!important;margin-bottom:32px!important}.my-md-9{margin-top:36px!important;margin-bottom:36px!important}.my-md-10{margin-top:40px!important;margin-bottom:40px!important}.my-md-11{margin-top:44px!important;margin-bottom:44px!important}.my-md-12{margin-top:48px!important;margin-bottom:48px!important}.my-md-13{margin-top:52px!important;margin-bottom:52px!important}.my-md-14{margin-top:56px!important;margin-bottom:56px!important}.my-md-15{margin-top:60px!important;margin-bottom:60px!important}.my-md-16{margin-top:64px!important;margin-bottom:64px!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:4px!important}.mt-md-2{margin-top:8px!important}.mt-md-3{margin-top:12px!important}.mt-md-4{margin-top:16px!important}.mt-md-5{margin-top:20px!important}.mt-md-6{margin-top:24px!important}.mt-md-7{margin-top:28px!important}.mt-md-8{margin-top:32px!important}.mt-md-9{margin-top:36px!important}.mt-md-10{margin-top:40px!important}.mt-md-11{margin-top:44px!important}.mt-md-12{margin-top:48px!important}.mt-md-13{margin-top:52px!important}.mt-md-14{margin-top:56px!important}.mt-md-15{margin-top:60px!important}.mt-md-16{margin-top:64px!important}.mt-md-auto{margin-top:auto!important}.mr-md-0{margin-right:0!important}.mr-md-1{margin-right:4px!important}.mr-md-2{margin-right:8px!important}.mr-md-3{margin-right:12px!important}.mr-md-4{margin-right:16px!important}.mr-md-5{margin-right:20px!important}.mr-md-6{margin-right:24px!important}.mr-md-7{margin-right:28px!important}.mr-md-8{margin-right:32px!important}.mr-md-9{margin-right:36px!important}.mr-md-10{margin-right:40px!important}.mr-md-11{margin-right:44px!important}.mr-md-12{margin-right:48px!important}.mr-md-13{margin-right:52px!important}.mr-md-14{margin-right:56px!important}.mr-md-15{margin-right:60px!important}.mr-md-16{margin-right:64px!important}.mr-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:4px!important}.mb-md-2{margin-bottom:8px!important}.mb-md-3{margin-bottom:12px!important}.mb-md-4{margin-bottom:16px!important}.mb-md-5{margin-bottom:20px!important}.mb-md-6{margin-bottom:24px!important}.mb-md-7{margin-bottom:28px!important}.mb-md-8{margin-bottom:32px!important}.mb-md-9{margin-bottom:36px!important}.mb-md-10{margin-bottom:40px!important}.mb-md-11{margin-bottom:44px!important}.mb-md-12{margin-bottom:48px!important}.mb-md-13{margin-bottom:52px!important}.mb-md-14{margin-bottom:56px!important}.mb-md-15{margin-bottom:60px!important}.mb-md-16{margin-bottom:64px!important}.mb-md-auto{margin-bottom:auto!important}.ml-md-0{margin-left:0!important}.ml-md-1{margin-left:4px!important}.ml-md-2{margin-left:8px!important}.ml-md-3{margin-left:12px!important}.ml-md-4{margin-left:16px!important}.ml-md-5{margin-left:20px!important}.ml-md-6{margin-left:24px!important}.ml-md-7{margin-left:28px!important}.ml-md-8{margin-left:32px!important}.ml-md-9{margin-left:36px!important}.ml-md-10{margin-left:40px!important}.ml-md-11{margin-left:44px!important}.ml-md-12{margin-left:48px!important}.ml-md-13{margin-left:52px!important}.ml-md-14{margin-left:56px!important}.ml-md-15{margin-left:60px!important}.ml-md-16{margin-left:64px!important}.ml-md-auto{margin-left:auto!important}.v-locale--is-ltr .ms-md-0{margin-left:0!important}.v-locale--is-rtl .ms-md-0{margin-right:0!important}.v-locale--is-ltr .ms-md-1{margin-left:4px!important}.v-locale--is-rtl .ms-md-1{margin-right:4px!important}.v-locale--is-ltr .ms-md-2{margin-left:8px!important}.v-locale--is-rtl .ms-md-2{margin-right:8px!important}.v-locale--is-ltr .ms-md-3{margin-left:12px!important}.v-locale--is-rtl .ms-md-3{margin-right:12px!important}.v-locale--is-ltr .ms-md-4{margin-left:16px!important}.v-locale--is-rtl .ms-md-4{margin-right:16px!important}.v-locale--is-ltr .ms-md-5{margin-left:20px!important}.v-locale--is-rtl .ms-md-5{margin-right:20px!important}.v-locale--is-ltr .ms-md-6{margin-left:24px!important}.v-locale--is-rtl .ms-md-6{margin-right:24px!important}.v-locale--is-ltr .ms-md-7{margin-left:28px!important}.v-locale--is-rtl .ms-md-7{margin-right:28px!important}.v-locale--is-ltr .ms-md-8{margin-left:32px!important}.v-locale--is-rtl .ms-md-8{margin-right:32px!important}.v-locale--is-ltr .ms-md-9{margin-left:36px!important}.v-locale--is-rtl .ms-md-9{margin-right:36px!important}.v-locale--is-ltr .ms-md-10{margin-left:40px!important}.v-locale--is-rtl .ms-md-10{margin-right:40px!important}.v-locale--is-ltr .ms-md-11{margin-left:44px!important}.v-locale--is-rtl .ms-md-11{margin-right:44px!important}.v-locale--is-ltr .ms-md-12{margin-left:48px!important}.v-locale--is-rtl .ms-md-12{margin-right:48px!important}.v-locale--is-ltr .ms-md-13{margin-left:52px!important}.v-locale--is-rtl .ms-md-13{margin-right:52px!important}.v-locale--is-ltr .ms-md-14{margin-left:56px!important}.v-locale--is-rtl .ms-md-14{margin-right:56px!important}.v-locale--is-ltr .ms-md-15{margin-left:60px!important}.v-locale--is-rtl .ms-md-15{margin-right:60px!important}.v-locale--is-ltr .ms-md-16{margin-left:64px!important}.v-locale--is-rtl .ms-md-16{margin-right:64px!important}.v-locale--is-ltr .ms-md-auto{margin-left:auto!important}.v-locale--is-rtl .ms-md-auto{margin-right:auto!important}.v-locale--is-ltr .me-md-0{margin-right:0!important}.v-locale--is-rtl .me-md-0{margin-left:0!important}.v-locale--is-ltr .me-md-1{margin-right:4px!important}.v-locale--is-rtl .me-md-1{margin-left:4px!important}.v-locale--is-ltr .me-md-2{margin-right:8px!important}.v-locale--is-rtl .me-md-2{margin-left:8px!important}.v-locale--is-ltr .me-md-3{margin-right:12px!important}.v-locale--is-rtl .me-md-3{margin-left:12px!important}.v-locale--is-ltr .me-md-4{margin-right:16px!important}.v-locale--is-rtl .me-md-4{margin-left:16px!important}.v-locale--is-ltr .me-md-5{margin-right:20px!important}.v-locale--is-rtl .me-md-5{margin-left:20px!important}.v-locale--is-ltr .me-md-6{margin-right:24px!important}.v-locale--is-rtl .me-md-6{margin-left:24px!important}.v-locale--is-ltr .me-md-7{margin-right:28px!important}.v-locale--is-rtl .me-md-7{margin-left:28px!important}.v-locale--is-ltr .me-md-8{margin-right:32px!important}.v-locale--is-rtl .me-md-8{margin-left:32px!important}.v-locale--is-ltr .me-md-9{margin-right:36px!important}.v-locale--is-rtl .me-md-9{margin-left:36px!important}.v-locale--is-ltr .me-md-10{margin-right:40px!important}.v-locale--is-rtl .me-md-10{margin-left:40px!important}.v-locale--is-ltr .me-md-11{margin-right:44px!important}.v-locale--is-rtl .me-md-11{margin-left:44px!important}.v-locale--is-ltr .me-md-12{margin-right:48px!important}.v-locale--is-rtl .me-md-12{margin-left:48px!important}.v-locale--is-ltr .me-md-13{margin-right:52px!important}.v-locale--is-rtl .me-md-13{margin-left:52px!important}.v-locale--is-ltr .me-md-14{margin-right:56px!important}.v-locale--is-rtl .me-md-14{margin-left:56px!important}.v-locale--is-ltr .me-md-15{margin-right:60px!important}.v-locale--is-rtl .me-md-15{margin-left:60px!important}.v-locale--is-ltr .me-md-16{margin-right:64px!important}.v-locale--is-rtl .me-md-16{margin-left:64px!important}.v-locale--is-ltr .me-md-auto{margin-right:auto!important}.v-locale--is-rtl .me-md-auto{margin-left:auto!important}.ma-md-n1{margin:-4px!important}.ma-md-n2{margin:-8px!important}.ma-md-n3{margin:-12px!important}.ma-md-n4{margin:-16px!important}.ma-md-n5{margin:-20px!important}.ma-md-n6{margin:-24px!important}.ma-md-n7{margin:-28px!important}.ma-md-n8{margin:-32px!important}.ma-md-n9{margin:-36px!important}.ma-md-n10{margin:-40px!important}.ma-md-n11{margin:-44px!important}.ma-md-n12{margin:-48px!important}.ma-md-n13{margin:-52px!important}.ma-md-n14{margin:-56px!important}.ma-md-n15{margin:-60px!important}.ma-md-n16{margin:-64px!important}.mx-md-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-md-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-md-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-md-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-md-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-md-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-md-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-md-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-md-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-md-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-md-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-md-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-md-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-md-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-md-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-md-n16{margin-right:-64px!important;margin-left:-64px!important}.my-md-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-md-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-md-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-md-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-md-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-md-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-md-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-md-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-md-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-md-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-md-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-md-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-md-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-md-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-md-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-md-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-md-n1{margin-top:-4px!important}.mt-md-n2{margin-top:-8px!important}.mt-md-n3{margin-top:-12px!important}.mt-md-n4{margin-top:-16px!important}.mt-md-n5{margin-top:-20px!important}.mt-md-n6{margin-top:-24px!important}.mt-md-n7{margin-top:-28px!important}.mt-md-n8{margin-top:-32px!important}.mt-md-n9{margin-top:-36px!important}.mt-md-n10{margin-top:-40px!important}.mt-md-n11{margin-top:-44px!important}.mt-md-n12{margin-top:-48px!important}.mt-md-n13{margin-top:-52px!important}.mt-md-n14{margin-top:-56px!important}.mt-md-n15{margin-top:-60px!important}.mt-md-n16{margin-top:-64px!important}.mr-md-n1{margin-right:-4px!important}.mr-md-n2{margin-right:-8px!important}.mr-md-n3{margin-right:-12px!important}.mr-md-n4{margin-right:-16px!important}.mr-md-n5{margin-right:-20px!important}.mr-md-n6{margin-right:-24px!important}.mr-md-n7{margin-right:-28px!important}.mr-md-n8{margin-right:-32px!important}.mr-md-n9{margin-right:-36px!important}.mr-md-n10{margin-right:-40px!important}.mr-md-n11{margin-right:-44px!important}.mr-md-n12{margin-right:-48px!important}.mr-md-n13{margin-right:-52px!important}.mr-md-n14{margin-right:-56px!important}.mr-md-n15{margin-right:-60px!important}.mr-md-n16{margin-right:-64px!important}.mb-md-n1{margin-bottom:-4px!important}.mb-md-n2{margin-bottom:-8px!important}.mb-md-n3{margin-bottom:-12px!important}.mb-md-n4{margin-bottom:-16px!important}.mb-md-n5{margin-bottom:-20px!important}.mb-md-n6{margin-bottom:-24px!important}.mb-md-n7{margin-bottom:-28px!important}.mb-md-n8{margin-bottom:-32px!important}.mb-md-n9{margin-bottom:-36px!important}.mb-md-n10{margin-bottom:-40px!important}.mb-md-n11{margin-bottom:-44px!important}.mb-md-n12{margin-bottom:-48px!important}.mb-md-n13{margin-bottom:-52px!important}.mb-md-n14{margin-bottom:-56px!important}.mb-md-n15{margin-bottom:-60px!important}.mb-md-n16{margin-bottom:-64px!important}.ml-md-n1{margin-left:-4px!important}.ml-md-n2{margin-left:-8px!important}.ml-md-n3{margin-left:-12px!important}.ml-md-n4{margin-left:-16px!important}.ml-md-n5{margin-left:-20px!important}.ml-md-n6{margin-left:-24px!important}.ml-md-n7{margin-left:-28px!important}.ml-md-n8{margin-left:-32px!important}.ml-md-n9{margin-left:-36px!important}.ml-md-n10{margin-left:-40px!important}.ml-md-n11{margin-left:-44px!important}.ml-md-n12{margin-left:-48px!important}.ml-md-n13{margin-left:-52px!important}.ml-md-n14{margin-left:-56px!important}.ml-md-n15{margin-left:-60px!important}.ml-md-n16{margin-left:-64px!important}.v-locale--is-ltr .ms-md-n1{margin-left:-4px!important}.v-locale--is-rtl .ms-md-n1{margin-right:-4px!important}.v-locale--is-ltr .ms-md-n2{margin-left:-8px!important}.v-locale--is-rtl .ms-md-n2{margin-right:-8px!important}.v-locale--is-ltr .ms-md-n3{margin-left:-12px!important}.v-locale--is-rtl .ms-md-n3{margin-right:-12px!important}.v-locale--is-ltr .ms-md-n4{margin-left:-16px!important}.v-locale--is-rtl .ms-md-n4{margin-right:-16px!important}.v-locale--is-ltr .ms-md-n5{margin-left:-20px!important}.v-locale--is-rtl .ms-md-n5{margin-right:-20px!important}.v-locale--is-ltr .ms-md-n6{margin-left:-24px!important}.v-locale--is-rtl .ms-md-n6{margin-right:-24px!important}.v-locale--is-ltr .ms-md-n7{margin-left:-28px!important}.v-locale--is-rtl .ms-md-n7{margin-right:-28px!important}.v-locale--is-ltr .ms-md-n8{margin-left:-32px!important}.v-locale--is-rtl .ms-md-n8{margin-right:-32px!important}.v-locale--is-ltr .ms-md-n9{margin-left:-36px!important}.v-locale--is-rtl .ms-md-n9{margin-right:-36px!important}.v-locale--is-ltr .ms-md-n10{margin-left:-40px!important}.v-locale--is-rtl .ms-md-n10{margin-right:-40px!important}.v-locale--is-ltr .ms-md-n11{margin-left:-44px!important}.v-locale--is-rtl .ms-md-n11{margin-right:-44px!important}.v-locale--is-ltr .ms-md-n12{margin-left:-48px!important}.v-locale--is-rtl .ms-md-n12{margin-right:-48px!important}.v-locale--is-ltr .ms-md-n13{margin-left:-52px!important}.v-locale--is-rtl .ms-md-n13{margin-right:-52px!important}.v-locale--is-ltr .ms-md-n14{margin-left:-56px!important}.v-locale--is-rtl .ms-md-n14{margin-right:-56px!important}.v-locale--is-ltr .ms-md-n15{margin-left:-60px!important}.v-locale--is-rtl .ms-md-n15{margin-right:-60px!important}.v-locale--is-ltr .ms-md-n16{margin-left:-64px!important}.v-locale--is-rtl .ms-md-n16{margin-right:-64px!important}.v-locale--is-ltr .me-md-n1{margin-right:-4px!important}.v-locale--is-rtl .me-md-n1{margin-left:-4px!important}.v-locale--is-ltr .me-md-n2{margin-right:-8px!important}.v-locale--is-rtl .me-md-n2{margin-left:-8px!important}.v-locale--is-ltr .me-md-n3{margin-right:-12px!important}.v-locale--is-rtl .me-md-n3{margin-left:-12px!important}.v-locale--is-ltr .me-md-n4{margin-right:-16px!important}.v-locale--is-rtl .me-md-n4{margin-left:-16px!important}.v-locale--is-ltr .me-md-n5{margin-right:-20px!important}.v-locale--is-rtl .me-md-n5{margin-left:-20px!important}.v-locale--is-ltr .me-md-n6{margin-right:-24px!important}.v-locale--is-rtl .me-md-n6{margin-left:-24px!important}.v-locale--is-ltr .me-md-n7{margin-right:-28px!important}.v-locale--is-rtl .me-md-n7{margin-left:-28px!important}.v-locale--is-ltr .me-md-n8{margin-right:-32px!important}.v-locale--is-rtl .me-md-n8{margin-left:-32px!important}.v-locale--is-ltr .me-md-n9{margin-right:-36px!important}.v-locale--is-rtl .me-md-n9{margin-left:-36px!important}.v-locale--is-ltr .me-md-n10{margin-right:-40px!important}.v-locale--is-rtl .me-md-n10{margin-left:-40px!important}.v-locale--is-ltr .me-md-n11{margin-right:-44px!important}.v-locale--is-rtl .me-md-n11{margin-left:-44px!important}.v-locale--is-ltr .me-md-n12{margin-right:-48px!important}.v-locale--is-rtl .me-md-n12{margin-left:-48px!important}.v-locale--is-ltr .me-md-n13{margin-right:-52px!important}.v-locale--is-rtl .me-md-n13{margin-left:-52px!important}.v-locale--is-ltr .me-md-n14{margin-right:-56px!important}.v-locale--is-rtl .me-md-n14{margin-left:-56px!important}.v-locale--is-ltr .me-md-n15{margin-right:-60px!important}.v-locale--is-rtl .me-md-n15{margin-left:-60px!important}.v-locale--is-ltr .me-md-n16{margin-right:-64px!important}.v-locale--is-rtl .me-md-n16{margin-left:-64px!important}.pa-md-0{padding:0!important}.pa-md-1{padding:4px!important}.pa-md-2{padding:8px!important}.pa-md-3{padding:12px!important}.pa-md-4{padding:16px!important}.pa-md-5{padding:20px!important}.pa-md-6{padding:24px!important}.pa-md-7{padding:28px!important}.pa-md-8{padding:32px!important}.pa-md-9{padding:36px!important}.pa-md-10{padding:40px!important}.pa-md-11{padding:44px!important}.pa-md-12{padding:48px!important}.pa-md-13{padding:52px!important}.pa-md-14{padding:56px!important}.pa-md-15{padding:60px!important}.pa-md-16{padding:64px!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:4px!important;padding-left:4px!important}.px-md-2{padding-right:8px!important;padding-left:8px!important}.px-md-3{padding-right:12px!important;padding-left:12px!important}.px-md-4{padding-right:16px!important;padding-left:16px!important}.px-md-5{padding-right:20px!important;padding-left:20px!important}.px-md-6{padding-right:24px!important;padding-left:24px!important}.px-md-7{padding-right:28px!important;padding-left:28px!important}.px-md-8{padding-right:32px!important;padding-left:32px!important}.px-md-9{padding-right:36px!important;padding-left:36px!important}.px-md-10{padding-right:40px!important;padding-left:40px!important}.px-md-11{padding-right:44px!important;padding-left:44px!important}.px-md-12{padding-right:48px!important;padding-left:48px!important}.px-md-13{padding-right:52px!important;padding-left:52px!important}.px-md-14{padding-right:56px!important;padding-left:56px!important}.px-md-15{padding-right:60px!important;padding-left:60px!important}.px-md-16{padding-right:64px!important;padding-left:64px!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:4px!important;padding-bottom:4px!important}.py-md-2{padding-top:8px!important;padding-bottom:8px!important}.py-md-3{padding-top:12px!important;padding-bottom:12px!important}.py-md-4{padding-top:16px!important;padding-bottom:16px!important}.py-md-5{padding-top:20px!important;padding-bottom:20px!important}.py-md-6{padding-top:24px!important;padding-bottom:24px!important}.py-md-7{padding-top:28px!important;padding-bottom:28px!important}.py-md-8{padding-top:32px!important;padding-bottom:32px!important}.py-md-9{padding-top:36px!important;padding-bottom:36px!important}.py-md-10{padding-top:40px!important;padding-bottom:40px!important}.py-md-11{padding-top:44px!important;padding-bottom:44px!important}.py-md-12{padding-top:48px!important;padding-bottom:48px!important}.py-md-13{padding-top:52px!important;padding-bottom:52px!important}.py-md-14{padding-top:56px!important;padding-bottom:56px!important}.py-md-15{padding-top:60px!important;padding-bottom:60px!important}.py-md-16{padding-top:64px!important;padding-bottom:64px!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:4px!important}.pt-md-2{padding-top:8px!important}.pt-md-3{padding-top:12px!important}.pt-md-4{padding-top:16px!important}.pt-md-5{padding-top:20px!important}.pt-md-6{padding-top:24px!important}.pt-md-7{padding-top:28px!important}.pt-md-8{padding-top:32px!important}.pt-md-9{padding-top:36px!important}.pt-md-10{padding-top:40px!important}.pt-md-11{padding-top:44px!important}.pt-md-12{padding-top:48px!important}.pt-md-13{padding-top:52px!important}.pt-md-14{padding-top:56px!important}.pt-md-15{padding-top:60px!important}.pt-md-16{padding-top:64px!important}.pr-md-0{padding-right:0!important}.pr-md-1{padding-right:4px!important}.pr-md-2{padding-right:8px!important}.pr-md-3{padding-right:12px!important}.pr-md-4{padding-right:16px!important}.pr-md-5{padding-right:20px!important}.pr-md-6{padding-right:24px!important}.pr-md-7{padding-right:28px!important}.pr-md-8{padding-right:32px!important}.pr-md-9{padding-right:36px!important}.pr-md-10{padding-right:40px!important}.pr-md-11{padding-right:44px!important}.pr-md-12{padding-right:48px!important}.pr-md-13{padding-right:52px!important}.pr-md-14{padding-right:56px!important}.pr-md-15{padding-right:60px!important}.pr-md-16{padding-right:64px!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:4px!important}.pb-md-2{padding-bottom:8px!important}.pb-md-3{padding-bottom:12px!important}.pb-md-4{padding-bottom:16px!important}.pb-md-5{padding-bottom:20px!important}.pb-md-6{padding-bottom:24px!important}.pb-md-7{padding-bottom:28px!important}.pb-md-8{padding-bottom:32px!important}.pb-md-9{padding-bottom:36px!important}.pb-md-10{padding-bottom:40px!important}.pb-md-11{padding-bottom:44px!important}.pb-md-12{padding-bottom:48px!important}.pb-md-13{padding-bottom:52px!important}.pb-md-14{padding-bottom:56px!important}.pb-md-15{padding-bottom:60px!important}.pb-md-16{padding-bottom:64px!important}.pl-md-0{padding-left:0!important}.pl-md-1{padding-left:4px!important}.pl-md-2{padding-left:8px!important}.pl-md-3{padding-left:12px!important}.pl-md-4{padding-left:16px!important}.pl-md-5{padding-left:20px!important}.pl-md-6{padding-left:24px!important}.pl-md-7{padding-left:28px!important}.pl-md-8{padding-left:32px!important}.pl-md-9{padding-left:36px!important}.pl-md-10{padding-left:40px!important}.pl-md-11{padding-left:44px!important}.pl-md-12{padding-left:48px!important}.pl-md-13{padding-left:52px!important}.pl-md-14{padding-left:56px!important}.pl-md-15{padding-left:60px!important}.pl-md-16{padding-left:64px!important}.v-locale--is-ltr .ps-md-0{padding-left:0!important}.v-locale--is-rtl .ps-md-0{padding-right:0!important}.v-locale--is-ltr .ps-md-1{padding-left:4px!important}.v-locale--is-rtl .ps-md-1{padding-right:4px!important}.v-locale--is-ltr .ps-md-2{padding-left:8px!important}.v-locale--is-rtl .ps-md-2{padding-right:8px!important}.v-locale--is-ltr .ps-md-3{padding-left:12px!important}.v-locale--is-rtl .ps-md-3{padding-right:12px!important}.v-locale--is-ltr .ps-md-4{padding-left:16px!important}.v-locale--is-rtl .ps-md-4{padding-right:16px!important}.v-locale--is-ltr .ps-md-5{padding-left:20px!important}.v-locale--is-rtl .ps-md-5{padding-right:20px!important}.v-locale--is-ltr .ps-md-6{padding-left:24px!important}.v-locale--is-rtl .ps-md-6{padding-right:24px!important}.v-locale--is-ltr .ps-md-7{padding-left:28px!important}.v-locale--is-rtl .ps-md-7{padding-right:28px!important}.v-locale--is-ltr .ps-md-8{padding-left:32px!important}.v-locale--is-rtl .ps-md-8{padding-right:32px!important}.v-locale--is-ltr .ps-md-9{padding-left:36px!important}.v-locale--is-rtl .ps-md-9{padding-right:36px!important}.v-locale--is-ltr .ps-md-10{padding-left:40px!important}.v-locale--is-rtl .ps-md-10{padding-right:40px!important}.v-locale--is-ltr .ps-md-11{padding-left:44px!important}.v-locale--is-rtl .ps-md-11{padding-right:44px!important}.v-locale--is-ltr .ps-md-12{padding-left:48px!important}.v-locale--is-rtl .ps-md-12{padding-right:48px!important}.v-locale--is-ltr .ps-md-13{padding-left:52px!important}.v-locale--is-rtl .ps-md-13{padding-right:52px!important}.v-locale--is-ltr .ps-md-14{padding-left:56px!important}.v-locale--is-rtl .ps-md-14{padding-right:56px!important}.v-locale--is-ltr .ps-md-15{padding-left:60px!important}.v-locale--is-rtl .ps-md-15{padding-right:60px!important}.v-locale--is-ltr .ps-md-16{padding-left:64px!important}.v-locale--is-rtl .ps-md-16{padding-right:64px!important}.v-locale--is-ltr .pe-md-0{padding-right:0!important}.v-locale--is-rtl .pe-md-0{padding-left:0!important}.v-locale--is-ltr .pe-md-1{padding-right:4px!important}.v-locale--is-rtl .pe-md-1{padding-left:4px!important}.v-locale--is-ltr .pe-md-2{padding-right:8px!important}.v-locale--is-rtl .pe-md-2{padding-left:8px!important}.v-locale--is-ltr .pe-md-3{padding-right:12px!important}.v-locale--is-rtl .pe-md-3{padding-left:12px!important}.v-locale--is-ltr .pe-md-4{padding-right:16px!important}.v-locale--is-rtl .pe-md-4{padding-left:16px!important}.v-locale--is-ltr .pe-md-5{padding-right:20px!important}.v-locale--is-rtl .pe-md-5{padding-left:20px!important}.v-locale--is-ltr .pe-md-6{padding-right:24px!important}.v-locale--is-rtl .pe-md-6{padding-left:24px!important}.v-locale--is-ltr .pe-md-7{padding-right:28px!important}.v-locale--is-rtl .pe-md-7{padding-left:28px!important}.v-locale--is-ltr .pe-md-8{padding-right:32px!important}.v-locale--is-rtl .pe-md-8{padding-left:32px!important}.v-locale--is-ltr .pe-md-9{padding-right:36px!important}.v-locale--is-rtl .pe-md-9{padding-left:36px!important}.v-locale--is-ltr .pe-md-10{padding-right:40px!important}.v-locale--is-rtl .pe-md-10{padding-left:40px!important}.v-locale--is-ltr .pe-md-11{padding-right:44px!important}.v-locale--is-rtl .pe-md-11{padding-left:44px!important}.v-locale--is-ltr .pe-md-12{padding-right:48px!important}.v-locale--is-rtl .pe-md-12{padding-left:48px!important}.v-locale--is-ltr .pe-md-13{padding-right:52px!important}.v-locale--is-rtl .pe-md-13{padding-left:52px!important}.v-locale--is-ltr .pe-md-14{padding-right:56px!important}.v-locale--is-rtl .pe-md-14{padding-left:56px!important}.v-locale--is-ltr .pe-md-15{padding-right:60px!important}.v-locale--is-rtl .pe-md-15{padding-left:60px!important}.v-locale--is-ltr .pe-md-16{padding-right:64px!important}.v-locale--is-rtl .pe-md-16{padding-left:64px!important}.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}.text-md-justify{text-align:justify!important}.text-md-start{text-align:start!important}.text-md-end{text-align:end!important}.text-md-h1{font-size:6rem!important;line-height:6rem;letter-spacing:-.015625em!important}.text-md-h1,.text-md-h2{font-weight:300;font-family:Roboto,sans-serif!important}.text-md-h2{font-size:3.75rem!important;line-height:3.75rem;letter-spacing:-.0083333333em!important}.text-md-h3{font-size:3rem!important;line-height:3.125rem;letter-spacing:normal!important}.text-md-h3,.text-md-h4{font-weight:400;font-family:Roboto,sans-serif!important}.text-md-h4{font-size:2.125rem!important;line-height:2.5rem;letter-spacing:.0073529412em!important}.text-md-h5{font-size:1.5rem!important;font-weight:400;letter-spacing:normal!important}.text-md-h5,.text-md-h6{line-height:2rem;font-family:Roboto,sans-serif!important}.text-md-h6{font-size:1.25rem!important;font-weight:500;letter-spacing:.0125em!important}.text-md-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif!important}.text-md-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif!important}.text-md-body-1{font-size:1rem!important;line-height:1.5rem;letter-spacing:.03125em!important}.text-md-body-1,.text-md-body-2{font-weight:400;font-family:Roboto,sans-serif!important}.text-md-body-2{font-size:.875rem!important;line-height:1.25rem;letter-spacing:.0178571429em!important}.text-md-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif!important;text-transform:uppercase!important}.text-md-caption{font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important}.text-md-caption,.text-md-overline{font-size:.75rem!important;font-family:Roboto,sans-serif!important}.text-md-overline{font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;text-transform:uppercase!important}}@media(min-width:1280px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.float-lg-none{float:none!important}.float-lg-left{float:left!important}.float-lg-right{float:right!important}.v-locale--is-rtl .float-lg-end{float:left!important}.v-locale--is-ltr .float-lg-end,.v-locale--is-rtl .float-lg-start{float:right!important}.v-locale--is-ltr .float-lg-start{float:left!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-lg-start{justify-content:flex-start!important}.justify-lg-end{justify-content:flex-end!important}.justify-lg-center{justify-content:center!important}.justify-lg-space-between{justify-content:space-between!important}.justify-lg-space-around{justify-content:space-around!important}.align-lg-start{align-items:flex-start!important}.align-lg-end{align-items:flex-end!important}.align-lg-center{align-items:center!important}.align-lg-baseline{align-items:baseline!important}.align-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-space-between{align-content:space-between!important}.align-content-lg-space-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-6{order:6!important}.order-lg-7{order:7!important}.order-lg-8{order:8!important}.order-lg-9{order:9!important}.order-lg-10{order:10!important}.order-lg-11{order:11!important}.order-lg-12{order:12!important}.order-lg-last{order:13!important}.ma-lg-0{margin:0!important}.ma-lg-1{margin:4px!important}.ma-lg-2{margin:8px!important}.ma-lg-3{margin:12px!important}.ma-lg-4{margin:16px!important}.ma-lg-5{margin:20px!important}.ma-lg-6{margin:24px!important}.ma-lg-7{margin:28px!important}.ma-lg-8{margin:32px!important}.ma-lg-9{margin:36px!important}.ma-lg-10{margin:40px!important}.ma-lg-11{margin:44px!important}.ma-lg-12{margin:48px!important}.ma-lg-13{margin:52px!important}.ma-lg-14{margin:56px!important}.ma-lg-15{margin:60px!important}.ma-lg-16{margin:64px!important}.ma-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:4px!important;margin-left:4px!important}.mx-lg-2{margin-right:8px!important;margin-left:8px!important}.mx-lg-3{margin-right:12px!important;margin-left:12px!important}.mx-lg-4{margin-right:16px!important;margin-left:16px!important}.mx-lg-5{margin-right:20px!important;margin-left:20px!important}.mx-lg-6{margin-right:24px!important;margin-left:24px!important}.mx-lg-7{margin-right:28px!important;margin-left:28px!important}.mx-lg-8{margin-right:32px!important;margin-left:32px!important}.mx-lg-9{margin-right:36px!important;margin-left:36px!important}.mx-lg-10{margin-right:40px!important;margin-left:40px!important}.mx-lg-11{margin-right:44px!important;margin-left:44px!important}.mx-lg-12{margin-right:48px!important;margin-left:48px!important}.mx-lg-13{margin-right:52px!important;margin-left:52px!important}.mx-lg-14{margin-right:56px!important;margin-left:56px!important}.mx-lg-15{margin-right:60px!important;margin-left:60px!important}.mx-lg-16{margin-right:64px!important;margin-left:64px!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:4px!important;margin-bottom:4px!important}.my-lg-2{margin-top:8px!important;margin-bottom:8px!important}.my-lg-3{margin-top:12px!important;margin-bottom:12px!important}.my-lg-4{margin-top:16px!important;margin-bottom:16px!important}.my-lg-5{margin-top:20px!important;margin-bottom:20px!important}.my-lg-6{margin-top:24px!important;margin-bottom:24px!important}.my-lg-7{margin-top:28px!important;margin-bottom:28px!important}.my-lg-8{margin-top:32px!important;margin-bottom:32px!important}.my-lg-9{margin-top:36px!important;margin-bottom:36px!important}.my-lg-10{margin-top:40px!important;margin-bottom:40px!important}.my-lg-11{margin-top:44px!important;margin-bottom:44px!important}.my-lg-12{margin-top:48px!important;margin-bottom:48px!important}.my-lg-13{margin-top:52px!important;margin-bottom:52px!important}.my-lg-14{margin-top:56px!important;margin-bottom:56px!important}.my-lg-15{margin-top:60px!important;margin-bottom:60px!important}.my-lg-16{margin-top:64px!important;margin-bottom:64px!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:4px!important}.mt-lg-2{margin-top:8px!important}.mt-lg-3{margin-top:12px!important}.mt-lg-4{margin-top:16px!important}.mt-lg-5{margin-top:20px!important}.mt-lg-6{margin-top:24px!important}.mt-lg-7{margin-top:28px!important}.mt-lg-8{margin-top:32px!important}.mt-lg-9{margin-top:36px!important}.mt-lg-10{margin-top:40px!important}.mt-lg-11{margin-top:44px!important}.mt-lg-12{margin-top:48px!important}.mt-lg-13{margin-top:52px!important}.mt-lg-14{margin-top:56px!important}.mt-lg-15{margin-top:60px!important}.mt-lg-16{margin-top:64px!important}.mt-lg-auto{margin-top:auto!important}.mr-lg-0{margin-right:0!important}.mr-lg-1{margin-right:4px!important}.mr-lg-2{margin-right:8px!important}.mr-lg-3{margin-right:12px!important}.mr-lg-4{margin-right:16px!important}.mr-lg-5{margin-right:20px!important}.mr-lg-6{margin-right:24px!important}.mr-lg-7{margin-right:28px!important}.mr-lg-8{margin-right:32px!important}.mr-lg-9{margin-right:36px!important}.mr-lg-10{margin-right:40px!important}.mr-lg-11{margin-right:44px!important}.mr-lg-12{margin-right:48px!important}.mr-lg-13{margin-right:52px!important}.mr-lg-14{margin-right:56px!important}.mr-lg-15{margin-right:60px!important}.mr-lg-16{margin-right:64px!important}.mr-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:4px!important}.mb-lg-2{margin-bottom:8px!important}.mb-lg-3{margin-bottom:12px!important}.mb-lg-4{margin-bottom:16px!important}.mb-lg-5{margin-bottom:20px!important}.mb-lg-6{margin-bottom:24px!important}.mb-lg-7{margin-bottom:28px!important}.mb-lg-8{margin-bottom:32px!important}.mb-lg-9{margin-bottom:36px!important}.mb-lg-10{margin-bottom:40px!important}.mb-lg-11{margin-bottom:44px!important}.mb-lg-12{margin-bottom:48px!important}.mb-lg-13{margin-bottom:52px!important}.mb-lg-14{margin-bottom:56px!important}.mb-lg-15{margin-bottom:60px!important}.mb-lg-16{margin-bottom:64px!important}.mb-lg-auto{margin-bottom:auto!important}.ml-lg-0{margin-left:0!important}.ml-lg-1{margin-left:4px!important}.ml-lg-2{margin-left:8px!important}.ml-lg-3{margin-left:12px!important}.ml-lg-4{margin-left:16px!important}.ml-lg-5{margin-left:20px!important}.ml-lg-6{margin-left:24px!important}.ml-lg-7{margin-left:28px!important}.ml-lg-8{margin-left:32px!important}.ml-lg-9{margin-left:36px!important}.ml-lg-10{margin-left:40px!important}.ml-lg-11{margin-left:44px!important}.ml-lg-12{margin-left:48px!important}.ml-lg-13{margin-left:52px!important}.ml-lg-14{margin-left:56px!important}.ml-lg-15{margin-left:60px!important}.ml-lg-16{margin-left:64px!important}.ml-lg-auto{margin-left:auto!important}.v-locale--is-ltr .ms-lg-0{margin-left:0!important}.v-locale--is-rtl .ms-lg-0{margin-right:0!important}.v-locale--is-ltr .ms-lg-1{margin-left:4px!important}.v-locale--is-rtl .ms-lg-1{margin-right:4px!important}.v-locale--is-ltr .ms-lg-2{margin-left:8px!important}.v-locale--is-rtl .ms-lg-2{margin-right:8px!important}.v-locale--is-ltr .ms-lg-3{margin-left:12px!important}.v-locale--is-rtl .ms-lg-3{margin-right:12px!important}.v-locale--is-ltr .ms-lg-4{margin-left:16px!important}.v-locale--is-rtl .ms-lg-4{margin-right:16px!important}.v-locale--is-ltr .ms-lg-5{margin-left:20px!important}.v-locale--is-rtl .ms-lg-5{margin-right:20px!important}.v-locale--is-ltr .ms-lg-6{margin-left:24px!important}.v-locale--is-rtl .ms-lg-6{margin-right:24px!important}.v-locale--is-ltr .ms-lg-7{margin-left:28px!important}.v-locale--is-rtl .ms-lg-7{margin-right:28px!important}.v-locale--is-ltr .ms-lg-8{margin-left:32px!important}.v-locale--is-rtl .ms-lg-8{margin-right:32px!important}.v-locale--is-ltr .ms-lg-9{margin-left:36px!important}.v-locale--is-rtl .ms-lg-9{margin-right:36px!important}.v-locale--is-ltr .ms-lg-10{margin-left:40px!important}.v-locale--is-rtl .ms-lg-10{margin-right:40px!important}.v-locale--is-ltr .ms-lg-11{margin-left:44px!important}.v-locale--is-rtl .ms-lg-11{margin-right:44px!important}.v-locale--is-ltr .ms-lg-12{margin-left:48px!important}.v-locale--is-rtl .ms-lg-12{margin-right:48px!important}.v-locale--is-ltr .ms-lg-13{margin-left:52px!important}.v-locale--is-rtl .ms-lg-13{margin-right:52px!important}.v-locale--is-ltr .ms-lg-14{margin-left:56px!important}.v-locale--is-rtl .ms-lg-14{margin-right:56px!important}.v-locale--is-ltr .ms-lg-15{margin-left:60px!important}.v-locale--is-rtl .ms-lg-15{margin-right:60px!important}.v-locale--is-ltr .ms-lg-16{margin-left:64px!important}.v-locale--is-rtl .ms-lg-16{margin-right:64px!important}.v-locale--is-ltr .ms-lg-auto{margin-left:auto!important}.v-locale--is-rtl .ms-lg-auto{margin-right:auto!important}.v-locale--is-ltr .me-lg-0{margin-right:0!important}.v-locale--is-rtl .me-lg-0{margin-left:0!important}.v-locale--is-ltr .me-lg-1{margin-right:4px!important}.v-locale--is-rtl .me-lg-1{margin-left:4px!important}.v-locale--is-ltr .me-lg-2{margin-right:8px!important}.v-locale--is-rtl .me-lg-2{margin-left:8px!important}.v-locale--is-ltr .me-lg-3{margin-right:12px!important}.v-locale--is-rtl .me-lg-3{margin-left:12px!important}.v-locale--is-ltr .me-lg-4{margin-right:16px!important}.v-locale--is-rtl .me-lg-4{margin-left:16px!important}.v-locale--is-ltr .me-lg-5{margin-right:20px!important}.v-locale--is-rtl .me-lg-5{margin-left:20px!important}.v-locale--is-ltr .me-lg-6{margin-right:24px!important}.v-locale--is-rtl .me-lg-6{margin-left:24px!important}.v-locale--is-ltr .me-lg-7{margin-right:28px!important}.v-locale--is-rtl .me-lg-7{margin-left:28px!important}.v-locale--is-ltr .me-lg-8{margin-right:32px!important}.v-locale--is-rtl .me-lg-8{margin-left:32px!important}.v-locale--is-ltr .me-lg-9{margin-right:36px!important}.v-locale--is-rtl .me-lg-9{margin-left:36px!important}.v-locale--is-ltr .me-lg-10{margin-right:40px!important}.v-locale--is-rtl .me-lg-10{margin-left:40px!important}.v-locale--is-ltr .me-lg-11{margin-right:44px!important}.v-locale--is-rtl .me-lg-11{margin-left:44px!important}.v-locale--is-ltr .me-lg-12{margin-right:48px!important}.v-locale--is-rtl .me-lg-12{margin-left:48px!important}.v-locale--is-ltr .me-lg-13{margin-right:52px!important}.v-locale--is-rtl .me-lg-13{margin-left:52px!important}.v-locale--is-ltr .me-lg-14{margin-right:56px!important}.v-locale--is-rtl .me-lg-14{margin-left:56px!important}.v-locale--is-ltr .me-lg-15{margin-right:60px!important}.v-locale--is-rtl .me-lg-15{margin-left:60px!important}.v-locale--is-ltr .me-lg-16{margin-right:64px!important}.v-locale--is-rtl .me-lg-16{margin-left:64px!important}.v-locale--is-ltr .me-lg-auto{margin-right:auto!important}.v-locale--is-rtl .me-lg-auto{margin-left:auto!important}.ma-lg-n1{margin:-4px!important}.ma-lg-n2{margin:-8px!important}.ma-lg-n3{margin:-12px!important}.ma-lg-n4{margin:-16px!important}.ma-lg-n5{margin:-20px!important}.ma-lg-n6{margin:-24px!important}.ma-lg-n7{margin:-28px!important}.ma-lg-n8{margin:-32px!important}.ma-lg-n9{margin:-36px!important}.ma-lg-n10{margin:-40px!important}.ma-lg-n11{margin:-44px!important}.ma-lg-n12{margin:-48px!important}.ma-lg-n13{margin:-52px!important}.ma-lg-n14{margin:-56px!important}.ma-lg-n15{margin:-60px!important}.ma-lg-n16{margin:-64px!important}.mx-lg-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-lg-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-lg-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-lg-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-lg-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-lg-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-lg-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-lg-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-lg-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-lg-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-lg-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-lg-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-lg-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-lg-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-lg-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-lg-n16{margin-right:-64px!important;margin-left:-64px!important}.my-lg-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-lg-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-lg-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-lg-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-lg-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-lg-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-lg-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-lg-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-lg-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-lg-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-lg-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-lg-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-lg-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-lg-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-lg-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-lg-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-lg-n1{margin-top:-4px!important}.mt-lg-n2{margin-top:-8px!important}.mt-lg-n3{margin-top:-12px!important}.mt-lg-n4{margin-top:-16px!important}.mt-lg-n5{margin-top:-20px!important}.mt-lg-n6{margin-top:-24px!important}.mt-lg-n7{margin-top:-28px!important}.mt-lg-n8{margin-top:-32px!important}.mt-lg-n9{margin-top:-36px!important}.mt-lg-n10{margin-top:-40px!important}.mt-lg-n11{margin-top:-44px!important}.mt-lg-n12{margin-top:-48px!important}.mt-lg-n13{margin-top:-52px!important}.mt-lg-n14{margin-top:-56px!important}.mt-lg-n15{margin-top:-60px!important}.mt-lg-n16{margin-top:-64px!important}.mr-lg-n1{margin-right:-4px!important}.mr-lg-n2{margin-right:-8px!important}.mr-lg-n3{margin-right:-12px!important}.mr-lg-n4{margin-right:-16px!important}.mr-lg-n5{margin-right:-20px!important}.mr-lg-n6{margin-right:-24px!important}.mr-lg-n7{margin-right:-28px!important}.mr-lg-n8{margin-right:-32px!important}.mr-lg-n9{margin-right:-36px!important}.mr-lg-n10{margin-right:-40px!important}.mr-lg-n11{margin-right:-44px!important}.mr-lg-n12{margin-right:-48px!important}.mr-lg-n13{margin-right:-52px!important}.mr-lg-n14{margin-right:-56px!important}.mr-lg-n15{margin-right:-60px!important}.mr-lg-n16{margin-right:-64px!important}.mb-lg-n1{margin-bottom:-4px!important}.mb-lg-n2{margin-bottom:-8px!important}.mb-lg-n3{margin-bottom:-12px!important}.mb-lg-n4{margin-bottom:-16px!important}.mb-lg-n5{margin-bottom:-20px!important}.mb-lg-n6{margin-bottom:-24px!important}.mb-lg-n7{margin-bottom:-28px!important}.mb-lg-n8{margin-bottom:-32px!important}.mb-lg-n9{margin-bottom:-36px!important}.mb-lg-n10{margin-bottom:-40px!important}.mb-lg-n11{margin-bottom:-44px!important}.mb-lg-n12{margin-bottom:-48px!important}.mb-lg-n13{margin-bottom:-52px!important}.mb-lg-n14{margin-bottom:-56px!important}.mb-lg-n15{margin-bottom:-60px!important}.mb-lg-n16{margin-bottom:-64px!important}.ml-lg-n1{margin-left:-4px!important}.ml-lg-n2{margin-left:-8px!important}.ml-lg-n3{margin-left:-12px!important}.ml-lg-n4{margin-left:-16px!important}.ml-lg-n5{margin-left:-20px!important}.ml-lg-n6{margin-left:-24px!important}.ml-lg-n7{margin-left:-28px!important}.ml-lg-n8{margin-left:-32px!important}.ml-lg-n9{margin-left:-36px!important}.ml-lg-n10{margin-left:-40px!important}.ml-lg-n11{margin-left:-44px!important}.ml-lg-n12{margin-left:-48px!important}.ml-lg-n13{margin-left:-52px!important}.ml-lg-n14{margin-left:-56px!important}.ml-lg-n15{margin-left:-60px!important}.ml-lg-n16{margin-left:-64px!important}.v-locale--is-ltr .ms-lg-n1{margin-left:-4px!important}.v-locale--is-rtl .ms-lg-n1{margin-right:-4px!important}.v-locale--is-ltr .ms-lg-n2{margin-left:-8px!important}.v-locale--is-rtl .ms-lg-n2{margin-right:-8px!important}.v-locale--is-ltr .ms-lg-n3{margin-left:-12px!important}.v-locale--is-rtl .ms-lg-n3{margin-right:-12px!important}.v-locale--is-ltr .ms-lg-n4{margin-left:-16px!important}.v-locale--is-rtl .ms-lg-n4{margin-right:-16px!important}.v-locale--is-ltr .ms-lg-n5{margin-left:-20px!important}.v-locale--is-rtl .ms-lg-n5{margin-right:-20px!important}.v-locale--is-ltr .ms-lg-n6{margin-left:-24px!important}.v-locale--is-rtl .ms-lg-n6{margin-right:-24px!important}.v-locale--is-ltr .ms-lg-n7{margin-left:-28px!important}.v-locale--is-rtl .ms-lg-n7{margin-right:-28px!important}.v-locale--is-ltr .ms-lg-n8{margin-left:-32px!important}.v-locale--is-rtl .ms-lg-n8{margin-right:-32px!important}.v-locale--is-ltr .ms-lg-n9{margin-left:-36px!important}.v-locale--is-rtl .ms-lg-n9{margin-right:-36px!important}.v-locale--is-ltr .ms-lg-n10{margin-left:-40px!important}.v-locale--is-rtl .ms-lg-n10{margin-right:-40px!important}.v-locale--is-ltr .ms-lg-n11{margin-left:-44px!important}.v-locale--is-rtl .ms-lg-n11{margin-right:-44px!important}.v-locale--is-ltr .ms-lg-n12{margin-left:-48px!important}.v-locale--is-rtl .ms-lg-n12{margin-right:-48px!important}.v-locale--is-ltr .ms-lg-n13{margin-left:-52px!important}.v-locale--is-rtl .ms-lg-n13{margin-right:-52px!important}.v-locale--is-ltr .ms-lg-n14{margin-left:-56px!important}.v-locale--is-rtl .ms-lg-n14{margin-right:-56px!important}.v-locale--is-ltr .ms-lg-n15{margin-left:-60px!important}.v-locale--is-rtl .ms-lg-n15{margin-right:-60px!important}.v-locale--is-ltr .ms-lg-n16{margin-left:-64px!important}.v-locale--is-rtl .ms-lg-n16{margin-right:-64px!important}.v-locale--is-ltr .me-lg-n1{margin-right:-4px!important}.v-locale--is-rtl .me-lg-n1{margin-left:-4px!important}.v-locale--is-ltr .me-lg-n2{margin-right:-8px!important}.v-locale--is-rtl .me-lg-n2{margin-left:-8px!important}.v-locale--is-ltr .me-lg-n3{margin-right:-12px!important}.v-locale--is-rtl .me-lg-n3{margin-left:-12px!important}.v-locale--is-ltr .me-lg-n4{margin-right:-16px!important}.v-locale--is-rtl .me-lg-n4{margin-left:-16px!important}.v-locale--is-ltr .me-lg-n5{margin-right:-20px!important}.v-locale--is-rtl .me-lg-n5{margin-left:-20px!important}.v-locale--is-ltr .me-lg-n6{margin-right:-24px!important}.v-locale--is-rtl .me-lg-n6{margin-left:-24px!important}.v-locale--is-ltr .me-lg-n7{margin-right:-28px!important}.v-locale--is-rtl .me-lg-n7{margin-left:-28px!important}.v-locale--is-ltr .me-lg-n8{margin-right:-32px!important}.v-locale--is-rtl .me-lg-n8{margin-left:-32px!important}.v-locale--is-ltr .me-lg-n9{margin-right:-36px!important}.v-locale--is-rtl .me-lg-n9{margin-left:-36px!important}.v-locale--is-ltr .me-lg-n10{margin-right:-40px!important}.v-locale--is-rtl .me-lg-n10{margin-left:-40px!important}.v-locale--is-ltr .me-lg-n11{margin-right:-44px!important}.v-locale--is-rtl .me-lg-n11{margin-left:-44px!important}.v-locale--is-ltr .me-lg-n12{margin-right:-48px!important}.v-locale--is-rtl .me-lg-n12{margin-left:-48px!important}.v-locale--is-ltr .me-lg-n13{margin-right:-52px!important}.v-locale--is-rtl .me-lg-n13{margin-left:-52px!important}.v-locale--is-ltr .me-lg-n14{margin-right:-56px!important}.v-locale--is-rtl .me-lg-n14{margin-left:-56px!important}.v-locale--is-ltr .me-lg-n15{margin-right:-60px!important}.v-locale--is-rtl .me-lg-n15{margin-left:-60px!important}.v-locale--is-ltr .me-lg-n16{margin-right:-64px!important}.v-locale--is-rtl .me-lg-n16{margin-left:-64px!important}.pa-lg-0{padding:0!important}.pa-lg-1{padding:4px!important}.pa-lg-2{padding:8px!important}.pa-lg-3{padding:12px!important}.pa-lg-4{padding:16px!important}.pa-lg-5{padding:20px!important}.pa-lg-6{padding:24px!important}.pa-lg-7{padding:28px!important}.pa-lg-8{padding:32px!important}.pa-lg-9{padding:36px!important}.pa-lg-10{padding:40px!important}.pa-lg-11{padding:44px!important}.pa-lg-12{padding:48px!important}.pa-lg-13{padding:52px!important}.pa-lg-14{padding:56px!important}.pa-lg-15{padding:60px!important}.pa-lg-16{padding:64px!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:4px!important;padding-left:4px!important}.px-lg-2{padding-right:8px!important;padding-left:8px!important}.px-lg-3{padding-right:12px!important;padding-left:12px!important}.px-lg-4{padding-right:16px!important;padding-left:16px!important}.px-lg-5{padding-right:20px!important;padding-left:20px!important}.px-lg-6{padding-right:24px!important;padding-left:24px!important}.px-lg-7{padding-right:28px!important;padding-left:28px!important}.px-lg-8{padding-right:32px!important;padding-left:32px!important}.px-lg-9{padding-right:36px!important;padding-left:36px!important}.px-lg-10{padding-right:40px!important;padding-left:40px!important}.px-lg-11{padding-right:44px!important;padding-left:44px!important}.px-lg-12{padding-right:48px!important;padding-left:48px!important}.px-lg-13{padding-right:52px!important;padding-left:52px!important}.px-lg-14{padding-right:56px!important;padding-left:56px!important}.px-lg-15{padding-right:60px!important;padding-left:60px!important}.px-lg-16{padding-right:64px!important;padding-left:64px!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:4px!important;padding-bottom:4px!important}.py-lg-2{padding-top:8px!important;padding-bottom:8px!important}.py-lg-3{padding-top:12px!important;padding-bottom:12px!important}.py-lg-4{padding-top:16px!important;padding-bottom:16px!important}.py-lg-5{padding-top:20px!important;padding-bottom:20px!important}.py-lg-6{padding-top:24px!important;padding-bottom:24px!important}.py-lg-7{padding-top:28px!important;padding-bottom:28px!important}.py-lg-8{padding-top:32px!important;padding-bottom:32px!important}.py-lg-9{padding-top:36px!important;padding-bottom:36px!important}.py-lg-10{padding-top:40px!important;padding-bottom:40px!important}.py-lg-11{padding-top:44px!important;padding-bottom:44px!important}.py-lg-12{padding-top:48px!important;padding-bottom:48px!important}.py-lg-13{padding-top:52px!important;padding-bottom:52px!important}.py-lg-14{padding-top:56px!important;padding-bottom:56px!important}.py-lg-15{padding-top:60px!important;padding-bottom:60px!important}.py-lg-16{padding-top:64px!important;padding-bottom:64px!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:4px!important}.pt-lg-2{padding-top:8px!important}.pt-lg-3{padding-top:12px!important}.pt-lg-4{padding-top:16px!important}.pt-lg-5{padding-top:20px!important}.pt-lg-6{padding-top:24px!important}.pt-lg-7{padding-top:28px!important}.pt-lg-8{padding-top:32px!important}.pt-lg-9{padding-top:36px!important}.pt-lg-10{padding-top:40px!important}.pt-lg-11{padding-top:44px!important}.pt-lg-12{padding-top:48px!important}.pt-lg-13{padding-top:52px!important}.pt-lg-14{padding-top:56px!important}.pt-lg-15{padding-top:60px!important}.pt-lg-16{padding-top:64px!important}.pr-lg-0{padding-right:0!important}.pr-lg-1{padding-right:4px!important}.pr-lg-2{padding-right:8px!important}.pr-lg-3{padding-right:12px!important}.pr-lg-4{padding-right:16px!important}.pr-lg-5{padding-right:20px!important}.pr-lg-6{padding-right:24px!important}.pr-lg-7{padding-right:28px!important}.pr-lg-8{padding-right:32px!important}.pr-lg-9{padding-right:36px!important}.pr-lg-10{padding-right:40px!important}.pr-lg-11{padding-right:44px!important}.pr-lg-12{padding-right:48px!important}.pr-lg-13{padding-right:52px!important}.pr-lg-14{padding-right:56px!important}.pr-lg-15{padding-right:60px!important}.pr-lg-16{padding-right:64px!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:4px!important}.pb-lg-2{padding-bottom:8px!important}.pb-lg-3{padding-bottom:12px!important}.pb-lg-4{padding-bottom:16px!important}.pb-lg-5{padding-bottom:20px!important}.pb-lg-6{padding-bottom:24px!important}.pb-lg-7{padding-bottom:28px!important}.pb-lg-8{padding-bottom:32px!important}.pb-lg-9{padding-bottom:36px!important}.pb-lg-10{padding-bottom:40px!important}.pb-lg-11{padding-bottom:44px!important}.pb-lg-12{padding-bottom:48px!important}.pb-lg-13{padding-bottom:52px!important}.pb-lg-14{padding-bottom:56px!important}.pb-lg-15{padding-bottom:60px!important}.pb-lg-16{padding-bottom:64px!important}.pl-lg-0{padding-left:0!important}.pl-lg-1{padding-left:4px!important}.pl-lg-2{padding-left:8px!important}.pl-lg-3{padding-left:12px!important}.pl-lg-4{padding-left:16px!important}.pl-lg-5{padding-left:20px!important}.pl-lg-6{padding-left:24px!important}.pl-lg-7{padding-left:28px!important}.pl-lg-8{padding-left:32px!important}.pl-lg-9{padding-left:36px!important}.pl-lg-10{padding-left:40px!important}.pl-lg-11{padding-left:44px!important}.pl-lg-12{padding-left:48px!important}.pl-lg-13{padding-left:52px!important}.pl-lg-14{padding-left:56px!important}.pl-lg-15{padding-left:60px!important}.pl-lg-16{padding-left:64px!important}.v-locale--is-ltr .ps-lg-0{padding-left:0!important}.v-locale--is-rtl .ps-lg-0{padding-right:0!important}.v-locale--is-ltr .ps-lg-1{padding-left:4px!important}.v-locale--is-rtl .ps-lg-1{padding-right:4px!important}.v-locale--is-ltr .ps-lg-2{padding-left:8px!important}.v-locale--is-rtl .ps-lg-2{padding-right:8px!important}.v-locale--is-ltr .ps-lg-3{padding-left:12px!important}.v-locale--is-rtl .ps-lg-3{padding-right:12px!important}.v-locale--is-ltr .ps-lg-4{padding-left:16px!important}.v-locale--is-rtl .ps-lg-4{padding-right:16px!important}.v-locale--is-ltr .ps-lg-5{padding-left:20px!important}.v-locale--is-rtl .ps-lg-5{padding-right:20px!important}.v-locale--is-ltr .ps-lg-6{padding-left:24px!important}.v-locale--is-rtl .ps-lg-6{padding-right:24px!important}.v-locale--is-ltr .ps-lg-7{padding-left:28px!important}.v-locale--is-rtl .ps-lg-7{padding-right:28px!important}.v-locale--is-ltr .ps-lg-8{padding-left:32px!important}.v-locale--is-rtl .ps-lg-8{padding-right:32px!important}.v-locale--is-ltr .ps-lg-9{padding-left:36px!important}.v-locale--is-rtl .ps-lg-9{padding-right:36px!important}.v-locale--is-ltr .ps-lg-10{padding-left:40px!important}.v-locale--is-rtl .ps-lg-10{padding-right:40px!important}.v-locale--is-ltr .ps-lg-11{padding-left:44px!important}.v-locale--is-rtl .ps-lg-11{padding-right:44px!important}.v-locale--is-ltr .ps-lg-12{padding-left:48px!important}.v-locale--is-rtl .ps-lg-12{padding-right:48px!important}.v-locale--is-ltr .ps-lg-13{padding-left:52px!important}.v-locale--is-rtl .ps-lg-13{padding-right:52px!important}.v-locale--is-ltr .ps-lg-14{padding-left:56px!important}.v-locale--is-rtl .ps-lg-14{padding-right:56px!important}.v-locale--is-ltr .ps-lg-15{padding-left:60px!important}.v-locale--is-rtl .ps-lg-15{padding-right:60px!important}.v-locale--is-ltr .ps-lg-16{padding-left:64px!important}.v-locale--is-rtl .ps-lg-16{padding-right:64px!important}.v-locale--is-ltr .pe-lg-0{padding-right:0!important}.v-locale--is-rtl .pe-lg-0{padding-left:0!important}.v-locale--is-ltr .pe-lg-1{padding-right:4px!important}.v-locale--is-rtl .pe-lg-1{padding-left:4px!important}.v-locale--is-ltr .pe-lg-2{padding-right:8px!important}.v-locale--is-rtl .pe-lg-2{padding-left:8px!important}.v-locale--is-ltr .pe-lg-3{padding-right:12px!important}.v-locale--is-rtl .pe-lg-3{padding-left:12px!important}.v-locale--is-ltr .pe-lg-4{padding-right:16px!important}.v-locale--is-rtl .pe-lg-4{padding-left:16px!important}.v-locale--is-ltr .pe-lg-5{padding-right:20px!important}.v-locale--is-rtl .pe-lg-5{padding-left:20px!important}.v-locale--is-ltr .pe-lg-6{padding-right:24px!important}.v-locale--is-rtl .pe-lg-6{padding-left:24px!important}.v-locale--is-ltr .pe-lg-7{padding-right:28px!important}.v-locale--is-rtl .pe-lg-7{padding-left:28px!important}.v-locale--is-ltr .pe-lg-8{padding-right:32px!important}.v-locale--is-rtl .pe-lg-8{padding-left:32px!important}.v-locale--is-ltr .pe-lg-9{padding-right:36px!important}.v-locale--is-rtl .pe-lg-9{padding-left:36px!important}.v-locale--is-ltr .pe-lg-10{padding-right:40px!important}.v-locale--is-rtl .pe-lg-10{padding-left:40px!important}.v-locale--is-ltr .pe-lg-11{padding-right:44px!important}.v-locale--is-rtl .pe-lg-11{padding-left:44px!important}.v-locale--is-ltr .pe-lg-12{padding-right:48px!important}.v-locale--is-rtl .pe-lg-12{padding-left:48px!important}.v-locale--is-ltr .pe-lg-13{padding-right:52px!important}.v-locale--is-rtl .pe-lg-13{padding-left:52px!important}.v-locale--is-ltr .pe-lg-14{padding-right:56px!important}.v-locale--is-rtl .pe-lg-14{padding-left:56px!important}.v-locale--is-ltr .pe-lg-15{padding-right:60px!important}.v-locale--is-rtl .pe-lg-15{padding-left:60px!important}.v-locale--is-ltr .pe-lg-16{padding-right:64px!important}.v-locale--is-rtl .pe-lg-16{padding-left:64px!important}.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}.text-lg-justify{text-align:justify!important}.text-lg-start{text-align:start!important}.text-lg-end{text-align:end!important}.text-lg-h1{font-size:6rem!important;line-height:6rem;letter-spacing:-.015625em!important}.text-lg-h1,.text-lg-h2{font-weight:300;font-family:Roboto,sans-serif!important}.text-lg-h2{font-size:3.75rem!important;line-height:3.75rem;letter-spacing:-.0083333333em!important}.text-lg-h3{font-size:3rem!important;line-height:3.125rem;letter-spacing:normal!important}.text-lg-h3,.text-lg-h4{font-weight:400;font-family:Roboto,sans-serif!important}.text-lg-h4{font-size:2.125rem!important;line-height:2.5rem;letter-spacing:.0073529412em!important}.text-lg-h5{font-size:1.5rem!important;font-weight:400;letter-spacing:normal!important}.text-lg-h5,.text-lg-h6{line-height:2rem;font-family:Roboto,sans-serif!important}.text-lg-h6{font-size:1.25rem!important;font-weight:500;letter-spacing:.0125em!important}.text-lg-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif!important}.text-lg-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif!important}.text-lg-body-1{font-size:1rem!important;line-height:1.5rem;letter-spacing:.03125em!important}.text-lg-body-1,.text-lg-body-2{font-weight:400;font-family:Roboto,sans-serif!important}.text-lg-body-2{font-size:.875rem!important;line-height:1.25rem;letter-spacing:.0178571429em!important}.text-lg-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif!important;text-transform:uppercase!important}.text-lg-caption{font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important}.text-lg-caption,.text-lg-overline{font-size:.75rem!important;font-family:Roboto,sans-serif!important}.text-lg-overline{font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;text-transform:uppercase!important}}@media(min-width:1920px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.float-xl-none{float:none!important}.float-xl-left{float:left!important}.float-xl-right{float:right!important}.v-locale--is-rtl .float-xl-end{float:left!important}.v-locale--is-ltr .float-xl-end,.v-locale--is-rtl .float-xl-start{float:right!important}.v-locale--is-ltr .float-xl-start{float:left!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-xl-start{justify-content:flex-start!important}.justify-xl-end{justify-content:flex-end!important}.justify-xl-center{justify-content:center!important}.justify-xl-space-between{justify-content:space-between!important}.justify-xl-space-around{justify-content:space-around!important}.align-xl-start{align-items:flex-start!important}.align-xl-end{align-items:flex-end!important}.align-xl-center{align-items:center!important}.align-xl-baseline{align-items:baseline!important}.align-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-space-between{align-content:space-between!important}.align-content-xl-space-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-6{order:6!important}.order-xl-7{order:7!important}.order-xl-8{order:8!important}.order-xl-9{order:9!important}.order-xl-10{order:10!important}.order-xl-11{order:11!important}.order-xl-12{order:12!important}.order-xl-last{order:13!important}.ma-xl-0{margin:0!important}.ma-xl-1{margin:4px!important}.ma-xl-2{margin:8px!important}.ma-xl-3{margin:12px!important}.ma-xl-4{margin:16px!important}.ma-xl-5{margin:20px!important}.ma-xl-6{margin:24px!important}.ma-xl-7{margin:28px!important}.ma-xl-8{margin:32px!important}.ma-xl-9{margin:36px!important}.ma-xl-10{margin:40px!important}.ma-xl-11{margin:44px!important}.ma-xl-12{margin:48px!important}.ma-xl-13{margin:52px!important}.ma-xl-14{margin:56px!important}.ma-xl-15{margin:60px!important}.ma-xl-16{margin:64px!important}.ma-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:4px!important;margin-left:4px!important}.mx-xl-2{margin-right:8px!important;margin-left:8px!important}.mx-xl-3{margin-right:12px!important;margin-left:12px!important}.mx-xl-4{margin-right:16px!important;margin-left:16px!important}.mx-xl-5{margin-right:20px!important;margin-left:20px!important}.mx-xl-6{margin-right:24px!important;margin-left:24px!important}.mx-xl-7{margin-right:28px!important;margin-left:28px!important}.mx-xl-8{margin-right:32px!important;margin-left:32px!important}.mx-xl-9{margin-right:36px!important;margin-left:36px!important}.mx-xl-10{margin-right:40px!important;margin-left:40px!important}.mx-xl-11{margin-right:44px!important;margin-left:44px!important}.mx-xl-12{margin-right:48px!important;margin-left:48px!important}.mx-xl-13{margin-right:52px!important;margin-left:52px!important}.mx-xl-14{margin-right:56px!important;margin-left:56px!important}.mx-xl-15{margin-right:60px!important;margin-left:60px!important}.mx-xl-16{margin-right:64px!important;margin-left:64px!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:4px!important;margin-bottom:4px!important}.my-xl-2{margin-top:8px!important;margin-bottom:8px!important}.my-xl-3{margin-top:12px!important;margin-bottom:12px!important}.my-xl-4{margin-top:16px!important;margin-bottom:16px!important}.my-xl-5{margin-top:20px!important;margin-bottom:20px!important}.my-xl-6{margin-top:24px!important;margin-bottom:24px!important}.my-xl-7{margin-top:28px!important;margin-bottom:28px!important}.my-xl-8{margin-top:32px!important;margin-bottom:32px!important}.my-xl-9{margin-top:36px!important;margin-bottom:36px!important}.my-xl-10{margin-top:40px!important;margin-bottom:40px!important}.my-xl-11{margin-top:44px!important;margin-bottom:44px!important}.my-xl-12{margin-top:48px!important;margin-bottom:48px!important}.my-xl-13{margin-top:52px!important;margin-bottom:52px!important}.my-xl-14{margin-top:56px!important;margin-bottom:56px!important}.my-xl-15{margin-top:60px!important;margin-bottom:60px!important}.my-xl-16{margin-top:64px!important;margin-bottom:64px!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:4px!important}.mt-xl-2{margin-top:8px!important}.mt-xl-3{margin-top:12px!important}.mt-xl-4{margin-top:16px!important}.mt-xl-5{margin-top:20px!important}.mt-xl-6{margin-top:24px!important}.mt-xl-7{margin-top:28px!important}.mt-xl-8{margin-top:32px!important}.mt-xl-9{margin-top:36px!important}.mt-xl-10{margin-top:40px!important}.mt-xl-11{margin-top:44px!important}.mt-xl-12{margin-top:48px!important}.mt-xl-13{margin-top:52px!important}.mt-xl-14{margin-top:56px!important}.mt-xl-15{margin-top:60px!important}.mt-xl-16{margin-top:64px!important}.mt-xl-auto{margin-top:auto!important}.mr-xl-0{margin-right:0!important}.mr-xl-1{margin-right:4px!important}.mr-xl-2{margin-right:8px!important}.mr-xl-3{margin-right:12px!important}.mr-xl-4{margin-right:16px!important}.mr-xl-5{margin-right:20px!important}.mr-xl-6{margin-right:24px!important}.mr-xl-7{margin-right:28px!important}.mr-xl-8{margin-right:32px!important}.mr-xl-9{margin-right:36px!important}.mr-xl-10{margin-right:40px!important}.mr-xl-11{margin-right:44px!important}.mr-xl-12{margin-right:48px!important}.mr-xl-13{margin-right:52px!important}.mr-xl-14{margin-right:56px!important}.mr-xl-15{margin-right:60px!important}.mr-xl-16{margin-right:64px!important}.mr-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:4px!important}.mb-xl-2{margin-bottom:8px!important}.mb-xl-3{margin-bottom:12px!important}.mb-xl-4{margin-bottom:16px!important}.mb-xl-5{margin-bottom:20px!important}.mb-xl-6{margin-bottom:24px!important}.mb-xl-7{margin-bottom:28px!important}.mb-xl-8{margin-bottom:32px!important}.mb-xl-9{margin-bottom:36px!important}.mb-xl-10{margin-bottom:40px!important}.mb-xl-11{margin-bottom:44px!important}.mb-xl-12{margin-bottom:48px!important}.mb-xl-13{margin-bottom:52px!important}.mb-xl-14{margin-bottom:56px!important}.mb-xl-15{margin-bottom:60px!important}.mb-xl-16{margin-bottom:64px!important}.mb-xl-auto{margin-bottom:auto!important}.ml-xl-0{margin-left:0!important}.ml-xl-1{margin-left:4px!important}.ml-xl-2{margin-left:8px!important}.ml-xl-3{margin-left:12px!important}.ml-xl-4{margin-left:16px!important}.ml-xl-5{margin-left:20px!important}.ml-xl-6{margin-left:24px!important}.ml-xl-7{margin-left:28px!important}.ml-xl-8{margin-left:32px!important}.ml-xl-9{margin-left:36px!important}.ml-xl-10{margin-left:40px!important}.ml-xl-11{margin-left:44px!important}.ml-xl-12{margin-left:48px!important}.ml-xl-13{margin-left:52px!important}.ml-xl-14{margin-left:56px!important}.ml-xl-15{margin-left:60px!important}.ml-xl-16{margin-left:64px!important}.ml-xl-auto{margin-left:auto!important}.v-locale--is-ltr .ms-xl-0{margin-left:0!important}.v-locale--is-rtl .ms-xl-0{margin-right:0!important}.v-locale--is-ltr .ms-xl-1{margin-left:4px!important}.v-locale--is-rtl .ms-xl-1{margin-right:4px!important}.v-locale--is-ltr .ms-xl-2{margin-left:8px!important}.v-locale--is-rtl .ms-xl-2{margin-right:8px!important}.v-locale--is-ltr .ms-xl-3{margin-left:12px!important}.v-locale--is-rtl .ms-xl-3{margin-right:12px!important}.v-locale--is-ltr .ms-xl-4{margin-left:16px!important}.v-locale--is-rtl .ms-xl-4{margin-right:16px!important}.v-locale--is-ltr .ms-xl-5{margin-left:20px!important}.v-locale--is-rtl .ms-xl-5{margin-right:20px!important}.v-locale--is-ltr .ms-xl-6{margin-left:24px!important}.v-locale--is-rtl .ms-xl-6{margin-right:24px!important}.v-locale--is-ltr .ms-xl-7{margin-left:28px!important}.v-locale--is-rtl .ms-xl-7{margin-right:28px!important}.v-locale--is-ltr .ms-xl-8{margin-left:32px!important}.v-locale--is-rtl .ms-xl-8{margin-right:32px!important}.v-locale--is-ltr .ms-xl-9{margin-left:36px!important}.v-locale--is-rtl .ms-xl-9{margin-right:36px!important}.v-locale--is-ltr .ms-xl-10{margin-left:40px!important}.v-locale--is-rtl .ms-xl-10{margin-right:40px!important}.v-locale--is-ltr .ms-xl-11{margin-left:44px!important}.v-locale--is-rtl .ms-xl-11{margin-right:44px!important}.v-locale--is-ltr .ms-xl-12{margin-left:48px!important}.v-locale--is-rtl .ms-xl-12{margin-right:48px!important}.v-locale--is-ltr .ms-xl-13{margin-left:52px!important}.v-locale--is-rtl .ms-xl-13{margin-right:52px!important}.v-locale--is-ltr .ms-xl-14{margin-left:56px!important}.v-locale--is-rtl .ms-xl-14{margin-right:56px!important}.v-locale--is-ltr .ms-xl-15{margin-left:60px!important}.v-locale--is-rtl .ms-xl-15{margin-right:60px!important}.v-locale--is-ltr .ms-xl-16{margin-left:64px!important}.v-locale--is-rtl .ms-xl-16{margin-right:64px!important}.v-locale--is-ltr .ms-xl-auto{margin-left:auto!important}.v-locale--is-rtl .ms-xl-auto{margin-right:auto!important}.v-locale--is-ltr .me-xl-0{margin-right:0!important}.v-locale--is-rtl .me-xl-0{margin-left:0!important}.v-locale--is-ltr .me-xl-1{margin-right:4px!important}.v-locale--is-rtl .me-xl-1{margin-left:4px!important}.v-locale--is-ltr .me-xl-2{margin-right:8px!important}.v-locale--is-rtl .me-xl-2{margin-left:8px!important}.v-locale--is-ltr .me-xl-3{margin-right:12px!important}.v-locale--is-rtl .me-xl-3{margin-left:12px!important}.v-locale--is-ltr .me-xl-4{margin-right:16px!important}.v-locale--is-rtl .me-xl-4{margin-left:16px!important}.v-locale--is-ltr .me-xl-5{margin-right:20px!important}.v-locale--is-rtl .me-xl-5{margin-left:20px!important}.v-locale--is-ltr .me-xl-6{margin-right:24px!important}.v-locale--is-rtl .me-xl-6{margin-left:24px!important}.v-locale--is-ltr .me-xl-7{margin-right:28px!important}.v-locale--is-rtl .me-xl-7{margin-left:28px!important}.v-locale--is-ltr .me-xl-8{margin-right:32px!important}.v-locale--is-rtl .me-xl-8{margin-left:32px!important}.v-locale--is-ltr .me-xl-9{margin-right:36px!important}.v-locale--is-rtl .me-xl-9{margin-left:36px!important}.v-locale--is-ltr .me-xl-10{margin-right:40px!important}.v-locale--is-rtl .me-xl-10{margin-left:40px!important}.v-locale--is-ltr .me-xl-11{margin-right:44px!important}.v-locale--is-rtl .me-xl-11{margin-left:44px!important}.v-locale--is-ltr .me-xl-12{margin-right:48px!important}.v-locale--is-rtl .me-xl-12{margin-left:48px!important}.v-locale--is-ltr .me-xl-13{margin-right:52px!important}.v-locale--is-rtl .me-xl-13{margin-left:52px!important}.v-locale--is-ltr .me-xl-14{margin-right:56px!important}.v-locale--is-rtl .me-xl-14{margin-left:56px!important}.v-locale--is-ltr .me-xl-15{margin-right:60px!important}.v-locale--is-rtl .me-xl-15{margin-left:60px!important}.v-locale--is-ltr .me-xl-16{margin-right:64px!important}.v-locale--is-rtl .me-xl-16{margin-left:64px!important}.v-locale--is-ltr .me-xl-auto{margin-right:auto!important}.v-locale--is-rtl .me-xl-auto{margin-left:auto!important}.ma-xl-n1{margin:-4px!important}.ma-xl-n2{margin:-8px!important}.ma-xl-n3{margin:-12px!important}.ma-xl-n4{margin:-16px!important}.ma-xl-n5{margin:-20px!important}.ma-xl-n6{margin:-24px!important}.ma-xl-n7{margin:-28px!important}.ma-xl-n8{margin:-32px!important}.ma-xl-n9{margin:-36px!important}.ma-xl-n10{margin:-40px!important}.ma-xl-n11{margin:-44px!important}.ma-xl-n12{margin:-48px!important}.ma-xl-n13{margin:-52px!important}.ma-xl-n14{margin:-56px!important}.ma-xl-n15{margin:-60px!important}.ma-xl-n16{margin:-64px!important}.mx-xl-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-xl-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-xl-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-xl-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-xl-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-xl-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-xl-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-xl-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-xl-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-xl-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-xl-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-xl-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-xl-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-xl-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-xl-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-xl-n16{margin-right:-64px!important;margin-left:-64px!important}.my-xl-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-xl-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-xl-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-xl-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-xl-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-xl-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-xl-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-xl-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-xl-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-xl-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-xl-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-xl-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-xl-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-xl-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-xl-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-xl-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-xl-n1{margin-top:-4px!important}.mt-xl-n2{margin-top:-8px!important}.mt-xl-n3{margin-top:-12px!important}.mt-xl-n4{margin-top:-16px!important}.mt-xl-n5{margin-top:-20px!important}.mt-xl-n6{margin-top:-24px!important}.mt-xl-n7{margin-top:-28px!important}.mt-xl-n8{margin-top:-32px!important}.mt-xl-n9{margin-top:-36px!important}.mt-xl-n10{margin-top:-40px!important}.mt-xl-n11{margin-top:-44px!important}.mt-xl-n12{margin-top:-48px!important}.mt-xl-n13{margin-top:-52px!important}.mt-xl-n14{margin-top:-56px!important}.mt-xl-n15{margin-top:-60px!important}.mt-xl-n16{margin-top:-64px!important}.mr-xl-n1{margin-right:-4px!important}.mr-xl-n2{margin-right:-8px!important}.mr-xl-n3{margin-right:-12px!important}.mr-xl-n4{margin-right:-16px!important}.mr-xl-n5{margin-right:-20px!important}.mr-xl-n6{margin-right:-24px!important}.mr-xl-n7{margin-right:-28px!important}.mr-xl-n8{margin-right:-32px!important}.mr-xl-n9{margin-right:-36px!important}.mr-xl-n10{margin-right:-40px!important}.mr-xl-n11{margin-right:-44px!important}.mr-xl-n12{margin-right:-48px!important}.mr-xl-n13{margin-right:-52px!important}.mr-xl-n14{margin-right:-56px!important}.mr-xl-n15{margin-right:-60px!important}.mr-xl-n16{margin-right:-64px!important}.mb-xl-n1{margin-bottom:-4px!important}.mb-xl-n2{margin-bottom:-8px!important}.mb-xl-n3{margin-bottom:-12px!important}.mb-xl-n4{margin-bottom:-16px!important}.mb-xl-n5{margin-bottom:-20px!important}.mb-xl-n6{margin-bottom:-24px!important}.mb-xl-n7{margin-bottom:-28px!important}.mb-xl-n8{margin-bottom:-32px!important}.mb-xl-n9{margin-bottom:-36px!important}.mb-xl-n10{margin-bottom:-40px!important}.mb-xl-n11{margin-bottom:-44px!important}.mb-xl-n12{margin-bottom:-48px!important}.mb-xl-n13{margin-bottom:-52px!important}.mb-xl-n14{margin-bottom:-56px!important}.mb-xl-n15{margin-bottom:-60px!important}.mb-xl-n16{margin-bottom:-64px!important}.ml-xl-n1{margin-left:-4px!important}.ml-xl-n2{margin-left:-8px!important}.ml-xl-n3{margin-left:-12px!important}.ml-xl-n4{margin-left:-16px!important}.ml-xl-n5{margin-left:-20px!important}.ml-xl-n6{margin-left:-24px!important}.ml-xl-n7{margin-left:-28px!important}.ml-xl-n8{margin-left:-32px!important}.ml-xl-n9{margin-left:-36px!important}.ml-xl-n10{margin-left:-40px!important}.ml-xl-n11{margin-left:-44px!important}.ml-xl-n12{margin-left:-48px!important}.ml-xl-n13{margin-left:-52px!important}.ml-xl-n14{margin-left:-56px!important}.ml-xl-n15{margin-left:-60px!important}.ml-xl-n16{margin-left:-64px!important}.v-locale--is-ltr .ms-xl-n1{margin-left:-4px!important}.v-locale--is-rtl .ms-xl-n1{margin-right:-4px!important}.v-locale--is-ltr .ms-xl-n2{margin-left:-8px!important}.v-locale--is-rtl .ms-xl-n2{margin-right:-8px!important}.v-locale--is-ltr .ms-xl-n3{margin-left:-12px!important}.v-locale--is-rtl .ms-xl-n3{margin-right:-12px!important}.v-locale--is-ltr .ms-xl-n4{margin-left:-16px!important}.v-locale--is-rtl .ms-xl-n4{margin-right:-16px!important}.v-locale--is-ltr .ms-xl-n5{margin-left:-20px!important}.v-locale--is-rtl .ms-xl-n5{margin-right:-20px!important}.v-locale--is-ltr .ms-xl-n6{margin-left:-24px!important}.v-locale--is-rtl .ms-xl-n6{margin-right:-24px!important}.v-locale--is-ltr .ms-xl-n7{margin-left:-28px!important}.v-locale--is-rtl .ms-xl-n7{margin-right:-28px!important}.v-locale--is-ltr .ms-xl-n8{margin-left:-32px!important}.v-locale--is-rtl .ms-xl-n8{margin-right:-32px!important}.v-locale--is-ltr .ms-xl-n9{margin-left:-36px!important}.v-locale--is-rtl .ms-xl-n9{margin-right:-36px!important}.v-locale--is-ltr .ms-xl-n10{margin-left:-40px!important}.v-locale--is-rtl .ms-xl-n10{margin-right:-40px!important}.v-locale--is-ltr .ms-xl-n11{margin-left:-44px!important}.v-locale--is-rtl .ms-xl-n11{margin-right:-44px!important}.v-locale--is-ltr .ms-xl-n12{margin-left:-48px!important}.v-locale--is-rtl .ms-xl-n12{margin-right:-48px!important}.v-locale--is-ltr .ms-xl-n13{margin-left:-52px!important}.v-locale--is-rtl .ms-xl-n13{margin-right:-52px!important}.v-locale--is-ltr .ms-xl-n14{margin-left:-56px!important}.v-locale--is-rtl .ms-xl-n14{margin-right:-56px!important}.v-locale--is-ltr .ms-xl-n15{margin-left:-60px!important}.v-locale--is-rtl .ms-xl-n15{margin-right:-60px!important}.v-locale--is-ltr .ms-xl-n16{margin-left:-64px!important}.v-locale--is-rtl .ms-xl-n16{margin-right:-64px!important}.v-locale--is-ltr .me-xl-n1{margin-right:-4px!important}.v-locale--is-rtl .me-xl-n1{margin-left:-4px!important}.v-locale--is-ltr .me-xl-n2{margin-right:-8px!important}.v-locale--is-rtl .me-xl-n2{margin-left:-8px!important}.v-locale--is-ltr .me-xl-n3{margin-right:-12px!important}.v-locale--is-rtl .me-xl-n3{margin-left:-12px!important}.v-locale--is-ltr .me-xl-n4{margin-right:-16px!important}.v-locale--is-rtl .me-xl-n4{margin-left:-16px!important}.v-locale--is-ltr .me-xl-n5{margin-right:-20px!important}.v-locale--is-rtl .me-xl-n5{margin-left:-20px!important}.v-locale--is-ltr .me-xl-n6{margin-right:-24px!important}.v-locale--is-rtl .me-xl-n6{margin-left:-24px!important}.v-locale--is-ltr .me-xl-n7{margin-right:-28px!important}.v-locale--is-rtl .me-xl-n7{margin-left:-28px!important}.v-locale--is-ltr .me-xl-n8{margin-right:-32px!important}.v-locale--is-rtl .me-xl-n8{margin-left:-32px!important}.v-locale--is-ltr .me-xl-n9{margin-right:-36px!important}.v-locale--is-rtl .me-xl-n9{margin-left:-36px!important}.v-locale--is-ltr .me-xl-n10{margin-right:-40px!important}.v-locale--is-rtl .me-xl-n10{margin-left:-40px!important}.v-locale--is-ltr .me-xl-n11{margin-right:-44px!important}.v-locale--is-rtl .me-xl-n11{margin-left:-44px!important}.v-locale--is-ltr .me-xl-n12{margin-right:-48px!important}.v-locale--is-rtl .me-xl-n12{margin-left:-48px!important}.v-locale--is-ltr .me-xl-n13{margin-right:-52px!important}.v-locale--is-rtl .me-xl-n13{margin-left:-52px!important}.v-locale--is-ltr .me-xl-n14{margin-right:-56px!important}.v-locale--is-rtl .me-xl-n14{margin-left:-56px!important}.v-locale--is-ltr .me-xl-n15{margin-right:-60px!important}.v-locale--is-rtl .me-xl-n15{margin-left:-60px!important}.v-locale--is-ltr .me-xl-n16{margin-right:-64px!important}.v-locale--is-rtl .me-xl-n16{margin-left:-64px!important}.pa-xl-0{padding:0!important}.pa-xl-1{padding:4px!important}.pa-xl-2{padding:8px!important}.pa-xl-3{padding:12px!important}.pa-xl-4{padding:16px!important}.pa-xl-5{padding:20px!important}.pa-xl-6{padding:24px!important}.pa-xl-7{padding:28px!important}.pa-xl-8{padding:32px!important}.pa-xl-9{padding:36px!important}.pa-xl-10{padding:40px!important}.pa-xl-11{padding:44px!important}.pa-xl-12{padding:48px!important}.pa-xl-13{padding:52px!important}.pa-xl-14{padding:56px!important}.pa-xl-15{padding:60px!important}.pa-xl-16{padding:64px!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:4px!important;padding-left:4px!important}.px-xl-2{padding-right:8px!important;padding-left:8px!important}.px-xl-3{padding-right:12px!important;padding-left:12px!important}.px-xl-4{padding-right:16px!important;padding-left:16px!important}.px-xl-5{padding-right:20px!important;padding-left:20px!important}.px-xl-6{padding-right:24px!important;padding-left:24px!important}.px-xl-7{padding-right:28px!important;padding-left:28px!important}.px-xl-8{padding-right:32px!important;padding-left:32px!important}.px-xl-9{padding-right:36px!important;padding-left:36px!important}.px-xl-10{padding-right:40px!important;padding-left:40px!important}.px-xl-11{padding-right:44px!important;padding-left:44px!important}.px-xl-12{padding-right:48px!important;padding-left:48px!important}.px-xl-13{padding-right:52px!important;padding-left:52px!important}.px-xl-14{padding-right:56px!important;padding-left:56px!important}.px-xl-15{padding-right:60px!important;padding-left:60px!important}.px-xl-16{padding-right:64px!important;padding-left:64px!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:4px!important;padding-bottom:4px!important}.py-xl-2{padding-top:8px!important;padding-bottom:8px!important}.py-xl-3{padding-top:12px!important;padding-bottom:12px!important}.py-xl-4{padding-top:16px!important;padding-bottom:16px!important}.py-xl-5{padding-top:20px!important;padding-bottom:20px!important}.py-xl-6{padding-top:24px!important;padding-bottom:24px!important}.py-xl-7{padding-top:28px!important;padding-bottom:28px!important}.py-xl-8{padding-top:32px!important;padding-bottom:32px!important}.py-xl-9{padding-top:36px!important;padding-bottom:36px!important}.py-xl-10{padding-top:40px!important;padding-bottom:40px!important}.py-xl-11{padding-top:44px!important;padding-bottom:44px!important}.py-xl-12{padding-top:48px!important;padding-bottom:48px!important}.py-xl-13{padding-top:52px!important;padding-bottom:52px!important}.py-xl-14{padding-top:56px!important;padding-bottom:56px!important}.py-xl-15{padding-top:60px!important;padding-bottom:60px!important}.py-xl-16{padding-top:64px!important;padding-bottom:64px!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:4px!important}.pt-xl-2{padding-top:8px!important}.pt-xl-3{padding-top:12px!important}.pt-xl-4{padding-top:16px!important}.pt-xl-5{padding-top:20px!important}.pt-xl-6{padding-top:24px!important}.pt-xl-7{padding-top:28px!important}.pt-xl-8{padding-top:32px!important}.pt-xl-9{padding-top:36px!important}.pt-xl-10{padding-top:40px!important}.pt-xl-11{padding-top:44px!important}.pt-xl-12{padding-top:48px!important}.pt-xl-13{padding-top:52px!important}.pt-xl-14{padding-top:56px!important}.pt-xl-15{padding-top:60px!important}.pt-xl-16{padding-top:64px!important}.pr-xl-0{padding-right:0!important}.pr-xl-1{padding-right:4px!important}.pr-xl-2{padding-right:8px!important}.pr-xl-3{padding-right:12px!important}.pr-xl-4{padding-right:16px!important}.pr-xl-5{padding-right:20px!important}.pr-xl-6{padding-right:24px!important}.pr-xl-7{padding-right:28px!important}.pr-xl-8{padding-right:32px!important}.pr-xl-9{padding-right:36px!important}.pr-xl-10{padding-right:40px!important}.pr-xl-11{padding-right:44px!important}.pr-xl-12{padding-right:48px!important}.pr-xl-13{padding-right:52px!important}.pr-xl-14{padding-right:56px!important}.pr-xl-15{padding-right:60px!important}.pr-xl-16{padding-right:64px!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:4px!important}.pb-xl-2{padding-bottom:8px!important}.pb-xl-3{padding-bottom:12px!important}.pb-xl-4{padding-bottom:16px!important}.pb-xl-5{padding-bottom:20px!important}.pb-xl-6{padding-bottom:24px!important}.pb-xl-7{padding-bottom:28px!important}.pb-xl-8{padding-bottom:32px!important}.pb-xl-9{padding-bottom:36px!important}.pb-xl-10{padding-bottom:40px!important}.pb-xl-11{padding-bottom:44px!important}.pb-xl-12{padding-bottom:48px!important}.pb-xl-13{padding-bottom:52px!important}.pb-xl-14{padding-bottom:56px!important}.pb-xl-15{padding-bottom:60px!important}.pb-xl-16{padding-bottom:64px!important}.pl-xl-0{padding-left:0!important}.pl-xl-1{padding-left:4px!important}.pl-xl-2{padding-left:8px!important}.pl-xl-3{padding-left:12px!important}.pl-xl-4{padding-left:16px!important}.pl-xl-5{padding-left:20px!important}.pl-xl-6{padding-left:24px!important}.pl-xl-7{padding-left:28px!important}.pl-xl-8{padding-left:32px!important}.pl-xl-9{padding-left:36px!important}.pl-xl-10{padding-left:40px!important}.pl-xl-11{padding-left:44px!important}.pl-xl-12{padding-left:48px!important}.pl-xl-13{padding-left:52px!important}.pl-xl-14{padding-left:56px!important}.pl-xl-15{padding-left:60px!important}.pl-xl-16{padding-left:64px!important}.v-locale--is-ltr .ps-xl-0{padding-left:0!important}.v-locale--is-rtl .ps-xl-0{padding-right:0!important}.v-locale--is-ltr .ps-xl-1{padding-left:4px!important}.v-locale--is-rtl .ps-xl-1{padding-right:4px!important}.v-locale--is-ltr .ps-xl-2{padding-left:8px!important}.v-locale--is-rtl .ps-xl-2{padding-right:8px!important}.v-locale--is-ltr .ps-xl-3{padding-left:12px!important}.v-locale--is-rtl .ps-xl-3{padding-right:12px!important}.v-locale--is-ltr .ps-xl-4{padding-left:16px!important}.v-locale--is-rtl .ps-xl-4{padding-right:16px!important}.v-locale--is-ltr .ps-xl-5{padding-left:20px!important}.v-locale--is-rtl .ps-xl-5{padding-right:20px!important}.v-locale--is-ltr .ps-xl-6{padding-left:24px!important}.v-locale--is-rtl .ps-xl-6{padding-right:24px!important}.v-locale--is-ltr .ps-xl-7{padding-left:28px!important}.v-locale--is-rtl .ps-xl-7{padding-right:28px!important}.v-locale--is-ltr .ps-xl-8{padding-left:32px!important}.v-locale--is-rtl .ps-xl-8{padding-right:32px!important}.v-locale--is-ltr .ps-xl-9{padding-left:36px!important}.v-locale--is-rtl .ps-xl-9{padding-right:36px!important}.v-locale--is-ltr .ps-xl-10{padding-left:40px!important}.v-locale--is-rtl .ps-xl-10{padding-right:40px!important}.v-locale--is-ltr .ps-xl-11{padding-left:44px!important}.v-locale--is-rtl .ps-xl-11{padding-right:44px!important}.v-locale--is-ltr .ps-xl-12{padding-left:48px!important}.v-locale--is-rtl .ps-xl-12{padding-right:48px!important}.v-locale--is-ltr .ps-xl-13{padding-left:52px!important}.v-locale--is-rtl .ps-xl-13{padding-right:52px!important}.v-locale--is-ltr .ps-xl-14{padding-left:56px!important}.v-locale--is-rtl .ps-xl-14{padding-right:56px!important}.v-locale--is-ltr .ps-xl-15{padding-left:60px!important}.v-locale--is-rtl .ps-xl-15{padding-right:60px!important}.v-locale--is-ltr .ps-xl-16{padding-left:64px!important}.v-locale--is-rtl .ps-xl-16{padding-right:64px!important}.v-locale--is-ltr .pe-xl-0{padding-right:0!important}.v-locale--is-rtl .pe-xl-0{padding-left:0!important}.v-locale--is-ltr .pe-xl-1{padding-right:4px!important}.v-locale--is-rtl .pe-xl-1{padding-left:4px!important}.v-locale--is-ltr .pe-xl-2{padding-right:8px!important}.v-locale--is-rtl .pe-xl-2{padding-left:8px!important}.v-locale--is-ltr .pe-xl-3{padding-right:12px!important}.v-locale--is-rtl .pe-xl-3{padding-left:12px!important}.v-locale--is-ltr .pe-xl-4{padding-right:16px!important}.v-locale--is-rtl .pe-xl-4{padding-left:16px!important}.v-locale--is-ltr .pe-xl-5{padding-right:20px!important}.v-locale--is-rtl .pe-xl-5{padding-left:20px!important}.v-locale--is-ltr .pe-xl-6{padding-right:24px!important}.v-locale--is-rtl .pe-xl-6{padding-left:24px!important}.v-locale--is-ltr .pe-xl-7{padding-right:28px!important}.v-locale--is-rtl .pe-xl-7{padding-left:28px!important}.v-locale--is-ltr .pe-xl-8{padding-right:32px!important}.v-locale--is-rtl .pe-xl-8{padding-left:32px!important}.v-locale--is-ltr .pe-xl-9{padding-right:36px!important}.v-locale--is-rtl .pe-xl-9{padding-left:36px!important}.v-locale--is-ltr .pe-xl-10{padding-right:40px!important}.v-locale--is-rtl .pe-xl-10{padding-left:40px!important}.v-locale--is-ltr .pe-xl-11{padding-right:44px!important}.v-locale--is-rtl .pe-xl-11{padding-left:44px!important}.v-locale--is-ltr .pe-xl-12{padding-right:48px!important}.v-locale--is-rtl .pe-xl-12{padding-left:48px!important}.v-locale--is-ltr .pe-xl-13{padding-right:52px!important}.v-locale--is-rtl .pe-xl-13{padding-left:52px!important}.v-locale--is-ltr .pe-xl-14{padding-right:56px!important}.v-locale--is-rtl .pe-xl-14{padding-left:56px!important}.v-locale--is-ltr .pe-xl-15{padding-right:60px!important}.v-locale--is-rtl .pe-xl-15{padding-left:60px!important}.v-locale--is-ltr .pe-xl-16{padding-right:64px!important}.v-locale--is-rtl .pe-xl-16{padding-left:64px!important}.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}.text-xl-justify{text-align:justify!important}.text-xl-start{text-align:start!important}.text-xl-end{text-align:end!important}.text-xl-h1{font-size:6rem!important;line-height:6rem;letter-spacing:-.015625em!important}.text-xl-h1,.text-xl-h2{font-weight:300;font-family:Roboto,sans-serif!important}.text-xl-h2{font-size:3.75rem!important;line-height:3.75rem;letter-spacing:-.0083333333em!important}.text-xl-h3{font-size:3rem!important;line-height:3.125rem;letter-spacing:normal!important}.text-xl-h3,.text-xl-h4{font-weight:400;font-family:Roboto,sans-serif!important}.text-xl-h4{font-size:2.125rem!important;line-height:2.5rem;letter-spacing:.0073529412em!important}.text-xl-h5{font-size:1.5rem!important;font-weight:400;letter-spacing:normal!important}.text-xl-h5,.text-xl-h6{line-height:2rem;font-family:Roboto,sans-serif!important}.text-xl-h6{font-size:1.25rem!important;font-weight:500;letter-spacing:.0125em!important}.text-xl-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif!important}.text-xl-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif!important}.text-xl-body-1{font-size:1rem!important;line-height:1.5rem;letter-spacing:.03125em!important}.text-xl-body-1,.text-xl-body-2{font-weight:400;font-family:Roboto,sans-serif!important}.text-xl-body-2{font-size:.875rem!important;line-height:1.25rem;letter-spacing:.0178571429em!important}.text-xl-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif!important;text-transform:uppercase!important}.text-xl-caption{font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important}.text-xl-caption,.text-xl-overline{font-size:.75rem!important;font-family:Roboto,sans-serif!important}.text-xl-overline{font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;text-transform:uppercase!important}}@media(min-width:2560px){.d-xxl-none{display:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.float-xxl-none{float:none!important}.float-xxl-left{float:left!important}.float-xxl-right{float:right!important}.v-locale--is-rtl .float-xxl-end{float:left!important}.v-locale--is-ltr .float-xxl-end,.v-locale--is-rtl .float-xxl-start{float:right!important}.v-locale--is-ltr .float-xxl-start{float:left!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-xxl-start{justify-content:flex-start!important}.justify-xxl-end{justify-content:flex-end!important}.justify-xxl-center{justify-content:center!important}.justify-xxl-space-between{justify-content:space-between!important}.justify-xxl-space-around{justify-content:space-around!important}.align-xxl-start{align-items:flex-start!important}.align-xxl-end{align-items:flex-end!important}.align-xxl-center{align-items:center!important}.align-xxl-baseline{align-items:baseline!important}.align-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-space-between{align-content:space-between!important}.align-content-xxl-space-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-6{order:6!important}.order-xxl-7{order:7!important}.order-xxl-8{order:8!important}.order-xxl-9{order:9!important}.order-xxl-10{order:10!important}.order-xxl-11{order:11!important}.order-xxl-12{order:12!important}.order-xxl-last{order:13!important}.ma-xxl-0{margin:0!important}.ma-xxl-1{margin:4px!important}.ma-xxl-2{margin:8px!important}.ma-xxl-3{margin:12px!important}.ma-xxl-4{margin:16px!important}.ma-xxl-5{margin:20px!important}.ma-xxl-6{margin:24px!important}.ma-xxl-7{margin:28px!important}.ma-xxl-8{margin:32px!important}.ma-xxl-9{margin:36px!important}.ma-xxl-10{margin:40px!important}.ma-xxl-11{margin:44px!important}.ma-xxl-12{margin:48px!important}.ma-xxl-13{margin:52px!important}.ma-xxl-14{margin:56px!important}.ma-xxl-15{margin:60px!important}.ma-xxl-16{margin:64px!important}.ma-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:4px!important;margin-left:4px!important}.mx-xxl-2{margin-right:8px!important;margin-left:8px!important}.mx-xxl-3{margin-right:12px!important;margin-left:12px!important}.mx-xxl-4{margin-right:16px!important;margin-left:16px!important}.mx-xxl-5{margin-right:20px!important;margin-left:20px!important}.mx-xxl-6{margin-right:24px!important;margin-left:24px!important}.mx-xxl-7{margin-right:28px!important;margin-left:28px!important}.mx-xxl-8{margin-right:32px!important;margin-left:32px!important}.mx-xxl-9{margin-right:36px!important;margin-left:36px!important}.mx-xxl-10{margin-right:40px!important;margin-left:40px!important}.mx-xxl-11{margin-right:44px!important;margin-left:44px!important}.mx-xxl-12{margin-right:48px!important;margin-left:48px!important}.mx-xxl-13{margin-right:52px!important;margin-left:52px!important}.mx-xxl-14{margin-right:56px!important;margin-left:56px!important}.mx-xxl-15{margin-right:60px!important;margin-left:60px!important}.mx-xxl-16{margin-right:64px!important;margin-left:64px!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:4px!important;margin-bottom:4px!important}.my-xxl-2{margin-top:8px!important;margin-bottom:8px!important}.my-xxl-3{margin-top:12px!important;margin-bottom:12px!important}.my-xxl-4{margin-top:16px!important;margin-bottom:16px!important}.my-xxl-5{margin-top:20px!important;margin-bottom:20px!important}.my-xxl-6{margin-top:24px!important;margin-bottom:24px!important}.my-xxl-7{margin-top:28px!important;margin-bottom:28px!important}.my-xxl-8{margin-top:32px!important;margin-bottom:32px!important}.my-xxl-9{margin-top:36px!important;margin-bottom:36px!important}.my-xxl-10{margin-top:40px!important;margin-bottom:40px!important}.my-xxl-11{margin-top:44px!important;margin-bottom:44px!important}.my-xxl-12{margin-top:48px!important;margin-bottom:48px!important}.my-xxl-13{margin-top:52px!important;margin-bottom:52px!important}.my-xxl-14{margin-top:56px!important;margin-bottom:56px!important}.my-xxl-15{margin-top:60px!important;margin-bottom:60px!important}.my-xxl-16{margin-top:64px!important;margin-bottom:64px!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:4px!important}.mt-xxl-2{margin-top:8px!important}.mt-xxl-3{margin-top:12px!important}.mt-xxl-4{margin-top:16px!important}.mt-xxl-5{margin-top:20px!important}.mt-xxl-6{margin-top:24px!important}.mt-xxl-7{margin-top:28px!important}.mt-xxl-8{margin-top:32px!important}.mt-xxl-9{margin-top:36px!important}.mt-xxl-10{margin-top:40px!important}.mt-xxl-11{margin-top:44px!important}.mt-xxl-12{margin-top:48px!important}.mt-xxl-13{margin-top:52px!important}.mt-xxl-14{margin-top:56px!important}.mt-xxl-15{margin-top:60px!important}.mt-xxl-16{margin-top:64px!important}.mt-xxl-auto{margin-top:auto!important}.mr-xxl-0{margin-right:0!important}.mr-xxl-1{margin-right:4px!important}.mr-xxl-2{margin-right:8px!important}.mr-xxl-3{margin-right:12px!important}.mr-xxl-4{margin-right:16px!important}.mr-xxl-5{margin-right:20px!important}.mr-xxl-6{margin-right:24px!important}.mr-xxl-7{margin-right:28px!important}.mr-xxl-8{margin-right:32px!important}.mr-xxl-9{margin-right:36px!important}.mr-xxl-10{margin-right:40px!important}.mr-xxl-11{margin-right:44px!important}.mr-xxl-12{margin-right:48px!important}.mr-xxl-13{margin-right:52px!important}.mr-xxl-14{margin-right:56px!important}.mr-xxl-15{margin-right:60px!important}.mr-xxl-16{margin-right:64px!important}.mr-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:4px!important}.mb-xxl-2{margin-bottom:8px!important}.mb-xxl-3{margin-bottom:12px!important}.mb-xxl-4{margin-bottom:16px!important}.mb-xxl-5{margin-bottom:20px!important}.mb-xxl-6{margin-bottom:24px!important}.mb-xxl-7{margin-bottom:28px!important}.mb-xxl-8{margin-bottom:32px!important}.mb-xxl-9{margin-bottom:36px!important}.mb-xxl-10{margin-bottom:40px!important}.mb-xxl-11{margin-bottom:44px!important}.mb-xxl-12{margin-bottom:48px!important}.mb-xxl-13{margin-bottom:52px!important}.mb-xxl-14{margin-bottom:56px!important}.mb-xxl-15{margin-bottom:60px!important}.mb-xxl-16{margin-bottom:64px!important}.mb-xxl-auto{margin-bottom:auto!important}.ml-xxl-0{margin-left:0!important}.ml-xxl-1{margin-left:4px!important}.ml-xxl-2{margin-left:8px!important}.ml-xxl-3{margin-left:12px!important}.ml-xxl-4{margin-left:16px!important}.ml-xxl-5{margin-left:20px!important}.ml-xxl-6{margin-left:24px!important}.ml-xxl-7{margin-left:28px!important}.ml-xxl-8{margin-left:32px!important}.ml-xxl-9{margin-left:36px!important}.ml-xxl-10{margin-left:40px!important}.ml-xxl-11{margin-left:44px!important}.ml-xxl-12{margin-left:48px!important}.ml-xxl-13{margin-left:52px!important}.ml-xxl-14{margin-left:56px!important}.ml-xxl-15{margin-left:60px!important}.ml-xxl-16{margin-left:64px!important}.ml-xxl-auto{margin-left:auto!important}.v-locale--is-ltr .ms-xxl-0{margin-left:0!important}.v-locale--is-rtl .ms-xxl-0{margin-right:0!important}.v-locale--is-ltr .ms-xxl-1{margin-left:4px!important}.v-locale--is-rtl .ms-xxl-1{margin-right:4px!important}.v-locale--is-ltr .ms-xxl-2{margin-left:8px!important}.v-locale--is-rtl .ms-xxl-2{margin-right:8px!important}.v-locale--is-ltr .ms-xxl-3{margin-left:12px!important}.v-locale--is-rtl .ms-xxl-3{margin-right:12px!important}.v-locale--is-ltr .ms-xxl-4{margin-left:16px!important}.v-locale--is-rtl .ms-xxl-4{margin-right:16px!important}.v-locale--is-ltr .ms-xxl-5{margin-left:20px!important}.v-locale--is-rtl .ms-xxl-5{margin-right:20px!important}.v-locale--is-ltr .ms-xxl-6{margin-left:24px!important}.v-locale--is-rtl .ms-xxl-6{margin-right:24px!important}.v-locale--is-ltr .ms-xxl-7{margin-left:28px!important}.v-locale--is-rtl .ms-xxl-7{margin-right:28px!important}.v-locale--is-ltr .ms-xxl-8{margin-left:32px!important}.v-locale--is-rtl .ms-xxl-8{margin-right:32px!important}.v-locale--is-ltr .ms-xxl-9{margin-left:36px!important}.v-locale--is-rtl .ms-xxl-9{margin-right:36px!important}.v-locale--is-ltr .ms-xxl-10{margin-left:40px!important}.v-locale--is-rtl .ms-xxl-10{margin-right:40px!important}.v-locale--is-ltr .ms-xxl-11{margin-left:44px!important}.v-locale--is-rtl .ms-xxl-11{margin-right:44px!important}.v-locale--is-ltr .ms-xxl-12{margin-left:48px!important}.v-locale--is-rtl .ms-xxl-12{margin-right:48px!important}.v-locale--is-ltr .ms-xxl-13{margin-left:52px!important}.v-locale--is-rtl .ms-xxl-13{margin-right:52px!important}.v-locale--is-ltr .ms-xxl-14{margin-left:56px!important}.v-locale--is-rtl .ms-xxl-14{margin-right:56px!important}.v-locale--is-ltr .ms-xxl-15{margin-left:60px!important}.v-locale--is-rtl .ms-xxl-15{margin-right:60px!important}.v-locale--is-ltr .ms-xxl-16{margin-left:64px!important}.v-locale--is-rtl .ms-xxl-16{margin-right:64px!important}.v-locale--is-ltr .ms-xxl-auto{margin-left:auto!important}.v-locale--is-rtl .ms-xxl-auto{margin-right:auto!important}.v-locale--is-ltr .me-xxl-0{margin-right:0!important}.v-locale--is-rtl .me-xxl-0{margin-left:0!important}.v-locale--is-ltr .me-xxl-1{margin-right:4px!important}.v-locale--is-rtl .me-xxl-1{margin-left:4px!important}.v-locale--is-ltr .me-xxl-2{margin-right:8px!important}.v-locale--is-rtl .me-xxl-2{margin-left:8px!important}.v-locale--is-ltr .me-xxl-3{margin-right:12px!important}.v-locale--is-rtl .me-xxl-3{margin-left:12px!important}.v-locale--is-ltr .me-xxl-4{margin-right:16px!important}.v-locale--is-rtl .me-xxl-4{margin-left:16px!important}.v-locale--is-ltr .me-xxl-5{margin-right:20px!important}.v-locale--is-rtl .me-xxl-5{margin-left:20px!important}.v-locale--is-ltr .me-xxl-6{margin-right:24px!important}.v-locale--is-rtl .me-xxl-6{margin-left:24px!important}.v-locale--is-ltr .me-xxl-7{margin-right:28px!important}.v-locale--is-rtl .me-xxl-7{margin-left:28px!important}.v-locale--is-ltr .me-xxl-8{margin-right:32px!important}.v-locale--is-rtl .me-xxl-8{margin-left:32px!important}.v-locale--is-ltr .me-xxl-9{margin-right:36px!important}.v-locale--is-rtl .me-xxl-9{margin-left:36px!important}.v-locale--is-ltr .me-xxl-10{margin-right:40px!important}.v-locale--is-rtl .me-xxl-10{margin-left:40px!important}.v-locale--is-ltr .me-xxl-11{margin-right:44px!important}.v-locale--is-rtl .me-xxl-11{margin-left:44px!important}.v-locale--is-ltr .me-xxl-12{margin-right:48px!important}.v-locale--is-rtl .me-xxl-12{margin-left:48px!important}.v-locale--is-ltr .me-xxl-13{margin-right:52px!important}.v-locale--is-rtl .me-xxl-13{margin-left:52px!important}.v-locale--is-ltr .me-xxl-14{margin-right:56px!important}.v-locale--is-rtl .me-xxl-14{margin-left:56px!important}.v-locale--is-ltr .me-xxl-15{margin-right:60px!important}.v-locale--is-rtl .me-xxl-15{margin-left:60px!important}.v-locale--is-ltr .me-xxl-16{margin-right:64px!important}.v-locale--is-rtl .me-xxl-16{margin-left:64px!important}.v-locale--is-ltr .me-xxl-auto{margin-right:auto!important}.v-locale--is-rtl .me-xxl-auto{margin-left:auto!important}.ma-xxl-n1{margin:-4px!important}.ma-xxl-n2{margin:-8px!important}.ma-xxl-n3{margin:-12px!important}.ma-xxl-n4{margin:-16px!important}.ma-xxl-n5{margin:-20px!important}.ma-xxl-n6{margin:-24px!important}.ma-xxl-n7{margin:-28px!important}.ma-xxl-n8{margin:-32px!important}.ma-xxl-n9{margin:-36px!important}.ma-xxl-n10{margin:-40px!important}.ma-xxl-n11{margin:-44px!important}.ma-xxl-n12{margin:-48px!important}.ma-xxl-n13{margin:-52px!important}.ma-xxl-n14{margin:-56px!important}.ma-xxl-n15{margin:-60px!important}.ma-xxl-n16{margin:-64px!important}.mx-xxl-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-xxl-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-xxl-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-xxl-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-xxl-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-xxl-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-xxl-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-xxl-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-xxl-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-xxl-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-xxl-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-xxl-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-xxl-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-xxl-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-xxl-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-xxl-n16{margin-right:-64px!important;margin-left:-64px!important}.my-xxl-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-xxl-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-xxl-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-xxl-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-xxl-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-xxl-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-xxl-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-xxl-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-xxl-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-xxl-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-xxl-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-xxl-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-xxl-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-xxl-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-xxl-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-xxl-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-xxl-n1{margin-top:-4px!important}.mt-xxl-n2{margin-top:-8px!important}.mt-xxl-n3{margin-top:-12px!important}.mt-xxl-n4{margin-top:-16px!important}.mt-xxl-n5{margin-top:-20px!important}.mt-xxl-n6{margin-top:-24px!important}.mt-xxl-n7{margin-top:-28px!important}.mt-xxl-n8{margin-top:-32px!important}.mt-xxl-n9{margin-top:-36px!important}.mt-xxl-n10{margin-top:-40px!important}.mt-xxl-n11{margin-top:-44px!important}.mt-xxl-n12{margin-top:-48px!important}.mt-xxl-n13{margin-top:-52px!important}.mt-xxl-n14{margin-top:-56px!important}.mt-xxl-n15{margin-top:-60px!important}.mt-xxl-n16{margin-top:-64px!important}.mr-xxl-n1{margin-right:-4px!important}.mr-xxl-n2{margin-right:-8px!important}.mr-xxl-n3{margin-right:-12px!important}.mr-xxl-n4{margin-right:-16px!important}.mr-xxl-n5{margin-right:-20px!important}.mr-xxl-n6{margin-right:-24px!important}.mr-xxl-n7{margin-right:-28px!important}.mr-xxl-n8{margin-right:-32px!important}.mr-xxl-n9{margin-right:-36px!important}.mr-xxl-n10{margin-right:-40px!important}.mr-xxl-n11{margin-right:-44px!important}.mr-xxl-n12{margin-right:-48px!important}.mr-xxl-n13{margin-right:-52px!important}.mr-xxl-n14{margin-right:-56px!important}.mr-xxl-n15{margin-right:-60px!important}.mr-xxl-n16{margin-right:-64px!important}.mb-xxl-n1{margin-bottom:-4px!important}.mb-xxl-n2{margin-bottom:-8px!important}.mb-xxl-n3{margin-bottom:-12px!important}.mb-xxl-n4{margin-bottom:-16px!important}.mb-xxl-n5{margin-bottom:-20px!important}.mb-xxl-n6{margin-bottom:-24px!important}.mb-xxl-n7{margin-bottom:-28px!important}.mb-xxl-n8{margin-bottom:-32px!important}.mb-xxl-n9{margin-bottom:-36px!important}.mb-xxl-n10{margin-bottom:-40px!important}.mb-xxl-n11{margin-bottom:-44px!important}.mb-xxl-n12{margin-bottom:-48px!important}.mb-xxl-n13{margin-bottom:-52px!important}.mb-xxl-n14{margin-bottom:-56px!important}.mb-xxl-n15{margin-bottom:-60px!important}.mb-xxl-n16{margin-bottom:-64px!important}.ml-xxl-n1{margin-left:-4px!important}.ml-xxl-n2{margin-left:-8px!important}.ml-xxl-n3{margin-left:-12px!important}.ml-xxl-n4{margin-left:-16px!important}.ml-xxl-n5{margin-left:-20px!important}.ml-xxl-n6{margin-left:-24px!important}.ml-xxl-n7{margin-left:-28px!important}.ml-xxl-n8{margin-left:-32px!important}.ml-xxl-n9{margin-left:-36px!important}.ml-xxl-n10{margin-left:-40px!important}.ml-xxl-n11{margin-left:-44px!important}.ml-xxl-n12{margin-left:-48px!important}.ml-xxl-n13{margin-left:-52px!important}.ml-xxl-n14{margin-left:-56px!important}.ml-xxl-n15{margin-left:-60px!important}.ml-xxl-n16{margin-left:-64px!important}.v-locale--is-ltr .ms-xxl-n1{margin-left:-4px!important}.v-locale--is-rtl .ms-xxl-n1{margin-right:-4px!important}.v-locale--is-ltr .ms-xxl-n2{margin-left:-8px!important}.v-locale--is-rtl .ms-xxl-n2{margin-right:-8px!important}.v-locale--is-ltr .ms-xxl-n3{margin-left:-12px!important}.v-locale--is-rtl .ms-xxl-n3{margin-right:-12px!important}.v-locale--is-ltr .ms-xxl-n4{margin-left:-16px!important}.v-locale--is-rtl .ms-xxl-n4{margin-right:-16px!important}.v-locale--is-ltr .ms-xxl-n5{margin-left:-20px!important}.v-locale--is-rtl .ms-xxl-n5{margin-right:-20px!important}.v-locale--is-ltr .ms-xxl-n6{margin-left:-24px!important}.v-locale--is-rtl .ms-xxl-n6{margin-right:-24px!important}.v-locale--is-ltr .ms-xxl-n7{margin-left:-28px!important}.v-locale--is-rtl .ms-xxl-n7{margin-right:-28px!important}.v-locale--is-ltr .ms-xxl-n8{margin-left:-32px!important}.v-locale--is-rtl .ms-xxl-n8{margin-right:-32px!important}.v-locale--is-ltr .ms-xxl-n9{margin-left:-36px!important}.v-locale--is-rtl .ms-xxl-n9{margin-right:-36px!important}.v-locale--is-ltr .ms-xxl-n10{margin-left:-40px!important}.v-locale--is-rtl .ms-xxl-n10{margin-right:-40px!important}.v-locale--is-ltr .ms-xxl-n11{margin-left:-44px!important}.v-locale--is-rtl .ms-xxl-n11{margin-right:-44px!important}.v-locale--is-ltr .ms-xxl-n12{margin-left:-48px!important}.v-locale--is-rtl .ms-xxl-n12{margin-right:-48px!important}.v-locale--is-ltr .ms-xxl-n13{margin-left:-52px!important}.v-locale--is-rtl .ms-xxl-n13{margin-right:-52px!important}.v-locale--is-ltr .ms-xxl-n14{margin-left:-56px!important}.v-locale--is-rtl .ms-xxl-n14{margin-right:-56px!important}.v-locale--is-ltr .ms-xxl-n15{margin-left:-60px!important}.v-locale--is-rtl .ms-xxl-n15{margin-right:-60px!important}.v-locale--is-ltr .ms-xxl-n16{margin-left:-64px!important}.v-locale--is-rtl .ms-xxl-n16{margin-right:-64px!important}.v-locale--is-ltr .me-xxl-n1{margin-right:-4px!important}.v-locale--is-rtl .me-xxl-n1{margin-left:-4px!important}.v-locale--is-ltr .me-xxl-n2{margin-right:-8px!important}.v-locale--is-rtl .me-xxl-n2{margin-left:-8px!important}.v-locale--is-ltr .me-xxl-n3{margin-right:-12px!important}.v-locale--is-rtl .me-xxl-n3{margin-left:-12px!important}.v-locale--is-ltr .me-xxl-n4{margin-right:-16px!important}.v-locale--is-rtl .me-xxl-n4{margin-left:-16px!important}.v-locale--is-ltr .me-xxl-n5{margin-right:-20px!important}.v-locale--is-rtl .me-xxl-n5{margin-left:-20px!important}.v-locale--is-ltr .me-xxl-n6{margin-right:-24px!important}.v-locale--is-rtl .me-xxl-n6{margin-left:-24px!important}.v-locale--is-ltr .me-xxl-n7{margin-right:-28px!important}.v-locale--is-rtl .me-xxl-n7{margin-left:-28px!important}.v-locale--is-ltr .me-xxl-n8{margin-right:-32px!important}.v-locale--is-rtl .me-xxl-n8{margin-left:-32px!important}.v-locale--is-ltr .me-xxl-n9{margin-right:-36px!important}.v-locale--is-rtl .me-xxl-n9{margin-left:-36px!important}.v-locale--is-ltr .me-xxl-n10{margin-right:-40px!important}.v-locale--is-rtl .me-xxl-n10{margin-left:-40px!important}.v-locale--is-ltr .me-xxl-n11{margin-right:-44px!important}.v-locale--is-rtl .me-xxl-n11{margin-left:-44px!important}.v-locale--is-ltr .me-xxl-n12{margin-right:-48px!important}.v-locale--is-rtl .me-xxl-n12{margin-left:-48px!important}.v-locale--is-ltr .me-xxl-n13{margin-right:-52px!important}.v-locale--is-rtl .me-xxl-n13{margin-left:-52px!important}.v-locale--is-ltr .me-xxl-n14{margin-right:-56px!important}.v-locale--is-rtl .me-xxl-n14{margin-left:-56px!important}.v-locale--is-ltr .me-xxl-n15{margin-right:-60px!important}.v-locale--is-rtl .me-xxl-n15{margin-left:-60px!important}.v-locale--is-ltr .me-xxl-n16{margin-right:-64px!important}.v-locale--is-rtl .me-xxl-n16{margin-left:-64px!important}.pa-xxl-0{padding:0!important}.pa-xxl-1{padding:4px!important}.pa-xxl-2{padding:8px!important}.pa-xxl-3{padding:12px!important}.pa-xxl-4{padding:16px!important}.pa-xxl-5{padding:20px!important}.pa-xxl-6{padding:24px!important}.pa-xxl-7{padding:28px!important}.pa-xxl-8{padding:32px!important}.pa-xxl-9{padding:36px!important}.pa-xxl-10{padding:40px!important}.pa-xxl-11{padding:44px!important}.pa-xxl-12{padding:48px!important}.pa-xxl-13{padding:52px!important}.pa-xxl-14{padding:56px!important}.pa-xxl-15{padding:60px!important}.pa-xxl-16{padding:64px!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:4px!important;padding-left:4px!important}.px-xxl-2{padding-right:8px!important;padding-left:8px!important}.px-xxl-3{padding-right:12px!important;padding-left:12px!important}.px-xxl-4{padding-right:16px!important;padding-left:16px!important}.px-xxl-5{padding-right:20px!important;padding-left:20px!important}.px-xxl-6{padding-right:24px!important;padding-left:24px!important}.px-xxl-7{padding-right:28px!important;padding-left:28px!important}.px-xxl-8{padding-right:32px!important;padding-left:32px!important}.px-xxl-9{padding-right:36px!important;padding-left:36px!important}.px-xxl-10{padding-right:40px!important;padding-left:40px!important}.px-xxl-11{padding-right:44px!important;padding-left:44px!important}.px-xxl-12{padding-right:48px!important;padding-left:48px!important}.px-xxl-13{padding-right:52px!important;padding-left:52px!important}.px-xxl-14{padding-right:56px!important;padding-left:56px!important}.px-xxl-15{padding-right:60px!important;padding-left:60px!important}.px-xxl-16{padding-right:64px!important;padding-left:64px!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:4px!important;padding-bottom:4px!important}.py-xxl-2{padding-top:8px!important;padding-bottom:8px!important}.py-xxl-3{padding-top:12px!important;padding-bottom:12px!important}.py-xxl-4{padding-top:16px!important;padding-bottom:16px!important}.py-xxl-5{padding-top:20px!important;padding-bottom:20px!important}.py-xxl-6{padding-top:24px!important;padding-bottom:24px!important}.py-xxl-7{padding-top:28px!important;padding-bottom:28px!important}.py-xxl-8{padding-top:32px!important;padding-bottom:32px!important}.py-xxl-9{padding-top:36px!important;padding-bottom:36px!important}.py-xxl-10{padding-top:40px!important;padding-bottom:40px!important}.py-xxl-11{padding-top:44px!important;padding-bottom:44px!important}.py-xxl-12{padding-top:48px!important;padding-bottom:48px!important}.py-xxl-13{padding-top:52px!important;padding-bottom:52px!important}.py-xxl-14{padding-top:56px!important;padding-bottom:56px!important}.py-xxl-15{padding-top:60px!important;padding-bottom:60px!important}.py-xxl-16{padding-top:64px!important;padding-bottom:64px!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:4px!important}.pt-xxl-2{padding-top:8px!important}.pt-xxl-3{padding-top:12px!important}.pt-xxl-4{padding-top:16px!important}.pt-xxl-5{padding-top:20px!important}.pt-xxl-6{padding-top:24px!important}.pt-xxl-7{padding-top:28px!important}.pt-xxl-8{padding-top:32px!important}.pt-xxl-9{padding-top:36px!important}.pt-xxl-10{padding-top:40px!important}.pt-xxl-11{padding-top:44px!important}.pt-xxl-12{padding-top:48px!important}.pt-xxl-13{padding-top:52px!important}.pt-xxl-14{padding-top:56px!important}.pt-xxl-15{padding-top:60px!important}.pt-xxl-16{padding-top:64px!important}.pr-xxl-0{padding-right:0!important}.pr-xxl-1{padding-right:4px!important}.pr-xxl-2{padding-right:8px!important}.pr-xxl-3{padding-right:12px!important}.pr-xxl-4{padding-right:16px!important}.pr-xxl-5{padding-right:20px!important}.pr-xxl-6{padding-right:24px!important}.pr-xxl-7{padding-right:28px!important}.pr-xxl-8{padding-right:32px!important}.pr-xxl-9{padding-right:36px!important}.pr-xxl-10{padding-right:40px!important}.pr-xxl-11{padding-right:44px!important}.pr-xxl-12{padding-right:48px!important}.pr-xxl-13{padding-right:52px!important}.pr-xxl-14{padding-right:56px!important}.pr-xxl-15{padding-right:60px!important}.pr-xxl-16{padding-right:64px!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:4px!important}.pb-xxl-2{padding-bottom:8px!important}.pb-xxl-3{padding-bottom:12px!important}.pb-xxl-4{padding-bottom:16px!important}.pb-xxl-5{padding-bottom:20px!important}.pb-xxl-6{padding-bottom:24px!important}.pb-xxl-7{padding-bottom:28px!important}.pb-xxl-8{padding-bottom:32px!important}.pb-xxl-9{padding-bottom:36px!important}.pb-xxl-10{padding-bottom:40px!important}.pb-xxl-11{padding-bottom:44px!important}.pb-xxl-12{padding-bottom:48px!important}.pb-xxl-13{padding-bottom:52px!important}.pb-xxl-14{padding-bottom:56px!important}.pb-xxl-15{padding-bottom:60px!important}.pb-xxl-16{padding-bottom:64px!important}.pl-xxl-0{padding-left:0!important}.pl-xxl-1{padding-left:4px!important}.pl-xxl-2{padding-left:8px!important}.pl-xxl-3{padding-left:12px!important}.pl-xxl-4{padding-left:16px!important}.pl-xxl-5{padding-left:20px!important}.pl-xxl-6{padding-left:24px!important}.pl-xxl-7{padding-left:28px!important}.pl-xxl-8{padding-left:32px!important}.pl-xxl-9{padding-left:36px!important}.pl-xxl-10{padding-left:40px!important}.pl-xxl-11{padding-left:44px!important}.pl-xxl-12{padding-left:48px!important}.pl-xxl-13{padding-left:52px!important}.pl-xxl-14{padding-left:56px!important}.pl-xxl-15{padding-left:60px!important}.pl-xxl-16{padding-left:64px!important}.v-locale--is-ltr .ps-xxl-0{padding-left:0!important}.v-locale--is-rtl .ps-xxl-0{padding-right:0!important}.v-locale--is-ltr .ps-xxl-1{padding-left:4px!important}.v-locale--is-rtl .ps-xxl-1{padding-right:4px!important}.v-locale--is-ltr .ps-xxl-2{padding-left:8px!important}.v-locale--is-rtl .ps-xxl-2{padding-right:8px!important}.v-locale--is-ltr .ps-xxl-3{padding-left:12px!important}.v-locale--is-rtl .ps-xxl-3{padding-right:12px!important}.v-locale--is-ltr .ps-xxl-4{padding-left:16px!important}.v-locale--is-rtl .ps-xxl-4{padding-right:16px!important}.v-locale--is-ltr .ps-xxl-5{padding-left:20px!important}.v-locale--is-rtl .ps-xxl-5{padding-right:20px!important}.v-locale--is-ltr .ps-xxl-6{padding-left:24px!important}.v-locale--is-rtl .ps-xxl-6{padding-right:24px!important}.v-locale--is-ltr .ps-xxl-7{padding-left:28px!important}.v-locale--is-rtl .ps-xxl-7{padding-right:28px!important}.v-locale--is-ltr .ps-xxl-8{padding-left:32px!important}.v-locale--is-rtl .ps-xxl-8{padding-right:32px!important}.v-locale--is-ltr .ps-xxl-9{padding-left:36px!important}.v-locale--is-rtl .ps-xxl-9{padding-right:36px!important}.v-locale--is-ltr .ps-xxl-10{padding-left:40px!important}.v-locale--is-rtl .ps-xxl-10{padding-right:40px!important}.v-locale--is-ltr .ps-xxl-11{padding-left:44px!important}.v-locale--is-rtl .ps-xxl-11{padding-right:44px!important}.v-locale--is-ltr .ps-xxl-12{padding-left:48px!important}.v-locale--is-rtl .ps-xxl-12{padding-right:48px!important}.v-locale--is-ltr .ps-xxl-13{padding-left:52px!important}.v-locale--is-rtl .ps-xxl-13{padding-right:52px!important}.v-locale--is-ltr .ps-xxl-14{padding-left:56px!important}.v-locale--is-rtl .ps-xxl-14{padding-right:56px!important}.v-locale--is-ltr .ps-xxl-15{padding-left:60px!important}.v-locale--is-rtl .ps-xxl-15{padding-right:60px!important}.v-locale--is-ltr .ps-xxl-16{padding-left:64px!important}.v-locale--is-rtl .ps-xxl-16{padding-right:64px!important}.v-locale--is-ltr .pe-xxl-0{padding-right:0!important}.v-locale--is-rtl .pe-xxl-0{padding-left:0!important}.v-locale--is-ltr .pe-xxl-1{padding-right:4px!important}.v-locale--is-rtl .pe-xxl-1{padding-left:4px!important}.v-locale--is-ltr .pe-xxl-2{padding-right:8px!important}.v-locale--is-rtl .pe-xxl-2{padding-left:8px!important}.v-locale--is-ltr .pe-xxl-3{padding-right:12px!important}.v-locale--is-rtl .pe-xxl-3{padding-left:12px!important}.v-locale--is-ltr .pe-xxl-4{padding-right:16px!important}.v-locale--is-rtl .pe-xxl-4{padding-left:16px!important}.v-locale--is-ltr .pe-xxl-5{padding-right:20px!important}.v-locale--is-rtl .pe-xxl-5{padding-left:20px!important}.v-locale--is-ltr .pe-xxl-6{padding-right:24px!important}.v-locale--is-rtl .pe-xxl-6{padding-left:24px!important}.v-locale--is-ltr .pe-xxl-7{padding-right:28px!important}.v-locale--is-rtl .pe-xxl-7{padding-left:28px!important}.v-locale--is-ltr .pe-xxl-8{padding-right:32px!important}.v-locale--is-rtl .pe-xxl-8{padding-left:32px!important}.v-locale--is-ltr .pe-xxl-9{padding-right:36px!important}.v-locale--is-rtl .pe-xxl-9{padding-left:36px!important}.v-locale--is-ltr .pe-xxl-10{padding-right:40px!important}.v-locale--is-rtl .pe-xxl-10{padding-left:40px!important}.v-locale--is-ltr .pe-xxl-11{padding-right:44px!important}.v-locale--is-rtl .pe-xxl-11{padding-left:44px!important}.v-locale--is-ltr .pe-xxl-12{padding-right:48px!important}.v-locale--is-rtl .pe-xxl-12{padding-left:48px!important}.v-locale--is-ltr .pe-xxl-13{padding-right:52px!important}.v-locale--is-rtl .pe-xxl-13{padding-left:52px!important}.v-locale--is-ltr .pe-xxl-14{padding-right:56px!important}.v-locale--is-rtl .pe-xxl-14{padding-left:56px!important}.v-locale--is-ltr .pe-xxl-15{padding-right:60px!important}.v-locale--is-rtl .pe-xxl-15{padding-left:60px!important}.v-locale--is-ltr .pe-xxl-16{padding-right:64px!important}.v-locale--is-rtl .pe-xxl-16{padding-left:64px!important}.text-xxl-left{text-align:left!important}.text-xxl-right{text-align:right!important}.text-xxl-center{text-align:center!important}.text-xxl-justify{text-align:justify!important}.text-xxl-start{text-align:start!important}.text-xxl-end{text-align:end!important}.text-xxl-h1{font-size:6rem!important;line-height:6rem;letter-spacing:-.015625em!important}.text-xxl-h1,.text-xxl-h2{font-weight:300;font-family:Roboto,sans-serif!important}.text-xxl-h2{font-size:3.75rem!important;line-height:3.75rem;letter-spacing:-.0083333333em!important}.text-xxl-h3{font-size:3rem!important;line-height:3.125rem;letter-spacing:normal!important}.text-xxl-h3,.text-xxl-h4{font-weight:400;font-family:Roboto,sans-serif!important}.text-xxl-h4{font-size:2.125rem!important;line-height:2.5rem;letter-spacing:.0073529412em!important}.text-xxl-h5{font-size:1.5rem!important;font-weight:400;letter-spacing:normal!important}.text-xxl-h5,.text-xxl-h6{line-height:2rem;font-family:Roboto,sans-serif!important}.text-xxl-h6{font-size:1.25rem!important;font-weight:500;letter-spacing:.0125em!important}.text-xxl-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif!important}.text-xxl-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif!important}.text-xxl-body-1{font-size:1rem!important;line-height:1.5rem;letter-spacing:.03125em!important}.text-xxl-body-1,.text-xxl-body-2{font-weight:400;font-family:Roboto,sans-serif!important}.text-xxl-body-2{font-size:.875rem!important;line-height:1.25rem;letter-spacing:.0178571429em!important}.text-xxl-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif!important;text-transform:uppercase!important}.text-xxl-caption{font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important}.text-xxl-caption,.text-xxl-overline{font-size:.75rem!important;font-family:Roboto,sans-serif!important}.text-xxl-overline{font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;text-transform:uppercase!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.float-print-none{float:none!important}.float-print-left{float:left!important}.float-print-right{float:right!important}.v-locale--is-rtl .float-print-end{float:left!important}.v-locale--is-ltr .float-print-end,.v-locale--is-rtl .float-print-start{float:right!important}.v-locale--is-ltr .float-print-start{float:left!important}}.v-application{display:flex;background:rgb(var(--v-theme-background));color:rgb(var(--v-theme-on-background))}.v-application a{cursor:pointer}.v-application__wrap{flex:1 1 auto;backface-visibility:hidden;display:flex;flex-direction:column;min-height:100vh;max-width:100%;position:relative}@-moz-document url-prefix(){@media print{.v-application,.v-application__wrap{display:block}}}.v-app-bar{align-items:flex-start;display:flex;flex-direction:column;justify-content:space-between;max-width:100%;overflow:hidden;padding-left:4px;padding-right:calc(4px + var(--v-scrollbar-offset));position:fixed;transition:.2s cubic-bezier(.4,0,.2,1);transition-property:height,transform;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface))}.v-app-bar--is-active{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.v-app-bar--border{border-width:0 0 thin;box-shadow:none}.v-app-bar--absolute{position:absolute}.v-app-bar--border.v-app-bar--bottom{border-bottom-width:0;border-top-width:0 0 thin}.v-app-bar--collapsed{max-width:112px;overflow:hidden}.v-app-bar--collapsed.v-locale--is-ltr,.v-locale--is-ltr .v-app-bar--collapsed{border-bottom-right-radius:24px}.v-app-bar--collapsed.v-locale--is-rtl,.v-locale--is-rtl .v-app-bar--collapsed{border-bottom-left-radius:24px}.v-app-bar--flat{box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.v-app-bar--floating{display:inline-flex}.v-app-bar--rounded{border-radius:4px}.v-app-bar__content{align-items:center;display:flex;flex:0 0 auto;transition:inherit;width:100%}.v-app-bar--density-default .v-app-bar__content{padding-bottom:8px;padding-top:8px}.v-app-bar--density-comfortable .v-app-bar__content{padding-bottom:4px;padding-top:4px}.v-app-bar--density-compact .v-app-bar__content{padding-bottom:0;padding-top:0}.v-app-bar__extension{align-items:center;display:flex;flex:0 0 auto;transition:inherit;width:100%}.v-app-bar__image{height:100%;left:0;position:absolute;top:0;width:100%;z-index:-1;display:flex}.v-app-bar__append{margin-inline-start:auto}.v-app-bar__append,.v-app-bar__prepend{display:flex;flex:0 1 auto}.v-img{--v-theme-overlay-multiplier:3;z-index:0}.v-img__error,.v-img__img,.v-img__picture,.v-img__placeholder{z-index:-1;position:absolute;top:0;left:0;width:100%;height:100%}.v-img__img--preload{filter:blur(4px)}.v-img__img--contain{-o-object-fit:contain;object-fit:contain}.v-img__img--cover{-o-object-fit:cover;object-fit:cover}.v-card-media .v-img{height:200px}.v-card-media .v-img__img{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.v-responsive{display:flex;flex:1 0 auto;max-width:100%;overflow:hidden;position:relative}.v-responsive__content{flex:1 0 0px;max-width:100%}.v-responsive__sizer~.v-responsive__content{margin-inline-start:-100%}.v-responsive__sizer{flex:1 0 0px;transition:padding-bottom .2s cubic-bezier(.4,0,.2,1);pointer-events:none}.v-btn{align-items:center;border-radius:4px;display:inline-flex;font-weight:500;justify-content:center;letter-spacing:.0892857143em;line-height:normal;outline:none;overflow:visible;position:relative;text-decoration:none;text-indent:.0892857143em;text-transform:uppercase;transition-property:box-shadow,transform,opacity,color;transition-duration:.28s;transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;flex-shrink:0;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0}.v-btn--size-x-small{--v-btn-size:0.625rem;--v-btn-height:20px;font-size:.625rem;min-width:36px;padding:0 8px}.v-btn--size-small{--v-btn-size:0.75rem;--v-btn-height:28px;font-size:.75rem;min-width:50px;padding:0 12px}.v-btn--size-default{--v-btn-size:0.875rem;--v-btn-height:36px;font-size:.875rem;min-width:64px;padding:0 16px}.v-btn--size-large{--v-btn-size:1rem;--v-btn-height:44px;font-size:1rem;min-width:78px;padding:0 20px}.v-btn--size-x-large{--v-btn-size:1.125rem;--v-btn-height:52px;font-size:1.125rem;min-width:92px;padding:0 24px}.v-btn.v-btn--density-default{height:calc(var(--v-btn-height))}.v-btn.v-btn--density-comfortable{height:calc(var(--v-btn-height) - 8px)}.v-btn.v-btn--density-compact{height:calc(var(--v-btn-height) - 12px)}.v-btn--border{border-width:thin;box-shadow:none}.v-btn:hover .v-btn__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*0.04)}.v-btn:focus .v-btn__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*0.12)}.v-btn--variant-contained-text,.v-btn--variant-outlined,.v-btn--variant-plain,.v-btn--variant-text{background:transparent;color:inherit}.v-btn--variant-plain{opacity:.62}.v-btn--variant-plain:focus,.v-btn--variant-plain:hover{opacity:1}.v-btn--variant-plain .v-btn__overlay{display:none}.v-btn--variant-contained{background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface));box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.v-btn--variant-outlined{border:thin solid currentColor}.v-btn--variant-text .v-btn__overlay{background:currentColor}.v-btn--variant-contained-text .v-btn__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;transition:opacity .2s ease-in-out}.v-btn--flat{box-shadow:none}.v-btn--icon{border-radius:50%;min-width:0;padding:0}.v-btn--icon.v-btn--density-default{width:calc(var(--v-btn-height) + 12px);height:calc(var(--v-btn-height) + 12px)}.v-btn--icon.v-btn--density-comfortable{width:calc(var(--v-btn-height));height:calc(var(--v-btn-height))}.v-btn--icon.v-btn--density-compact{width:calc(var(--v-btn-height) - 8px);height:calc(var(--v-btn-height) - 8px)}.v-btn--elevated:focus,.v-btn--elevated:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.v-btn--elevated:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.v-btn--block{display:flex;flex:1 0 auto;min-width:100%}.v-btn--disabled{pointer-events:none}.v-btn--disabled.v-btn--disabled{color:rgba(var(--v-theme-on-surface),.26);opacity:1}.v-btn--disabled.v-btn--variant-contained{background:rgb(var(--v-theme-surface));box-shadow:none}.v-btn--disabled.v-btn--variant-contained .v-btn__overlay{opacity:.4615384615}.v-btn--stacked{flex-direction:column;line-height:1.7}.v-btn--stacked.v-btn--size-x-small{--v-btn-size:0.625rem;--v-btn-height:56px;font-size:.625rem;min-width:56px;padding:0 12px}.v-btn--stacked.v-btn--size-small{--v-btn-size:0.75rem;--v-btn-height:64px;font-size:.75rem;min-width:64px;padding:0 14px}.v-btn--stacked.v-btn--size-default{--v-btn-size:0.875rem;--v-btn-height:72px;font-size:.875rem;min-width:72px;padding:0 16px}.v-btn--stacked.v-btn--size-large{--v-btn-size:1rem;--v-btn-height:80px;font-size:1rem;min-width:80px;padding:0 18px}.v-btn--stacked.v-btn--size-x-large{--v-btn-size:1.125rem;--v-btn-height:88px;font-size:1.125rem;min-width:88px;padding:0 20px}.v-btn--stacked.v-btn--density-default{height:calc(var(--v-btn-height))}.v-btn--stacked.v-btn--density-comfortable{height:calc(var(--v-btn-height) - 16px)}.v-btn--stacked.v-btn--density-compact{height:calc(var(--v-btn-height) - 24px)}.v-btn__overlay{background-color:currentColor;border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.v-app-bar .v-btn,.v-bottom-navigation .v-btn{box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.v-bottom-navigation .v-btn{filter:grayscale(1);flex-direction:column;font-size:.75rem;height:auto;max-width:168px;min-width:80px;opacity:.64;text-transform:none;transition-duration:.2s;transition-property:transform,opacity,filter;width:auto;border-radius:0}.v-bottom-navigation--grow .v-btn{width:100%}.v-bottom-navigation--horizontal .v-btn{flex-direction:row}.v-bottom-navigation--shift .v-btn>.v-icon{transform:translateY(0);transition:inherit}.v-bottom-navigation--shift .v-btn>:not([class*=v-]){opacity:0;position:absolute;top:50%;transform:scale(.8) translateY(10px);transition:inherit}.v-bottom-navigation .v-btn--active{filter:grayscale(0);opacity:1}.v-bottom-navigation .v-btn--active .v-btn__overlay,.v-bottom-navigation .v-btn--active:hover.v-btn__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*0.12)}.v-bottom-navigation .v-btn--active:focus .v-btn__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*0.16)}.v-bottom-navigation--shift .v-btn--active>.v-icon{transform:translateY(-7px)}.v-bottom-navigation--shift .v-btn--active>:not([class*=v-]){opacity:1;transform:scale(1) translateY(5px)}.v-card-actions .v-btn{padding:0 8px;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.v-card-actions .v-btn~.v-btn{margin-inline-start:.5rem}.v-banner-actions .v-btn{padding:0 8px}.v-banner-actions .v-btn,.v-pagination .v-btn{box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.v-pagination .v-btn{border-radius:4px}.v-pagination .v-btn.v-btn--density-default{height:calc(var(--v-btn-height));width:calc(var(--v-btn-height))}.v-pagination .v-btn.v-btn--density-comfortable{height:calc(var(--v-btn-height) - 4px);width:calc(var(--v-btn-height) - 4px)}.v-pagination .v-btn.v-btn--density-compact{height:calc(var(--v-btn-height) - 8px);width:calc(var(--v-btn-height) - 8px)}.v-pagination__list .v-btn--elevated{box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.v-pagination__item--is-active .v-btn__overlay{opacity:var(--v-border-opacity)}.v-ripple__container{border-radius:inherit;width:100%;height:100%;z-index:0;contain:strict}.v-ripple__animation,.v-ripple__container{color:inherit;position:absolute;left:0;top:0;overflow:hidden;pointer-events:none}.v-ripple__animation{border-radius:50%;background:currentColor;opacity:0;will-change:transform,opacity}.v-ripple__animation--enter{transition:none}.v-ripple__animation--in{transition:transform .25s cubic-bezier(0,0,.2,1),opacity .1s cubic-bezier(0,0,.2,1)}.v-ripple__animation--out{transition:opacity .3s cubic-bezier(.4,0,1,1)}.v-icon{align-items:center;display:inline-flex;font-feature-settings:"liga";justify-content:center;letter-spacing:normal;line-height:1;position:relative;text-indent:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}.v-icon--left{margin-inline-end:8px}.v-icon--right{margin-inline-start:8px}.v-icon--size-x-small{font-size:16px;height:16px;width:16px}.v-icon--size-small{font-size:20px;height:20px;width:20px}.v-icon--size-default{font-size:24px;height:24px;width:24px}.v-icon--size-large{font-size:28px;height:28px;width:28px}.v-icon--size-x-large{font-size:32px;height:32px;width:32px}.v-icon__svg{fill:currentColor}.v-bottom-navigation .v-btn:not(.v-btn--icon):not(.v-btn--stacked) .v-icon--size-default{font-size:24px}.v-bottom-navigation:not(.v-bottom-navigation--horizontal) .v-btn:not(.v-btn--icon):not(.v-btn--stacked) .v-icon--size-default{margin:0}.v-btn:not(.v-btn--icon) .v-icon--left{margin-inline-start:calc(var(--v-btn-height)/-9);margin-inline-end:calc(var(--v-btn-height)/4.5)}.v-btn:not(.v-btn--icon) .v-icon--right{margin-inline-start:calc(var(--v-btn-height)/4.5);margin-inline-end:calc(var(--v-btn-height)/-9)}.v-app-bar-title{font-size:1.5rem;padding:6px 20px}.v-app-bar-title__placeholder{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v-alert{padding:16px;position:relative;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);border-radius:4px;background:rgba(var(--v-theme-on-surface),var(--v-hover-opacity));color:rgb(var(--v-theme-on-surface))}.v-alert--absolute{position:absolute}.v-alert--fixed{position:fixed}.v-alert--variant-contained-text,.v-alert--variant-outlined,.v-alert--variant-plain,.v-alert--variant-text{background:transparent;color:inherit}.v-alert--variant-plain{opacity:.62}.v-alert--variant-plain:focus,.v-alert--variant-plain:hover{opacity:1}.v-alert--variant-plain .v-alert__overlay{display:none}.v-alert--variant-contained{background:rgba(var(--v-theme-on-surface),var(--v-hover-opacity));color:rgb(var(--v-theme-on-surface))}.v-alert--variant-outlined{border:thin solid currentColor}.v-alert--variant-text .v-alert__overlay{background:currentColor}.v-alert--variant-contained-text .v-alert__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;transition:opacity .2s ease-in-out}.v-alert.v-alert--border{--v-border-opacity:0.26}.v-alert--border{padding-inline-start:24px}.v-alert:not(.v-alert--prominent) .v-avatar{--v-avatar-height:24px}.v-alert--variant-plain{transition:opacity .2s cubic-bezier(.4,0,.2,1)}.v-alert--density-default{padding-top:16px;padding-bottom:16px}.v-alert--density-default.v-alert--prominent .v-alert__avatar{margin-inline-start:0;margin-inline-end:16px}.v-alert--density-default.v-alert--prominent .v-alert__avatar .v-icon{font-size:40px}.v-alert--density-comfortable{padding-top:12px;padding-bottom:12px}.v-alert--density-comfortable.v-alert--prominent .v-alert__avatar{margin-inline-start:-2px;margin-inline-end:14px}.v-alert--density-comfortable.v-alert--prominent .v-alert__avatar .v-icon{font-size:34px}.v-alert--density-compact{padding-top:8px;padding-bottom:8px}.v-alert--density-compact.v-alert--prominent .v-alert__avatar{margin-inline-start:-4px;margin-inline-end:12px}.v-alert--density-compact.v-alert--prominent .v-alert__avatar .v-icon{font-size:28px}.v-alert__avatar{align-self:flex-start;display:flex;position:relative;margin-inline-start:0;margin-inline-end:16px}.v-alert__avatar .v-icon{font-size:24px;height:24px;width:24px}.v-alert--prominent .v-alert__avatar{align-self:center;flex:1 0 auto;max-width:40px}.v-alert--tip .v-alert__avatar{margin-inline-start:-33px;max-height:24px;max-width:24px}.v-alert--tip .v-alert__avatar:before{content:"";top:4px;left:4px;position:absolute;width:16px;height:16px;background:#fff;border-radius:inherit}.v-alert--tip .v-alert__avatar .v-avatar{height:auto;max-width:inherit;max-height:inherit}.v-alert__border{border-radius:inherit;bottom:0;left:0;opacity:var(--v-border-opacity);position:absolute;right:0;top:0;width:100%;border-color:currentColor;border-style:solid;border-width:0}.v-alert__border--border{border-width:8px;box-shadow:none}.v-alert--border-start .v-alert__border{border-inline-start-width:8px;border-inline-end-width:0}.v-alert--border-top .v-alert__border{border-top-width:8px;border-bottom-width:0}.v-alert--border-bottom .v-alert__border{border-bottom-width:8px;border-top-width:0}.v-alert--border-end .v-alert__border{border-inline-end-width:8px;border-inline-start-width:0}.v-alert--border.v-alert--tip .v-alert__border{--v-border-opacity:1;border-inline-start-width:6px}.v-alert__close{align-self:flex-start;display:flex;flex:0 1 auto;margin-inline-start:auto;padding-inline-start:8px}.v-alert__close .v-btn{height:inherit;width:inherit}.v-alert__close .v-icon{font-size:20px}.v-alert__content{display:flex}.v-alert--prominent .v-alert__content{align-items:center}.v-alert-text{padding:16px}.v-alert--border-start .v-alert-text{padding-inline-end:24px}.v-alert--border-end .v-alert-text{padding-inline-start:24px}.v-alert__text{display:flex;flex:1 1}.v-avatar{align-items:center;display:inline-flex;justify-content:center;line-height:normal;overflow:hidden;position:relative;text-align:center;vertical-align:middle;border-radius:50%}.v-avatar.v-avatar--size-x-small{--v-avatar-height:24px}.v-avatar.v-avatar--size-small{--v-avatar-height:32px}.v-avatar.v-avatar--size-default{--v-avatar-height:40px}.v-avatar.v-avatar--size-large{--v-avatar-height:48px}.v-avatar.v-avatar--size-x-large{--v-avatar-height:56px}.v-avatar.v-avatar--density-default{height:calc(var(--v-avatar-height));width:calc(var(--v-avatar-height))}.v-avatar.v-avatar--density-comfortable{height:calc(var(--v-avatar-height) - 4px);width:calc(var(--v-avatar-height) - 4px)}.v-avatar.v-avatar--density-compact{height:calc(var(--v-avatar-height) - 8px);width:calc(var(--v-avatar-height) - 8px)}.v-avatar>*{border-radius:inherit;width:inherit;height:inherit}.v-avatar>.v-icon{font-size:var(--v-avatar-height)}.v-avatar--rounded{border-radius:4px}.v-list-item-avatar .v-avatar{overflow:visible;height:inherit;width:inherit}.v-badge{display:inline-block;line-height:1}.v-badge__badge{align-items:center;border-radius:10px;display:flex;font-size:.75rem;font-weight:500;height:1.25rem;justify-content:center;min-width:20px;padding:4px;pointer-events:auto;position:absolute;text-align:center;text-indent:0;transition:.225s cubic-bezier(.4,0,.2,1);white-space:nowrap}.v-badge--bordered .v-badge__badge:after{border-radius:inherit;border-style:solid;border-width:2px;bottom:0;color:rgb(var(--v-theme-background));content:"";left:0;position:absolute;right:0;top:0;transform:scale(1.2)}.v-badge--dot .v-badge__badge{border-radius:4.5px;height:9px;min-width:0;padding:0;width:9px;background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface))}.v-badge--dot .v-badge__badge:after{border-width:1.5px}.v-badge--inline .v-badge__badge{position:relative;vertical-align:middle}.v-badge__badge .v-icon{color:inherit;font-size:.75rem;height:.75rem;width:.75rem}.v-badge__badge .v-img,.v-badge__badge img{height:100%;width:100%}.v-badge__content{padding:0 2px}.v-badge__wrapper{display:flex;position:relative}.v-badge--inline .v-badge__wrapper{align-items:center;display:inline-flex;justify-content:center;margin:0 4px}.v-banner{display:flex;flex-wrap:wrap;font-size:.875rem;padding-bottom:8px;padding-inline-end:8px;padding-inline-start:24px;position:relative;width:100%;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0 0 thin 0;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);border-radius:0;background:rgb(var(--v-theme-background));color:rgb(var(--v-theme-on-surface))}.v-banner--border{box-shadow:none}.v-banner--absolute{position:absolute}.v-banner--fixed{position:fixed}.v-banner--sticky{position:sticky}.v-banner--border{border-width:thin}.v-banner--mobile{align-items:center;padding-inline-end:8px;padding-inline-start:16px}.v-banner--rounded{border-radius:4px}.v-banner--density-default.v-banner--one-line{padding-top:10px}.v-banner--density-default.v-banner--three-line,.v-banner--density-default.v-banner--two-line{padding-top:24px}.v-banner--density-comfortable.v-banner--one-line{padding-top:6px}.v-banner--density-comfortable.v-banner--three-line,.v-banner--density-comfortable.v-banner--two-line{padding-top:20px}.v-banner--density-compact.v-banner--one-line{padding-top:2px}.v-banner--density-compact.v-banner--three-line,.v-banner--density-compact.v-banner--two-line{padding-top:16px}.v-banner--sticky{top:0}.v-banner-actions{align-items:flex-end;display:flex;flex:0 1;justify-content:flex-end}.v-banner--mobile .v-banner-actions{flex:1 0}.v-banner-content{display:flex;flex:1 1;min-width:0;padding-inline-end:90px}.v-banner--mobile .v-banner-content{flex:1 1 auto;padding-inline-end:8px}.v-banner--two-line .v-banner-content{margin-bottom:4px}.v-banner--three-line .v-banner-content{margin-bottom:8px}.v-banner-avatar{align-self:flex-start;border-radius:50%;margin-inline-end:24px;margin-inline-start:0;position:relative}.v-banner-avatar:after{background:currentColor;border-radius:inherit;bottom:0;content:"";left:0;opacity:var(--v-border-opacity);position:absolute;right:0;top:0}.v-banner--mobile .v-banner-avatar{margin-inline-end:16px}.v-banner--one-line .v-banner-avatar{align-self:center}.v-banner-text{-webkit-box-orient:vertical;align-self:flex-start;color:rgb(var(--v-theme-on-surface));display:-webkit-box;line-height:1.375rem;overflow:hidden}.v-banner--one-line .v-banner-text{align-self:center}.v-banner--two-line .v-banner-text{-webkit-line-clamp:2}.v-banner--three-line .v-banner-text{-webkit-line-clamp:3}.v-bottom-navigation{display:flex;max-width:100%;overflow:hidden;position:fixed;transition:.2s cubic-bezier(.4,0,.2,1);border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface))}.v-bottom-navigation--border{border-width:thin;box-shadow:none}.v-bottom-navigation--is-active{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.v-bottom-navigation--absolute{position:absolute}.v-bottom-navigation__content{display:flex;flex:none;justify-content:center;transition:inherit;width:100%}.v-breadcrumbs{line-height:1.375rem;padding:16px}.v-breadcrumbs--rounded{border-radius:4px}.v-breadcrumbs--density-default{padding-top:16px;padding-bottom:16px}.v-breadcrumbs--density-comfortable{padding-top:12px;padding-bottom:12px}.v-breadcrumbs--density-compact{padding-top:8px;padding-bottom:8px}.v-breadcrumbs-item{align-items:center;color:inherit;display:inline-flex;padding:0 4px;text-decoration:none;vertical-align:middle}.v-breadcrumbs-item--disabled{opacity:var(--v-disabled-opacity);pointer-events:none}.v-breadcrumbs-item--link:hover{text-decoration:underline}.v-breadcrumbs-item .v-icon{font-size:1rem;margin-inline-start:-4px;margin-inline-end:2px}.v-breadcrumbs-divider{display:inline-block;padding:0 8px;vertical-align:middle}.v-card{color:rgb(var(--v-theme-on-surface));position:relative;padding:0;text-decoration:none;transition-duration:.28s;transition-property:box-shadow,opacity,color;transition-timing-function:cubic-bezier(.4,0,.2,1);border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;border-radius:4px}.v-card--border{border-width:thin;box-shadow:none}.v-card--absolute{position:absolute}.v-card--fixed{position:fixed}.v-card:hover .v-card__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*0.04)}.v-card--active .v-card__overlay,.v-card--active:hover.v-card__overlay,.v-card:focus .v-card__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*0.12)}.v-card--active:focus .v-card__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*0.16)}.v-card--variant-contained-text,.v-card--variant-outlined,.v-card--variant-plain,.v-card--variant-text{background:transparent;color:inherit}.v-card--variant-plain{opacity:.62}.v-card--variant-plain:focus,.v-card--variant-plain:hover{opacity:1}.v-card--variant-plain .v-card__overlay{display:none}.v-card--variant-contained{background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface));box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12)}.v-card--variant-outlined{border:thin solid currentColor}.v-card--variant-text .v-card__overlay{background:currentColor}.v-card--variant-contained-text .v-card__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;transition:opacity .2s ease-in-out}.v-card--disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.v-card--disabled>[class*=v-card-]{opacity:.6}.v-card--flat{box-shadow:none}.v-card--hover{cursor:pointer;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.v-card--hover:after,.v-card--hover:before{border-radius:inherit;bottom:0;content:"";display:block;left:0;pointer-events:none;position:absolute;right:0;top:0;transition:inherit}.v-card--hover:before{opacity:1;z-index:-1;box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12)}.v-card--hover:after{z-index:1;opacity:0;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.v-card--hover:hover:after{opacity:1}.v-card--hover:hover:before{opacity:0}.v-card--link{cursor:pointer}.v-card--tile{border-radius:0}.v-card-actions{align-items:center;display:flex;flex:1 1 auto;min-height:52px;padding:.5rem}.v-card-avatar{align-self:flex-start;padding:.5rem 1rem}.v-card-header .v-card-avatar:last-child{padding-inline-end:0}.v-card-header .v-card-avatar:first-child{padding-inline-start:0}.v-card-header-text{flex:1 1 auto}.v-card-img{border-radius:inherit;display:flex;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:-1}.v-card-header{align-items:center;display:flex;padding:.5rem 1rem}.v-card-media{overflow:hidden}.v-card .v-card-media:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.v-card .v-card-media:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.v-card-subtitle{align-items:center;display:flex;font-size:.875rem;font-weight:400;letter-spacing:.0178571429em;opacity:var(--v-medium-emphasis-opacity);padding:0 1rem;text-transform:none}.v-card .v-card-subtitle{line-height:1.25rem}.v-card--density-comfortable .v-card-subtitle{line-height:1.125rem}.v-card--density-compact .v-card-subtitle{line-height:1rem}.v-card-header .v-card-subtitle{padding:0}.v-card-text{font-size:.875rem;font-weight:400;letter-spacing:.0178571429em;opacity:var(--v-medium-emphasis-opacity);padding:1rem;text-transform:false;transition:inherit;transition-property:color,opacity}.v-card .v-card-text{line-height:1.25rem}.v-card--density-comfortable .v-card-text{line-height:1.2rem}.v-card--density-compact .v-card-text{line-height:1.15rem}.v-card-title{align-items:center;display:flex;font-size:1.25rem;font-weight:500;-webkit-hyphens:auto;hyphens:auto;letter-spacing:.0125em;overflow-wrap:normal;padding:.5rem 1rem;text-transform:none;word-break:normal;word-wrap:break-word}.v-card .v-card-title{line-height:2rem}.v-card--density-comfortable .v-card-title{line-height:1.75rem}.v-card--density-compact .v-card-title{line-height:1.55rem}.v-card-header .v-card-title{padding:0}.v-card__overlay{background-color:currentColor;border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.v-card__overlay+.v-card-media{border-top-left-radius:inherit;border-top-right-radius:inherit}.v-dialog .v-overlay__content>.v-card{border-radius:inherit;overflow:hidden;box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}.v-chip{align-items:center;cursor:default;display:inline-flex;position:relative;text-decoration:none;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);border-radius:9999px}.v-chip--size-x-small{--v-chip-size:0.625rem;--v-chip-height:16px;font-size:.625rem;padding:0 6px}.v-chip--size-x-small .v-avatar{--v-avatar-height:8px}.v-chip--pill.v-chip--size-x-small .v-avatar{--v-avatar-height:16px}.v-chip--size-x-small .v-chip__prepend{margin-inline-start:-3px;margin-inline-end:3px}.v-chip--pill.v-chip--size-x-small .v-chip__prepend{margin-inline-start:-6px}.v-chip--size-x-small .v-chip__append{margin-inline-end:-3px;margin-inline-start:3px}.v-chip--pill.v-chip--size-x-small .v-chip__append{margin-inline-end:-6px}.v-chip--size-small{--v-chip-size:0.75rem;--v-chip-height:24px;font-size:.75rem;padding:0 9px}.v-chip--size-small .v-avatar{--v-avatar-height:16px}.v-chip--pill.v-chip--size-small .v-avatar{--v-avatar-height:24px}.v-chip--size-small .v-chip__prepend{margin-inline-start:-4.5px;margin-inline-end:4.5px}.v-chip--pill.v-chip--size-small .v-chip__prepend{margin-inline-start:-9px}.v-chip--size-small .v-chip__append{margin-inline-end:-4.5px;margin-inline-start:4.5px}.v-chip--pill.v-chip--size-small .v-chip__append{margin-inline-end:-9px}.v-chip--size-default{--v-chip-size:0.875rem;--v-chip-height:32px;font-size:.875rem;padding:0 12px}.v-chip--size-default .v-avatar{--v-avatar-height:24px}.v-chip--pill.v-chip--size-default .v-avatar{--v-avatar-height:32px}.v-chip--size-default .v-chip__prepend{margin-inline-start:-6px;margin-inline-end:6px}.v-chip--pill.v-chip--size-default .v-chip__prepend{margin-inline-start:-12px}.v-chip--size-default .v-chip__append{margin-inline-end:-6px;margin-inline-start:6px}.v-chip--pill.v-chip--size-default .v-chip__append{margin-inline-end:-12px}.v-chip--size-large{--v-chip-size:1rem;--v-chip-height:40px;font-size:1rem;padding:0 15px}.v-chip--size-large .v-avatar{--v-avatar-height:32px}.v-chip--pill.v-chip--size-large .v-avatar{--v-avatar-height:40px}.v-chip--size-large .v-chip__prepend{margin-inline-start:-7.5px;margin-inline-end:7.5px}.v-chip--pill.v-chip--size-large .v-chip__prepend{margin-inline-start:-15px}.v-chip--size-large .v-chip__append{margin-inline-end:-7.5px;margin-inline-start:7.5px}.v-chip--pill.v-chip--size-large .v-chip__append{margin-inline-end:-15px}.v-chip--size-x-large{--v-chip-size:1.125rem;--v-chip-height:48px;font-size:1.125rem;padding:0 18px}.v-chip--size-x-large .v-avatar{--v-avatar-height:40px}.v-chip--pill.v-chip--size-x-large .v-avatar{--v-avatar-height:48px}.v-chip--size-x-large .v-chip__prepend{margin-inline-start:-9px;margin-inline-end:9px}.v-chip--pill.v-chip--size-x-large .v-chip__prepend{margin-inline-start:-18px}.v-chip--size-x-large .v-chip__append{margin-inline-end:-9px;margin-inline-start:9px}.v-chip--pill.v-chip--size-x-large .v-chip__append{margin-inline-end:-18px}.v-chip.v-chip--density-default{height:calc(var(--v-chip-height))}.v-chip.v-chip--density-comfortable{height:calc(var(--v-chip-height) - 8px)}.v-chip.v-chip--density-compact{height:calc(var(--v-chip-height) - 12px)}.v-chip--variant-contained-text,.v-chip--variant-outlined,.v-chip--variant-plain,.v-chip--variant-text{background:transparent;color:inherit}.v-chip--variant-plain{opacity:.26}.v-chip--variant-plain:focus,.v-chip--variant-plain:hover{opacity:1}.v-chip--variant-plain .v-chip__overlay{display:none}.v-chip--variant-contained{background:rgba(var(--v-theme-on-surface),var(--v-activated-opacity));color:currentColor}.v-chip--variant-outlined{border:thin solid currentColor}.v-chip--variant-text .v-chip__overlay{background:currentColor}.v-chip--variant-contained-text .v-chip__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;transition:opacity .2s ease-in-out}.v-chip--border{border-width:thin}.v-chip--link{cursor:pointer}.v-chip__append{margin-inline-start:8px;margin-inline-end:0}.v-chip__append+.v-chip__close{margin-inline-start:0}.v-chip__prepend{margin-inline-start:-12px;margin-inline-end:8px}.v-chip__close{align-self:center;cursor:pointer;display:inline-flex;flex:0 1 auto;font-size:18px;max-height:18px;max-width:18px;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-inline-start:8px;margin-inline-end:-4px}.v-chip__close .v-icon{font-size:inherit}.v-chip--disabled{opacity:.3;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.v-chip--label{border-radius:8px}.v-code{background-color:rgb(var(--v-code-background-color));border-radius:3px;font-size:85%;font-weight:400;padding:.2em .4em}.v-dialog{z-index:2400}.v-dialog .v-overlay__content{max-height:360px;min-width:240px;max-width:560px;border-radius:4px}@media(max-width:959px){.v-dialog .v-overlay__content{max-width:280px}}.v-dialog .v-overlay__content>.v-card>.v-card-avatar{padding:0}.v-dialog .v-overlay__content>.v-card>.v-card-header{padding:14px 24px 0}.v-dialog .v-overlay__content>.v-card>.v-card-header+.v-card-text{padding-top:10px}.v-dialog .v-overlay__content>.v-card>.v-card-text{font-size:inherit;letter-spacing:.03125em;line-height:inherit;padding:16px 24px 10px}.v-dialog--fullscreen{--v-scrollbar-offset:0px}.v-dialog--fullscreen .v-overlay__content{border-radius:0;margin:0;width:100%;height:100%;overflow-y:auto;top:0;left:0}.v-overlay-container{bottom:0;contain:strict}.v-overlay,.v-overlay-container{left:0;pointer-events:none;position:fixed;right:0;top:0}.v-overlay{align-items:center;border-radius:inherit;display:flex;height:100%;justify-content:center;z-index:800;padding-inline-end:var(--v-scrollbar-offset)}.v-overlay__content{outline:none;position:relative}.v-overlay__scrim{background:rgb(var(--v-theme-on-surface));border-radius:inherit;bottom:0;height:100%;left:0;opacity:1%;position:absolute;right:0;top:0;width:100%}.v-overlay--absolute{position:absolute}.v-overlay--active{pointer-events:auto}.v-divider{display:block;flex:1 1 100%;height:0;max-height:0;transition:inherit;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:thin 0 0 0}.v-divider--vertical{align-self:stretch;border-width:0 thin 0 0;display:inline-flex;height:inherit;margin-left:-1px;max-height:100%;max-width:0;vertical-align:text-bottom;width:0}.v-divider--inset:not(.v-divider--vertical){max-width:calc(100% - 72px);margin-inline-start:72px}.v-divider--inset.v-divider--vertical{margin-bottom:8px;margin-top:8px;max-height:calc(100% - 16px)}.v-footer{align-items:center;display:flex;flex:1 1 auto;padding:8px 24px;position:relative;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);border-radius:0;background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface))}.v-footer--absolute{position:absolute}.v-footer--fixed{position:fixed}.v-footer--rounded{border-radius:4px}.v-container{width:100%;padding:12px;margin-right:auto;margin-left:auto}@media(min-width:960px){.v-container{max-width:900px}}@media(min-width:1280px){.v-container{max-width:1200px}}@media(min-width:1920px){.v-container{max-width:1800px}}@media(min-width:2560px){.v-container{max-width:2400px}}.v-container--fluid{max-width:100%}.v-row{display:flex;flex-wrap:wrap;flex:1 1 auto;margin:-12px}.v-row+.row{margin-top:12px}.v-row+.row--dense{margin-top:4px}.v-row--dense{margin:-4px}.v-row--dense>.v-col,.v-row--dense>[class*=v-col-]{padding:4px}.v-row.v-row--no-gutters{margin:0}.v-row.v-row--no-gutters>.v-col,.v-row.v-row--no-gutters>[class*=v-col-]{padding:0}.v-col,.v-col-1,.v-col-2,.v-col-3,.v-col-4,.v-col-5,.v-col-6,.v-col-7,.v-col-8,.v-col-9,.v-col-10,.v-col-11,.v-col-12,.v-col-auto,.v-col-lg,.v-col-lg-1,.v-col-lg-2,.v-col-lg-3,.v-col-lg-4,.v-col-lg-5,.v-col-lg-6,.v-col-lg-7,.v-col-lg-8,.v-col-lg-9,.v-col-lg-10,.v-col-lg-11,.v-col-lg-12,.v-col-lg-auto,.v-col-md,.v-col-md-1,.v-col-md-2,.v-col-md-3,.v-col-md-4,.v-col-md-5,.v-col-md-6,.v-col-md-7,.v-col-md-8,.v-col-md-9,.v-col-md-10,.v-col-md-11,.v-col-md-12,.v-col-md-auto,.v-col-sm,.v-col-sm-1,.v-col-sm-2,.v-col-sm-3,.v-col-sm-4,.v-col-sm-5,.v-col-sm-6,.v-col-sm-7,.v-col-sm-8,.v-col-sm-9,.v-col-sm-10,.v-col-sm-11,.v-col-sm-12,.v-col-sm-auto,.v-col-xl,.v-col-xl-1,.v-col-xl-2,.v-col-xl-3,.v-col-xl-4,.v-col-xl-5,.v-col-xl-6,.v-col-xl-7,.v-col-xl-8,.v-col-xl-9,.v-col-xl-10,.v-col-xl-11,.v-col-xl-12,.v-col-xl-auto,.v-col-xxl,.v-col-xxl-1,.v-col-xxl-2,.v-col-xxl-3,.v-col-xxl-4,.v-col-xxl-5,.v-col-xxl-6,.v-col-xxl-7,.v-col-xxl-8,.v-col-xxl-9,.v-col-xxl-10,.v-col-xxl-11,.v-col-xxl-12,.v-col-xxl-auto{width:100%;padding:12px}.v-col{flex-basis:0;flex-grow:1;max-width:100%}.v-col-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-3{flex:0 0 25%;max-width:25%}.v-col-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-6{flex:0 0 50%;max-width:50%}.v-col-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-9{flex:0 0 75%;max-width:75%}.v-col-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-12{flex:0 0 100%;max-width:100%}.offset-1.v-locale--is-ltr,.v-locale--is-ltr .offset-1{margin-left:8.3333333333%}.offset-1.v-locale--is-rtl,.v-locale--is-rtl .offset-1{margin-right:8.3333333333%}.offset-2.v-locale--is-ltr,.v-locale--is-ltr .offset-2{margin-left:16.6666666667%}.offset-2.v-locale--is-rtl,.v-locale--is-rtl .offset-2{margin-right:16.6666666667%}.offset-3.v-locale--is-ltr,.v-locale--is-ltr .offset-3{margin-left:25%}.offset-3.v-locale--is-rtl,.v-locale--is-rtl .offset-3{margin-right:25%}.offset-4.v-locale--is-ltr,.v-locale--is-ltr .offset-4{margin-left:33.3333333333%}.offset-4.v-locale--is-rtl,.v-locale--is-rtl .offset-4{margin-right:33.3333333333%}.offset-5.v-locale--is-ltr,.v-locale--is-ltr .offset-5{margin-left:41.6666666667%}.offset-5.v-locale--is-rtl,.v-locale--is-rtl .offset-5{margin-right:41.6666666667%}.offset-6.v-locale--is-ltr,.v-locale--is-ltr .offset-6{margin-left:50%}.offset-6.v-locale--is-rtl,.v-locale--is-rtl .offset-6{margin-right:50%}.offset-7.v-locale--is-ltr,.v-locale--is-ltr .offset-7{margin-left:58.3333333333%}.offset-7.v-locale--is-rtl,.v-locale--is-rtl .offset-7{margin-right:58.3333333333%}.offset-8.v-locale--is-ltr,.v-locale--is-ltr .offset-8{margin-left:66.6666666667%}.offset-8.v-locale--is-rtl,.v-locale--is-rtl .offset-8{margin-right:66.6666666667%}.offset-9.v-locale--is-ltr,.v-locale--is-ltr .offset-9{margin-left:75%}.offset-9.v-locale--is-rtl,.v-locale--is-rtl .offset-9{margin-right:75%}.offset-10.v-locale--is-ltr,.v-locale--is-ltr .offset-10{margin-left:83.3333333333%}.offset-10.v-locale--is-rtl,.v-locale--is-rtl .offset-10{margin-right:83.3333333333%}.offset-11.v-locale--is-ltr,.v-locale--is-ltr .offset-11{margin-left:91.6666666667%}.offset-11.v-locale--is-rtl,.v-locale--is-rtl .offset-11{margin-right:91.6666666667%}@media(min-width:600px){.v-col-sm{flex-basis:0;flex-grow:1;max-width:100%}.v-col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-sm-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-sm-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-sm-3{flex:0 0 25%;max-width:25%}.v-col-sm-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-sm-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-sm-6{flex:0 0 50%;max-width:50%}.v-col-sm-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-sm-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-sm-9{flex:0 0 75%;max-width:75%}.v-col-sm-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-sm-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-sm-12{flex:0 0 100%;max-width:100%}.offset-sm-0.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-0{margin-left:0}.offset-sm-0.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-0{margin-right:0}.offset-sm-1.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-1{margin-left:8.3333333333%}.offset-sm-1.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-1{margin-right:8.3333333333%}.offset-sm-2.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-2{margin-left:16.6666666667%}.offset-sm-2.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-2{margin-right:16.6666666667%}.offset-sm-3.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-3{margin-left:25%}.offset-sm-3.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-3{margin-right:25%}.offset-sm-4.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-4{margin-left:33.3333333333%}.offset-sm-4.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-4{margin-right:33.3333333333%}.offset-sm-5.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-5{margin-left:41.6666666667%}.offset-sm-5.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-5{margin-right:41.6666666667%}.offset-sm-6.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-6{margin-left:50%}.offset-sm-6.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-6{margin-right:50%}.offset-sm-7.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-7{margin-left:58.3333333333%}.offset-sm-7.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-7{margin-right:58.3333333333%}.offset-sm-8.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-8{margin-left:66.6666666667%}.offset-sm-8.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-8{margin-right:66.6666666667%}.offset-sm-9.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-9{margin-left:75%}.offset-sm-9.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-9{margin-right:75%}.offset-sm-10.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-10{margin-left:83.3333333333%}.offset-sm-10.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-10{margin-right:83.3333333333%}.offset-sm-11.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-11{margin-left:91.6666666667%}.offset-sm-11.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-11{margin-right:91.6666666667%}}@media(min-width:960px){.v-col-md{flex-basis:0;flex-grow:1;max-width:100%}.v-col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-md-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-md-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-md-3{flex:0 0 25%;max-width:25%}.v-col-md-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-md-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-md-6{flex:0 0 50%;max-width:50%}.v-col-md-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-md-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-md-9{flex:0 0 75%;max-width:75%}.v-col-md-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-md-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-md-12{flex:0 0 100%;max-width:100%}.offset-md-0.v-locale--is-ltr,.v-locale--is-ltr .offset-md-0{margin-left:0}.offset-md-0.v-locale--is-rtl,.v-locale--is-rtl .offset-md-0{margin-right:0}.offset-md-1.v-locale--is-ltr,.v-locale--is-ltr .offset-md-1{margin-left:8.3333333333%}.offset-md-1.v-locale--is-rtl,.v-locale--is-rtl .offset-md-1{margin-right:8.3333333333%}.offset-md-2.v-locale--is-ltr,.v-locale--is-ltr .offset-md-2{margin-left:16.6666666667%}.offset-md-2.v-locale--is-rtl,.v-locale--is-rtl .offset-md-2{margin-right:16.6666666667%}.offset-md-3.v-locale--is-ltr,.v-locale--is-ltr .offset-md-3{margin-left:25%}.offset-md-3.v-locale--is-rtl,.v-locale--is-rtl .offset-md-3{margin-right:25%}.offset-md-4.v-locale--is-ltr,.v-locale--is-ltr .offset-md-4{margin-left:33.3333333333%}.offset-md-4.v-locale--is-rtl,.v-locale--is-rtl .offset-md-4{margin-right:33.3333333333%}.offset-md-5.v-locale--is-ltr,.v-locale--is-ltr .offset-md-5{margin-left:41.6666666667%}.offset-md-5.v-locale--is-rtl,.v-locale--is-rtl .offset-md-5{margin-right:41.6666666667%}.offset-md-6.v-locale--is-ltr,.v-locale--is-ltr .offset-md-6{margin-left:50%}.offset-md-6.v-locale--is-rtl,.v-locale--is-rtl .offset-md-6{margin-right:50%}.offset-md-7.v-locale--is-ltr,.v-locale--is-ltr .offset-md-7{margin-left:58.3333333333%}.offset-md-7.v-locale--is-rtl,.v-locale--is-rtl .offset-md-7{margin-right:58.3333333333%}.offset-md-8.v-locale--is-ltr,.v-locale--is-ltr .offset-md-8{margin-left:66.6666666667%}.offset-md-8.v-locale--is-rtl,.v-locale--is-rtl .offset-md-8{margin-right:66.6666666667%}.offset-md-9.v-locale--is-ltr,.v-locale--is-ltr .offset-md-9{margin-left:75%}.offset-md-9.v-locale--is-rtl,.v-locale--is-rtl .offset-md-9{margin-right:75%}.offset-md-10.v-locale--is-ltr,.v-locale--is-ltr .offset-md-10{margin-left:83.3333333333%}.offset-md-10.v-locale--is-rtl,.v-locale--is-rtl .offset-md-10{margin-right:83.3333333333%}.offset-md-11.v-locale--is-ltr,.v-locale--is-ltr .offset-md-11{margin-left:91.6666666667%}.offset-md-11.v-locale--is-rtl,.v-locale--is-rtl .offset-md-11{margin-right:91.6666666667%}}@media(min-width:1280px){.v-col-lg{flex-basis:0;flex-grow:1;max-width:100%}.v-col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-lg-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-lg-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-lg-3{flex:0 0 25%;max-width:25%}.v-col-lg-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-lg-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-lg-6{flex:0 0 50%;max-width:50%}.v-col-lg-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-lg-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-lg-9{flex:0 0 75%;max-width:75%}.v-col-lg-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-lg-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-lg-12{flex:0 0 100%;max-width:100%}.offset-lg-0.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-0{margin-left:0}.offset-lg-0.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-0{margin-right:0}.offset-lg-1.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-1{margin-left:8.3333333333%}.offset-lg-1.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-1{margin-right:8.3333333333%}.offset-lg-2.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-2{margin-left:16.6666666667%}.offset-lg-2.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-2{margin-right:16.6666666667%}.offset-lg-3.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-3{margin-left:25%}.offset-lg-3.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-3{margin-right:25%}.offset-lg-4.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-4{margin-left:33.3333333333%}.offset-lg-4.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-4{margin-right:33.3333333333%}.offset-lg-5.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-5{margin-left:41.6666666667%}.offset-lg-5.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-5{margin-right:41.6666666667%}.offset-lg-6.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-6{margin-left:50%}.offset-lg-6.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-6{margin-right:50%}.offset-lg-7.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-7{margin-left:58.3333333333%}.offset-lg-7.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-7{margin-right:58.3333333333%}.offset-lg-8.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-8{margin-left:66.6666666667%}.offset-lg-8.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-8{margin-right:66.6666666667%}.offset-lg-9.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-9{margin-left:75%}.offset-lg-9.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-9{margin-right:75%}.offset-lg-10.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-10{margin-left:83.3333333333%}.offset-lg-10.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-10{margin-right:83.3333333333%}.offset-lg-11.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-11{margin-left:91.6666666667%}.offset-lg-11.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-11{margin-right:91.6666666667%}}@media(min-width:1920px){.v-col-xl{flex-basis:0;flex-grow:1;max-width:100%}.v-col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-xl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-xl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-xl-3{flex:0 0 25%;max-width:25%}.v-col-xl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-xl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-xl-6{flex:0 0 50%;max-width:50%}.v-col-xl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-xl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-xl-9{flex:0 0 75%;max-width:75%}.v-col-xl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-xl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-xl-12{flex:0 0 100%;max-width:100%}.offset-xl-0.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-0{margin-left:0}.offset-xl-0.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-0{margin-right:0}.offset-xl-1.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-1{margin-left:8.3333333333%}.offset-xl-1.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-1{margin-right:8.3333333333%}.offset-xl-2.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-2{margin-left:16.6666666667%}.offset-xl-2.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-2{margin-right:16.6666666667%}.offset-xl-3.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-3{margin-left:25%}.offset-xl-3.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-3{margin-right:25%}.offset-xl-4.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-4{margin-left:33.3333333333%}.offset-xl-4.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-4{margin-right:33.3333333333%}.offset-xl-5.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-5{margin-left:41.6666666667%}.offset-xl-5.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-5{margin-right:41.6666666667%}.offset-xl-6.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-6{margin-left:50%}.offset-xl-6.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-6{margin-right:50%}.offset-xl-7.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-7{margin-left:58.3333333333%}.offset-xl-7.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-7{margin-right:58.3333333333%}.offset-xl-8.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-8{margin-left:66.6666666667%}.offset-xl-8.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-8{margin-right:66.6666666667%}.offset-xl-9.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-9{margin-left:75%}.offset-xl-9.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-9{margin-right:75%}.offset-xl-10.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-10{margin-left:83.3333333333%}.offset-xl-10.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-10{margin-right:83.3333333333%}.offset-xl-11.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-11{margin-left:91.6666666667%}.offset-xl-11.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-11{margin-right:91.6666666667%}}@media(min-width:2560px){.v-col-xxl{flex-basis:0;flex-grow:1;max-width:100%}.v-col-xxl-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-xxl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-xxl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-xxl-3{flex:0 0 25%;max-width:25%}.v-col-xxl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-xxl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-xxl-6{flex:0 0 50%;max-width:50%}.v-col-xxl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-xxl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-xxl-9{flex:0 0 75%;max-width:75%}.v-col-xxl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-xxl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-xxl-12{flex:0 0 100%;max-width:100%}.offset-xxl-0.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-0{margin-left:0}.offset-xxl-0.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-0{margin-right:0}.offset-xxl-1.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-1{margin-left:8.3333333333%}.offset-xxl-1.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-1{margin-right:8.3333333333%}.offset-xxl-2.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-2{margin-left:16.6666666667%}.offset-xxl-2.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-2{margin-right:16.6666666667%}.offset-xxl-3.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-3{margin-left:25%}.offset-xxl-3.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-3{margin-right:25%}.offset-xxl-4.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-4{margin-left:33.3333333333%}.offset-xxl-4.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-4{margin-right:33.3333333333%}.offset-xxl-5.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-5{margin-left:41.6666666667%}.offset-xxl-5.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-5{margin-right:41.6666666667%}.offset-xxl-6.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-6{margin-left:50%}.offset-xxl-6.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-6{margin-right:50%}.offset-xxl-7.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-7{margin-left:58.3333333333%}.offset-xxl-7.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-7{margin-right:58.3333333333%}.offset-xxl-8.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-8{margin-left:66.6666666667%}.offset-xxl-8.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-8{margin-right:66.6666666667%}.offset-xxl-9.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-9{margin-left:75%}.offset-xxl-9.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-9{margin-right:75%}.offset-xxl-10.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-10{margin-left:83.3333333333%}.offset-xxl-10.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-10{margin-right:83.3333333333%}.offset-xxl-11.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-11{margin-left:91.6666666667%}.offset-xxl-11.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-11{margin-right:91.6666666667%}}.v-kbd{background:rgb(var(--v-kbd-background-color));border-radius:3px;color:rgb(var(--v-kbd-color));font-size:85%;font-weight:400;padding:.2em .4rem;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.v-item-group{flex:0 1 auto;max-width:100%;position:relative;transition:.2s cubic-bezier(.4,0,.2,1)}.v-layout{--v-scrollbar-offset:0px;position:relative;display:flex;flex:1 1 auto;overflow:auto;z-index:0}.v-layout--full-height{--v-scrollbar-offset:inherit;height:100%}.v-layout-item{position:fixed;transition:.2s cubic-bezier(.4,0,.2,1)}.v-layout-item--absolute{position:absolute}.v-locale-provider{display:contents}.v-list{overflow:auto;padding:8px 0;position:relative;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);border-radius:0}.v-list--border{border-width:thin;box-shadow:none}.v-list--absolute{position:absolute}.v-list--fixed{position:fixed}.v-list--disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.v-list--disabled>[class*=v-list-]{opacity:.6}.v-list--rounded{border-radius:4px}.v-list--subheader{padding-top:0}.v-list-img{border-radius:inherit;display:flex;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:-1}.v-list-subheader{align-items:center;background:inherit;display:flex;font-size:.875rem;font-weight:500;line-height:1.375rem;padding-inline-end:16px;padding-inline-start:16px;min-height:48px;transition:min-height .2s cubic-bezier(.4,0,.2,1)}.v-list-subheader__text{opacity:var(--v-medium-emphasis-opacity);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v-list--density-default .v-list-subheader{min-height:48px}.v-list--density-comfortable .v-list-subheader{min-height:44px}.v-list--density-compact .v-list-subheader{min-height:40px}.v-list-subheader--inset{padding-inline-start:72px}.v-list--nav .v-list-subheader{font-size:.75rem}.v-list--subheader-sticky .v-list-subheader{background:inherit;left:0;position:sticky;top:0;z-index:1}.v-list__overlay{background-color:currentColor;border-radius:inherit;bottom:0;left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:0;transition:opacity .2s ease-in-out}.v-list-item{align-items:center;display:flex;padding:8px 16px;position:relative;outline:none;text-decoration:none;transition:.2s cubic-bezier(.4,0,.2,1);border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;border-radius:4px}.v-list-item--border{border-width:thin;box-shadow:none}.v-list-item:hover .v-list-item__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*0.04)}.v-list-item--active .v-list-item__overlay,.v-list-item--active:hover.v-list-item__overlay,.v-list-item:focus .v-list-item__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*0.12)}.v-list-item--active:focus .v-list-item__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*0.16)}.v-list-item--variant-contained-text,.v-list-item--variant-outlined,.v-list-item--variant-plain,.v-list-item--variant-text{background:transparent;color:inherit}.v-list-item--variant-plain{opacity:.62}.v-list-item--variant-plain:focus,.v-list-item--variant-plain:hover{opacity:1}.v-list-item--variant-plain .v-list-item__overlay{display:none}.v-list-item--variant-contained{background:rgba(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface))}.v-list-item--variant-outlined{border:thin solid currentColor}.v-list-item--variant-text .v-list-item__overlay{background:currentColor}.v-list-item--variant-contained-text .v-list-item__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;transition:opacity .2s ease-in-out}.v-list-item--rounded{border-radius:4px}.v-list-item--disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.6}.v-list-item--link{cursor:pointer}.v-list-item-avatar{align-self:center;height:40px;transition:inherit;transition-property:height,width;width:40px}.v-list-item-avatar--start{margin-inline-end:16px}.v-list-item-avatar--end{margin-inline-start:16px}.v-list--density-default .v-list-item-avatar{height:40px;width:40px}.v-list--density-default.v-list--three-line .v-list-item-avatar{margin-top:4px}.v-list--density-comfortable .v-list-item-avatar{height:34px;width:34px}.v-list--density-comfortable.v-list--three-line .v-list-item-avatar{margin-top:8px}.v-list--density-compact .v-list-item-avatar{height:28px;width:28px}.v-list--density-compact.v-list--three-line .v-list-item-avatar{margin-top:12px}.v-list--two-line .v-list-item-avatar{margin-top:4px;margin-bottom:4px}.v-list--three-line .v-list-item-avatar{align-self:flex-start}.v-list-item-media{margin-top:0;margin-bottom:0}.v-list-item-media--start{margin-inline-end:16px}.v-list-item-media--end{margin-inline-start:16px}.v-list--two-line .v-list-item-media{margin-top:-4px;margin-bottom:-4px}.v-list--three-line .v-list-item-media{margin-top:0;margin-bottom:0}.v-list-item-header{flex:1 1 auto;min-width:0}.v-list-item-subtitle{-webkit-box-orient:vertical;display:-webkit-box;opacity:var(--v-medium-emphasis-opacity);overflow:hidden;padding:0;text-overflow:ellipsis;font-size:.875rem;font-weight:400;letter-spacing:.0178571429em;line-height:1rem;text-transform:none}.v-list--two-line .v-list-item-subtitle{-webkit-line-clamp:1}.v-list--three-line .v-list-item-subtitle{-webkit-line-clamp:2}.v-list--nav .v-list-item-subtitle{font-size:.75rem;font-weight:400;letter-spacing:.0178571429em;line-height:1rem}.v-list-item-title{-webkit-hyphens:auto;hyphens:auto;overflow-wrap:normal;overflow:hidden;padding:0;white-space:nowrap;text-overflow:ellipsis;word-break:normal;word-wrap:break-word;font-size:1rem;font-weight:400;letter-spacing:.009375em;line-height:1.5rem;text-transform:none}.v-list--nav .v-list-item-title{font-size:.8125rem;font-weight:500;letter-spacing:normal;line-height:1rem}.v-list--density-default.v-list--one-line .v-list-item{min-height:48px;padding:8px 16px}.v-list--density-default.v-list--two-line .v-list-item{min-height:64px;padding:12px 16px}.v-list--density-default.v-list--three-line .v-list-item{min-height:88px;padding:16px 16px}.v-list--density-comfortable.v-list--one-line .v-list-item{min-height:44px;padding:4px 16px}.v-list--density-comfortable.v-list--two-line .v-list-item{min-height:60px;padding:8px 16px}.v-list--density-comfortable.v-list--three-line .v-list-item{min-height:84px;padding:12px 16px}.v-list--density-compact.v-list--one-line .v-list-item{min-height:40px;padding:0 16px}.v-list--density-compact.v-list--two-line .v-list-item{min-height:56px;padding:4px 16px}.v-list--density-compact.v-list--three-line .v-list-item{min-height:80px;padding:8px 16px}.v-list-item__overlay{background-color:currentColor;border-radius:inherit;bottom:0;left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:0;transition:opacity .2s ease-in-out}.v-list-item--active.v-list-item--contained .v-list-item__overlay{--v-theme-overlay-multiplier:0}.v-main{display:flex;flex:1 0 auto;max-width:100%;transition:.2s cubic-bezier(.4,0,.2,1)}.v-main__wrap{flex:1 1 auto;max-width:100%;position:relative}@-moz-document url-prefix(){@media print{.v-main{display:block}}}.v-navigation-drawer{-webkit-overflow-scrolling:touch;display:flex;flex-direction:column;height:100%;max-width:100%;pointer-events:auto;top:0;transition-duration:.2s;transition-property:box-shadow,transform,visibility,width;transition-timing-function:cubic-bezier(.4,0,.2,1);will-change:transform;position:fixed;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface))}.v-navigation-drawer--border{border-width:thin;box-shadow:none}.v-navigation-drawer--absolute{position:absolute}.v-navigation-drawer--floating{border-color:transparent}.v-navigation-drawer--rounded{border-radius:4px}.v-navigation-drawer--start{border-inline-end-width:thin}.v-locale--is-ltr .v-navigation-drawer--start,.v-navigation-drawer--start.v-locale--is-ltr{left:0;right:auto}.v-locale--is-rtl .v-navigation-drawer--start,.v-navigation-drawer--start.v-locale--is-rtl{left:auto;right:0}.v-navigation-drawer--end{border-inline-start-width:thin}.v-locale--is-ltr .v-navigation-drawer--end,.v-navigation-drawer--end.v-locale--is-ltr{left:auto;right:0}.v-locale--is-rtl .v-navigation-drawer--end,.v-navigation-drawer--end.v-locale--is-rtl{left:0;right:auto}.v-navigation-drawer--temporary{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.v-navigation-drawer__content{flex:0 1 auto;height:100%;max-width:100%;overflow-x:hidden;overflow-y:auto}.v-navigation-drawer__img{height:100%;left:0;position:absolute;top:0;width:100%;z-index:-1}.v-navigation-drawer__img img{height:inherit;-o-object-fit:cover;object-fit:cover;width:inherit}.v-pagination__list{display:inline-flex;list-style-type:none;justify-content:center;width:100%}.v-pagination__first,.v-pagination__item,.v-pagination__last,.v-pagination__next,.v-pagination__prev{margin:.3rem}.v-sheet{border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);border-radius:0;background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface))}.v-sheet--border{border-width:thin;box-shadow:none}.v-sheet--absolute{position:absolute}.v-sheet--fixed{position:fixed}.v-sheet--rounded{border-radius:4px}.v-dialog .v-overlay__content>.v-sheet{border-radius:inherit;overflow:hidden;box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}.v-progress-circular{align-items:center;display:inline-flex;justify-content:center;position:relative;vertical-align:middle}.v-progress-circular>svg{width:100%;height:100%;margin:auto;position:absolute;top:0;bottom:0;left:0;right:0;z-index:0}.v-progress-circular__content{align-items:center;display:flex;justify-content:center}.v-progress-circular__underlay{color:rgba(var(--v-border-color),var(--v-border-opacity));stroke:currentColor;z-index:1}.v-progress-circular__overlay{stroke:currentColor;transition:all .6s ease-in-out,stroke-width 0s;z-index:2}.v-progress-circular--size-x-small{height:16px;width:16px}.v-progress-circular--size-small{height:24px;width:24px}.v-progress-circular--size-default{height:32px;width:32px}.v-progress-circular--size-large{height:48px;width:48px}.v-progress-circular--size-x-large{height:64px;width:64px}.v-progress-circular--indeterminate>svg{animation:progress-circular-rotate 1.4s linear infinite;transform-origin:center center;transition:all .2s ease-in-out}.v-progress-circular--indeterminate .v-progress-circular__overlay{animation:progress-circular-dash 1.4s ease-in-out infinite;stroke-dasharray:25,200;stroke-dashoffset:0;stroke-linecap:round}.v-progress-circular--disable-shrink>svg{animation-duration:.7s}.v-progress-circular--disable-shrink .v-progress-circular__overlay{animation:none}.v-progress-circular--indeterminate:not(.v-progress-circular--visible) .v-progress-circular__overlay,.v-progress-circular--indeterminate:not(.v-progress-circular--visible)>svg{animation-play-state:paused!important}@keyframes progress-circular-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0px}50%{stroke-dasharray:100,200;stroke-dashoffset:-15px}to{stroke-dasharray:100,200;stroke-dashoffset:-124px}}@keyframes progress-circular-rotate{to{transform:rotate(270deg)}}.v-rating{max-width:100%;display:inline-flex;white-space:nowrap}.v-rating--readonly{pointer-events:none}.v-rating__wrapper{align-items:center;display:inline-flex;flex-direction:column}.v-rating__wrapper--bottom{flex-direction:column-reverse}.v-rating__item{display:inline-flex;position:relative}.v-rating__item label{cursor:pointer}.v-rating__item .v-btn--variant-plain{opacity:1}.v-rating__item .v-btn{transition-property:transform}.v-rating__item .v-btn .v-icon{transition:inherit;transition-timing-function:cubic-bezier(0,0,.2,1)}.v-rating__item:hover:not(.v-rating__item--focused) .v-icon{transform:scale(1.25)}.v-rating__item--focused .v-btn__overlay{display:block;opacity:var(--v-hover-opacity)}.v-rating__item--half{overflow:hidden;position:absolute;width:50%;z-index:1}.v-rating__item--half .v-btn__overlay,.v-rating__item--half:hover .v-btn__overlay{opacity:0}.v-rating__hidden{height:0;opacity:0;position:absolute;width:0}.v-system-bar{align-items:center;background:rgba(var(--v-theme-on-background),.02);display:flex;flex:1 1 auto;font-size:1rem;font-weight:400;height:24px;justify-content:flex-end;padding:0 8px;position:relative;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);border-radius:0;text-align:end}.v-system-bar i{color:rgba(var(--v-theme-on-background),.5);font-size:16px}.v-system-bar--absolute{position:absolute}.v-system-bar--fixed{position:fixed}.v-system-bar--lights-out{background:rgba(var(--v-theme-background),.7)}.v-system-bar--rounded{border-radius:0}.v-system-bar--window{height:32px}.v-system-bar--window i{font-size:20px}.v-theme-provider{background:rgb(var(--v-theme-background));color:rgb(var(--v-theme-on-background))}.v-timeline .v-timeline-divider__dot{background:rgb(var(--v-theme-on-surface))}.v-timeline{display:grid;grid-auto-flow:dense;position:relative}.v-timeline--horizontal.v-timeline{grid-template-rows:auto min-content auto;width:100%}.v-timeline--horizontal.v-timeline .v-timeline-item__body,.v-timeline--horizontal.v-timeline .v-timeline-item__opposite{padding-inline-start:calc(var(--v-timeline-dot-size)/2 - 5px)}.v-timeline--horizontal.v-timeline .v-timeline-item:nth-child(2n) .v-timeline-item__body{grid-row:3;padding-top:24px}.v-timeline--horizontal.v-timeline .v-timeline-item:nth-child(2n) .v-timeline-item__opposite,.v-timeline--horizontal.v-timeline .v-timeline-item:nth-child(odd) .v-timeline-item__body{grid-row:1;padding-bottom:24px}.v-timeline--horizontal.v-timeline .v-timeline-item:nth-child(odd) .v-timeline-item__opposite{grid-row:3;padding-top:24px}.v-timeline--vertical.v-timeline{grid-template-columns:auto min-content auto;height:100%}.v-timeline--vertical.v-timeline .v-timeline-item__body,.v-timeline--vertical.v-timeline .v-timeline-item__opposite{padding-top:calc(var(--v-timeline-dot-size)/2 - .75em)}.v-timeline--vertical.v-timeline .v-timeline-item:nth-child(2n) .v-timeline-item__body{grid-column:1;text-align:end;padding-inline-end:24px}.v-timeline--vertical.v-timeline .v-timeline-item:nth-child(2n) .v-timeline-item__opposite,.v-timeline--vertical.v-timeline .v-timeline-item:nth-child(odd) .v-timeline-item__body{grid-column:3;padding-inline-start:24px}.v-timeline--vertical.v-timeline .v-timeline-item:nth-child(odd) .v-timeline-item__opposite{grid-column:1;text-align:end;padding-inline-end:24px}.v-timeline-item{display:contents}.v-timeline-divider__line{background:rgba(var(--v-border-color),var(--v-border-opacity));position:absolute}.v-timeline--horizontal .v-timeline-divider__line{height:var(--v-timeline-line-thickness);width:calc(100% - var(--v-timeline-line-inset, 0px))}.v-timeline--vertical .v-timeline-divider__line{height:100%;width:var(--v-timeline-line-thickness)}.v-timeline--vertical.v-timeline--inset-line .v-timeline-divider__line{height:calc(100% - var(--v-timeline-dot-size) - var(--v-timeline-line-inset));bottom:calc(var(--v-timeline-line-inset)/2)}.v-timeline--horizontal.v-timeline--inset-line .v-timeline-divider__line{width:calc(100% - var(--v-timeline-dot-size) - var(--v-timeline-line-inset));inset-inline-end:calc(var(--v-timeline-line-inset)/2)}.v-timeline--vertical.v-timeline:not(.v-timeline--inset-line) .v-timeline-item:first-child .v-timeline-divider__line{bottom:0;height:calc(100% - var(--v-timeline-dot-size)/2)}.v-timeline--horizontal.v-timeline:not(.v-timeline--inset-line) .v-timeline-item:first-child .v-timeline-divider__line{width:calc(100% - var(--v-timeline-dot-size)/2);inset-inline-end:0}.v-timeline-divider{position:relative;display:flex;align-items:center}.v-timeline--horizontal .v-timeline-divider{flex-direction:row;grid-row:2}.v-timeline--vertical .v-timeline-divider{flex-direction:column;grid-column:2}.v-timeline-divider__dot{z-index:1;flex-shrink:0;border-radius:50%;display:flex;justify-content:center;align-items:center;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.v-timeline-divider__dot--size-x-small{height:22px;width:22px}.v-timeline-divider__dot--size-x-small .v-timeline-divider__inner-dot{height:calc(100% - 6px);width:calc(100% - 6px)}.v-timeline-divider__dot--size-small{height:30px;width:30px}.v-timeline-divider__dot--size-small .v-timeline-divider__inner-dot{height:calc(100% - 8px);width:calc(100% - 8px)}.v-timeline-divider__dot--size-default{height:38px;width:38px}.v-timeline-divider__dot--size-default .v-timeline-divider__inner-dot{height:calc(100% - 8px);width:calc(100% - 8px)}.v-timeline-divider__dot--size-large{height:46px;width:46px}.v-timeline-divider__dot--size-large .v-timeline-divider__inner-dot{height:calc(100% - 8px);width:calc(100% - 8px)}.v-timeline-divider__dot--size-x-large{height:54px;width:54px}.v-timeline-divider__dot--size-x-large .v-timeline-divider__inner-dot{height:calc(100% - 10px);width:calc(100% - 10px)}.v-timeline-divider__inner-dot{align-items:center;border-radius:50%;display:flex;justify-content:center}.v-timeline--horizontal.v-timeline--density-comfortable{height:100%}.v-timeline--horizontal.v-timeline--density-comfortable.v-timeline--side-end{grid-template-rows:min-content min-content auto}.v-timeline--horizontal.v-timeline--density-comfortable.v-timeline--side-start{grid-template-rows:auto min-content min-content}.v-timeline--vertical.v-timeline--density-comfortable{width:100%}.v-timeline--vertical.v-timeline--density-comfortable.v-timeline--side-end{grid-template-columns:min-content min-content auto}.v-timeline--vertical.v-timeline--density-comfortable.v-timeline--side-start{grid-template-columns:auto min-content min-content}.v-timeline--horizontal.v-timeline--density-compact.v-timeline--side-end{grid-template-rows:min-content auto}.v-timeline--horizontal.v-timeline--density-compact.v-timeline--side-start{grid-template-rows:auto min-content}.v-timeline--horizontal.v-timeline--density-compact .v-timeline-item__body{grid-row:1}.v-timeline--vertical.v-timeline--density-compact.v-timeline--side-end{grid-template-columns:min-content auto}.v-timeline--vertical.v-timeline--density-compact.v-timeline--side-start{grid-template-columns:auto min-content}.v-timeline--vertical.v-timeline--density-compact .v-timeline-item__body{grid-column:3}.v-timeline--horizontal.v-timeline.v-timeline--side-end .v-timeline-item .v-timeline-item__body{grid-row:3;padding-bottom:0;padding-top:24px}.v-timeline--horizontal.v-timeline.v-timeline--side-end .v-timeline-item .v-timeline-item__opposite{grid-row:1;padding-bottom:24px;padding-top:0}.v-timeline--vertical.v-timeline.v-timeline--side-end .v-timeline-item .v-timeline-item__body{grid-column:3;text-align:initial;padding-inline-start:24px}.v-timeline--vertical.v-timeline.v-timeline--side-end .v-timeline-item .v-timeline-item__opposite{grid-column:1;padding-inline-end:24px}.v-timeline--horizontal.v-timeline.v-timeline--side-start .v-timeline-item .v-timeline-item__body{grid-row:1;padding-bottom:24px;padding-top:0}.v-timeline--horizontal.v-timeline.v-timeline--side-start .v-timeline-item .v-timeline-item__opposite{grid-row:3;padding-bottom:0;padding-top:24px}.v-timeline--vertical.v-timeline.v-timeline--side-start .v-timeline-item .v-timeline-item__body{grid-column:1;text-align:end;padding-inline-end:24px}.v-timeline--vertical.v-timeline.v-timeline--side-start .v-timeline-item .v-timeline-item__opposite{grid-column:3;padding-inline-start:24px}.v-timeline-divider--fill-dot .v-timeline-divider__inner-dot{height:inherit;width:inherit}.v-timeline--truncate-line-end .v-timeline-item:last-child .v-timeline-divider__line{display:none} \ No newline at end of file diff --git a/analyseOTA/css/chunk-vendors.2fc88287.css b/analyseOTA/css/chunk-vendors.2fc88287.css new file mode 100644 index 0000000..1fd6841 --- /dev/null +++ b/analyseOTA/css/chunk-vendors.2fc88287.css @@ -0,0 +1,5 @@ +@-webkit-keyframes v-shake{59%{margin-left:0}60%,80%{margin-left:2px}70%,90%{margin-left:-2px}}@keyframes v-shake{59%{margin-left:0}60%,80%{margin-left:2px}70%,90%{margin-left:-2px}}.bg-black{background-color:#000!important;border-color:#000!important}.text-black{color:#000!important;caret-color:#000!important}.bg-white{background-color:#fff!important;border-color:#fff!important}.text-white{color:#fff!important;caret-color:#fff!important}.bg-transparent{background-color:transparent!important;border-color:transparent!important}.text-transparent{color:transparent!important;caret-color:transparent!important}.bg-red{background-color:#f44336!important;border-color:#f44336!important}.text-red{color:#f44336!important;caret-color:#f44336!important}.bg-red-lighten-5{background-color:#ffebee!important;border-color:#ffebee!important}.text-red-lighten-5{color:#ffebee!important;caret-color:#ffebee!important}.bg-red-lighten-4{background-color:#ffcdd2!important;border-color:#ffcdd2!important}.text-red-lighten-4{color:#ffcdd2!important;caret-color:#ffcdd2!important}.bg-red-lighten-3{background-color:#ef9a9a!important;border-color:#ef9a9a!important}.text-red-lighten-3{color:#ef9a9a!important;caret-color:#ef9a9a!important}.bg-red-lighten-2{background-color:#e57373!important;border-color:#e57373!important}.text-red-lighten-2{color:#e57373!important;caret-color:#e57373!important}.bg-red-lighten-1{background-color:#ef5350!important;border-color:#ef5350!important}.text-red-lighten-1{color:#ef5350!important;caret-color:#ef5350!important}.bg-red-darken-1{background-color:#e53935!important;border-color:#e53935!important}.text-red-darken-1{color:#e53935!important;caret-color:#e53935!important}.bg-red-darken-2{background-color:#d32f2f!important;border-color:#d32f2f!important}.text-red-darken-2{color:#d32f2f!important;caret-color:#d32f2f!important}.bg-red-darken-3{background-color:#c62828!important;border-color:#c62828!important}.text-red-darken-3{color:#c62828!important;caret-color:#c62828!important}.bg-red-darken-4{background-color:#b71c1c!important;border-color:#b71c1c!important}.text-red-darken-4{color:#b71c1c!important;caret-color:#b71c1c!important}.bg-red-accent-1{background-color:#ff8a80!important;border-color:#ff8a80!important}.text-red-accent-1{color:#ff8a80!important;caret-color:#ff8a80!important}.bg-red-accent-2{background-color:#ff5252!important;border-color:#ff5252!important}.text-red-accent-2{color:#ff5252!important;caret-color:#ff5252!important}.bg-red-accent-3{background-color:#ff1744!important;border-color:#ff1744!important}.text-red-accent-3{color:#ff1744!important;caret-color:#ff1744!important}.bg-red-accent-4{background-color:#d50000!important;border-color:#d50000!important}.text-red-accent-4{color:#d50000!important;caret-color:#d50000!important}.bg-pink{background-color:#e91e63!important;border-color:#e91e63!important}.text-pink{color:#e91e63!important;caret-color:#e91e63!important}.bg-pink-lighten-5{background-color:#fce4ec!important;border-color:#fce4ec!important}.text-pink-lighten-5{color:#fce4ec!important;caret-color:#fce4ec!important}.bg-pink-lighten-4{background-color:#f8bbd0!important;border-color:#f8bbd0!important}.text-pink-lighten-4{color:#f8bbd0!important;caret-color:#f8bbd0!important}.bg-pink-lighten-3{background-color:#f48fb1!important;border-color:#f48fb1!important}.text-pink-lighten-3{color:#f48fb1!important;caret-color:#f48fb1!important}.bg-pink-lighten-2{background-color:#f06292!important;border-color:#f06292!important}.text-pink-lighten-2{color:#f06292!important;caret-color:#f06292!important}.bg-pink-lighten-1{background-color:#ec407a!important;border-color:#ec407a!important}.text-pink-lighten-1{color:#ec407a!important;caret-color:#ec407a!important}.bg-pink-darken-1{background-color:#d81b60!important;border-color:#d81b60!important}.text-pink-darken-1{color:#d81b60!important;caret-color:#d81b60!important}.bg-pink-darken-2{background-color:#c2185b!important;border-color:#c2185b!important}.text-pink-darken-2{color:#c2185b!important;caret-color:#c2185b!important}.bg-pink-darken-3{background-color:#ad1457!important;border-color:#ad1457!important}.text-pink-darken-3{color:#ad1457!important;caret-color:#ad1457!important}.bg-pink-darken-4{background-color:#880e4f!important;border-color:#880e4f!important}.text-pink-darken-4{color:#880e4f!important;caret-color:#880e4f!important}.bg-pink-accent-1{background-color:#ff80ab!important;border-color:#ff80ab!important}.text-pink-accent-1{color:#ff80ab!important;caret-color:#ff80ab!important}.bg-pink-accent-2{background-color:#ff4081!important;border-color:#ff4081!important}.text-pink-accent-2{color:#ff4081!important;caret-color:#ff4081!important}.bg-pink-accent-3{background-color:#f50057!important;border-color:#f50057!important}.text-pink-accent-3{color:#f50057!important;caret-color:#f50057!important}.bg-pink-accent-4{background-color:#c51162!important;border-color:#c51162!important}.text-pink-accent-4{color:#c51162!important;caret-color:#c51162!important}.bg-purple{background-color:#9c27b0!important;border-color:#9c27b0!important}.text-purple{color:#9c27b0!important;caret-color:#9c27b0!important}.bg-purple-lighten-5{background-color:#f3e5f5!important;border-color:#f3e5f5!important}.text-purple-lighten-5{color:#f3e5f5!important;caret-color:#f3e5f5!important}.bg-purple-lighten-4{background-color:#e1bee7!important;border-color:#e1bee7!important}.text-purple-lighten-4{color:#e1bee7!important;caret-color:#e1bee7!important}.bg-purple-lighten-3{background-color:#ce93d8!important;border-color:#ce93d8!important}.text-purple-lighten-3{color:#ce93d8!important;caret-color:#ce93d8!important}.bg-purple-lighten-2{background-color:#ba68c8!important;border-color:#ba68c8!important}.text-purple-lighten-2{color:#ba68c8!important;caret-color:#ba68c8!important}.bg-purple-lighten-1{background-color:#ab47bc!important;border-color:#ab47bc!important}.text-purple-lighten-1{color:#ab47bc!important;caret-color:#ab47bc!important}.bg-purple-darken-1{background-color:#8e24aa!important;border-color:#8e24aa!important}.text-purple-darken-1{color:#8e24aa!important;caret-color:#8e24aa!important}.bg-purple-darken-2{background-color:#7b1fa2!important;border-color:#7b1fa2!important}.text-purple-darken-2{color:#7b1fa2!important;caret-color:#7b1fa2!important}.bg-purple-darken-3{background-color:#6a1b9a!important;border-color:#6a1b9a!important}.text-purple-darken-3{color:#6a1b9a!important;caret-color:#6a1b9a!important}.bg-purple-darken-4{background-color:#4a148c!important;border-color:#4a148c!important}.text-purple-darken-4{color:#4a148c!important;caret-color:#4a148c!important}.bg-purple-accent-1{background-color:#ea80fc!important;border-color:#ea80fc!important}.text-purple-accent-1{color:#ea80fc!important;caret-color:#ea80fc!important}.bg-purple-accent-2{background-color:#e040fb!important;border-color:#e040fb!important}.text-purple-accent-2{color:#e040fb!important;caret-color:#e040fb!important}.bg-purple-accent-3{background-color:#d500f9!important;border-color:#d500f9!important}.text-purple-accent-3{color:#d500f9!important;caret-color:#d500f9!important}.bg-purple-accent-4{background-color:#a0f!important;border-color:#a0f!important}.text-purple-accent-4{color:#a0f!important;caret-color:#a0f!important}.bg-deep-purple{background-color:#673ab7!important;border-color:#673ab7!important}.text-deep-purple{color:#673ab7!important;caret-color:#673ab7!important}.bg-deep-purple-lighten-5{background-color:#ede7f6!important;border-color:#ede7f6!important}.text-deep-purple-lighten-5{color:#ede7f6!important;caret-color:#ede7f6!important}.bg-deep-purple-lighten-4{background-color:#d1c4e9!important;border-color:#d1c4e9!important}.text-deep-purple-lighten-4{color:#d1c4e9!important;caret-color:#d1c4e9!important}.bg-deep-purple-lighten-3{background-color:#b39ddb!important;border-color:#b39ddb!important}.text-deep-purple-lighten-3{color:#b39ddb!important;caret-color:#b39ddb!important}.bg-deep-purple-lighten-2{background-color:#9575cd!important;border-color:#9575cd!important}.text-deep-purple-lighten-2{color:#9575cd!important;caret-color:#9575cd!important}.bg-deep-purple-lighten-1{background-color:#7e57c2!important;border-color:#7e57c2!important}.text-deep-purple-lighten-1{color:#7e57c2!important;caret-color:#7e57c2!important}.bg-deep-purple-darken-1{background-color:#5e35b1!important;border-color:#5e35b1!important}.text-deep-purple-darken-1{color:#5e35b1!important;caret-color:#5e35b1!important}.bg-deep-purple-darken-2{background-color:#512da8!important;border-color:#512da8!important}.text-deep-purple-darken-2{color:#512da8!important;caret-color:#512da8!important}.bg-deep-purple-darken-3{background-color:#4527a0!important;border-color:#4527a0!important}.text-deep-purple-darken-3{color:#4527a0!important;caret-color:#4527a0!important}.bg-deep-purple-darken-4{background-color:#311b92!important;border-color:#311b92!important}.text-deep-purple-darken-4{color:#311b92!important;caret-color:#311b92!important}.bg-deep-purple-accent-1{background-color:#b388ff!important;border-color:#b388ff!important}.text-deep-purple-accent-1{color:#b388ff!important;caret-color:#b388ff!important}.bg-deep-purple-accent-2{background-color:#7c4dff!important;border-color:#7c4dff!important}.text-deep-purple-accent-2{color:#7c4dff!important;caret-color:#7c4dff!important}.bg-deep-purple-accent-3{background-color:#651fff!important;border-color:#651fff!important}.text-deep-purple-accent-3{color:#651fff!important;caret-color:#651fff!important}.bg-deep-purple-accent-4{background-color:#6200ea!important;border-color:#6200ea!important}.text-deep-purple-accent-4{color:#6200ea!important;caret-color:#6200ea!important}.bg-indigo{background-color:#3f51b5!important;border-color:#3f51b5!important}.text-indigo{color:#3f51b5!important;caret-color:#3f51b5!important}.bg-indigo-lighten-5{background-color:#e8eaf6!important;border-color:#e8eaf6!important}.text-indigo-lighten-5{color:#e8eaf6!important;caret-color:#e8eaf6!important}.bg-indigo-lighten-4{background-color:#c5cae9!important;border-color:#c5cae9!important}.text-indigo-lighten-4{color:#c5cae9!important;caret-color:#c5cae9!important}.bg-indigo-lighten-3{background-color:#9fa8da!important;border-color:#9fa8da!important}.text-indigo-lighten-3{color:#9fa8da!important;caret-color:#9fa8da!important}.bg-indigo-lighten-2{background-color:#7986cb!important;border-color:#7986cb!important}.text-indigo-lighten-2{color:#7986cb!important;caret-color:#7986cb!important}.bg-indigo-lighten-1{background-color:#5c6bc0!important;border-color:#5c6bc0!important}.text-indigo-lighten-1{color:#5c6bc0!important;caret-color:#5c6bc0!important}.bg-indigo-darken-1{background-color:#3949ab!important;border-color:#3949ab!important}.text-indigo-darken-1{color:#3949ab!important;caret-color:#3949ab!important}.bg-indigo-darken-2{background-color:#303f9f!important;border-color:#303f9f!important}.text-indigo-darken-2{color:#303f9f!important;caret-color:#303f9f!important}.bg-indigo-darken-3{background-color:#283593!important;border-color:#283593!important}.text-indigo-darken-3{color:#283593!important;caret-color:#283593!important}.bg-indigo-darken-4{background-color:#1a237e!important;border-color:#1a237e!important}.text-indigo-darken-4{color:#1a237e!important;caret-color:#1a237e!important}.bg-indigo-accent-1{background-color:#8c9eff!important;border-color:#8c9eff!important}.text-indigo-accent-1{color:#8c9eff!important;caret-color:#8c9eff!important}.bg-indigo-accent-2{background-color:#536dfe!important;border-color:#536dfe!important}.text-indigo-accent-2{color:#536dfe!important;caret-color:#536dfe!important}.bg-indigo-accent-3{background-color:#3d5afe!important;border-color:#3d5afe!important}.text-indigo-accent-3{color:#3d5afe!important;caret-color:#3d5afe!important}.bg-indigo-accent-4{background-color:#304ffe!important;border-color:#304ffe!important}.text-indigo-accent-4{color:#304ffe!important;caret-color:#304ffe!important}.bg-blue{background-color:#2196f3!important;border-color:#2196f3!important}.text-blue{color:#2196f3!important;caret-color:#2196f3!important}.bg-blue-lighten-5{background-color:#e3f2fd!important;border-color:#e3f2fd!important}.text-blue-lighten-5{color:#e3f2fd!important;caret-color:#e3f2fd!important}.bg-blue-lighten-4{background-color:#bbdefb!important;border-color:#bbdefb!important}.text-blue-lighten-4{color:#bbdefb!important;caret-color:#bbdefb!important}.bg-blue-lighten-3{background-color:#90caf9!important;border-color:#90caf9!important}.text-blue-lighten-3{color:#90caf9!important;caret-color:#90caf9!important}.bg-blue-lighten-2{background-color:#64b5f6!important;border-color:#64b5f6!important}.text-blue-lighten-2{color:#64b5f6!important;caret-color:#64b5f6!important}.bg-blue-lighten-1{background-color:#42a5f5!important;border-color:#42a5f5!important}.text-blue-lighten-1{color:#42a5f5!important;caret-color:#42a5f5!important}.bg-blue-darken-1{background-color:#1e88e5!important;border-color:#1e88e5!important}.text-blue-darken-1{color:#1e88e5!important;caret-color:#1e88e5!important}.bg-blue-darken-2{background-color:#1976d2!important;border-color:#1976d2!important}.text-blue-darken-2{color:#1976d2!important;caret-color:#1976d2!important}.bg-blue-darken-3{background-color:#1565c0!important;border-color:#1565c0!important}.text-blue-darken-3{color:#1565c0!important;caret-color:#1565c0!important}.bg-blue-darken-4{background-color:#0d47a1!important;border-color:#0d47a1!important}.text-blue-darken-4{color:#0d47a1!important;caret-color:#0d47a1!important}.bg-blue-accent-1{background-color:#82b1ff!important;border-color:#82b1ff!important}.text-blue-accent-1{color:#82b1ff!important;caret-color:#82b1ff!important}.bg-blue-accent-2{background-color:#448aff!important;border-color:#448aff!important}.text-blue-accent-2{color:#448aff!important;caret-color:#448aff!important}.bg-blue-accent-3{background-color:#2979ff!important;border-color:#2979ff!important}.text-blue-accent-3{color:#2979ff!important;caret-color:#2979ff!important}.bg-blue-accent-4{background-color:#2962ff!important;border-color:#2962ff!important}.text-blue-accent-4{color:#2962ff!important;caret-color:#2962ff!important}.bg-light-blue{background-color:#03a9f4!important;border-color:#03a9f4!important}.text-light-blue{color:#03a9f4!important;caret-color:#03a9f4!important}.bg-light-blue-lighten-5{background-color:#e1f5fe!important;border-color:#e1f5fe!important}.text-light-blue-lighten-5{color:#e1f5fe!important;caret-color:#e1f5fe!important}.bg-light-blue-lighten-4{background-color:#b3e5fc!important;border-color:#b3e5fc!important}.text-light-blue-lighten-4{color:#b3e5fc!important;caret-color:#b3e5fc!important}.bg-light-blue-lighten-3{background-color:#81d4fa!important;border-color:#81d4fa!important}.text-light-blue-lighten-3{color:#81d4fa!important;caret-color:#81d4fa!important}.bg-light-blue-lighten-2{background-color:#4fc3f7!important;border-color:#4fc3f7!important}.text-light-blue-lighten-2{color:#4fc3f7!important;caret-color:#4fc3f7!important}.bg-light-blue-lighten-1{background-color:#29b6f6!important;border-color:#29b6f6!important}.text-light-blue-lighten-1{color:#29b6f6!important;caret-color:#29b6f6!important}.bg-light-blue-darken-1{background-color:#039be5!important;border-color:#039be5!important}.text-light-blue-darken-1{color:#039be5!important;caret-color:#039be5!important}.bg-light-blue-darken-2{background-color:#0288d1!important;border-color:#0288d1!important}.text-light-blue-darken-2{color:#0288d1!important;caret-color:#0288d1!important}.bg-light-blue-darken-3{background-color:#0277bd!important;border-color:#0277bd!important}.text-light-blue-darken-3{color:#0277bd!important;caret-color:#0277bd!important}.bg-light-blue-darken-4{background-color:#01579b!important;border-color:#01579b!important}.text-light-blue-darken-4{color:#01579b!important;caret-color:#01579b!important}.bg-light-blue-accent-1{background-color:#80d8ff!important;border-color:#80d8ff!important}.text-light-blue-accent-1{color:#80d8ff!important;caret-color:#80d8ff!important}.bg-light-blue-accent-2{background-color:#40c4ff!important;border-color:#40c4ff!important}.text-light-blue-accent-2{color:#40c4ff!important;caret-color:#40c4ff!important}.bg-light-blue-accent-3{background-color:#00b0ff!important;border-color:#00b0ff!important}.text-light-blue-accent-3{color:#00b0ff!important;caret-color:#00b0ff!important}.bg-light-blue-accent-4{background-color:#0091ea!important;border-color:#0091ea!important}.text-light-blue-accent-4{color:#0091ea!important;caret-color:#0091ea!important}.bg-cyan{background-color:#00bcd4!important;border-color:#00bcd4!important}.text-cyan{color:#00bcd4!important;caret-color:#00bcd4!important}.bg-cyan-lighten-5{background-color:#e0f7fa!important;border-color:#e0f7fa!important}.text-cyan-lighten-5{color:#e0f7fa!important;caret-color:#e0f7fa!important}.bg-cyan-lighten-4{background-color:#b2ebf2!important;border-color:#b2ebf2!important}.text-cyan-lighten-4{color:#b2ebf2!important;caret-color:#b2ebf2!important}.bg-cyan-lighten-3{background-color:#80deea!important;border-color:#80deea!important}.text-cyan-lighten-3{color:#80deea!important;caret-color:#80deea!important}.bg-cyan-lighten-2{background-color:#4dd0e1!important;border-color:#4dd0e1!important}.text-cyan-lighten-2{color:#4dd0e1!important;caret-color:#4dd0e1!important}.bg-cyan-lighten-1{background-color:#26c6da!important;border-color:#26c6da!important}.text-cyan-lighten-1{color:#26c6da!important;caret-color:#26c6da!important}.bg-cyan-darken-1{background-color:#00acc1!important;border-color:#00acc1!important}.text-cyan-darken-1{color:#00acc1!important;caret-color:#00acc1!important}.bg-cyan-darken-2{background-color:#0097a7!important;border-color:#0097a7!important}.text-cyan-darken-2{color:#0097a7!important;caret-color:#0097a7!important}.bg-cyan-darken-3{background-color:#00838f!important;border-color:#00838f!important}.text-cyan-darken-3{color:#00838f!important;caret-color:#00838f!important}.bg-cyan-darken-4{background-color:#006064!important;border-color:#006064!important}.text-cyan-darken-4{color:#006064!important;caret-color:#006064!important}.bg-cyan-accent-1{background-color:#84ffff!important;border-color:#84ffff!important}.text-cyan-accent-1{color:#84ffff!important;caret-color:#84ffff!important}.bg-cyan-accent-2{background-color:#18ffff!important;border-color:#18ffff!important}.text-cyan-accent-2{color:#18ffff!important;caret-color:#18ffff!important}.bg-cyan-accent-3{background-color:#00e5ff!important;border-color:#00e5ff!important}.text-cyan-accent-3{color:#00e5ff!important;caret-color:#00e5ff!important}.bg-cyan-accent-4{background-color:#00b8d4!important;border-color:#00b8d4!important}.text-cyan-accent-4{color:#00b8d4!important;caret-color:#00b8d4!important}.bg-teal{background-color:#009688!important;border-color:#009688!important}.text-teal{color:#009688!important;caret-color:#009688!important}.bg-teal-lighten-5{background-color:#e0f2f1!important;border-color:#e0f2f1!important}.text-teal-lighten-5{color:#e0f2f1!important;caret-color:#e0f2f1!important}.bg-teal-lighten-4{background-color:#b2dfdb!important;border-color:#b2dfdb!important}.text-teal-lighten-4{color:#b2dfdb!important;caret-color:#b2dfdb!important}.bg-teal-lighten-3{background-color:#80cbc4!important;border-color:#80cbc4!important}.text-teal-lighten-3{color:#80cbc4!important;caret-color:#80cbc4!important}.bg-teal-lighten-2{background-color:#4db6ac!important;border-color:#4db6ac!important}.text-teal-lighten-2{color:#4db6ac!important;caret-color:#4db6ac!important}.bg-teal-lighten-1{background-color:#26a69a!important;border-color:#26a69a!important}.text-teal-lighten-1{color:#26a69a!important;caret-color:#26a69a!important}.bg-teal-darken-1{background-color:#00897b!important;border-color:#00897b!important}.text-teal-darken-1{color:#00897b!important;caret-color:#00897b!important}.bg-teal-darken-2{background-color:#00796b!important;border-color:#00796b!important}.text-teal-darken-2{color:#00796b!important;caret-color:#00796b!important}.bg-teal-darken-3{background-color:#00695c!important;border-color:#00695c!important}.text-teal-darken-3{color:#00695c!important;caret-color:#00695c!important}.bg-teal-darken-4{background-color:#004d40!important;border-color:#004d40!important}.text-teal-darken-4{color:#004d40!important;caret-color:#004d40!important}.bg-teal-accent-1{background-color:#a7ffeb!important;border-color:#a7ffeb!important}.text-teal-accent-1{color:#a7ffeb!important;caret-color:#a7ffeb!important}.bg-teal-accent-2{background-color:#64ffda!important;border-color:#64ffda!important}.text-teal-accent-2{color:#64ffda!important;caret-color:#64ffda!important}.bg-teal-accent-3{background-color:#1de9b6!important;border-color:#1de9b6!important}.text-teal-accent-3{color:#1de9b6!important;caret-color:#1de9b6!important}.bg-teal-accent-4{background-color:#00bfa5!important;border-color:#00bfa5!important}.text-teal-accent-4{color:#00bfa5!important;caret-color:#00bfa5!important}.bg-green{background-color:#4caf50!important;border-color:#4caf50!important}.text-green{color:#4caf50!important;caret-color:#4caf50!important}.bg-green-lighten-5{background-color:#e8f5e9!important;border-color:#e8f5e9!important}.text-green-lighten-5{color:#e8f5e9!important;caret-color:#e8f5e9!important}.bg-green-lighten-4{background-color:#c8e6c9!important;border-color:#c8e6c9!important}.text-green-lighten-4{color:#c8e6c9!important;caret-color:#c8e6c9!important}.bg-green-lighten-3{background-color:#a5d6a7!important;border-color:#a5d6a7!important}.text-green-lighten-3{color:#a5d6a7!important;caret-color:#a5d6a7!important}.bg-green-lighten-2{background-color:#81c784!important;border-color:#81c784!important}.text-green-lighten-2{color:#81c784!important;caret-color:#81c784!important}.bg-green-lighten-1{background-color:#66bb6a!important;border-color:#66bb6a!important}.text-green-lighten-1{color:#66bb6a!important;caret-color:#66bb6a!important}.bg-green-darken-1{background-color:#43a047!important;border-color:#43a047!important}.text-green-darken-1{color:#43a047!important;caret-color:#43a047!important}.bg-green-darken-2{background-color:#388e3c!important;border-color:#388e3c!important}.text-green-darken-2{color:#388e3c!important;caret-color:#388e3c!important}.bg-green-darken-3{background-color:#2e7d32!important;border-color:#2e7d32!important}.text-green-darken-3{color:#2e7d32!important;caret-color:#2e7d32!important}.bg-green-darken-4{background-color:#1b5e20!important;border-color:#1b5e20!important}.text-green-darken-4{color:#1b5e20!important;caret-color:#1b5e20!important}.bg-green-accent-1{background-color:#b9f6ca!important;border-color:#b9f6ca!important}.text-green-accent-1{color:#b9f6ca!important;caret-color:#b9f6ca!important}.bg-green-accent-2{background-color:#69f0ae!important;border-color:#69f0ae!important}.text-green-accent-2{color:#69f0ae!important;caret-color:#69f0ae!important}.bg-green-accent-3{background-color:#00e676!important;border-color:#00e676!important}.text-green-accent-3{color:#00e676!important;caret-color:#00e676!important}.bg-green-accent-4{background-color:#00c853!important;border-color:#00c853!important}.text-green-accent-4{color:#00c853!important;caret-color:#00c853!important}.bg-light-green{background-color:#8bc34a!important;border-color:#8bc34a!important}.text-light-green{color:#8bc34a!important;caret-color:#8bc34a!important}.bg-light-green-lighten-5{background-color:#f1f8e9!important;border-color:#f1f8e9!important}.text-light-green-lighten-5{color:#f1f8e9!important;caret-color:#f1f8e9!important}.bg-light-green-lighten-4{background-color:#dcedc8!important;border-color:#dcedc8!important}.text-light-green-lighten-4{color:#dcedc8!important;caret-color:#dcedc8!important}.bg-light-green-lighten-3{background-color:#c5e1a5!important;border-color:#c5e1a5!important}.text-light-green-lighten-3{color:#c5e1a5!important;caret-color:#c5e1a5!important}.bg-light-green-lighten-2{background-color:#aed581!important;border-color:#aed581!important}.text-light-green-lighten-2{color:#aed581!important;caret-color:#aed581!important}.bg-light-green-lighten-1{background-color:#9ccc65!important;border-color:#9ccc65!important}.text-light-green-lighten-1{color:#9ccc65!important;caret-color:#9ccc65!important}.bg-light-green-darken-1{background-color:#7cb342!important;border-color:#7cb342!important}.text-light-green-darken-1{color:#7cb342!important;caret-color:#7cb342!important}.bg-light-green-darken-2{background-color:#689f38!important;border-color:#689f38!important}.text-light-green-darken-2{color:#689f38!important;caret-color:#689f38!important}.bg-light-green-darken-3{background-color:#558b2f!important;border-color:#558b2f!important}.text-light-green-darken-3{color:#558b2f!important;caret-color:#558b2f!important}.bg-light-green-darken-4{background-color:#33691e!important;border-color:#33691e!important}.text-light-green-darken-4{color:#33691e!important;caret-color:#33691e!important}.bg-light-green-accent-1{background-color:#ccff90!important;border-color:#ccff90!important}.text-light-green-accent-1{color:#ccff90!important;caret-color:#ccff90!important}.bg-light-green-accent-2{background-color:#b2ff59!important;border-color:#b2ff59!important}.text-light-green-accent-2{color:#b2ff59!important;caret-color:#b2ff59!important}.bg-light-green-accent-3{background-color:#76ff03!important;border-color:#76ff03!important}.text-light-green-accent-3{color:#76ff03!important;caret-color:#76ff03!important}.bg-light-green-accent-4{background-color:#64dd17!important;border-color:#64dd17!important}.text-light-green-accent-4{color:#64dd17!important;caret-color:#64dd17!important}.bg-lime{background-color:#cddc39!important;border-color:#cddc39!important}.text-lime{color:#cddc39!important;caret-color:#cddc39!important}.bg-lime-lighten-5{background-color:#f9fbe7!important;border-color:#f9fbe7!important}.text-lime-lighten-5{color:#f9fbe7!important;caret-color:#f9fbe7!important}.bg-lime-lighten-4{background-color:#f0f4c3!important;border-color:#f0f4c3!important}.text-lime-lighten-4{color:#f0f4c3!important;caret-color:#f0f4c3!important}.bg-lime-lighten-3{background-color:#e6ee9c!important;border-color:#e6ee9c!important}.text-lime-lighten-3{color:#e6ee9c!important;caret-color:#e6ee9c!important}.bg-lime-lighten-2{background-color:#dce775!important;border-color:#dce775!important}.text-lime-lighten-2{color:#dce775!important;caret-color:#dce775!important}.bg-lime-lighten-1{background-color:#d4e157!important;border-color:#d4e157!important}.text-lime-lighten-1{color:#d4e157!important;caret-color:#d4e157!important}.bg-lime-darken-1{background-color:#c0ca33!important;border-color:#c0ca33!important}.text-lime-darken-1{color:#c0ca33!important;caret-color:#c0ca33!important}.bg-lime-darken-2{background-color:#afb42b!important;border-color:#afb42b!important}.text-lime-darken-2{color:#afb42b!important;caret-color:#afb42b!important}.bg-lime-darken-3{background-color:#9e9d24!important;border-color:#9e9d24!important}.text-lime-darken-3{color:#9e9d24!important;caret-color:#9e9d24!important}.bg-lime-darken-4{background-color:#827717!important;border-color:#827717!important}.text-lime-darken-4{color:#827717!important;caret-color:#827717!important}.bg-lime-accent-1{background-color:#f4ff81!important;border-color:#f4ff81!important}.text-lime-accent-1{color:#f4ff81!important;caret-color:#f4ff81!important}.bg-lime-accent-2{background-color:#eeff41!important;border-color:#eeff41!important}.text-lime-accent-2{color:#eeff41!important;caret-color:#eeff41!important}.bg-lime-accent-3{background-color:#c6ff00!important;border-color:#c6ff00!important}.text-lime-accent-3{color:#c6ff00!important;caret-color:#c6ff00!important}.bg-lime-accent-4{background-color:#aeea00!important;border-color:#aeea00!important}.text-lime-accent-4{color:#aeea00!important;caret-color:#aeea00!important}.bg-yellow{background-color:#ffeb3b!important;border-color:#ffeb3b!important}.text-yellow{color:#ffeb3b!important;caret-color:#ffeb3b!important}.bg-yellow-lighten-5{background-color:#fffde7!important;border-color:#fffde7!important}.text-yellow-lighten-5{color:#fffde7!important;caret-color:#fffde7!important}.bg-yellow-lighten-4{background-color:#fff9c4!important;border-color:#fff9c4!important}.text-yellow-lighten-4{color:#fff9c4!important;caret-color:#fff9c4!important}.bg-yellow-lighten-3{background-color:#fff59d!important;border-color:#fff59d!important}.text-yellow-lighten-3{color:#fff59d!important;caret-color:#fff59d!important}.bg-yellow-lighten-2{background-color:#fff176!important;border-color:#fff176!important}.text-yellow-lighten-2{color:#fff176!important;caret-color:#fff176!important}.bg-yellow-lighten-1{background-color:#ffee58!important;border-color:#ffee58!important}.text-yellow-lighten-1{color:#ffee58!important;caret-color:#ffee58!important}.bg-yellow-darken-1{background-color:#fdd835!important;border-color:#fdd835!important}.text-yellow-darken-1{color:#fdd835!important;caret-color:#fdd835!important}.bg-yellow-darken-2{background-color:#fbc02d!important;border-color:#fbc02d!important}.text-yellow-darken-2{color:#fbc02d!important;caret-color:#fbc02d!important}.bg-yellow-darken-3{background-color:#f9a825!important;border-color:#f9a825!important}.text-yellow-darken-3{color:#f9a825!important;caret-color:#f9a825!important}.bg-yellow-darken-4{background-color:#f57f17!important;border-color:#f57f17!important}.text-yellow-darken-4{color:#f57f17!important;caret-color:#f57f17!important}.bg-yellow-accent-1{background-color:#ffff8d!important;border-color:#ffff8d!important}.text-yellow-accent-1{color:#ffff8d!important;caret-color:#ffff8d!important}.bg-yellow-accent-2{background-color:#ff0!important;border-color:#ff0!important}.text-yellow-accent-2{color:#ff0!important;caret-color:#ff0!important}.bg-yellow-accent-3{background-color:#ffea00!important;border-color:#ffea00!important}.text-yellow-accent-3{color:#ffea00!important;caret-color:#ffea00!important}.bg-yellow-accent-4{background-color:#ffd600!important;border-color:#ffd600!important}.text-yellow-accent-4{color:#ffd600!important;caret-color:#ffd600!important}.bg-amber{background-color:#ffc107!important;border-color:#ffc107!important}.text-amber{color:#ffc107!important;caret-color:#ffc107!important}.bg-amber-lighten-5{background-color:#fff8e1!important;border-color:#fff8e1!important}.text-amber-lighten-5{color:#fff8e1!important;caret-color:#fff8e1!important}.bg-amber-lighten-4{background-color:#ffecb3!important;border-color:#ffecb3!important}.text-amber-lighten-4{color:#ffecb3!important;caret-color:#ffecb3!important}.bg-amber-lighten-3{background-color:#ffe082!important;border-color:#ffe082!important}.text-amber-lighten-3{color:#ffe082!important;caret-color:#ffe082!important}.bg-amber-lighten-2{background-color:#ffd54f!important;border-color:#ffd54f!important}.text-amber-lighten-2{color:#ffd54f!important;caret-color:#ffd54f!important}.bg-amber-lighten-1{background-color:#ffca28!important;border-color:#ffca28!important}.text-amber-lighten-1{color:#ffca28!important;caret-color:#ffca28!important}.bg-amber-darken-1{background-color:#ffb300!important;border-color:#ffb300!important}.text-amber-darken-1{color:#ffb300!important;caret-color:#ffb300!important}.bg-amber-darken-2{background-color:#ffa000!important;border-color:#ffa000!important}.text-amber-darken-2{color:#ffa000!important;caret-color:#ffa000!important}.bg-amber-darken-3{background-color:#ff8f00!important;border-color:#ff8f00!important}.text-amber-darken-3{color:#ff8f00!important;caret-color:#ff8f00!important}.bg-amber-darken-4{background-color:#ff6f00!important;border-color:#ff6f00!important}.text-amber-darken-4{color:#ff6f00!important;caret-color:#ff6f00!important}.bg-amber-accent-1{background-color:#ffe57f!important;border-color:#ffe57f!important}.text-amber-accent-1{color:#ffe57f!important;caret-color:#ffe57f!important}.bg-amber-accent-2{background-color:#ffd740!important;border-color:#ffd740!important}.text-amber-accent-2{color:#ffd740!important;caret-color:#ffd740!important}.bg-amber-accent-3{background-color:#ffc400!important;border-color:#ffc400!important}.text-amber-accent-3{color:#ffc400!important;caret-color:#ffc400!important}.bg-amber-accent-4{background-color:#ffab00!important;border-color:#ffab00!important}.text-amber-accent-4{color:#ffab00!important;caret-color:#ffab00!important}.bg-orange{background-color:#ff9800!important;border-color:#ff9800!important}.text-orange{color:#ff9800!important;caret-color:#ff9800!important}.bg-orange-lighten-5{background-color:#fff3e0!important;border-color:#fff3e0!important}.text-orange-lighten-5{color:#fff3e0!important;caret-color:#fff3e0!important}.bg-orange-lighten-4{background-color:#ffe0b2!important;border-color:#ffe0b2!important}.text-orange-lighten-4{color:#ffe0b2!important;caret-color:#ffe0b2!important}.bg-orange-lighten-3{background-color:#ffcc80!important;border-color:#ffcc80!important}.text-orange-lighten-3{color:#ffcc80!important;caret-color:#ffcc80!important}.bg-orange-lighten-2{background-color:#ffb74d!important;border-color:#ffb74d!important}.text-orange-lighten-2{color:#ffb74d!important;caret-color:#ffb74d!important}.bg-orange-lighten-1{background-color:#ffa726!important;border-color:#ffa726!important}.text-orange-lighten-1{color:#ffa726!important;caret-color:#ffa726!important}.bg-orange-darken-1{background-color:#fb8c00!important;border-color:#fb8c00!important}.text-orange-darken-1{color:#fb8c00!important;caret-color:#fb8c00!important}.bg-orange-darken-2{background-color:#f57c00!important;border-color:#f57c00!important}.text-orange-darken-2{color:#f57c00!important;caret-color:#f57c00!important}.bg-orange-darken-3{background-color:#ef6c00!important;border-color:#ef6c00!important}.text-orange-darken-3{color:#ef6c00!important;caret-color:#ef6c00!important}.bg-orange-darken-4{background-color:#e65100!important;border-color:#e65100!important}.text-orange-darken-4{color:#e65100!important;caret-color:#e65100!important}.bg-orange-accent-1{background-color:#ffd180!important;border-color:#ffd180!important}.text-orange-accent-1{color:#ffd180!important;caret-color:#ffd180!important}.bg-orange-accent-2{background-color:#ffab40!important;border-color:#ffab40!important}.text-orange-accent-2{color:#ffab40!important;caret-color:#ffab40!important}.bg-orange-accent-3{background-color:#ff9100!important;border-color:#ff9100!important}.text-orange-accent-3{color:#ff9100!important;caret-color:#ff9100!important}.bg-orange-accent-4{background-color:#ff6d00!important;border-color:#ff6d00!important}.text-orange-accent-4{color:#ff6d00!important;caret-color:#ff6d00!important}.bg-deep-orange{background-color:#ff5722!important;border-color:#ff5722!important}.text-deep-orange{color:#ff5722!important;caret-color:#ff5722!important}.bg-deep-orange-lighten-5{background-color:#fbe9e7!important;border-color:#fbe9e7!important}.text-deep-orange-lighten-5{color:#fbe9e7!important;caret-color:#fbe9e7!important}.bg-deep-orange-lighten-4{background-color:#ffccbc!important;border-color:#ffccbc!important}.text-deep-orange-lighten-4{color:#ffccbc!important;caret-color:#ffccbc!important}.bg-deep-orange-lighten-3{background-color:#ffab91!important;border-color:#ffab91!important}.text-deep-orange-lighten-3{color:#ffab91!important;caret-color:#ffab91!important}.bg-deep-orange-lighten-2{background-color:#ff8a65!important;border-color:#ff8a65!important}.text-deep-orange-lighten-2{color:#ff8a65!important;caret-color:#ff8a65!important}.bg-deep-orange-lighten-1{background-color:#ff7043!important;border-color:#ff7043!important}.text-deep-orange-lighten-1{color:#ff7043!important;caret-color:#ff7043!important}.bg-deep-orange-darken-1{background-color:#f4511e!important;border-color:#f4511e!important}.text-deep-orange-darken-1{color:#f4511e!important;caret-color:#f4511e!important}.bg-deep-orange-darken-2{background-color:#e64a19!important;border-color:#e64a19!important}.text-deep-orange-darken-2{color:#e64a19!important;caret-color:#e64a19!important}.bg-deep-orange-darken-3{background-color:#d84315!important;border-color:#d84315!important}.text-deep-orange-darken-3{color:#d84315!important;caret-color:#d84315!important}.bg-deep-orange-darken-4{background-color:#bf360c!important;border-color:#bf360c!important}.text-deep-orange-darken-4{color:#bf360c!important;caret-color:#bf360c!important}.bg-deep-orange-accent-1{background-color:#ff9e80!important;border-color:#ff9e80!important}.text-deep-orange-accent-1{color:#ff9e80!important;caret-color:#ff9e80!important}.bg-deep-orange-accent-2{background-color:#ff6e40!important;border-color:#ff6e40!important}.text-deep-orange-accent-2{color:#ff6e40!important;caret-color:#ff6e40!important}.bg-deep-orange-accent-3{background-color:#ff3d00!important;border-color:#ff3d00!important}.text-deep-orange-accent-3{color:#ff3d00!important;caret-color:#ff3d00!important}.bg-deep-orange-accent-4{background-color:#dd2c00!important;border-color:#dd2c00!important}.text-deep-orange-accent-4{color:#dd2c00!important;caret-color:#dd2c00!important}.bg-brown{background-color:#795548!important;border-color:#795548!important}.text-brown{color:#795548!important;caret-color:#795548!important}.bg-brown-lighten-5{background-color:#efebe9!important;border-color:#efebe9!important}.text-brown-lighten-5{color:#efebe9!important;caret-color:#efebe9!important}.bg-brown-lighten-4{background-color:#d7ccc8!important;border-color:#d7ccc8!important}.text-brown-lighten-4{color:#d7ccc8!important;caret-color:#d7ccc8!important}.bg-brown-lighten-3{background-color:#bcaaa4!important;border-color:#bcaaa4!important}.text-brown-lighten-3{color:#bcaaa4!important;caret-color:#bcaaa4!important}.bg-brown-lighten-2{background-color:#a1887f!important;border-color:#a1887f!important}.text-brown-lighten-2{color:#a1887f!important;caret-color:#a1887f!important}.bg-brown-lighten-1{background-color:#8d6e63!important;border-color:#8d6e63!important}.text-brown-lighten-1{color:#8d6e63!important;caret-color:#8d6e63!important}.bg-brown-darken-1{background-color:#6d4c41!important;border-color:#6d4c41!important}.text-brown-darken-1{color:#6d4c41!important;caret-color:#6d4c41!important}.bg-brown-darken-2{background-color:#5d4037!important;border-color:#5d4037!important}.text-brown-darken-2{color:#5d4037!important;caret-color:#5d4037!important}.bg-brown-darken-3{background-color:#4e342e!important;border-color:#4e342e!important}.text-brown-darken-3{color:#4e342e!important;caret-color:#4e342e!important}.bg-brown-darken-4{background-color:#3e2723!important;border-color:#3e2723!important}.text-brown-darken-4{color:#3e2723!important;caret-color:#3e2723!important}.bg-blue-grey{background-color:#607d8b!important;border-color:#607d8b!important}.text-blue-grey{color:#607d8b!important;caret-color:#607d8b!important}.bg-blue-grey-lighten-5{background-color:#eceff1!important;border-color:#eceff1!important}.text-blue-grey-lighten-5{color:#eceff1!important;caret-color:#eceff1!important}.bg-blue-grey-lighten-4{background-color:#cfd8dc!important;border-color:#cfd8dc!important}.text-blue-grey-lighten-4{color:#cfd8dc!important;caret-color:#cfd8dc!important}.bg-blue-grey-lighten-3{background-color:#b0bec5!important;border-color:#b0bec5!important}.text-blue-grey-lighten-3{color:#b0bec5!important;caret-color:#b0bec5!important}.bg-blue-grey-lighten-2{background-color:#90a4ae!important;border-color:#90a4ae!important}.text-blue-grey-lighten-2{color:#90a4ae!important;caret-color:#90a4ae!important}.bg-blue-grey-lighten-1{background-color:#78909c!important;border-color:#78909c!important}.text-blue-grey-lighten-1{color:#78909c!important;caret-color:#78909c!important}.bg-blue-grey-darken-1{background-color:#546e7a!important;border-color:#546e7a!important}.text-blue-grey-darken-1{color:#546e7a!important;caret-color:#546e7a!important}.bg-blue-grey-darken-2{background-color:#455a64!important;border-color:#455a64!important}.text-blue-grey-darken-2{color:#455a64!important;caret-color:#455a64!important}.bg-blue-grey-darken-3{background-color:#37474f!important;border-color:#37474f!important}.text-blue-grey-darken-3{color:#37474f!important;caret-color:#37474f!important}.bg-blue-grey-darken-4{background-color:#263238!important;border-color:#263238!important}.text-blue-grey-darken-4{color:#263238!important;caret-color:#263238!important}.bg-grey{background-color:#9e9e9e!important;border-color:#9e9e9e!important}.text-grey{color:#9e9e9e!important;caret-color:#9e9e9e!important}.bg-grey-lighten-5{background-color:#fafafa!important;border-color:#fafafa!important}.text-grey-lighten-5{color:#fafafa!important;caret-color:#fafafa!important}.bg-grey-lighten-4{background-color:#f5f5f5!important;border-color:#f5f5f5!important}.text-grey-lighten-4{color:#f5f5f5!important;caret-color:#f5f5f5!important}.bg-grey-lighten-3{background-color:#eee!important;border-color:#eee!important}.text-grey-lighten-3{color:#eee!important;caret-color:#eee!important}.bg-grey-lighten-2{background-color:#e0e0e0!important;border-color:#e0e0e0!important}.text-grey-lighten-2{color:#e0e0e0!important;caret-color:#e0e0e0!important}.bg-grey-lighten-1{background-color:#bdbdbd!important;border-color:#bdbdbd!important}.text-grey-lighten-1{color:#bdbdbd!important;caret-color:#bdbdbd!important}.bg-grey-darken-1{background-color:#757575!important;border-color:#757575!important}.text-grey-darken-1{color:#757575!important;caret-color:#757575!important}.bg-grey-darken-2{background-color:#616161!important;border-color:#616161!important}.text-grey-darken-2{color:#616161!important;caret-color:#616161!important}.bg-grey-darken-3{background-color:#424242!important;border-color:#424242!important}.text-grey-darken-3{color:#424242!important;caret-color:#424242!important}.bg-grey-darken-4{background-color:#212121!important;border-color:#212121!important}.text-grey-darken-4{color:#212121!important;caret-color:#212121!important}.bg-shades-black{background-color:#000!important;border-color:#000!important}.text-shades-black{color:#000!important;caret-color:#000!important}.bg-shades-white{background-color:#fff!important;border-color:#fff!important}.text-shades-white{color:#fff!important;caret-color:#fff!important}.bg-shades-transparent{background-color:transparent!important;border-color:transparent!important}.text-shades-transparent{color:transparent!important;caret-color:transparent!important}/*! + * ress.css • v2.0.4 + * MIT License + * github.com/filipelinhares/ress + */html{box-sizing:border-box;overflow-y:scroll;-webkit-text-size-adjust:100%;word-break:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4}*,:after,:before{background-repeat:no-repeat;box-sizing:inherit}:after,:before{text-decoration:inherit;vertical-align:inherit}*{padding:0;margin:0}hr{overflow:visible;height:0}details,main{display:block}summary{display:list-item}small{font-size:80%}[hidden]{display:none}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}a{background-color:transparent}a:active,a:hover{outline-width:0}code,kbd,pre,samp{font-family:monospace,monospace}pre{font-size:1em}b,strong{font-weight:bolder}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}input{border-radius:0}[disabled]{cursor:default}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{overflow:auto;resize:vertical}button,input,optgroup,select,textarea{font:inherit}optgroup{font-weight:700}button{overflow:visible}button,select{text-transform:none}[role=button],[type=button],[type=reset],[type=submit],button{cursor:pointer;color:inherit}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button:-moz-focusring{outline:1px dotted ButtonText}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}button,input,select,textarea{background-color:transparent;border-style:none}select{-moz-appearance:none;-webkit-appearance:none}select::-ms-expand{display:none}select::-ms-value{color:currentColor}legend{border:0;color:inherit;display:table;white-space:normal;max-width:100%}::-webkit-file-upload-button{-webkit-appearance:button;color:inherit;font:inherit}::-ms-clear,::-ms-reveal{display:none}img{border-style:none}progress{vertical-align:baseline}@media screen{[hidden~=screen]{display:inherit}[hidden~=screen]:not(:active):not(:focus):not(:target){position:absolute!important;clip:rect(0 0 0 0)!important}}[aria-busy=true]{cursor:progress}[aria-controls]{cursor:pointer}[aria-disabled=true]{cursor:default}.elevation-24{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)!important}.elevation-23{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)!important}.elevation-22{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)!important}.elevation-21{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)!important}.elevation-20{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)!important}.elevation-19{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)!important}.elevation-18{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)!important}.elevation-17{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)!important}.elevation-16{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)!important}.elevation-15{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)!important}.elevation-14{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)!important}.elevation-13{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)!important}.elevation-12{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)!important}.elevation-11{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)!important}.elevation-10{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)!important}.elevation-9{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)!important}.elevation-8{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)!important}.elevation-7{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)!important}.elevation-6{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)!important}.elevation-5{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)!important}.elevation-4{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)!important}.elevation-3{box-shadow:0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12)!important}.elevation-2{box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)!important}.elevation-1{box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12)!important}.elevation-0{box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)!important}.carousel-transition-enter-from{transform:translate(100%)}.carousel-transition-leave-from,.carousel-transition-leave-to{position:absolute;top:0;transform:translate(-100%)}.carousel-reverse-transition-enter-from{transform:translate(-100%)}.carousel-reverse-transition-leave-from,.carousel-reverse-transition-leave-to{position:absolute;top:0;transform:translate(100%)}.dialog-transition-enter-active{transition:225ms cubic-bezier(0,0,.2,1)}.dialog-transition-leave-active{transition:125ms cubic-bezier(.4,0,1,1)}.dialog-transition-enter-active,.dialog-transition-leave-active{transition-property:transform,opacity}.dialog-transition-enter-from,.dialog-transition-leave-to{transform:scale(.9);opacity:0}.dialog-transition-enter-to,.dialog-transition-leave-from{opacity:1}.dialog-bottom-transition-enter-from,.dialog-bottom-transition-leave-to{transform:translateY(100%)}.dialog-top-transition-enter-from,.dialog-top-transition-leave-to{transform:translateY(-100%)}.picker-reverse-transition-enter-from,.picker-reverse-transition-leave-to,.picker-transition-enter-from,.picker-transition-leave-to{opacity:0}.picker-reverse-transition-leave-active,.picker-reverse-transition-leave-from,.picker-reverse-transition-leave-to,.picker-transition-leave-active,.picker-transition-leave-from,.picker-transition-leave-to{position:absolute!important}.picker-transition-enter-from{transform:translateY(100%)}.picker-reverse-transition-enter-from,.picker-transition-leave-to{transform:translateY(-100%)}.picker-reverse-transition-leave-to{transform:translateY(100%)}.picker-title-transition-enter-to,.picker-title-transition-leave-from{transform:translate(0)}.picker-title-transition-enter-from{transform:translate(-100%)}.picker-title-transition-leave-to{opacity:0;transform:translate(100%)}.picker-title-transition-leave-active,.picker-title-transition-leave-from,.picker-title-transition-leave-to{position:absolute!important}.tab-transition-enter-from{transform:translate(100%)}.tab-transition-leave-active,.tab-transition-leave-from{position:absolute;top:0}.tab-transition-leave-to{position:absolute}.tab-reverse-transition-enter-from,.tab-transition-leave-to{transform:translate(-100%)}.tab-reverse-transition-leave-from,.tab-reverse-transition-leave-to{top:0;position:absolute;transform:translate(100%)}.expand-transition-enter-active,.expand-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.expand-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.expand-x-transition-enter-active,.expand-x-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.expand-x-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.scale-transition-enter-active,.scale-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.scale-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.scale-transition-enter-from,.scale-transition-leave-from,.scale-transition-leave-to{opacity:0;transform:scale(0)}.scale-rotate-transition-enter-active,.scale-rotate-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.scale-rotate-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.scale-rotate-transition-enter-from,.scale-rotate-transition-leave,.scale-rotate-transition-leave-to{opacity:0;transform:scale(0) rotate(-45deg)}.scale-rotate-reverse-transition-enter-active,.scale-rotate-reverse-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.scale-rotate-reverse-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.scale-rotate-reverse-transition-enter-from,.scale-rotate-reverse-transition-leave-from,.scale-rotate-reverse-transition-leave-to{opacity:0;transform:scale(0) rotate(45deg)}.message-transition-enter-active,.message-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.message-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.message-transition-enter-from,.message-transition-leave-to{opacity:0;transform:translateY(-15px)}.message-transition-leave-active,.message-transition-leave-from{position:absolute}.slide-y-transition-enter-active,.slide-y-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.slide-y-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.slide-y-transition-enter-from,.slide-y-transition-leave-to{opacity:0;transform:translateY(-15px)}.slide-y-reverse-transition-enter-active,.slide-y-reverse-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.slide-y-reverse-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.slide-y-reverse-transition-enter-from,.slide-y-reverse-transition-leave-to{opacity:0;transform:translateY(15px)}.scroll-y-transition-enter-active,.scroll-y-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.scroll-y-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.scroll-y-transition-enter-from,.scroll-y-transition-leave-to{opacity:0}.scroll-y-transition-enter-from{transform:translateY(-15px)}.scroll-y-transition-leave-to{transform:translateY(15px)}.scroll-y-reverse-transition-enter-active,.scroll-y-reverse-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.scroll-y-reverse-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.scroll-y-reverse-transition-enter-from,.scroll-y-reverse-transition-leave-to{opacity:0}.scroll-y-reverse-transition-enter-from{transform:translateY(15px)}.scroll-y-reverse-transition-leave-to{transform:translateY(-15px)}.scroll-x-transition-enter-active,.scroll-x-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.scroll-x-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.scroll-x-transition-enter-from,.scroll-x-transition-leave-to{opacity:0}.scroll-x-transition-enter-from{transform:translateX(-15px)}.scroll-x-transition-leave-to{transform:translateX(15px)}.scroll-x-reverse-transition-enter-active,.scroll-x-reverse-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.scroll-x-reverse-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.scroll-x-reverse-transition-enter-from,.scroll-x-reverse-transition-leave-to{opacity:0}.scroll-x-reverse-transition-enter-from{transform:translateX(15px)}.scroll-x-reverse-transition-leave-to{transform:translateX(-15px)}.slide-x-transition-enter-active,.slide-x-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.slide-x-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.slide-x-transition-enter-from,.slide-x-transition-leave-to{opacity:0;transform:translateX(-15px)}.slide-x-reverse-transition-enter-active,.slide-x-reverse-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.slide-x-reverse-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.slide-x-reverse-transition-enter-from,.slide-x-reverse-transition-leave-to{opacity:0;transform:translateX(15px)}.fade-transition-enter-active,.fade-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.fade-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.fade-transition-enter-from,.fade-transition-leave-to{opacity:0!important}.fab-transition-enter-active,.fab-transition-leave-active{transition:.3s cubic-bezier(.4,0,.2,1)}.fab-transition-move{transition:transform .5s cubic-bezier(.4,0,.2,1)}.fab-transition-enter-from,.fab-transition-leave-to{transform:scale(0) rotate(-45deg)}.v-locale--is-rtl{direction:rtl}.v-locale--is-ltr{direction:ltr}.blockquote{padding:16px 0 16px 24px;font-size:18px;font-weight:300}html{font-family:Roboto,sans-serif;line-height:1.5;font-size:16px;overflow-x:hidden;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:rgba(0,0,0,0);padding-right:var(--v-scrollbar-offset)}html.overflow-y-hidden{overflow-y:hidden!important}:root{--v-theme-background:#fff;--v-theme-on-background:#000;--v-theme-surface:#fff;--v-theme-on-surface:#000;--v-theme-overlay-multiplier:1;--v-scrollbar-offset:0px}@supports(-webkit-touch-callout:none){body{cursor:pointer}}@media only print{.hidden-print-only{display:none!important}}@media only screen{.hidden-screen-only{display:none!important}}@media(max-width:599px){.hidden-xs{display:none!important}}@media(min-width:600px)and (max-width:959px){.hidden-sm{display:none!important}}@media(min-width:960px)and (max-width:1279px){.hidden-md{display:none!important}}@media(min-width:1280px)and (max-width:1919px){.hidden-lg{display:none!important}}@media(min-width:1920px)and (max-width:2559px){.hidden-xl{display:none!important}}@media(min-width:2560px){.hidden-xxl{display:none!important}}@media(min-width:600px){.hidden-sm-and-up{display:none!important}}@media(min-width:960px){.hidden-md-and-up{display:none!important}}@media(min-width:1280px){.hidden-lg-and-up{display:none!important}}@media(min-width:1920px){.hidden-xl-and-up{display:none!important}}@media(max-width:959px){.hidden-sm-and-down{display:none!important}}@media(max-width:1279px){.hidden-md-and-down{display:none!important}}@media(max-width:1919px){.hidden-lg-and-down{display:none!important}}@media(max-width:2559px){.hidden-xl-and-down{display:none!important}}.d-sr-only,.d-sr-only-focusable:not(:focus){border:0!important;clip:rect(0,0,0,0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.font-weight-thin{font-weight:100!important}.font-weight-light{font-weight:300!important}.font-weight-regular{font-weight:400!important}.font-weight-medium{font-weight:500!important}.font-weight-bold{font-weight:700!important}.font-weight-black{font-weight:900!important}.font-italic{font-style:italic!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.float-none{float:none!important}.float-left{float:left!important}.float-right{float:right!important}.v-locale--is-rtl .float-end{float:left!important}.v-locale--is-ltr .float-end,.v-locale--is-rtl .float-start{float:right!important}.v-locale--is-ltr .float-start{float:left!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-start{justify-content:flex-start!important}.justify-end{justify-content:flex-end!important}.justify-center{justify-content:center!important}.justify-space-between{justify-content:space-between!important}.justify-space-around{justify-content:space-around!important}.align-start{align-items:flex-start!important}.align-end{align-items:flex-end!important}.align-center{align-items:center!important}.align-baseline{align-items:baseline!important}.align-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-space-between{align-content:space-between!important}.align-content-space-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-6{order:6!important}.order-7{order:7!important}.order-8{order:8!important}.order-9{order:9!important}.order-10{order:10!important}.order-11{order:11!important}.order-12{order:12!important}.order-last{order:13!important}.ma-0{margin:0!important}.ma-1{margin:4px!important}.ma-2{margin:8px!important}.ma-3{margin:12px!important}.ma-4{margin:16px!important}.ma-5{margin:20px!important}.ma-6{margin:24px!important}.ma-7{margin:28px!important}.ma-8{margin:32px!important}.ma-9{margin:36px!important}.ma-10{margin:40px!important}.ma-11{margin:44px!important}.ma-12{margin:48px!important}.ma-13{margin:52px!important}.ma-14{margin:56px!important}.ma-15{margin:60px!important}.ma-16{margin:64px!important}.ma-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:4px!important;margin-left:4px!important}.mx-2{margin-right:8px!important;margin-left:8px!important}.mx-3{margin-right:12px!important;margin-left:12px!important}.mx-4{margin-right:16px!important;margin-left:16px!important}.mx-5{margin-right:20px!important;margin-left:20px!important}.mx-6{margin-right:24px!important;margin-left:24px!important}.mx-7{margin-right:28px!important;margin-left:28px!important}.mx-8{margin-right:32px!important;margin-left:32px!important}.mx-9{margin-right:36px!important;margin-left:36px!important}.mx-10{margin-right:40px!important;margin-left:40px!important}.mx-11{margin-right:44px!important;margin-left:44px!important}.mx-12{margin-right:48px!important;margin-left:48px!important}.mx-13{margin-right:52px!important;margin-left:52px!important}.mx-14{margin-right:56px!important;margin-left:56px!important}.mx-15{margin-right:60px!important;margin-left:60px!important}.mx-16{margin-right:64px!important;margin-left:64px!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:4px!important;margin-bottom:4px!important}.my-2{margin-top:8px!important;margin-bottom:8px!important}.my-3{margin-top:12px!important;margin-bottom:12px!important}.my-4{margin-top:16px!important;margin-bottom:16px!important}.my-5{margin-top:20px!important;margin-bottom:20px!important}.my-6{margin-top:24px!important;margin-bottom:24px!important}.my-7{margin-top:28px!important;margin-bottom:28px!important}.my-8{margin-top:32px!important;margin-bottom:32px!important}.my-9{margin-top:36px!important;margin-bottom:36px!important}.my-10{margin-top:40px!important;margin-bottom:40px!important}.my-11{margin-top:44px!important;margin-bottom:44px!important}.my-12{margin-top:48px!important;margin-bottom:48px!important}.my-13{margin-top:52px!important;margin-bottom:52px!important}.my-14{margin-top:56px!important;margin-bottom:56px!important}.my-15{margin-top:60px!important;margin-bottom:60px!important}.my-16{margin-top:64px!important;margin-bottom:64px!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:4px!important}.mt-2{margin-top:8px!important}.mt-3{margin-top:12px!important}.mt-4{margin-top:16px!important}.mt-5{margin-top:20px!important}.mt-6{margin-top:24px!important}.mt-7{margin-top:28px!important}.mt-8{margin-top:32px!important}.mt-9{margin-top:36px!important}.mt-10{margin-top:40px!important}.mt-11{margin-top:44px!important}.mt-12{margin-top:48px!important}.mt-13{margin-top:52px!important}.mt-14{margin-top:56px!important}.mt-15{margin-top:60px!important}.mt-16{margin-top:64px!important}.mt-auto{margin-top:auto!important}.mr-0{margin-right:0!important}.mr-1{margin-right:4px!important}.mr-2{margin-right:8px!important}.mr-3{margin-right:12px!important}.mr-4{margin-right:16px!important}.mr-5{margin-right:20px!important}.mr-6{margin-right:24px!important}.mr-7{margin-right:28px!important}.mr-8{margin-right:32px!important}.mr-9{margin-right:36px!important}.mr-10{margin-right:40px!important}.mr-11{margin-right:44px!important}.mr-12{margin-right:48px!important}.mr-13{margin-right:52px!important}.mr-14{margin-right:56px!important}.mr-15{margin-right:60px!important}.mr-16{margin-right:64px!important}.mr-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:4px!important}.mb-2{margin-bottom:8px!important}.mb-3{margin-bottom:12px!important}.mb-4{margin-bottom:16px!important}.mb-5{margin-bottom:20px!important}.mb-6{margin-bottom:24px!important}.mb-7{margin-bottom:28px!important}.mb-8{margin-bottom:32px!important}.mb-9{margin-bottom:36px!important}.mb-10{margin-bottom:40px!important}.mb-11{margin-bottom:44px!important}.mb-12{margin-bottom:48px!important}.mb-13{margin-bottom:52px!important}.mb-14{margin-bottom:56px!important}.mb-15{margin-bottom:60px!important}.mb-16{margin-bottom:64px!important}.mb-auto{margin-bottom:auto!important}.ml-0{margin-left:0!important}.ml-1{margin-left:4px!important}.ml-2{margin-left:8px!important}.ml-3{margin-left:12px!important}.ml-4{margin-left:16px!important}.ml-5{margin-left:20px!important}.ml-6{margin-left:24px!important}.ml-7{margin-left:28px!important}.ml-8{margin-left:32px!important}.ml-9{margin-left:36px!important}.ml-10{margin-left:40px!important}.ml-11{margin-left:44px!important}.ml-12{margin-left:48px!important}.ml-13{margin-left:52px!important}.ml-14{margin-left:56px!important}.ml-15{margin-left:60px!important}.ml-16{margin-left:64px!important}.ml-auto{margin-left:auto!important}.v-locale--is-ltr .ms-0{margin-left:0!important}.v-locale--is-rtl .ms-0{margin-right:0!important}.v-locale--is-ltr .ms-1{margin-left:4px!important}.v-locale--is-rtl .ms-1{margin-right:4px!important}.v-locale--is-ltr .ms-2{margin-left:8px!important}.v-locale--is-rtl .ms-2{margin-right:8px!important}.v-locale--is-ltr .ms-3{margin-left:12px!important}.v-locale--is-rtl .ms-3{margin-right:12px!important}.v-locale--is-ltr .ms-4{margin-left:16px!important}.v-locale--is-rtl .ms-4{margin-right:16px!important}.v-locale--is-ltr .ms-5{margin-left:20px!important}.v-locale--is-rtl .ms-5{margin-right:20px!important}.v-locale--is-ltr .ms-6{margin-left:24px!important}.v-locale--is-rtl .ms-6{margin-right:24px!important}.v-locale--is-ltr .ms-7{margin-left:28px!important}.v-locale--is-rtl .ms-7{margin-right:28px!important}.v-locale--is-ltr .ms-8{margin-left:32px!important}.v-locale--is-rtl .ms-8{margin-right:32px!important}.v-locale--is-ltr .ms-9{margin-left:36px!important}.v-locale--is-rtl .ms-9{margin-right:36px!important}.v-locale--is-ltr .ms-10{margin-left:40px!important}.v-locale--is-rtl .ms-10{margin-right:40px!important}.v-locale--is-ltr .ms-11{margin-left:44px!important}.v-locale--is-rtl .ms-11{margin-right:44px!important}.v-locale--is-ltr .ms-12{margin-left:48px!important}.v-locale--is-rtl .ms-12{margin-right:48px!important}.v-locale--is-ltr .ms-13{margin-left:52px!important}.v-locale--is-rtl .ms-13{margin-right:52px!important}.v-locale--is-ltr .ms-14{margin-left:56px!important}.v-locale--is-rtl .ms-14{margin-right:56px!important}.v-locale--is-ltr .ms-15{margin-left:60px!important}.v-locale--is-rtl .ms-15{margin-right:60px!important}.v-locale--is-ltr .ms-16{margin-left:64px!important}.v-locale--is-rtl .ms-16{margin-right:64px!important}.v-locale--is-ltr .ms-auto{margin-left:auto!important}.v-locale--is-rtl .ms-auto{margin-right:auto!important}.v-locale--is-ltr .me-0{margin-right:0!important}.v-locale--is-rtl .me-0{margin-left:0!important}.v-locale--is-ltr .me-1{margin-right:4px!important}.v-locale--is-rtl .me-1{margin-left:4px!important}.v-locale--is-ltr .me-2{margin-right:8px!important}.v-locale--is-rtl .me-2{margin-left:8px!important}.v-locale--is-ltr .me-3{margin-right:12px!important}.v-locale--is-rtl .me-3{margin-left:12px!important}.v-locale--is-ltr .me-4{margin-right:16px!important}.v-locale--is-rtl .me-4{margin-left:16px!important}.v-locale--is-ltr .me-5{margin-right:20px!important}.v-locale--is-rtl .me-5{margin-left:20px!important}.v-locale--is-ltr .me-6{margin-right:24px!important}.v-locale--is-rtl .me-6{margin-left:24px!important}.v-locale--is-ltr .me-7{margin-right:28px!important}.v-locale--is-rtl .me-7{margin-left:28px!important}.v-locale--is-ltr .me-8{margin-right:32px!important}.v-locale--is-rtl .me-8{margin-left:32px!important}.v-locale--is-ltr .me-9{margin-right:36px!important}.v-locale--is-rtl .me-9{margin-left:36px!important}.v-locale--is-ltr .me-10{margin-right:40px!important}.v-locale--is-rtl .me-10{margin-left:40px!important}.v-locale--is-ltr .me-11{margin-right:44px!important}.v-locale--is-rtl .me-11{margin-left:44px!important}.v-locale--is-ltr .me-12{margin-right:48px!important}.v-locale--is-rtl .me-12{margin-left:48px!important}.v-locale--is-ltr .me-13{margin-right:52px!important}.v-locale--is-rtl .me-13{margin-left:52px!important}.v-locale--is-ltr .me-14{margin-right:56px!important}.v-locale--is-rtl .me-14{margin-left:56px!important}.v-locale--is-ltr .me-15{margin-right:60px!important}.v-locale--is-rtl .me-15{margin-left:60px!important}.v-locale--is-ltr .me-16{margin-right:64px!important}.v-locale--is-rtl .me-16{margin-left:64px!important}.v-locale--is-ltr .me-auto{margin-right:auto!important}.v-locale--is-rtl .me-auto{margin-left:auto!important}.ma-n1{margin:-4px!important}.ma-n2{margin:-8px!important}.ma-n3{margin:-12px!important}.ma-n4{margin:-16px!important}.ma-n5{margin:-20px!important}.ma-n6{margin:-24px!important}.ma-n7{margin:-28px!important}.ma-n8{margin:-32px!important}.ma-n9{margin:-36px!important}.ma-n10{margin:-40px!important}.ma-n11{margin:-44px!important}.ma-n12{margin:-48px!important}.ma-n13{margin:-52px!important}.ma-n14{margin:-56px!important}.ma-n15{margin:-60px!important}.ma-n16{margin:-64px!important}.mx-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-n16{margin-right:-64px!important;margin-left:-64px!important}.my-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-n1{margin-top:-4px!important}.mt-n2{margin-top:-8px!important}.mt-n3{margin-top:-12px!important}.mt-n4{margin-top:-16px!important}.mt-n5{margin-top:-20px!important}.mt-n6{margin-top:-24px!important}.mt-n7{margin-top:-28px!important}.mt-n8{margin-top:-32px!important}.mt-n9{margin-top:-36px!important}.mt-n10{margin-top:-40px!important}.mt-n11{margin-top:-44px!important}.mt-n12{margin-top:-48px!important}.mt-n13{margin-top:-52px!important}.mt-n14{margin-top:-56px!important}.mt-n15{margin-top:-60px!important}.mt-n16{margin-top:-64px!important}.mr-n1{margin-right:-4px!important}.mr-n2{margin-right:-8px!important}.mr-n3{margin-right:-12px!important}.mr-n4{margin-right:-16px!important}.mr-n5{margin-right:-20px!important}.mr-n6{margin-right:-24px!important}.mr-n7{margin-right:-28px!important}.mr-n8{margin-right:-32px!important}.mr-n9{margin-right:-36px!important}.mr-n10{margin-right:-40px!important}.mr-n11{margin-right:-44px!important}.mr-n12{margin-right:-48px!important}.mr-n13{margin-right:-52px!important}.mr-n14{margin-right:-56px!important}.mr-n15{margin-right:-60px!important}.mr-n16{margin-right:-64px!important}.mb-n1{margin-bottom:-4px!important}.mb-n2{margin-bottom:-8px!important}.mb-n3{margin-bottom:-12px!important}.mb-n4{margin-bottom:-16px!important}.mb-n5{margin-bottom:-20px!important}.mb-n6{margin-bottom:-24px!important}.mb-n7{margin-bottom:-28px!important}.mb-n8{margin-bottom:-32px!important}.mb-n9{margin-bottom:-36px!important}.mb-n10{margin-bottom:-40px!important}.mb-n11{margin-bottom:-44px!important}.mb-n12{margin-bottom:-48px!important}.mb-n13{margin-bottom:-52px!important}.mb-n14{margin-bottom:-56px!important}.mb-n15{margin-bottom:-60px!important}.mb-n16{margin-bottom:-64px!important}.ml-n1{margin-left:-4px!important}.ml-n2{margin-left:-8px!important}.ml-n3{margin-left:-12px!important}.ml-n4{margin-left:-16px!important}.ml-n5{margin-left:-20px!important}.ml-n6{margin-left:-24px!important}.ml-n7{margin-left:-28px!important}.ml-n8{margin-left:-32px!important}.ml-n9{margin-left:-36px!important}.ml-n10{margin-left:-40px!important}.ml-n11{margin-left:-44px!important}.ml-n12{margin-left:-48px!important}.ml-n13{margin-left:-52px!important}.ml-n14{margin-left:-56px!important}.ml-n15{margin-left:-60px!important}.ml-n16{margin-left:-64px!important}.v-locale--is-ltr .ms-n1{margin-left:-4px!important}.v-locale--is-rtl .ms-n1{margin-right:-4px!important}.v-locale--is-ltr .ms-n2{margin-left:-8px!important}.v-locale--is-rtl .ms-n2{margin-right:-8px!important}.v-locale--is-ltr .ms-n3{margin-left:-12px!important}.v-locale--is-rtl .ms-n3{margin-right:-12px!important}.v-locale--is-ltr .ms-n4{margin-left:-16px!important}.v-locale--is-rtl .ms-n4{margin-right:-16px!important}.v-locale--is-ltr .ms-n5{margin-left:-20px!important}.v-locale--is-rtl .ms-n5{margin-right:-20px!important}.v-locale--is-ltr .ms-n6{margin-left:-24px!important}.v-locale--is-rtl .ms-n6{margin-right:-24px!important}.v-locale--is-ltr .ms-n7{margin-left:-28px!important}.v-locale--is-rtl .ms-n7{margin-right:-28px!important}.v-locale--is-ltr .ms-n8{margin-left:-32px!important}.v-locale--is-rtl .ms-n8{margin-right:-32px!important}.v-locale--is-ltr .ms-n9{margin-left:-36px!important}.v-locale--is-rtl .ms-n9{margin-right:-36px!important}.v-locale--is-ltr .ms-n10{margin-left:-40px!important}.v-locale--is-rtl .ms-n10{margin-right:-40px!important}.v-locale--is-ltr .ms-n11{margin-left:-44px!important}.v-locale--is-rtl .ms-n11{margin-right:-44px!important}.v-locale--is-ltr .ms-n12{margin-left:-48px!important}.v-locale--is-rtl .ms-n12{margin-right:-48px!important}.v-locale--is-ltr .ms-n13{margin-left:-52px!important}.v-locale--is-rtl .ms-n13{margin-right:-52px!important}.v-locale--is-ltr .ms-n14{margin-left:-56px!important}.v-locale--is-rtl .ms-n14{margin-right:-56px!important}.v-locale--is-ltr .ms-n15{margin-left:-60px!important}.v-locale--is-rtl .ms-n15{margin-right:-60px!important}.v-locale--is-ltr .ms-n16{margin-left:-64px!important}.v-locale--is-rtl .ms-n16{margin-right:-64px!important}.v-locale--is-ltr .me-n1{margin-right:-4px!important}.v-locale--is-rtl .me-n1{margin-left:-4px!important}.v-locale--is-ltr .me-n2{margin-right:-8px!important}.v-locale--is-rtl .me-n2{margin-left:-8px!important}.v-locale--is-ltr .me-n3{margin-right:-12px!important}.v-locale--is-rtl .me-n3{margin-left:-12px!important}.v-locale--is-ltr .me-n4{margin-right:-16px!important}.v-locale--is-rtl .me-n4{margin-left:-16px!important}.v-locale--is-ltr .me-n5{margin-right:-20px!important}.v-locale--is-rtl .me-n5{margin-left:-20px!important}.v-locale--is-ltr .me-n6{margin-right:-24px!important}.v-locale--is-rtl .me-n6{margin-left:-24px!important}.v-locale--is-ltr .me-n7{margin-right:-28px!important}.v-locale--is-rtl .me-n7{margin-left:-28px!important}.v-locale--is-ltr .me-n8{margin-right:-32px!important}.v-locale--is-rtl .me-n8{margin-left:-32px!important}.v-locale--is-ltr .me-n9{margin-right:-36px!important}.v-locale--is-rtl .me-n9{margin-left:-36px!important}.v-locale--is-ltr .me-n10{margin-right:-40px!important}.v-locale--is-rtl .me-n10{margin-left:-40px!important}.v-locale--is-ltr .me-n11{margin-right:-44px!important}.v-locale--is-rtl .me-n11{margin-left:-44px!important}.v-locale--is-ltr .me-n12{margin-right:-48px!important}.v-locale--is-rtl .me-n12{margin-left:-48px!important}.v-locale--is-ltr .me-n13{margin-right:-52px!important}.v-locale--is-rtl .me-n13{margin-left:-52px!important}.v-locale--is-ltr .me-n14{margin-right:-56px!important}.v-locale--is-rtl .me-n14{margin-left:-56px!important}.v-locale--is-ltr .me-n15{margin-right:-60px!important}.v-locale--is-rtl .me-n15{margin-left:-60px!important}.v-locale--is-ltr .me-n16{margin-right:-64px!important}.v-locale--is-rtl .me-n16{margin-left:-64px!important}.pa-0{padding:0!important}.pa-1{padding:4px!important}.pa-2{padding:8px!important}.pa-3{padding:12px!important}.pa-4{padding:16px!important}.pa-5{padding:20px!important}.pa-6{padding:24px!important}.pa-7{padding:28px!important}.pa-8{padding:32px!important}.pa-9{padding:36px!important}.pa-10{padding:40px!important}.pa-11{padding:44px!important}.pa-12{padding:48px!important}.pa-13{padding:52px!important}.pa-14{padding:56px!important}.pa-15{padding:60px!important}.pa-16{padding:64px!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:4px!important;padding-left:4px!important}.px-2{padding-right:8px!important;padding-left:8px!important}.px-3{padding-right:12px!important;padding-left:12px!important}.px-4{padding-right:16px!important;padding-left:16px!important}.px-5{padding-right:20px!important;padding-left:20px!important}.px-6{padding-right:24px!important;padding-left:24px!important}.px-7{padding-right:28px!important;padding-left:28px!important}.px-8{padding-right:32px!important;padding-left:32px!important}.px-9{padding-right:36px!important;padding-left:36px!important}.px-10{padding-right:40px!important;padding-left:40px!important}.px-11{padding-right:44px!important;padding-left:44px!important}.px-12{padding-right:48px!important;padding-left:48px!important}.px-13{padding-right:52px!important;padding-left:52px!important}.px-14{padding-right:56px!important;padding-left:56px!important}.px-15{padding-right:60px!important;padding-left:60px!important}.px-16{padding-right:64px!important;padding-left:64px!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:4px!important;padding-bottom:4px!important}.py-2{padding-top:8px!important;padding-bottom:8px!important}.py-3{padding-top:12px!important;padding-bottom:12px!important}.py-4{padding-top:16px!important;padding-bottom:16px!important}.py-5{padding-top:20px!important;padding-bottom:20px!important}.py-6{padding-top:24px!important;padding-bottom:24px!important}.py-7{padding-top:28px!important;padding-bottom:28px!important}.py-8{padding-top:32px!important;padding-bottom:32px!important}.py-9{padding-top:36px!important;padding-bottom:36px!important}.py-10{padding-top:40px!important;padding-bottom:40px!important}.py-11{padding-top:44px!important;padding-bottom:44px!important}.py-12{padding-top:48px!important;padding-bottom:48px!important}.py-13{padding-top:52px!important;padding-bottom:52px!important}.py-14{padding-top:56px!important;padding-bottom:56px!important}.py-15{padding-top:60px!important;padding-bottom:60px!important}.py-16{padding-top:64px!important;padding-bottom:64px!important}.pt-0{padding-top:0!important}.pt-1{padding-top:4px!important}.pt-2{padding-top:8px!important}.pt-3{padding-top:12px!important}.pt-4{padding-top:16px!important}.pt-5{padding-top:20px!important}.pt-6{padding-top:24px!important}.pt-7{padding-top:28px!important}.pt-8{padding-top:32px!important}.pt-9{padding-top:36px!important}.pt-10{padding-top:40px!important}.pt-11{padding-top:44px!important}.pt-12{padding-top:48px!important}.pt-13{padding-top:52px!important}.pt-14{padding-top:56px!important}.pt-15{padding-top:60px!important}.pt-16{padding-top:64px!important}.pr-0{padding-right:0!important}.pr-1{padding-right:4px!important}.pr-2{padding-right:8px!important}.pr-3{padding-right:12px!important}.pr-4{padding-right:16px!important}.pr-5{padding-right:20px!important}.pr-6{padding-right:24px!important}.pr-7{padding-right:28px!important}.pr-8{padding-right:32px!important}.pr-9{padding-right:36px!important}.pr-10{padding-right:40px!important}.pr-11{padding-right:44px!important}.pr-12{padding-right:48px!important}.pr-13{padding-right:52px!important}.pr-14{padding-right:56px!important}.pr-15{padding-right:60px!important}.pr-16{padding-right:64px!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:4px!important}.pb-2{padding-bottom:8px!important}.pb-3{padding-bottom:12px!important}.pb-4{padding-bottom:16px!important}.pb-5{padding-bottom:20px!important}.pb-6{padding-bottom:24px!important}.pb-7{padding-bottom:28px!important}.pb-8{padding-bottom:32px!important}.pb-9{padding-bottom:36px!important}.pb-10{padding-bottom:40px!important}.pb-11{padding-bottom:44px!important}.pb-12{padding-bottom:48px!important}.pb-13{padding-bottom:52px!important}.pb-14{padding-bottom:56px!important}.pb-15{padding-bottom:60px!important}.pb-16{padding-bottom:64px!important}.pl-0{padding-left:0!important}.pl-1{padding-left:4px!important}.pl-2{padding-left:8px!important}.pl-3{padding-left:12px!important}.pl-4{padding-left:16px!important}.pl-5{padding-left:20px!important}.pl-6{padding-left:24px!important}.pl-7{padding-left:28px!important}.pl-8{padding-left:32px!important}.pl-9{padding-left:36px!important}.pl-10{padding-left:40px!important}.pl-11{padding-left:44px!important}.pl-12{padding-left:48px!important}.pl-13{padding-left:52px!important}.pl-14{padding-left:56px!important}.pl-15{padding-left:60px!important}.pl-16{padding-left:64px!important}.v-locale--is-ltr .ps-0{padding-left:0!important}.v-locale--is-rtl .ps-0{padding-right:0!important}.v-locale--is-ltr .ps-1{padding-left:4px!important}.v-locale--is-rtl .ps-1{padding-right:4px!important}.v-locale--is-ltr .ps-2{padding-left:8px!important}.v-locale--is-rtl .ps-2{padding-right:8px!important}.v-locale--is-ltr .ps-3{padding-left:12px!important}.v-locale--is-rtl .ps-3{padding-right:12px!important}.v-locale--is-ltr .ps-4{padding-left:16px!important}.v-locale--is-rtl .ps-4{padding-right:16px!important}.v-locale--is-ltr .ps-5{padding-left:20px!important}.v-locale--is-rtl .ps-5{padding-right:20px!important}.v-locale--is-ltr .ps-6{padding-left:24px!important}.v-locale--is-rtl .ps-6{padding-right:24px!important}.v-locale--is-ltr .ps-7{padding-left:28px!important}.v-locale--is-rtl .ps-7{padding-right:28px!important}.v-locale--is-ltr .ps-8{padding-left:32px!important}.v-locale--is-rtl .ps-8{padding-right:32px!important}.v-locale--is-ltr .ps-9{padding-left:36px!important}.v-locale--is-rtl .ps-9{padding-right:36px!important}.v-locale--is-ltr .ps-10{padding-left:40px!important}.v-locale--is-rtl .ps-10{padding-right:40px!important}.v-locale--is-ltr .ps-11{padding-left:44px!important}.v-locale--is-rtl .ps-11{padding-right:44px!important}.v-locale--is-ltr .ps-12{padding-left:48px!important}.v-locale--is-rtl .ps-12{padding-right:48px!important}.v-locale--is-ltr .ps-13{padding-left:52px!important}.v-locale--is-rtl .ps-13{padding-right:52px!important}.v-locale--is-ltr .ps-14{padding-left:56px!important}.v-locale--is-rtl .ps-14{padding-right:56px!important}.v-locale--is-ltr .ps-15{padding-left:60px!important}.v-locale--is-rtl .ps-15{padding-right:60px!important}.v-locale--is-ltr .ps-16{padding-left:64px!important}.v-locale--is-rtl .ps-16{padding-right:64px!important}.v-locale--is-ltr .pe-0{padding-right:0!important}.v-locale--is-rtl .pe-0{padding-left:0!important}.v-locale--is-ltr .pe-1{padding-right:4px!important}.v-locale--is-rtl .pe-1{padding-left:4px!important}.v-locale--is-ltr .pe-2{padding-right:8px!important}.v-locale--is-rtl .pe-2{padding-left:8px!important}.v-locale--is-ltr .pe-3{padding-right:12px!important}.v-locale--is-rtl .pe-3{padding-left:12px!important}.v-locale--is-ltr .pe-4{padding-right:16px!important}.v-locale--is-rtl .pe-4{padding-left:16px!important}.v-locale--is-ltr .pe-5{padding-right:20px!important}.v-locale--is-rtl .pe-5{padding-left:20px!important}.v-locale--is-ltr .pe-6{padding-right:24px!important}.v-locale--is-rtl .pe-6{padding-left:24px!important}.v-locale--is-ltr .pe-7{padding-right:28px!important}.v-locale--is-rtl .pe-7{padding-left:28px!important}.v-locale--is-ltr .pe-8{padding-right:32px!important}.v-locale--is-rtl .pe-8{padding-left:32px!important}.v-locale--is-ltr .pe-9{padding-right:36px!important}.v-locale--is-rtl .pe-9{padding-left:36px!important}.v-locale--is-ltr .pe-10{padding-right:40px!important}.v-locale--is-rtl .pe-10{padding-left:40px!important}.v-locale--is-ltr .pe-11{padding-right:44px!important}.v-locale--is-rtl .pe-11{padding-left:44px!important}.v-locale--is-ltr .pe-12{padding-right:48px!important}.v-locale--is-rtl .pe-12{padding-left:48px!important}.v-locale--is-ltr .pe-13{padding-right:52px!important}.v-locale--is-rtl .pe-13{padding-left:52px!important}.v-locale--is-ltr .pe-14{padding-right:56px!important}.v-locale--is-rtl .pe-14{padding-left:56px!important}.v-locale--is-ltr .pe-15{padding-right:60px!important}.v-locale--is-rtl .pe-15{padding-left:60px!important}.v-locale--is-ltr .pe-16{padding-right:64px!important}.v-locale--is-rtl .pe-16{padding-left:64px!important}.rounded-0{border-radius:0!important}.rounded-sm{border-radius:2px!important}.rounded{border-radius:4px!important}.rounded-lg{border-radius:8px!important}.rounded-xl{border-radius:24px!important}.rounded-pill{border-radius:9999px!important}.rounded-circle{border-radius:50%!important}.rounded-shaped{border-radius:24px 0!important}.rounded-t-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-t-sm{border-top-left-radius:2px!important;border-top-right-radius:2px!important}.rounded-t{border-top-left-radius:4px!important;border-top-right-radius:4px!important}.rounded-t-lg{border-top-left-radius:8px!important;border-top-right-radius:8px!important}.rounded-t-xl{border-top-left-radius:24px!important;border-top-right-radius:24px!important}.rounded-t-pill{border-top-left-radius:9999px!important;border-top-right-radius:9999px!important}.rounded-t-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-t-shaped{border-top-left-radius:24px!important}.rounded-r-0,.rounded-t-shaped{border-top-right-radius:0!important}.rounded-r-0{border-bottom-right-radius:0!important}.rounded-r-sm{border-top-right-radius:2px!important;border-bottom-right-radius:2px!important}.rounded-r{border-top-right-radius:4px!important;border-bottom-right-radius:4px!important}.rounded-r-lg{border-top-right-radius:8px!important;border-bottom-right-radius:8px!important}.rounded-r-xl{border-top-right-radius:24px!important;border-bottom-right-radius:24px!important}.rounded-r-pill{border-top-right-radius:9999px!important;border-bottom-right-radius:9999px!important}.rounded-r-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-r-shaped{border-top-right-radius:24px!important}.rounded-b-0,.rounded-r-shaped{border-bottom-right-radius:0!important}.rounded-b-0{border-bottom-left-radius:0!important}.rounded-b-sm{border-bottom-left-radius:2px!important;border-bottom-right-radius:2px!important}.rounded-b{border-bottom-left-radius:4px!important;border-bottom-right-radius:4px!important}.rounded-b-lg{border-bottom-left-radius:8px!important;border-bottom-right-radius:8px!important}.rounded-b-xl{border-bottom-left-radius:24px!important;border-bottom-right-radius:24px!important}.rounded-b-pill{border-bottom-left-radius:9999px!important;border-bottom-right-radius:9999px!important}.rounded-b-circle{border-bottom-left-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-b-shaped{border-bottom-left-radius:24px!important;border-bottom-right-radius:0!important}.rounded-l-0{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.rounded-l-sm{border-top-left-radius:2px!important;border-bottom-left-radius:2px!important}.rounded-l{border-top-left-radius:4px!important;border-bottom-left-radius:4px!important}.rounded-l-lg{border-top-left-radius:8px!important;border-bottom-left-radius:8px!important}.rounded-l-xl{border-top-left-radius:24px!important;border-bottom-left-radius:24px!important}.rounded-l-pill{border-top-left-radius:9999px!important;border-bottom-left-radius:9999px!important}.rounded-l-circle{border-top-left-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-l-shaped{border-top-left-radius:24px!important;border-bottom-left-radius:0!important}.rounded-tl-0{border-top-left-radius:0!important}.rounded-tl-sm{border-top-left-radius:2px!important}.rounded-tl{border-top-left-radius:4px!important}.rounded-tl-lg{border-top-left-radius:8px!important}.rounded-tl-xl{border-top-left-radius:24px!important}.rounded-tl-pill{border-top-left-radius:9999px!important}.rounded-tl-circle{border-top-left-radius:50%!important}.rounded-tl-shaped{border-top-left-radius:24px 0!important}.rounded-tr-0{border-top-right-radius:0!important}.rounded-tr-sm{border-top-right-radius:2px!important}.rounded-tr{border-top-right-radius:4px!important}.rounded-tr-lg{border-top-right-radius:8px!important}.rounded-tr-xl{border-top-right-radius:24px!important}.rounded-tr-pill{border-top-right-radius:9999px!important}.rounded-tr-circle{border-top-right-radius:50%!important}.rounded-tr-shaped{border-top-right-radius:24px 0!important}.rounded-br-0{border-bottom-right-radius:0!important}.rounded-br-sm{border-bottom-right-radius:2px!important}.rounded-br{border-bottom-right-radius:4px!important}.rounded-br-lg{border-bottom-right-radius:8px!important}.rounded-br-xl{border-bottom-right-radius:24px!important}.rounded-br-pill{border-bottom-right-radius:9999px!important}.rounded-br-circle{border-bottom-right-radius:50%!important}.rounded-br-shaped{border-bottom-right-radius:24px 0!important}.rounded-bl-0{border-bottom-left-radius:0!important}.rounded-bl-sm{border-bottom-left-radius:2px!important}.rounded-bl{border-bottom-left-radius:4px!important}.rounded-bl-lg{border-bottom-left-radius:8px!important}.rounded-bl-xl{border-bottom-left-radius:24px!important}.rounded-bl-pill{border-bottom-left-radius:9999px!important}.rounded-bl-circle{border-bottom-left-radius:50%!important}.rounded-bl-shaped{border-bottom-left-radius:24px 0!important}.border-0{border-width:0!important}.border,.border-0{border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border{border-width:thin!important}.border-sm{border-width:1px!important}.border-md,.border-sm{border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-md{border-width:2px!important}.border-lg{border-width:4px!important}.border-lg,.border-xl{border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-xl{border-width:8px!important}.border-opacity-0{--v-border-opacity:0!important}.border-opacity{--v-border-opacity:.12!important}.border-opacity-25{--v-border-opacity:.25!important}.border-opacity-50{--v-border-opacity:.5!important}.border-opacity-75{--v-border-opacity:.75!important}.border-opacity-100{--v-border-opacity:1!important}.border-t-0{border-top-width:0!important}.border-t,.border-t-0{border-top-style:solid!important;border-top-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t{border-top-width:thin!important}.border-t-sm{border-top-width:1px!important}.border-t-md,.border-t-sm{border-top-style:solid!important;border-top-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-md{border-top-width:2px!important}.border-t-lg{border-top-width:4px!important}.border-t-lg,.border-t-xl{border-top-style:solid!important;border-top-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-xl{border-top-width:8px!important}.border-r-0{border-right-width:0!important}.border-r,.border-r-0{border-right-style:solid!important;border-right-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-r{border-right-width:thin!important}.border-r-sm{border-right-width:1px!important}.border-r-md,.border-r-sm{border-right-style:solid!important;border-right-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-r-md{border-right-width:2px!important}.border-r-lg{border-right-width:4px!important}.border-r-lg,.border-r-xl{border-right-style:solid!important;border-right-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-r-xl{border-right-width:8px!important}.border-b-0{border-bottom-width:0!important}.border-b,.border-b-0{border-bottom-style:solid!important;border-bottom-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b{border-bottom-width:thin!important}.border-b-sm{border-bottom-width:1px!important}.border-b-md,.border-b-sm{border-bottom-style:solid!important;border-bottom-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-md{border-bottom-width:2px!important}.border-b-lg{border-bottom-width:4px!important}.border-b-lg,.border-b-xl{border-bottom-style:solid!important;border-bottom-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-xl{border-bottom-width:8px!important}.border-l-0{border-left-width:0!important}.border-l,.border-l-0{border-left-style:solid!important;border-left-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-l{border-left-width:thin!important}.border-l-sm{border-left-width:1px!important}.border-l-md,.border-l-sm{border-left-style:solid!important;border-left-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-l-md{border-left-width:2px!important}.border-l-lg{border-left-width:4px!important}.border-l-lg,.border-l-xl{border-left-style:solid!important;border-left-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-l-xl{border-left-width:8px!important}.border-solid{border-style:solid!important}.border-dashed{border-style:dashed!important}.border-dotted{border-style:dotted!important}.border-double{border-style:double!important}.border-none{border-style:none!important}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}.text-justify{text-align:justify!important}.text-start{text-align:start!important}.text-end{text-align:end!important}.text-decoration-line-through{text-decoration:line-through!important}.text-decoration-none{text-decoration:none!important}.text-decoration-overline{text-decoration:overline!important}.text-decoration-underline{text-decoration:underline!important}.text-wrap{white-space:normal!important}.text-no-wrap{white-space:nowrap!important}.text-pre{white-space:pre!important}.text-pre-line{white-space:pre-line!important}.text-pre-wrap{white-space:pre-wrap!important}.text-break{overflow-wrap:break-word!important;word-break:break-word!important}.text-high-emphasis{opacity:var(--v-high-emphasis-opacity)!important}.text-medium-emphasis{opacity:var(--v-medium-emphasis-opacity)!important}.text-disabled{opacity:var(--v-disabled-opacity)!important}.text-truncate{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}.text-none{text-transform:none!important}.text-capitalize{text-transform:capitalize!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-h1{font-size:6rem!important;line-height:6rem;letter-spacing:-.015625em!important}.text-h1,.text-h2{font-weight:300;font-family:Roboto,sans-serif!important}.text-h2{font-size:3.75rem!important;line-height:3.75rem;letter-spacing:-.0083333333em!important}.text-h3{font-size:3rem!important;line-height:3.125rem;letter-spacing:normal!important}.text-h3,.text-h4{font-weight:400;font-family:Roboto,sans-serif!important}.text-h4{font-size:2.125rem!important;line-height:2.5rem;letter-spacing:.0073529412em!important}.text-h5{font-size:1.5rem!important;font-weight:400;letter-spacing:normal!important}.text-h5,.text-h6{line-height:2rem;font-family:Roboto,sans-serif!important}.text-h6{font-size:1.25rem!important;font-weight:500;letter-spacing:.0125em!important}.text-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important}.text-subtitle-1,.text-subtitle-2{font-family:Roboto,sans-serif!important}.text-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important}.text-body-1{font-size:1rem!important;line-height:1.5rem;letter-spacing:.03125em!important}.text-body-1,.text-body-2{font-weight:400;font-family:Roboto,sans-serif!important}.text-body-2{line-height:1.25rem;letter-spacing:.0178571429em!important}.text-body-2,.text-button{font-size:.875rem!important}.text-button{font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif!important;text-transform:uppercase!important}.text-caption{font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important}.text-caption,.text-overline{font-size:.75rem!important;font-family:Roboto,sans-serif!important}.text-overline{font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;text-transform:uppercase!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-fixed{position:fixed!important}.position-absolute{position:absolute!important}.position-sticky{position:sticky!important}@media(min-width:600px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.float-sm-none{float:none!important}.float-sm-left{float:left!important}.float-sm-right{float:right!important}.v-locale--is-rtl .float-sm-end{float:left!important}.v-locale--is-ltr .float-sm-end,.v-locale--is-rtl .float-sm-start{float:right!important}.v-locale--is-ltr .float-sm-start{float:left!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-sm-start{justify-content:flex-start!important}.justify-sm-end{justify-content:flex-end!important}.justify-sm-center{justify-content:center!important}.justify-sm-space-between{justify-content:space-between!important}.justify-sm-space-around{justify-content:space-around!important}.align-sm-start{align-items:flex-start!important}.align-sm-end{align-items:flex-end!important}.align-sm-center{align-items:center!important}.align-sm-baseline{align-items:baseline!important}.align-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-space-between{align-content:space-between!important}.align-content-sm-space-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-6{order:6!important}.order-sm-7{order:7!important}.order-sm-8{order:8!important}.order-sm-9{order:9!important}.order-sm-10{order:10!important}.order-sm-11{order:11!important}.order-sm-12{order:12!important}.order-sm-last{order:13!important}.ma-sm-0{margin:0!important}.ma-sm-1{margin:4px!important}.ma-sm-2{margin:8px!important}.ma-sm-3{margin:12px!important}.ma-sm-4{margin:16px!important}.ma-sm-5{margin:20px!important}.ma-sm-6{margin:24px!important}.ma-sm-7{margin:28px!important}.ma-sm-8{margin:32px!important}.ma-sm-9{margin:36px!important}.ma-sm-10{margin:40px!important}.ma-sm-11{margin:44px!important}.ma-sm-12{margin:48px!important}.ma-sm-13{margin:52px!important}.ma-sm-14{margin:56px!important}.ma-sm-15{margin:60px!important}.ma-sm-16{margin:64px!important}.ma-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:4px!important;margin-left:4px!important}.mx-sm-2{margin-right:8px!important;margin-left:8px!important}.mx-sm-3{margin-right:12px!important;margin-left:12px!important}.mx-sm-4{margin-right:16px!important;margin-left:16px!important}.mx-sm-5{margin-right:20px!important;margin-left:20px!important}.mx-sm-6{margin-right:24px!important;margin-left:24px!important}.mx-sm-7{margin-right:28px!important;margin-left:28px!important}.mx-sm-8{margin-right:32px!important;margin-left:32px!important}.mx-sm-9{margin-right:36px!important;margin-left:36px!important}.mx-sm-10{margin-right:40px!important;margin-left:40px!important}.mx-sm-11{margin-right:44px!important;margin-left:44px!important}.mx-sm-12{margin-right:48px!important;margin-left:48px!important}.mx-sm-13{margin-right:52px!important;margin-left:52px!important}.mx-sm-14{margin-right:56px!important;margin-left:56px!important}.mx-sm-15{margin-right:60px!important;margin-left:60px!important}.mx-sm-16{margin-right:64px!important;margin-left:64px!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:4px!important;margin-bottom:4px!important}.my-sm-2{margin-top:8px!important;margin-bottom:8px!important}.my-sm-3{margin-top:12px!important;margin-bottom:12px!important}.my-sm-4{margin-top:16px!important;margin-bottom:16px!important}.my-sm-5{margin-top:20px!important;margin-bottom:20px!important}.my-sm-6{margin-top:24px!important;margin-bottom:24px!important}.my-sm-7{margin-top:28px!important;margin-bottom:28px!important}.my-sm-8{margin-top:32px!important;margin-bottom:32px!important}.my-sm-9{margin-top:36px!important;margin-bottom:36px!important}.my-sm-10{margin-top:40px!important;margin-bottom:40px!important}.my-sm-11{margin-top:44px!important;margin-bottom:44px!important}.my-sm-12{margin-top:48px!important;margin-bottom:48px!important}.my-sm-13{margin-top:52px!important;margin-bottom:52px!important}.my-sm-14{margin-top:56px!important;margin-bottom:56px!important}.my-sm-15{margin-top:60px!important;margin-bottom:60px!important}.my-sm-16{margin-top:64px!important;margin-bottom:64px!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:4px!important}.mt-sm-2{margin-top:8px!important}.mt-sm-3{margin-top:12px!important}.mt-sm-4{margin-top:16px!important}.mt-sm-5{margin-top:20px!important}.mt-sm-6{margin-top:24px!important}.mt-sm-7{margin-top:28px!important}.mt-sm-8{margin-top:32px!important}.mt-sm-9{margin-top:36px!important}.mt-sm-10{margin-top:40px!important}.mt-sm-11{margin-top:44px!important}.mt-sm-12{margin-top:48px!important}.mt-sm-13{margin-top:52px!important}.mt-sm-14{margin-top:56px!important}.mt-sm-15{margin-top:60px!important}.mt-sm-16{margin-top:64px!important}.mt-sm-auto{margin-top:auto!important}.mr-sm-0{margin-right:0!important}.mr-sm-1{margin-right:4px!important}.mr-sm-2{margin-right:8px!important}.mr-sm-3{margin-right:12px!important}.mr-sm-4{margin-right:16px!important}.mr-sm-5{margin-right:20px!important}.mr-sm-6{margin-right:24px!important}.mr-sm-7{margin-right:28px!important}.mr-sm-8{margin-right:32px!important}.mr-sm-9{margin-right:36px!important}.mr-sm-10{margin-right:40px!important}.mr-sm-11{margin-right:44px!important}.mr-sm-12{margin-right:48px!important}.mr-sm-13{margin-right:52px!important}.mr-sm-14{margin-right:56px!important}.mr-sm-15{margin-right:60px!important}.mr-sm-16{margin-right:64px!important}.mr-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:4px!important}.mb-sm-2{margin-bottom:8px!important}.mb-sm-3{margin-bottom:12px!important}.mb-sm-4{margin-bottom:16px!important}.mb-sm-5{margin-bottom:20px!important}.mb-sm-6{margin-bottom:24px!important}.mb-sm-7{margin-bottom:28px!important}.mb-sm-8{margin-bottom:32px!important}.mb-sm-9{margin-bottom:36px!important}.mb-sm-10{margin-bottom:40px!important}.mb-sm-11{margin-bottom:44px!important}.mb-sm-12{margin-bottom:48px!important}.mb-sm-13{margin-bottom:52px!important}.mb-sm-14{margin-bottom:56px!important}.mb-sm-15{margin-bottom:60px!important}.mb-sm-16{margin-bottom:64px!important}.mb-sm-auto{margin-bottom:auto!important}.ml-sm-0{margin-left:0!important}.ml-sm-1{margin-left:4px!important}.ml-sm-2{margin-left:8px!important}.ml-sm-3{margin-left:12px!important}.ml-sm-4{margin-left:16px!important}.ml-sm-5{margin-left:20px!important}.ml-sm-6{margin-left:24px!important}.ml-sm-7{margin-left:28px!important}.ml-sm-8{margin-left:32px!important}.ml-sm-9{margin-left:36px!important}.ml-sm-10{margin-left:40px!important}.ml-sm-11{margin-left:44px!important}.ml-sm-12{margin-left:48px!important}.ml-sm-13{margin-left:52px!important}.ml-sm-14{margin-left:56px!important}.ml-sm-15{margin-left:60px!important}.ml-sm-16{margin-left:64px!important}.ml-sm-auto{margin-left:auto!important}.v-locale--is-ltr .ms-sm-0{margin-left:0!important}.v-locale--is-rtl .ms-sm-0{margin-right:0!important}.v-locale--is-ltr .ms-sm-1{margin-left:4px!important}.v-locale--is-rtl .ms-sm-1{margin-right:4px!important}.v-locale--is-ltr .ms-sm-2{margin-left:8px!important}.v-locale--is-rtl .ms-sm-2{margin-right:8px!important}.v-locale--is-ltr .ms-sm-3{margin-left:12px!important}.v-locale--is-rtl .ms-sm-3{margin-right:12px!important}.v-locale--is-ltr .ms-sm-4{margin-left:16px!important}.v-locale--is-rtl .ms-sm-4{margin-right:16px!important}.v-locale--is-ltr .ms-sm-5{margin-left:20px!important}.v-locale--is-rtl .ms-sm-5{margin-right:20px!important}.v-locale--is-ltr .ms-sm-6{margin-left:24px!important}.v-locale--is-rtl .ms-sm-6{margin-right:24px!important}.v-locale--is-ltr .ms-sm-7{margin-left:28px!important}.v-locale--is-rtl .ms-sm-7{margin-right:28px!important}.v-locale--is-ltr .ms-sm-8{margin-left:32px!important}.v-locale--is-rtl .ms-sm-8{margin-right:32px!important}.v-locale--is-ltr .ms-sm-9{margin-left:36px!important}.v-locale--is-rtl .ms-sm-9{margin-right:36px!important}.v-locale--is-ltr .ms-sm-10{margin-left:40px!important}.v-locale--is-rtl .ms-sm-10{margin-right:40px!important}.v-locale--is-ltr .ms-sm-11{margin-left:44px!important}.v-locale--is-rtl .ms-sm-11{margin-right:44px!important}.v-locale--is-ltr .ms-sm-12{margin-left:48px!important}.v-locale--is-rtl .ms-sm-12{margin-right:48px!important}.v-locale--is-ltr .ms-sm-13{margin-left:52px!important}.v-locale--is-rtl .ms-sm-13{margin-right:52px!important}.v-locale--is-ltr .ms-sm-14{margin-left:56px!important}.v-locale--is-rtl .ms-sm-14{margin-right:56px!important}.v-locale--is-ltr .ms-sm-15{margin-left:60px!important}.v-locale--is-rtl .ms-sm-15{margin-right:60px!important}.v-locale--is-ltr .ms-sm-16{margin-left:64px!important}.v-locale--is-rtl .ms-sm-16{margin-right:64px!important}.v-locale--is-ltr .ms-sm-auto{margin-left:auto!important}.v-locale--is-rtl .ms-sm-auto{margin-right:auto!important}.v-locale--is-ltr .me-sm-0{margin-right:0!important}.v-locale--is-rtl .me-sm-0{margin-left:0!important}.v-locale--is-ltr .me-sm-1{margin-right:4px!important}.v-locale--is-rtl .me-sm-1{margin-left:4px!important}.v-locale--is-ltr .me-sm-2{margin-right:8px!important}.v-locale--is-rtl .me-sm-2{margin-left:8px!important}.v-locale--is-ltr .me-sm-3{margin-right:12px!important}.v-locale--is-rtl .me-sm-3{margin-left:12px!important}.v-locale--is-ltr .me-sm-4{margin-right:16px!important}.v-locale--is-rtl .me-sm-4{margin-left:16px!important}.v-locale--is-ltr .me-sm-5{margin-right:20px!important}.v-locale--is-rtl .me-sm-5{margin-left:20px!important}.v-locale--is-ltr .me-sm-6{margin-right:24px!important}.v-locale--is-rtl .me-sm-6{margin-left:24px!important}.v-locale--is-ltr .me-sm-7{margin-right:28px!important}.v-locale--is-rtl .me-sm-7{margin-left:28px!important}.v-locale--is-ltr .me-sm-8{margin-right:32px!important}.v-locale--is-rtl .me-sm-8{margin-left:32px!important}.v-locale--is-ltr .me-sm-9{margin-right:36px!important}.v-locale--is-rtl .me-sm-9{margin-left:36px!important}.v-locale--is-ltr .me-sm-10{margin-right:40px!important}.v-locale--is-rtl .me-sm-10{margin-left:40px!important}.v-locale--is-ltr .me-sm-11{margin-right:44px!important}.v-locale--is-rtl .me-sm-11{margin-left:44px!important}.v-locale--is-ltr .me-sm-12{margin-right:48px!important}.v-locale--is-rtl .me-sm-12{margin-left:48px!important}.v-locale--is-ltr .me-sm-13{margin-right:52px!important}.v-locale--is-rtl .me-sm-13{margin-left:52px!important}.v-locale--is-ltr .me-sm-14{margin-right:56px!important}.v-locale--is-rtl .me-sm-14{margin-left:56px!important}.v-locale--is-ltr .me-sm-15{margin-right:60px!important}.v-locale--is-rtl .me-sm-15{margin-left:60px!important}.v-locale--is-ltr .me-sm-16{margin-right:64px!important}.v-locale--is-rtl .me-sm-16{margin-left:64px!important}.v-locale--is-ltr .me-sm-auto{margin-right:auto!important}.v-locale--is-rtl .me-sm-auto{margin-left:auto!important}.ma-sm-n1{margin:-4px!important}.ma-sm-n2{margin:-8px!important}.ma-sm-n3{margin:-12px!important}.ma-sm-n4{margin:-16px!important}.ma-sm-n5{margin:-20px!important}.ma-sm-n6{margin:-24px!important}.ma-sm-n7{margin:-28px!important}.ma-sm-n8{margin:-32px!important}.ma-sm-n9{margin:-36px!important}.ma-sm-n10{margin:-40px!important}.ma-sm-n11{margin:-44px!important}.ma-sm-n12{margin:-48px!important}.ma-sm-n13{margin:-52px!important}.ma-sm-n14{margin:-56px!important}.ma-sm-n15{margin:-60px!important}.ma-sm-n16{margin:-64px!important}.mx-sm-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-sm-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-sm-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-sm-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-sm-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-sm-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-sm-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-sm-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-sm-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-sm-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-sm-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-sm-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-sm-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-sm-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-sm-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-sm-n16{margin-right:-64px!important;margin-left:-64px!important}.my-sm-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-sm-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-sm-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-sm-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-sm-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-sm-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-sm-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-sm-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-sm-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-sm-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-sm-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-sm-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-sm-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-sm-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-sm-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-sm-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-sm-n1{margin-top:-4px!important}.mt-sm-n2{margin-top:-8px!important}.mt-sm-n3{margin-top:-12px!important}.mt-sm-n4{margin-top:-16px!important}.mt-sm-n5{margin-top:-20px!important}.mt-sm-n6{margin-top:-24px!important}.mt-sm-n7{margin-top:-28px!important}.mt-sm-n8{margin-top:-32px!important}.mt-sm-n9{margin-top:-36px!important}.mt-sm-n10{margin-top:-40px!important}.mt-sm-n11{margin-top:-44px!important}.mt-sm-n12{margin-top:-48px!important}.mt-sm-n13{margin-top:-52px!important}.mt-sm-n14{margin-top:-56px!important}.mt-sm-n15{margin-top:-60px!important}.mt-sm-n16{margin-top:-64px!important}.mr-sm-n1{margin-right:-4px!important}.mr-sm-n2{margin-right:-8px!important}.mr-sm-n3{margin-right:-12px!important}.mr-sm-n4{margin-right:-16px!important}.mr-sm-n5{margin-right:-20px!important}.mr-sm-n6{margin-right:-24px!important}.mr-sm-n7{margin-right:-28px!important}.mr-sm-n8{margin-right:-32px!important}.mr-sm-n9{margin-right:-36px!important}.mr-sm-n10{margin-right:-40px!important}.mr-sm-n11{margin-right:-44px!important}.mr-sm-n12{margin-right:-48px!important}.mr-sm-n13{margin-right:-52px!important}.mr-sm-n14{margin-right:-56px!important}.mr-sm-n15{margin-right:-60px!important}.mr-sm-n16{margin-right:-64px!important}.mb-sm-n1{margin-bottom:-4px!important}.mb-sm-n2{margin-bottom:-8px!important}.mb-sm-n3{margin-bottom:-12px!important}.mb-sm-n4{margin-bottom:-16px!important}.mb-sm-n5{margin-bottom:-20px!important}.mb-sm-n6{margin-bottom:-24px!important}.mb-sm-n7{margin-bottom:-28px!important}.mb-sm-n8{margin-bottom:-32px!important}.mb-sm-n9{margin-bottom:-36px!important}.mb-sm-n10{margin-bottom:-40px!important}.mb-sm-n11{margin-bottom:-44px!important}.mb-sm-n12{margin-bottom:-48px!important}.mb-sm-n13{margin-bottom:-52px!important}.mb-sm-n14{margin-bottom:-56px!important}.mb-sm-n15{margin-bottom:-60px!important}.mb-sm-n16{margin-bottom:-64px!important}.ml-sm-n1{margin-left:-4px!important}.ml-sm-n2{margin-left:-8px!important}.ml-sm-n3{margin-left:-12px!important}.ml-sm-n4{margin-left:-16px!important}.ml-sm-n5{margin-left:-20px!important}.ml-sm-n6{margin-left:-24px!important}.ml-sm-n7{margin-left:-28px!important}.ml-sm-n8{margin-left:-32px!important}.ml-sm-n9{margin-left:-36px!important}.ml-sm-n10{margin-left:-40px!important}.ml-sm-n11{margin-left:-44px!important}.ml-sm-n12{margin-left:-48px!important}.ml-sm-n13{margin-left:-52px!important}.ml-sm-n14{margin-left:-56px!important}.ml-sm-n15{margin-left:-60px!important}.ml-sm-n16{margin-left:-64px!important}.v-locale--is-ltr .ms-sm-n1{margin-left:-4px!important}.v-locale--is-rtl .ms-sm-n1{margin-right:-4px!important}.v-locale--is-ltr .ms-sm-n2{margin-left:-8px!important}.v-locale--is-rtl .ms-sm-n2{margin-right:-8px!important}.v-locale--is-ltr .ms-sm-n3{margin-left:-12px!important}.v-locale--is-rtl .ms-sm-n3{margin-right:-12px!important}.v-locale--is-ltr .ms-sm-n4{margin-left:-16px!important}.v-locale--is-rtl .ms-sm-n4{margin-right:-16px!important}.v-locale--is-ltr .ms-sm-n5{margin-left:-20px!important}.v-locale--is-rtl .ms-sm-n5{margin-right:-20px!important}.v-locale--is-ltr .ms-sm-n6{margin-left:-24px!important}.v-locale--is-rtl .ms-sm-n6{margin-right:-24px!important}.v-locale--is-ltr .ms-sm-n7{margin-left:-28px!important}.v-locale--is-rtl .ms-sm-n7{margin-right:-28px!important}.v-locale--is-ltr .ms-sm-n8{margin-left:-32px!important}.v-locale--is-rtl .ms-sm-n8{margin-right:-32px!important}.v-locale--is-ltr .ms-sm-n9{margin-left:-36px!important}.v-locale--is-rtl .ms-sm-n9{margin-right:-36px!important}.v-locale--is-ltr .ms-sm-n10{margin-left:-40px!important}.v-locale--is-rtl .ms-sm-n10{margin-right:-40px!important}.v-locale--is-ltr .ms-sm-n11{margin-left:-44px!important}.v-locale--is-rtl .ms-sm-n11{margin-right:-44px!important}.v-locale--is-ltr .ms-sm-n12{margin-left:-48px!important}.v-locale--is-rtl .ms-sm-n12{margin-right:-48px!important}.v-locale--is-ltr .ms-sm-n13{margin-left:-52px!important}.v-locale--is-rtl .ms-sm-n13{margin-right:-52px!important}.v-locale--is-ltr .ms-sm-n14{margin-left:-56px!important}.v-locale--is-rtl .ms-sm-n14{margin-right:-56px!important}.v-locale--is-ltr .ms-sm-n15{margin-left:-60px!important}.v-locale--is-rtl .ms-sm-n15{margin-right:-60px!important}.v-locale--is-ltr .ms-sm-n16{margin-left:-64px!important}.v-locale--is-rtl .ms-sm-n16{margin-right:-64px!important}.v-locale--is-ltr .me-sm-n1{margin-right:-4px!important}.v-locale--is-rtl .me-sm-n1{margin-left:-4px!important}.v-locale--is-ltr .me-sm-n2{margin-right:-8px!important}.v-locale--is-rtl .me-sm-n2{margin-left:-8px!important}.v-locale--is-ltr .me-sm-n3{margin-right:-12px!important}.v-locale--is-rtl .me-sm-n3{margin-left:-12px!important}.v-locale--is-ltr .me-sm-n4{margin-right:-16px!important}.v-locale--is-rtl .me-sm-n4{margin-left:-16px!important}.v-locale--is-ltr .me-sm-n5{margin-right:-20px!important}.v-locale--is-rtl .me-sm-n5{margin-left:-20px!important}.v-locale--is-ltr .me-sm-n6{margin-right:-24px!important}.v-locale--is-rtl .me-sm-n6{margin-left:-24px!important}.v-locale--is-ltr .me-sm-n7{margin-right:-28px!important}.v-locale--is-rtl .me-sm-n7{margin-left:-28px!important}.v-locale--is-ltr .me-sm-n8{margin-right:-32px!important}.v-locale--is-rtl .me-sm-n8{margin-left:-32px!important}.v-locale--is-ltr .me-sm-n9{margin-right:-36px!important}.v-locale--is-rtl .me-sm-n9{margin-left:-36px!important}.v-locale--is-ltr .me-sm-n10{margin-right:-40px!important}.v-locale--is-rtl .me-sm-n10{margin-left:-40px!important}.v-locale--is-ltr .me-sm-n11{margin-right:-44px!important}.v-locale--is-rtl .me-sm-n11{margin-left:-44px!important}.v-locale--is-ltr .me-sm-n12{margin-right:-48px!important}.v-locale--is-rtl .me-sm-n12{margin-left:-48px!important}.v-locale--is-ltr .me-sm-n13{margin-right:-52px!important}.v-locale--is-rtl .me-sm-n13{margin-left:-52px!important}.v-locale--is-ltr .me-sm-n14{margin-right:-56px!important}.v-locale--is-rtl .me-sm-n14{margin-left:-56px!important}.v-locale--is-ltr .me-sm-n15{margin-right:-60px!important}.v-locale--is-rtl .me-sm-n15{margin-left:-60px!important}.v-locale--is-ltr .me-sm-n16{margin-right:-64px!important}.v-locale--is-rtl .me-sm-n16{margin-left:-64px!important}.pa-sm-0{padding:0!important}.pa-sm-1{padding:4px!important}.pa-sm-2{padding:8px!important}.pa-sm-3{padding:12px!important}.pa-sm-4{padding:16px!important}.pa-sm-5{padding:20px!important}.pa-sm-6{padding:24px!important}.pa-sm-7{padding:28px!important}.pa-sm-8{padding:32px!important}.pa-sm-9{padding:36px!important}.pa-sm-10{padding:40px!important}.pa-sm-11{padding:44px!important}.pa-sm-12{padding:48px!important}.pa-sm-13{padding:52px!important}.pa-sm-14{padding:56px!important}.pa-sm-15{padding:60px!important}.pa-sm-16{padding:64px!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:4px!important;padding-left:4px!important}.px-sm-2{padding-right:8px!important;padding-left:8px!important}.px-sm-3{padding-right:12px!important;padding-left:12px!important}.px-sm-4{padding-right:16px!important;padding-left:16px!important}.px-sm-5{padding-right:20px!important;padding-left:20px!important}.px-sm-6{padding-right:24px!important;padding-left:24px!important}.px-sm-7{padding-right:28px!important;padding-left:28px!important}.px-sm-8{padding-right:32px!important;padding-left:32px!important}.px-sm-9{padding-right:36px!important;padding-left:36px!important}.px-sm-10{padding-right:40px!important;padding-left:40px!important}.px-sm-11{padding-right:44px!important;padding-left:44px!important}.px-sm-12{padding-right:48px!important;padding-left:48px!important}.px-sm-13{padding-right:52px!important;padding-left:52px!important}.px-sm-14{padding-right:56px!important;padding-left:56px!important}.px-sm-15{padding-right:60px!important;padding-left:60px!important}.px-sm-16{padding-right:64px!important;padding-left:64px!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:4px!important;padding-bottom:4px!important}.py-sm-2{padding-top:8px!important;padding-bottom:8px!important}.py-sm-3{padding-top:12px!important;padding-bottom:12px!important}.py-sm-4{padding-top:16px!important;padding-bottom:16px!important}.py-sm-5{padding-top:20px!important;padding-bottom:20px!important}.py-sm-6{padding-top:24px!important;padding-bottom:24px!important}.py-sm-7{padding-top:28px!important;padding-bottom:28px!important}.py-sm-8{padding-top:32px!important;padding-bottom:32px!important}.py-sm-9{padding-top:36px!important;padding-bottom:36px!important}.py-sm-10{padding-top:40px!important;padding-bottom:40px!important}.py-sm-11{padding-top:44px!important;padding-bottom:44px!important}.py-sm-12{padding-top:48px!important;padding-bottom:48px!important}.py-sm-13{padding-top:52px!important;padding-bottom:52px!important}.py-sm-14{padding-top:56px!important;padding-bottom:56px!important}.py-sm-15{padding-top:60px!important;padding-bottom:60px!important}.py-sm-16{padding-top:64px!important;padding-bottom:64px!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:4px!important}.pt-sm-2{padding-top:8px!important}.pt-sm-3{padding-top:12px!important}.pt-sm-4{padding-top:16px!important}.pt-sm-5{padding-top:20px!important}.pt-sm-6{padding-top:24px!important}.pt-sm-7{padding-top:28px!important}.pt-sm-8{padding-top:32px!important}.pt-sm-9{padding-top:36px!important}.pt-sm-10{padding-top:40px!important}.pt-sm-11{padding-top:44px!important}.pt-sm-12{padding-top:48px!important}.pt-sm-13{padding-top:52px!important}.pt-sm-14{padding-top:56px!important}.pt-sm-15{padding-top:60px!important}.pt-sm-16{padding-top:64px!important}.pr-sm-0{padding-right:0!important}.pr-sm-1{padding-right:4px!important}.pr-sm-2{padding-right:8px!important}.pr-sm-3{padding-right:12px!important}.pr-sm-4{padding-right:16px!important}.pr-sm-5{padding-right:20px!important}.pr-sm-6{padding-right:24px!important}.pr-sm-7{padding-right:28px!important}.pr-sm-8{padding-right:32px!important}.pr-sm-9{padding-right:36px!important}.pr-sm-10{padding-right:40px!important}.pr-sm-11{padding-right:44px!important}.pr-sm-12{padding-right:48px!important}.pr-sm-13{padding-right:52px!important}.pr-sm-14{padding-right:56px!important}.pr-sm-15{padding-right:60px!important}.pr-sm-16{padding-right:64px!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:4px!important}.pb-sm-2{padding-bottom:8px!important}.pb-sm-3{padding-bottom:12px!important}.pb-sm-4{padding-bottom:16px!important}.pb-sm-5{padding-bottom:20px!important}.pb-sm-6{padding-bottom:24px!important}.pb-sm-7{padding-bottom:28px!important}.pb-sm-8{padding-bottom:32px!important}.pb-sm-9{padding-bottom:36px!important}.pb-sm-10{padding-bottom:40px!important}.pb-sm-11{padding-bottom:44px!important}.pb-sm-12{padding-bottom:48px!important}.pb-sm-13{padding-bottom:52px!important}.pb-sm-14{padding-bottom:56px!important}.pb-sm-15{padding-bottom:60px!important}.pb-sm-16{padding-bottom:64px!important}.pl-sm-0{padding-left:0!important}.pl-sm-1{padding-left:4px!important}.pl-sm-2{padding-left:8px!important}.pl-sm-3{padding-left:12px!important}.pl-sm-4{padding-left:16px!important}.pl-sm-5{padding-left:20px!important}.pl-sm-6{padding-left:24px!important}.pl-sm-7{padding-left:28px!important}.pl-sm-8{padding-left:32px!important}.pl-sm-9{padding-left:36px!important}.pl-sm-10{padding-left:40px!important}.pl-sm-11{padding-left:44px!important}.pl-sm-12{padding-left:48px!important}.pl-sm-13{padding-left:52px!important}.pl-sm-14{padding-left:56px!important}.pl-sm-15{padding-left:60px!important}.pl-sm-16{padding-left:64px!important}.v-locale--is-ltr .ps-sm-0{padding-left:0!important}.v-locale--is-rtl .ps-sm-0{padding-right:0!important}.v-locale--is-ltr .ps-sm-1{padding-left:4px!important}.v-locale--is-rtl .ps-sm-1{padding-right:4px!important}.v-locale--is-ltr .ps-sm-2{padding-left:8px!important}.v-locale--is-rtl .ps-sm-2{padding-right:8px!important}.v-locale--is-ltr .ps-sm-3{padding-left:12px!important}.v-locale--is-rtl .ps-sm-3{padding-right:12px!important}.v-locale--is-ltr .ps-sm-4{padding-left:16px!important}.v-locale--is-rtl .ps-sm-4{padding-right:16px!important}.v-locale--is-ltr .ps-sm-5{padding-left:20px!important}.v-locale--is-rtl .ps-sm-5{padding-right:20px!important}.v-locale--is-ltr .ps-sm-6{padding-left:24px!important}.v-locale--is-rtl .ps-sm-6{padding-right:24px!important}.v-locale--is-ltr .ps-sm-7{padding-left:28px!important}.v-locale--is-rtl .ps-sm-7{padding-right:28px!important}.v-locale--is-ltr .ps-sm-8{padding-left:32px!important}.v-locale--is-rtl .ps-sm-8{padding-right:32px!important}.v-locale--is-ltr .ps-sm-9{padding-left:36px!important}.v-locale--is-rtl .ps-sm-9{padding-right:36px!important}.v-locale--is-ltr .ps-sm-10{padding-left:40px!important}.v-locale--is-rtl .ps-sm-10{padding-right:40px!important}.v-locale--is-ltr .ps-sm-11{padding-left:44px!important}.v-locale--is-rtl .ps-sm-11{padding-right:44px!important}.v-locale--is-ltr .ps-sm-12{padding-left:48px!important}.v-locale--is-rtl .ps-sm-12{padding-right:48px!important}.v-locale--is-ltr .ps-sm-13{padding-left:52px!important}.v-locale--is-rtl .ps-sm-13{padding-right:52px!important}.v-locale--is-ltr .ps-sm-14{padding-left:56px!important}.v-locale--is-rtl .ps-sm-14{padding-right:56px!important}.v-locale--is-ltr .ps-sm-15{padding-left:60px!important}.v-locale--is-rtl .ps-sm-15{padding-right:60px!important}.v-locale--is-ltr .ps-sm-16{padding-left:64px!important}.v-locale--is-rtl .ps-sm-16{padding-right:64px!important}.v-locale--is-ltr .pe-sm-0{padding-right:0!important}.v-locale--is-rtl .pe-sm-0{padding-left:0!important}.v-locale--is-ltr .pe-sm-1{padding-right:4px!important}.v-locale--is-rtl .pe-sm-1{padding-left:4px!important}.v-locale--is-ltr .pe-sm-2{padding-right:8px!important}.v-locale--is-rtl .pe-sm-2{padding-left:8px!important}.v-locale--is-ltr .pe-sm-3{padding-right:12px!important}.v-locale--is-rtl .pe-sm-3{padding-left:12px!important}.v-locale--is-ltr .pe-sm-4{padding-right:16px!important}.v-locale--is-rtl .pe-sm-4{padding-left:16px!important}.v-locale--is-ltr .pe-sm-5{padding-right:20px!important}.v-locale--is-rtl .pe-sm-5{padding-left:20px!important}.v-locale--is-ltr .pe-sm-6{padding-right:24px!important}.v-locale--is-rtl .pe-sm-6{padding-left:24px!important}.v-locale--is-ltr .pe-sm-7{padding-right:28px!important}.v-locale--is-rtl .pe-sm-7{padding-left:28px!important}.v-locale--is-ltr .pe-sm-8{padding-right:32px!important}.v-locale--is-rtl .pe-sm-8{padding-left:32px!important}.v-locale--is-ltr .pe-sm-9{padding-right:36px!important}.v-locale--is-rtl .pe-sm-9{padding-left:36px!important}.v-locale--is-ltr .pe-sm-10{padding-right:40px!important}.v-locale--is-rtl .pe-sm-10{padding-left:40px!important}.v-locale--is-ltr .pe-sm-11{padding-right:44px!important}.v-locale--is-rtl .pe-sm-11{padding-left:44px!important}.v-locale--is-ltr .pe-sm-12{padding-right:48px!important}.v-locale--is-rtl .pe-sm-12{padding-left:48px!important}.v-locale--is-ltr .pe-sm-13{padding-right:52px!important}.v-locale--is-rtl .pe-sm-13{padding-left:52px!important}.v-locale--is-ltr .pe-sm-14{padding-right:56px!important}.v-locale--is-rtl .pe-sm-14{padding-left:56px!important}.v-locale--is-ltr .pe-sm-15{padding-right:60px!important}.v-locale--is-rtl .pe-sm-15{padding-left:60px!important}.v-locale--is-ltr .pe-sm-16{padding-right:64px!important}.v-locale--is-rtl .pe-sm-16{padding-left:64px!important}.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}.text-sm-justify{text-align:justify!important}.text-sm-start{text-align:start!important}.text-sm-end{text-align:end!important}.text-sm-h1{font-size:6rem!important;line-height:6rem;letter-spacing:-.015625em!important}.text-sm-h1,.text-sm-h2{font-weight:300;font-family:Roboto,sans-serif!important}.text-sm-h2{font-size:3.75rem!important;line-height:3.75rem;letter-spacing:-.0083333333em!important}.text-sm-h3{font-size:3rem!important;line-height:3.125rem;letter-spacing:normal!important}.text-sm-h3,.text-sm-h4{font-weight:400;font-family:Roboto,sans-serif!important}.text-sm-h4{font-size:2.125rem!important;line-height:2.5rem;letter-spacing:.0073529412em!important}.text-sm-h5{font-size:1.5rem!important;font-weight:400;letter-spacing:normal!important}.text-sm-h5,.text-sm-h6{line-height:2rem;font-family:Roboto,sans-serif!important}.text-sm-h6{font-size:1.25rem!important;font-weight:500;letter-spacing:.0125em!important}.text-sm-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif!important}.text-sm-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif!important}.text-sm-body-1{font-size:1rem!important;line-height:1.5rem;letter-spacing:.03125em!important}.text-sm-body-1,.text-sm-body-2{font-weight:400;font-family:Roboto,sans-serif!important}.text-sm-body-2{font-size:.875rem!important;line-height:1.25rem;letter-spacing:.0178571429em!important}.text-sm-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif!important;text-transform:uppercase!important}.text-sm-caption{font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important}.text-sm-caption,.text-sm-overline{font-size:.75rem!important;font-family:Roboto,sans-serif!important}.text-sm-overline{font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;text-transform:uppercase!important}}@media(min-width:960px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.float-md-none{float:none!important}.float-md-left{float:left!important}.float-md-right{float:right!important}.v-locale--is-rtl .float-md-end{float:left!important}.v-locale--is-ltr .float-md-end,.v-locale--is-rtl .float-md-start{float:right!important}.v-locale--is-ltr .float-md-start{float:left!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-md-start{justify-content:flex-start!important}.justify-md-end{justify-content:flex-end!important}.justify-md-center{justify-content:center!important}.justify-md-space-between{justify-content:space-between!important}.justify-md-space-around{justify-content:space-around!important}.align-md-start{align-items:flex-start!important}.align-md-end{align-items:flex-end!important}.align-md-center{align-items:center!important}.align-md-baseline{align-items:baseline!important}.align-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-space-between{align-content:space-between!important}.align-content-md-space-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-6{order:6!important}.order-md-7{order:7!important}.order-md-8{order:8!important}.order-md-9{order:9!important}.order-md-10{order:10!important}.order-md-11{order:11!important}.order-md-12{order:12!important}.order-md-last{order:13!important}.ma-md-0{margin:0!important}.ma-md-1{margin:4px!important}.ma-md-2{margin:8px!important}.ma-md-3{margin:12px!important}.ma-md-4{margin:16px!important}.ma-md-5{margin:20px!important}.ma-md-6{margin:24px!important}.ma-md-7{margin:28px!important}.ma-md-8{margin:32px!important}.ma-md-9{margin:36px!important}.ma-md-10{margin:40px!important}.ma-md-11{margin:44px!important}.ma-md-12{margin:48px!important}.ma-md-13{margin:52px!important}.ma-md-14{margin:56px!important}.ma-md-15{margin:60px!important}.ma-md-16{margin:64px!important}.ma-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:4px!important;margin-left:4px!important}.mx-md-2{margin-right:8px!important;margin-left:8px!important}.mx-md-3{margin-right:12px!important;margin-left:12px!important}.mx-md-4{margin-right:16px!important;margin-left:16px!important}.mx-md-5{margin-right:20px!important;margin-left:20px!important}.mx-md-6{margin-right:24px!important;margin-left:24px!important}.mx-md-7{margin-right:28px!important;margin-left:28px!important}.mx-md-8{margin-right:32px!important;margin-left:32px!important}.mx-md-9{margin-right:36px!important;margin-left:36px!important}.mx-md-10{margin-right:40px!important;margin-left:40px!important}.mx-md-11{margin-right:44px!important;margin-left:44px!important}.mx-md-12{margin-right:48px!important;margin-left:48px!important}.mx-md-13{margin-right:52px!important;margin-left:52px!important}.mx-md-14{margin-right:56px!important;margin-left:56px!important}.mx-md-15{margin-right:60px!important;margin-left:60px!important}.mx-md-16{margin-right:64px!important;margin-left:64px!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:4px!important;margin-bottom:4px!important}.my-md-2{margin-top:8px!important;margin-bottom:8px!important}.my-md-3{margin-top:12px!important;margin-bottom:12px!important}.my-md-4{margin-top:16px!important;margin-bottom:16px!important}.my-md-5{margin-top:20px!important;margin-bottom:20px!important}.my-md-6{margin-top:24px!important;margin-bottom:24px!important}.my-md-7{margin-top:28px!important;margin-bottom:28px!important}.my-md-8{margin-top:32px!important;margin-bottom:32px!important}.my-md-9{margin-top:36px!important;margin-bottom:36px!important}.my-md-10{margin-top:40px!important;margin-bottom:40px!important}.my-md-11{margin-top:44px!important;margin-bottom:44px!important}.my-md-12{margin-top:48px!important;margin-bottom:48px!important}.my-md-13{margin-top:52px!important;margin-bottom:52px!important}.my-md-14{margin-top:56px!important;margin-bottom:56px!important}.my-md-15{margin-top:60px!important;margin-bottom:60px!important}.my-md-16{margin-top:64px!important;margin-bottom:64px!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:4px!important}.mt-md-2{margin-top:8px!important}.mt-md-3{margin-top:12px!important}.mt-md-4{margin-top:16px!important}.mt-md-5{margin-top:20px!important}.mt-md-6{margin-top:24px!important}.mt-md-7{margin-top:28px!important}.mt-md-8{margin-top:32px!important}.mt-md-9{margin-top:36px!important}.mt-md-10{margin-top:40px!important}.mt-md-11{margin-top:44px!important}.mt-md-12{margin-top:48px!important}.mt-md-13{margin-top:52px!important}.mt-md-14{margin-top:56px!important}.mt-md-15{margin-top:60px!important}.mt-md-16{margin-top:64px!important}.mt-md-auto{margin-top:auto!important}.mr-md-0{margin-right:0!important}.mr-md-1{margin-right:4px!important}.mr-md-2{margin-right:8px!important}.mr-md-3{margin-right:12px!important}.mr-md-4{margin-right:16px!important}.mr-md-5{margin-right:20px!important}.mr-md-6{margin-right:24px!important}.mr-md-7{margin-right:28px!important}.mr-md-8{margin-right:32px!important}.mr-md-9{margin-right:36px!important}.mr-md-10{margin-right:40px!important}.mr-md-11{margin-right:44px!important}.mr-md-12{margin-right:48px!important}.mr-md-13{margin-right:52px!important}.mr-md-14{margin-right:56px!important}.mr-md-15{margin-right:60px!important}.mr-md-16{margin-right:64px!important}.mr-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:4px!important}.mb-md-2{margin-bottom:8px!important}.mb-md-3{margin-bottom:12px!important}.mb-md-4{margin-bottom:16px!important}.mb-md-5{margin-bottom:20px!important}.mb-md-6{margin-bottom:24px!important}.mb-md-7{margin-bottom:28px!important}.mb-md-8{margin-bottom:32px!important}.mb-md-9{margin-bottom:36px!important}.mb-md-10{margin-bottom:40px!important}.mb-md-11{margin-bottom:44px!important}.mb-md-12{margin-bottom:48px!important}.mb-md-13{margin-bottom:52px!important}.mb-md-14{margin-bottom:56px!important}.mb-md-15{margin-bottom:60px!important}.mb-md-16{margin-bottom:64px!important}.mb-md-auto{margin-bottom:auto!important}.ml-md-0{margin-left:0!important}.ml-md-1{margin-left:4px!important}.ml-md-2{margin-left:8px!important}.ml-md-3{margin-left:12px!important}.ml-md-4{margin-left:16px!important}.ml-md-5{margin-left:20px!important}.ml-md-6{margin-left:24px!important}.ml-md-7{margin-left:28px!important}.ml-md-8{margin-left:32px!important}.ml-md-9{margin-left:36px!important}.ml-md-10{margin-left:40px!important}.ml-md-11{margin-left:44px!important}.ml-md-12{margin-left:48px!important}.ml-md-13{margin-left:52px!important}.ml-md-14{margin-left:56px!important}.ml-md-15{margin-left:60px!important}.ml-md-16{margin-left:64px!important}.ml-md-auto{margin-left:auto!important}.v-locale--is-ltr .ms-md-0{margin-left:0!important}.v-locale--is-rtl .ms-md-0{margin-right:0!important}.v-locale--is-ltr .ms-md-1{margin-left:4px!important}.v-locale--is-rtl .ms-md-1{margin-right:4px!important}.v-locale--is-ltr .ms-md-2{margin-left:8px!important}.v-locale--is-rtl .ms-md-2{margin-right:8px!important}.v-locale--is-ltr .ms-md-3{margin-left:12px!important}.v-locale--is-rtl .ms-md-3{margin-right:12px!important}.v-locale--is-ltr .ms-md-4{margin-left:16px!important}.v-locale--is-rtl .ms-md-4{margin-right:16px!important}.v-locale--is-ltr .ms-md-5{margin-left:20px!important}.v-locale--is-rtl .ms-md-5{margin-right:20px!important}.v-locale--is-ltr .ms-md-6{margin-left:24px!important}.v-locale--is-rtl .ms-md-6{margin-right:24px!important}.v-locale--is-ltr .ms-md-7{margin-left:28px!important}.v-locale--is-rtl .ms-md-7{margin-right:28px!important}.v-locale--is-ltr .ms-md-8{margin-left:32px!important}.v-locale--is-rtl .ms-md-8{margin-right:32px!important}.v-locale--is-ltr .ms-md-9{margin-left:36px!important}.v-locale--is-rtl .ms-md-9{margin-right:36px!important}.v-locale--is-ltr .ms-md-10{margin-left:40px!important}.v-locale--is-rtl .ms-md-10{margin-right:40px!important}.v-locale--is-ltr .ms-md-11{margin-left:44px!important}.v-locale--is-rtl .ms-md-11{margin-right:44px!important}.v-locale--is-ltr .ms-md-12{margin-left:48px!important}.v-locale--is-rtl .ms-md-12{margin-right:48px!important}.v-locale--is-ltr .ms-md-13{margin-left:52px!important}.v-locale--is-rtl .ms-md-13{margin-right:52px!important}.v-locale--is-ltr .ms-md-14{margin-left:56px!important}.v-locale--is-rtl .ms-md-14{margin-right:56px!important}.v-locale--is-ltr .ms-md-15{margin-left:60px!important}.v-locale--is-rtl .ms-md-15{margin-right:60px!important}.v-locale--is-ltr .ms-md-16{margin-left:64px!important}.v-locale--is-rtl .ms-md-16{margin-right:64px!important}.v-locale--is-ltr .ms-md-auto{margin-left:auto!important}.v-locale--is-rtl .ms-md-auto{margin-right:auto!important}.v-locale--is-ltr .me-md-0{margin-right:0!important}.v-locale--is-rtl .me-md-0{margin-left:0!important}.v-locale--is-ltr .me-md-1{margin-right:4px!important}.v-locale--is-rtl .me-md-1{margin-left:4px!important}.v-locale--is-ltr .me-md-2{margin-right:8px!important}.v-locale--is-rtl .me-md-2{margin-left:8px!important}.v-locale--is-ltr .me-md-3{margin-right:12px!important}.v-locale--is-rtl .me-md-3{margin-left:12px!important}.v-locale--is-ltr .me-md-4{margin-right:16px!important}.v-locale--is-rtl .me-md-4{margin-left:16px!important}.v-locale--is-ltr .me-md-5{margin-right:20px!important}.v-locale--is-rtl .me-md-5{margin-left:20px!important}.v-locale--is-ltr .me-md-6{margin-right:24px!important}.v-locale--is-rtl .me-md-6{margin-left:24px!important}.v-locale--is-ltr .me-md-7{margin-right:28px!important}.v-locale--is-rtl .me-md-7{margin-left:28px!important}.v-locale--is-ltr .me-md-8{margin-right:32px!important}.v-locale--is-rtl .me-md-8{margin-left:32px!important}.v-locale--is-ltr .me-md-9{margin-right:36px!important}.v-locale--is-rtl .me-md-9{margin-left:36px!important}.v-locale--is-ltr .me-md-10{margin-right:40px!important}.v-locale--is-rtl .me-md-10{margin-left:40px!important}.v-locale--is-ltr .me-md-11{margin-right:44px!important}.v-locale--is-rtl .me-md-11{margin-left:44px!important}.v-locale--is-ltr .me-md-12{margin-right:48px!important}.v-locale--is-rtl .me-md-12{margin-left:48px!important}.v-locale--is-ltr .me-md-13{margin-right:52px!important}.v-locale--is-rtl .me-md-13{margin-left:52px!important}.v-locale--is-ltr .me-md-14{margin-right:56px!important}.v-locale--is-rtl .me-md-14{margin-left:56px!important}.v-locale--is-ltr .me-md-15{margin-right:60px!important}.v-locale--is-rtl .me-md-15{margin-left:60px!important}.v-locale--is-ltr .me-md-16{margin-right:64px!important}.v-locale--is-rtl .me-md-16{margin-left:64px!important}.v-locale--is-ltr .me-md-auto{margin-right:auto!important}.v-locale--is-rtl .me-md-auto{margin-left:auto!important}.ma-md-n1{margin:-4px!important}.ma-md-n2{margin:-8px!important}.ma-md-n3{margin:-12px!important}.ma-md-n4{margin:-16px!important}.ma-md-n5{margin:-20px!important}.ma-md-n6{margin:-24px!important}.ma-md-n7{margin:-28px!important}.ma-md-n8{margin:-32px!important}.ma-md-n9{margin:-36px!important}.ma-md-n10{margin:-40px!important}.ma-md-n11{margin:-44px!important}.ma-md-n12{margin:-48px!important}.ma-md-n13{margin:-52px!important}.ma-md-n14{margin:-56px!important}.ma-md-n15{margin:-60px!important}.ma-md-n16{margin:-64px!important}.mx-md-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-md-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-md-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-md-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-md-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-md-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-md-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-md-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-md-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-md-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-md-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-md-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-md-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-md-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-md-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-md-n16{margin-right:-64px!important;margin-left:-64px!important}.my-md-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-md-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-md-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-md-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-md-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-md-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-md-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-md-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-md-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-md-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-md-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-md-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-md-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-md-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-md-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-md-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-md-n1{margin-top:-4px!important}.mt-md-n2{margin-top:-8px!important}.mt-md-n3{margin-top:-12px!important}.mt-md-n4{margin-top:-16px!important}.mt-md-n5{margin-top:-20px!important}.mt-md-n6{margin-top:-24px!important}.mt-md-n7{margin-top:-28px!important}.mt-md-n8{margin-top:-32px!important}.mt-md-n9{margin-top:-36px!important}.mt-md-n10{margin-top:-40px!important}.mt-md-n11{margin-top:-44px!important}.mt-md-n12{margin-top:-48px!important}.mt-md-n13{margin-top:-52px!important}.mt-md-n14{margin-top:-56px!important}.mt-md-n15{margin-top:-60px!important}.mt-md-n16{margin-top:-64px!important}.mr-md-n1{margin-right:-4px!important}.mr-md-n2{margin-right:-8px!important}.mr-md-n3{margin-right:-12px!important}.mr-md-n4{margin-right:-16px!important}.mr-md-n5{margin-right:-20px!important}.mr-md-n6{margin-right:-24px!important}.mr-md-n7{margin-right:-28px!important}.mr-md-n8{margin-right:-32px!important}.mr-md-n9{margin-right:-36px!important}.mr-md-n10{margin-right:-40px!important}.mr-md-n11{margin-right:-44px!important}.mr-md-n12{margin-right:-48px!important}.mr-md-n13{margin-right:-52px!important}.mr-md-n14{margin-right:-56px!important}.mr-md-n15{margin-right:-60px!important}.mr-md-n16{margin-right:-64px!important}.mb-md-n1{margin-bottom:-4px!important}.mb-md-n2{margin-bottom:-8px!important}.mb-md-n3{margin-bottom:-12px!important}.mb-md-n4{margin-bottom:-16px!important}.mb-md-n5{margin-bottom:-20px!important}.mb-md-n6{margin-bottom:-24px!important}.mb-md-n7{margin-bottom:-28px!important}.mb-md-n8{margin-bottom:-32px!important}.mb-md-n9{margin-bottom:-36px!important}.mb-md-n10{margin-bottom:-40px!important}.mb-md-n11{margin-bottom:-44px!important}.mb-md-n12{margin-bottom:-48px!important}.mb-md-n13{margin-bottom:-52px!important}.mb-md-n14{margin-bottom:-56px!important}.mb-md-n15{margin-bottom:-60px!important}.mb-md-n16{margin-bottom:-64px!important}.ml-md-n1{margin-left:-4px!important}.ml-md-n2{margin-left:-8px!important}.ml-md-n3{margin-left:-12px!important}.ml-md-n4{margin-left:-16px!important}.ml-md-n5{margin-left:-20px!important}.ml-md-n6{margin-left:-24px!important}.ml-md-n7{margin-left:-28px!important}.ml-md-n8{margin-left:-32px!important}.ml-md-n9{margin-left:-36px!important}.ml-md-n10{margin-left:-40px!important}.ml-md-n11{margin-left:-44px!important}.ml-md-n12{margin-left:-48px!important}.ml-md-n13{margin-left:-52px!important}.ml-md-n14{margin-left:-56px!important}.ml-md-n15{margin-left:-60px!important}.ml-md-n16{margin-left:-64px!important}.v-locale--is-ltr .ms-md-n1{margin-left:-4px!important}.v-locale--is-rtl .ms-md-n1{margin-right:-4px!important}.v-locale--is-ltr .ms-md-n2{margin-left:-8px!important}.v-locale--is-rtl .ms-md-n2{margin-right:-8px!important}.v-locale--is-ltr .ms-md-n3{margin-left:-12px!important}.v-locale--is-rtl .ms-md-n3{margin-right:-12px!important}.v-locale--is-ltr .ms-md-n4{margin-left:-16px!important}.v-locale--is-rtl .ms-md-n4{margin-right:-16px!important}.v-locale--is-ltr .ms-md-n5{margin-left:-20px!important}.v-locale--is-rtl .ms-md-n5{margin-right:-20px!important}.v-locale--is-ltr .ms-md-n6{margin-left:-24px!important}.v-locale--is-rtl .ms-md-n6{margin-right:-24px!important}.v-locale--is-ltr .ms-md-n7{margin-left:-28px!important}.v-locale--is-rtl .ms-md-n7{margin-right:-28px!important}.v-locale--is-ltr .ms-md-n8{margin-left:-32px!important}.v-locale--is-rtl .ms-md-n8{margin-right:-32px!important}.v-locale--is-ltr .ms-md-n9{margin-left:-36px!important}.v-locale--is-rtl .ms-md-n9{margin-right:-36px!important}.v-locale--is-ltr .ms-md-n10{margin-left:-40px!important}.v-locale--is-rtl .ms-md-n10{margin-right:-40px!important}.v-locale--is-ltr .ms-md-n11{margin-left:-44px!important}.v-locale--is-rtl .ms-md-n11{margin-right:-44px!important}.v-locale--is-ltr .ms-md-n12{margin-left:-48px!important}.v-locale--is-rtl .ms-md-n12{margin-right:-48px!important}.v-locale--is-ltr .ms-md-n13{margin-left:-52px!important}.v-locale--is-rtl .ms-md-n13{margin-right:-52px!important}.v-locale--is-ltr .ms-md-n14{margin-left:-56px!important}.v-locale--is-rtl .ms-md-n14{margin-right:-56px!important}.v-locale--is-ltr .ms-md-n15{margin-left:-60px!important}.v-locale--is-rtl .ms-md-n15{margin-right:-60px!important}.v-locale--is-ltr .ms-md-n16{margin-left:-64px!important}.v-locale--is-rtl .ms-md-n16{margin-right:-64px!important}.v-locale--is-ltr .me-md-n1{margin-right:-4px!important}.v-locale--is-rtl .me-md-n1{margin-left:-4px!important}.v-locale--is-ltr .me-md-n2{margin-right:-8px!important}.v-locale--is-rtl .me-md-n2{margin-left:-8px!important}.v-locale--is-ltr .me-md-n3{margin-right:-12px!important}.v-locale--is-rtl .me-md-n3{margin-left:-12px!important}.v-locale--is-ltr .me-md-n4{margin-right:-16px!important}.v-locale--is-rtl .me-md-n4{margin-left:-16px!important}.v-locale--is-ltr .me-md-n5{margin-right:-20px!important}.v-locale--is-rtl .me-md-n5{margin-left:-20px!important}.v-locale--is-ltr .me-md-n6{margin-right:-24px!important}.v-locale--is-rtl .me-md-n6{margin-left:-24px!important}.v-locale--is-ltr .me-md-n7{margin-right:-28px!important}.v-locale--is-rtl .me-md-n7{margin-left:-28px!important}.v-locale--is-ltr .me-md-n8{margin-right:-32px!important}.v-locale--is-rtl .me-md-n8{margin-left:-32px!important}.v-locale--is-ltr .me-md-n9{margin-right:-36px!important}.v-locale--is-rtl .me-md-n9{margin-left:-36px!important}.v-locale--is-ltr .me-md-n10{margin-right:-40px!important}.v-locale--is-rtl .me-md-n10{margin-left:-40px!important}.v-locale--is-ltr .me-md-n11{margin-right:-44px!important}.v-locale--is-rtl .me-md-n11{margin-left:-44px!important}.v-locale--is-ltr .me-md-n12{margin-right:-48px!important}.v-locale--is-rtl .me-md-n12{margin-left:-48px!important}.v-locale--is-ltr .me-md-n13{margin-right:-52px!important}.v-locale--is-rtl .me-md-n13{margin-left:-52px!important}.v-locale--is-ltr .me-md-n14{margin-right:-56px!important}.v-locale--is-rtl .me-md-n14{margin-left:-56px!important}.v-locale--is-ltr .me-md-n15{margin-right:-60px!important}.v-locale--is-rtl .me-md-n15{margin-left:-60px!important}.v-locale--is-ltr .me-md-n16{margin-right:-64px!important}.v-locale--is-rtl .me-md-n16{margin-left:-64px!important}.pa-md-0{padding:0!important}.pa-md-1{padding:4px!important}.pa-md-2{padding:8px!important}.pa-md-3{padding:12px!important}.pa-md-4{padding:16px!important}.pa-md-5{padding:20px!important}.pa-md-6{padding:24px!important}.pa-md-7{padding:28px!important}.pa-md-8{padding:32px!important}.pa-md-9{padding:36px!important}.pa-md-10{padding:40px!important}.pa-md-11{padding:44px!important}.pa-md-12{padding:48px!important}.pa-md-13{padding:52px!important}.pa-md-14{padding:56px!important}.pa-md-15{padding:60px!important}.pa-md-16{padding:64px!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:4px!important;padding-left:4px!important}.px-md-2{padding-right:8px!important;padding-left:8px!important}.px-md-3{padding-right:12px!important;padding-left:12px!important}.px-md-4{padding-right:16px!important;padding-left:16px!important}.px-md-5{padding-right:20px!important;padding-left:20px!important}.px-md-6{padding-right:24px!important;padding-left:24px!important}.px-md-7{padding-right:28px!important;padding-left:28px!important}.px-md-8{padding-right:32px!important;padding-left:32px!important}.px-md-9{padding-right:36px!important;padding-left:36px!important}.px-md-10{padding-right:40px!important;padding-left:40px!important}.px-md-11{padding-right:44px!important;padding-left:44px!important}.px-md-12{padding-right:48px!important;padding-left:48px!important}.px-md-13{padding-right:52px!important;padding-left:52px!important}.px-md-14{padding-right:56px!important;padding-left:56px!important}.px-md-15{padding-right:60px!important;padding-left:60px!important}.px-md-16{padding-right:64px!important;padding-left:64px!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:4px!important;padding-bottom:4px!important}.py-md-2{padding-top:8px!important;padding-bottom:8px!important}.py-md-3{padding-top:12px!important;padding-bottom:12px!important}.py-md-4{padding-top:16px!important;padding-bottom:16px!important}.py-md-5{padding-top:20px!important;padding-bottom:20px!important}.py-md-6{padding-top:24px!important;padding-bottom:24px!important}.py-md-7{padding-top:28px!important;padding-bottom:28px!important}.py-md-8{padding-top:32px!important;padding-bottom:32px!important}.py-md-9{padding-top:36px!important;padding-bottom:36px!important}.py-md-10{padding-top:40px!important;padding-bottom:40px!important}.py-md-11{padding-top:44px!important;padding-bottom:44px!important}.py-md-12{padding-top:48px!important;padding-bottom:48px!important}.py-md-13{padding-top:52px!important;padding-bottom:52px!important}.py-md-14{padding-top:56px!important;padding-bottom:56px!important}.py-md-15{padding-top:60px!important;padding-bottom:60px!important}.py-md-16{padding-top:64px!important;padding-bottom:64px!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:4px!important}.pt-md-2{padding-top:8px!important}.pt-md-3{padding-top:12px!important}.pt-md-4{padding-top:16px!important}.pt-md-5{padding-top:20px!important}.pt-md-6{padding-top:24px!important}.pt-md-7{padding-top:28px!important}.pt-md-8{padding-top:32px!important}.pt-md-9{padding-top:36px!important}.pt-md-10{padding-top:40px!important}.pt-md-11{padding-top:44px!important}.pt-md-12{padding-top:48px!important}.pt-md-13{padding-top:52px!important}.pt-md-14{padding-top:56px!important}.pt-md-15{padding-top:60px!important}.pt-md-16{padding-top:64px!important}.pr-md-0{padding-right:0!important}.pr-md-1{padding-right:4px!important}.pr-md-2{padding-right:8px!important}.pr-md-3{padding-right:12px!important}.pr-md-4{padding-right:16px!important}.pr-md-5{padding-right:20px!important}.pr-md-6{padding-right:24px!important}.pr-md-7{padding-right:28px!important}.pr-md-8{padding-right:32px!important}.pr-md-9{padding-right:36px!important}.pr-md-10{padding-right:40px!important}.pr-md-11{padding-right:44px!important}.pr-md-12{padding-right:48px!important}.pr-md-13{padding-right:52px!important}.pr-md-14{padding-right:56px!important}.pr-md-15{padding-right:60px!important}.pr-md-16{padding-right:64px!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:4px!important}.pb-md-2{padding-bottom:8px!important}.pb-md-3{padding-bottom:12px!important}.pb-md-4{padding-bottom:16px!important}.pb-md-5{padding-bottom:20px!important}.pb-md-6{padding-bottom:24px!important}.pb-md-7{padding-bottom:28px!important}.pb-md-8{padding-bottom:32px!important}.pb-md-9{padding-bottom:36px!important}.pb-md-10{padding-bottom:40px!important}.pb-md-11{padding-bottom:44px!important}.pb-md-12{padding-bottom:48px!important}.pb-md-13{padding-bottom:52px!important}.pb-md-14{padding-bottom:56px!important}.pb-md-15{padding-bottom:60px!important}.pb-md-16{padding-bottom:64px!important}.pl-md-0{padding-left:0!important}.pl-md-1{padding-left:4px!important}.pl-md-2{padding-left:8px!important}.pl-md-3{padding-left:12px!important}.pl-md-4{padding-left:16px!important}.pl-md-5{padding-left:20px!important}.pl-md-6{padding-left:24px!important}.pl-md-7{padding-left:28px!important}.pl-md-8{padding-left:32px!important}.pl-md-9{padding-left:36px!important}.pl-md-10{padding-left:40px!important}.pl-md-11{padding-left:44px!important}.pl-md-12{padding-left:48px!important}.pl-md-13{padding-left:52px!important}.pl-md-14{padding-left:56px!important}.pl-md-15{padding-left:60px!important}.pl-md-16{padding-left:64px!important}.v-locale--is-ltr .ps-md-0{padding-left:0!important}.v-locale--is-rtl .ps-md-0{padding-right:0!important}.v-locale--is-ltr .ps-md-1{padding-left:4px!important}.v-locale--is-rtl .ps-md-1{padding-right:4px!important}.v-locale--is-ltr .ps-md-2{padding-left:8px!important}.v-locale--is-rtl .ps-md-2{padding-right:8px!important}.v-locale--is-ltr .ps-md-3{padding-left:12px!important}.v-locale--is-rtl .ps-md-3{padding-right:12px!important}.v-locale--is-ltr .ps-md-4{padding-left:16px!important}.v-locale--is-rtl .ps-md-4{padding-right:16px!important}.v-locale--is-ltr .ps-md-5{padding-left:20px!important}.v-locale--is-rtl .ps-md-5{padding-right:20px!important}.v-locale--is-ltr .ps-md-6{padding-left:24px!important}.v-locale--is-rtl .ps-md-6{padding-right:24px!important}.v-locale--is-ltr .ps-md-7{padding-left:28px!important}.v-locale--is-rtl .ps-md-7{padding-right:28px!important}.v-locale--is-ltr .ps-md-8{padding-left:32px!important}.v-locale--is-rtl .ps-md-8{padding-right:32px!important}.v-locale--is-ltr .ps-md-9{padding-left:36px!important}.v-locale--is-rtl .ps-md-9{padding-right:36px!important}.v-locale--is-ltr .ps-md-10{padding-left:40px!important}.v-locale--is-rtl .ps-md-10{padding-right:40px!important}.v-locale--is-ltr .ps-md-11{padding-left:44px!important}.v-locale--is-rtl .ps-md-11{padding-right:44px!important}.v-locale--is-ltr .ps-md-12{padding-left:48px!important}.v-locale--is-rtl .ps-md-12{padding-right:48px!important}.v-locale--is-ltr .ps-md-13{padding-left:52px!important}.v-locale--is-rtl .ps-md-13{padding-right:52px!important}.v-locale--is-ltr .ps-md-14{padding-left:56px!important}.v-locale--is-rtl .ps-md-14{padding-right:56px!important}.v-locale--is-ltr .ps-md-15{padding-left:60px!important}.v-locale--is-rtl .ps-md-15{padding-right:60px!important}.v-locale--is-ltr .ps-md-16{padding-left:64px!important}.v-locale--is-rtl .ps-md-16{padding-right:64px!important}.v-locale--is-ltr .pe-md-0{padding-right:0!important}.v-locale--is-rtl .pe-md-0{padding-left:0!important}.v-locale--is-ltr .pe-md-1{padding-right:4px!important}.v-locale--is-rtl .pe-md-1{padding-left:4px!important}.v-locale--is-ltr .pe-md-2{padding-right:8px!important}.v-locale--is-rtl .pe-md-2{padding-left:8px!important}.v-locale--is-ltr .pe-md-3{padding-right:12px!important}.v-locale--is-rtl .pe-md-3{padding-left:12px!important}.v-locale--is-ltr .pe-md-4{padding-right:16px!important}.v-locale--is-rtl .pe-md-4{padding-left:16px!important}.v-locale--is-ltr .pe-md-5{padding-right:20px!important}.v-locale--is-rtl .pe-md-5{padding-left:20px!important}.v-locale--is-ltr .pe-md-6{padding-right:24px!important}.v-locale--is-rtl .pe-md-6{padding-left:24px!important}.v-locale--is-ltr .pe-md-7{padding-right:28px!important}.v-locale--is-rtl .pe-md-7{padding-left:28px!important}.v-locale--is-ltr .pe-md-8{padding-right:32px!important}.v-locale--is-rtl .pe-md-8{padding-left:32px!important}.v-locale--is-ltr .pe-md-9{padding-right:36px!important}.v-locale--is-rtl .pe-md-9{padding-left:36px!important}.v-locale--is-ltr .pe-md-10{padding-right:40px!important}.v-locale--is-rtl .pe-md-10{padding-left:40px!important}.v-locale--is-ltr .pe-md-11{padding-right:44px!important}.v-locale--is-rtl .pe-md-11{padding-left:44px!important}.v-locale--is-ltr .pe-md-12{padding-right:48px!important}.v-locale--is-rtl .pe-md-12{padding-left:48px!important}.v-locale--is-ltr .pe-md-13{padding-right:52px!important}.v-locale--is-rtl .pe-md-13{padding-left:52px!important}.v-locale--is-ltr .pe-md-14{padding-right:56px!important}.v-locale--is-rtl .pe-md-14{padding-left:56px!important}.v-locale--is-ltr .pe-md-15{padding-right:60px!important}.v-locale--is-rtl .pe-md-15{padding-left:60px!important}.v-locale--is-ltr .pe-md-16{padding-right:64px!important}.v-locale--is-rtl .pe-md-16{padding-left:64px!important}.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}.text-md-justify{text-align:justify!important}.text-md-start{text-align:start!important}.text-md-end{text-align:end!important}.text-md-h1{font-size:6rem!important;line-height:6rem;letter-spacing:-.015625em!important}.text-md-h1,.text-md-h2{font-weight:300;font-family:Roboto,sans-serif!important}.text-md-h2{font-size:3.75rem!important;line-height:3.75rem;letter-spacing:-.0083333333em!important}.text-md-h3{font-size:3rem!important;line-height:3.125rem;letter-spacing:normal!important}.text-md-h3,.text-md-h4{font-weight:400;font-family:Roboto,sans-serif!important}.text-md-h4{font-size:2.125rem!important;line-height:2.5rem;letter-spacing:.0073529412em!important}.text-md-h5{font-size:1.5rem!important;font-weight:400;letter-spacing:normal!important}.text-md-h5,.text-md-h6{line-height:2rem;font-family:Roboto,sans-serif!important}.text-md-h6{font-size:1.25rem!important;font-weight:500;letter-spacing:.0125em!important}.text-md-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif!important}.text-md-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif!important}.text-md-body-1{font-size:1rem!important;line-height:1.5rem;letter-spacing:.03125em!important}.text-md-body-1,.text-md-body-2{font-weight:400;font-family:Roboto,sans-serif!important}.text-md-body-2{font-size:.875rem!important;line-height:1.25rem;letter-spacing:.0178571429em!important}.text-md-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif!important;text-transform:uppercase!important}.text-md-caption{font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important}.text-md-caption,.text-md-overline{font-size:.75rem!important;font-family:Roboto,sans-serif!important}.text-md-overline{font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;text-transform:uppercase!important}}@media(min-width:1280px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.float-lg-none{float:none!important}.float-lg-left{float:left!important}.float-lg-right{float:right!important}.v-locale--is-rtl .float-lg-end{float:left!important}.v-locale--is-ltr .float-lg-end,.v-locale--is-rtl .float-lg-start{float:right!important}.v-locale--is-ltr .float-lg-start{float:left!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-lg-start{justify-content:flex-start!important}.justify-lg-end{justify-content:flex-end!important}.justify-lg-center{justify-content:center!important}.justify-lg-space-between{justify-content:space-between!important}.justify-lg-space-around{justify-content:space-around!important}.align-lg-start{align-items:flex-start!important}.align-lg-end{align-items:flex-end!important}.align-lg-center{align-items:center!important}.align-lg-baseline{align-items:baseline!important}.align-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-space-between{align-content:space-between!important}.align-content-lg-space-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-6{order:6!important}.order-lg-7{order:7!important}.order-lg-8{order:8!important}.order-lg-9{order:9!important}.order-lg-10{order:10!important}.order-lg-11{order:11!important}.order-lg-12{order:12!important}.order-lg-last{order:13!important}.ma-lg-0{margin:0!important}.ma-lg-1{margin:4px!important}.ma-lg-2{margin:8px!important}.ma-lg-3{margin:12px!important}.ma-lg-4{margin:16px!important}.ma-lg-5{margin:20px!important}.ma-lg-6{margin:24px!important}.ma-lg-7{margin:28px!important}.ma-lg-8{margin:32px!important}.ma-lg-9{margin:36px!important}.ma-lg-10{margin:40px!important}.ma-lg-11{margin:44px!important}.ma-lg-12{margin:48px!important}.ma-lg-13{margin:52px!important}.ma-lg-14{margin:56px!important}.ma-lg-15{margin:60px!important}.ma-lg-16{margin:64px!important}.ma-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:4px!important;margin-left:4px!important}.mx-lg-2{margin-right:8px!important;margin-left:8px!important}.mx-lg-3{margin-right:12px!important;margin-left:12px!important}.mx-lg-4{margin-right:16px!important;margin-left:16px!important}.mx-lg-5{margin-right:20px!important;margin-left:20px!important}.mx-lg-6{margin-right:24px!important;margin-left:24px!important}.mx-lg-7{margin-right:28px!important;margin-left:28px!important}.mx-lg-8{margin-right:32px!important;margin-left:32px!important}.mx-lg-9{margin-right:36px!important;margin-left:36px!important}.mx-lg-10{margin-right:40px!important;margin-left:40px!important}.mx-lg-11{margin-right:44px!important;margin-left:44px!important}.mx-lg-12{margin-right:48px!important;margin-left:48px!important}.mx-lg-13{margin-right:52px!important;margin-left:52px!important}.mx-lg-14{margin-right:56px!important;margin-left:56px!important}.mx-lg-15{margin-right:60px!important;margin-left:60px!important}.mx-lg-16{margin-right:64px!important;margin-left:64px!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:4px!important;margin-bottom:4px!important}.my-lg-2{margin-top:8px!important;margin-bottom:8px!important}.my-lg-3{margin-top:12px!important;margin-bottom:12px!important}.my-lg-4{margin-top:16px!important;margin-bottom:16px!important}.my-lg-5{margin-top:20px!important;margin-bottom:20px!important}.my-lg-6{margin-top:24px!important;margin-bottom:24px!important}.my-lg-7{margin-top:28px!important;margin-bottom:28px!important}.my-lg-8{margin-top:32px!important;margin-bottom:32px!important}.my-lg-9{margin-top:36px!important;margin-bottom:36px!important}.my-lg-10{margin-top:40px!important;margin-bottom:40px!important}.my-lg-11{margin-top:44px!important;margin-bottom:44px!important}.my-lg-12{margin-top:48px!important;margin-bottom:48px!important}.my-lg-13{margin-top:52px!important;margin-bottom:52px!important}.my-lg-14{margin-top:56px!important;margin-bottom:56px!important}.my-lg-15{margin-top:60px!important;margin-bottom:60px!important}.my-lg-16{margin-top:64px!important;margin-bottom:64px!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:4px!important}.mt-lg-2{margin-top:8px!important}.mt-lg-3{margin-top:12px!important}.mt-lg-4{margin-top:16px!important}.mt-lg-5{margin-top:20px!important}.mt-lg-6{margin-top:24px!important}.mt-lg-7{margin-top:28px!important}.mt-lg-8{margin-top:32px!important}.mt-lg-9{margin-top:36px!important}.mt-lg-10{margin-top:40px!important}.mt-lg-11{margin-top:44px!important}.mt-lg-12{margin-top:48px!important}.mt-lg-13{margin-top:52px!important}.mt-lg-14{margin-top:56px!important}.mt-lg-15{margin-top:60px!important}.mt-lg-16{margin-top:64px!important}.mt-lg-auto{margin-top:auto!important}.mr-lg-0{margin-right:0!important}.mr-lg-1{margin-right:4px!important}.mr-lg-2{margin-right:8px!important}.mr-lg-3{margin-right:12px!important}.mr-lg-4{margin-right:16px!important}.mr-lg-5{margin-right:20px!important}.mr-lg-6{margin-right:24px!important}.mr-lg-7{margin-right:28px!important}.mr-lg-8{margin-right:32px!important}.mr-lg-9{margin-right:36px!important}.mr-lg-10{margin-right:40px!important}.mr-lg-11{margin-right:44px!important}.mr-lg-12{margin-right:48px!important}.mr-lg-13{margin-right:52px!important}.mr-lg-14{margin-right:56px!important}.mr-lg-15{margin-right:60px!important}.mr-lg-16{margin-right:64px!important}.mr-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:4px!important}.mb-lg-2{margin-bottom:8px!important}.mb-lg-3{margin-bottom:12px!important}.mb-lg-4{margin-bottom:16px!important}.mb-lg-5{margin-bottom:20px!important}.mb-lg-6{margin-bottom:24px!important}.mb-lg-7{margin-bottom:28px!important}.mb-lg-8{margin-bottom:32px!important}.mb-lg-9{margin-bottom:36px!important}.mb-lg-10{margin-bottom:40px!important}.mb-lg-11{margin-bottom:44px!important}.mb-lg-12{margin-bottom:48px!important}.mb-lg-13{margin-bottom:52px!important}.mb-lg-14{margin-bottom:56px!important}.mb-lg-15{margin-bottom:60px!important}.mb-lg-16{margin-bottom:64px!important}.mb-lg-auto{margin-bottom:auto!important}.ml-lg-0{margin-left:0!important}.ml-lg-1{margin-left:4px!important}.ml-lg-2{margin-left:8px!important}.ml-lg-3{margin-left:12px!important}.ml-lg-4{margin-left:16px!important}.ml-lg-5{margin-left:20px!important}.ml-lg-6{margin-left:24px!important}.ml-lg-7{margin-left:28px!important}.ml-lg-8{margin-left:32px!important}.ml-lg-9{margin-left:36px!important}.ml-lg-10{margin-left:40px!important}.ml-lg-11{margin-left:44px!important}.ml-lg-12{margin-left:48px!important}.ml-lg-13{margin-left:52px!important}.ml-lg-14{margin-left:56px!important}.ml-lg-15{margin-left:60px!important}.ml-lg-16{margin-left:64px!important}.ml-lg-auto{margin-left:auto!important}.v-locale--is-ltr .ms-lg-0{margin-left:0!important}.v-locale--is-rtl .ms-lg-0{margin-right:0!important}.v-locale--is-ltr .ms-lg-1{margin-left:4px!important}.v-locale--is-rtl .ms-lg-1{margin-right:4px!important}.v-locale--is-ltr .ms-lg-2{margin-left:8px!important}.v-locale--is-rtl .ms-lg-2{margin-right:8px!important}.v-locale--is-ltr .ms-lg-3{margin-left:12px!important}.v-locale--is-rtl .ms-lg-3{margin-right:12px!important}.v-locale--is-ltr .ms-lg-4{margin-left:16px!important}.v-locale--is-rtl .ms-lg-4{margin-right:16px!important}.v-locale--is-ltr .ms-lg-5{margin-left:20px!important}.v-locale--is-rtl .ms-lg-5{margin-right:20px!important}.v-locale--is-ltr .ms-lg-6{margin-left:24px!important}.v-locale--is-rtl .ms-lg-6{margin-right:24px!important}.v-locale--is-ltr .ms-lg-7{margin-left:28px!important}.v-locale--is-rtl .ms-lg-7{margin-right:28px!important}.v-locale--is-ltr .ms-lg-8{margin-left:32px!important}.v-locale--is-rtl .ms-lg-8{margin-right:32px!important}.v-locale--is-ltr .ms-lg-9{margin-left:36px!important}.v-locale--is-rtl .ms-lg-9{margin-right:36px!important}.v-locale--is-ltr .ms-lg-10{margin-left:40px!important}.v-locale--is-rtl .ms-lg-10{margin-right:40px!important}.v-locale--is-ltr .ms-lg-11{margin-left:44px!important}.v-locale--is-rtl .ms-lg-11{margin-right:44px!important}.v-locale--is-ltr .ms-lg-12{margin-left:48px!important}.v-locale--is-rtl .ms-lg-12{margin-right:48px!important}.v-locale--is-ltr .ms-lg-13{margin-left:52px!important}.v-locale--is-rtl .ms-lg-13{margin-right:52px!important}.v-locale--is-ltr .ms-lg-14{margin-left:56px!important}.v-locale--is-rtl .ms-lg-14{margin-right:56px!important}.v-locale--is-ltr .ms-lg-15{margin-left:60px!important}.v-locale--is-rtl .ms-lg-15{margin-right:60px!important}.v-locale--is-ltr .ms-lg-16{margin-left:64px!important}.v-locale--is-rtl .ms-lg-16{margin-right:64px!important}.v-locale--is-ltr .ms-lg-auto{margin-left:auto!important}.v-locale--is-rtl .ms-lg-auto{margin-right:auto!important}.v-locale--is-ltr .me-lg-0{margin-right:0!important}.v-locale--is-rtl .me-lg-0{margin-left:0!important}.v-locale--is-ltr .me-lg-1{margin-right:4px!important}.v-locale--is-rtl .me-lg-1{margin-left:4px!important}.v-locale--is-ltr .me-lg-2{margin-right:8px!important}.v-locale--is-rtl .me-lg-2{margin-left:8px!important}.v-locale--is-ltr .me-lg-3{margin-right:12px!important}.v-locale--is-rtl .me-lg-3{margin-left:12px!important}.v-locale--is-ltr .me-lg-4{margin-right:16px!important}.v-locale--is-rtl .me-lg-4{margin-left:16px!important}.v-locale--is-ltr .me-lg-5{margin-right:20px!important}.v-locale--is-rtl .me-lg-5{margin-left:20px!important}.v-locale--is-ltr .me-lg-6{margin-right:24px!important}.v-locale--is-rtl .me-lg-6{margin-left:24px!important}.v-locale--is-ltr .me-lg-7{margin-right:28px!important}.v-locale--is-rtl .me-lg-7{margin-left:28px!important}.v-locale--is-ltr .me-lg-8{margin-right:32px!important}.v-locale--is-rtl .me-lg-8{margin-left:32px!important}.v-locale--is-ltr .me-lg-9{margin-right:36px!important}.v-locale--is-rtl .me-lg-9{margin-left:36px!important}.v-locale--is-ltr .me-lg-10{margin-right:40px!important}.v-locale--is-rtl .me-lg-10{margin-left:40px!important}.v-locale--is-ltr .me-lg-11{margin-right:44px!important}.v-locale--is-rtl .me-lg-11{margin-left:44px!important}.v-locale--is-ltr .me-lg-12{margin-right:48px!important}.v-locale--is-rtl .me-lg-12{margin-left:48px!important}.v-locale--is-ltr .me-lg-13{margin-right:52px!important}.v-locale--is-rtl .me-lg-13{margin-left:52px!important}.v-locale--is-ltr .me-lg-14{margin-right:56px!important}.v-locale--is-rtl .me-lg-14{margin-left:56px!important}.v-locale--is-ltr .me-lg-15{margin-right:60px!important}.v-locale--is-rtl .me-lg-15{margin-left:60px!important}.v-locale--is-ltr .me-lg-16{margin-right:64px!important}.v-locale--is-rtl .me-lg-16{margin-left:64px!important}.v-locale--is-ltr .me-lg-auto{margin-right:auto!important}.v-locale--is-rtl .me-lg-auto{margin-left:auto!important}.ma-lg-n1{margin:-4px!important}.ma-lg-n2{margin:-8px!important}.ma-lg-n3{margin:-12px!important}.ma-lg-n4{margin:-16px!important}.ma-lg-n5{margin:-20px!important}.ma-lg-n6{margin:-24px!important}.ma-lg-n7{margin:-28px!important}.ma-lg-n8{margin:-32px!important}.ma-lg-n9{margin:-36px!important}.ma-lg-n10{margin:-40px!important}.ma-lg-n11{margin:-44px!important}.ma-lg-n12{margin:-48px!important}.ma-lg-n13{margin:-52px!important}.ma-lg-n14{margin:-56px!important}.ma-lg-n15{margin:-60px!important}.ma-lg-n16{margin:-64px!important}.mx-lg-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-lg-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-lg-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-lg-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-lg-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-lg-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-lg-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-lg-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-lg-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-lg-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-lg-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-lg-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-lg-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-lg-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-lg-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-lg-n16{margin-right:-64px!important;margin-left:-64px!important}.my-lg-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-lg-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-lg-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-lg-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-lg-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-lg-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-lg-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-lg-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-lg-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-lg-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-lg-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-lg-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-lg-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-lg-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-lg-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-lg-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-lg-n1{margin-top:-4px!important}.mt-lg-n2{margin-top:-8px!important}.mt-lg-n3{margin-top:-12px!important}.mt-lg-n4{margin-top:-16px!important}.mt-lg-n5{margin-top:-20px!important}.mt-lg-n6{margin-top:-24px!important}.mt-lg-n7{margin-top:-28px!important}.mt-lg-n8{margin-top:-32px!important}.mt-lg-n9{margin-top:-36px!important}.mt-lg-n10{margin-top:-40px!important}.mt-lg-n11{margin-top:-44px!important}.mt-lg-n12{margin-top:-48px!important}.mt-lg-n13{margin-top:-52px!important}.mt-lg-n14{margin-top:-56px!important}.mt-lg-n15{margin-top:-60px!important}.mt-lg-n16{margin-top:-64px!important}.mr-lg-n1{margin-right:-4px!important}.mr-lg-n2{margin-right:-8px!important}.mr-lg-n3{margin-right:-12px!important}.mr-lg-n4{margin-right:-16px!important}.mr-lg-n5{margin-right:-20px!important}.mr-lg-n6{margin-right:-24px!important}.mr-lg-n7{margin-right:-28px!important}.mr-lg-n8{margin-right:-32px!important}.mr-lg-n9{margin-right:-36px!important}.mr-lg-n10{margin-right:-40px!important}.mr-lg-n11{margin-right:-44px!important}.mr-lg-n12{margin-right:-48px!important}.mr-lg-n13{margin-right:-52px!important}.mr-lg-n14{margin-right:-56px!important}.mr-lg-n15{margin-right:-60px!important}.mr-lg-n16{margin-right:-64px!important}.mb-lg-n1{margin-bottom:-4px!important}.mb-lg-n2{margin-bottom:-8px!important}.mb-lg-n3{margin-bottom:-12px!important}.mb-lg-n4{margin-bottom:-16px!important}.mb-lg-n5{margin-bottom:-20px!important}.mb-lg-n6{margin-bottom:-24px!important}.mb-lg-n7{margin-bottom:-28px!important}.mb-lg-n8{margin-bottom:-32px!important}.mb-lg-n9{margin-bottom:-36px!important}.mb-lg-n10{margin-bottom:-40px!important}.mb-lg-n11{margin-bottom:-44px!important}.mb-lg-n12{margin-bottom:-48px!important}.mb-lg-n13{margin-bottom:-52px!important}.mb-lg-n14{margin-bottom:-56px!important}.mb-lg-n15{margin-bottom:-60px!important}.mb-lg-n16{margin-bottom:-64px!important}.ml-lg-n1{margin-left:-4px!important}.ml-lg-n2{margin-left:-8px!important}.ml-lg-n3{margin-left:-12px!important}.ml-lg-n4{margin-left:-16px!important}.ml-lg-n5{margin-left:-20px!important}.ml-lg-n6{margin-left:-24px!important}.ml-lg-n7{margin-left:-28px!important}.ml-lg-n8{margin-left:-32px!important}.ml-lg-n9{margin-left:-36px!important}.ml-lg-n10{margin-left:-40px!important}.ml-lg-n11{margin-left:-44px!important}.ml-lg-n12{margin-left:-48px!important}.ml-lg-n13{margin-left:-52px!important}.ml-lg-n14{margin-left:-56px!important}.ml-lg-n15{margin-left:-60px!important}.ml-lg-n16{margin-left:-64px!important}.v-locale--is-ltr .ms-lg-n1{margin-left:-4px!important}.v-locale--is-rtl .ms-lg-n1{margin-right:-4px!important}.v-locale--is-ltr .ms-lg-n2{margin-left:-8px!important}.v-locale--is-rtl .ms-lg-n2{margin-right:-8px!important}.v-locale--is-ltr .ms-lg-n3{margin-left:-12px!important}.v-locale--is-rtl .ms-lg-n3{margin-right:-12px!important}.v-locale--is-ltr .ms-lg-n4{margin-left:-16px!important}.v-locale--is-rtl .ms-lg-n4{margin-right:-16px!important}.v-locale--is-ltr .ms-lg-n5{margin-left:-20px!important}.v-locale--is-rtl .ms-lg-n5{margin-right:-20px!important}.v-locale--is-ltr .ms-lg-n6{margin-left:-24px!important}.v-locale--is-rtl .ms-lg-n6{margin-right:-24px!important}.v-locale--is-ltr .ms-lg-n7{margin-left:-28px!important}.v-locale--is-rtl .ms-lg-n7{margin-right:-28px!important}.v-locale--is-ltr .ms-lg-n8{margin-left:-32px!important}.v-locale--is-rtl .ms-lg-n8{margin-right:-32px!important}.v-locale--is-ltr .ms-lg-n9{margin-left:-36px!important}.v-locale--is-rtl .ms-lg-n9{margin-right:-36px!important}.v-locale--is-ltr .ms-lg-n10{margin-left:-40px!important}.v-locale--is-rtl .ms-lg-n10{margin-right:-40px!important}.v-locale--is-ltr .ms-lg-n11{margin-left:-44px!important}.v-locale--is-rtl .ms-lg-n11{margin-right:-44px!important}.v-locale--is-ltr .ms-lg-n12{margin-left:-48px!important}.v-locale--is-rtl .ms-lg-n12{margin-right:-48px!important}.v-locale--is-ltr .ms-lg-n13{margin-left:-52px!important}.v-locale--is-rtl .ms-lg-n13{margin-right:-52px!important}.v-locale--is-ltr .ms-lg-n14{margin-left:-56px!important}.v-locale--is-rtl .ms-lg-n14{margin-right:-56px!important}.v-locale--is-ltr .ms-lg-n15{margin-left:-60px!important}.v-locale--is-rtl .ms-lg-n15{margin-right:-60px!important}.v-locale--is-ltr .ms-lg-n16{margin-left:-64px!important}.v-locale--is-rtl .ms-lg-n16{margin-right:-64px!important}.v-locale--is-ltr .me-lg-n1{margin-right:-4px!important}.v-locale--is-rtl .me-lg-n1{margin-left:-4px!important}.v-locale--is-ltr .me-lg-n2{margin-right:-8px!important}.v-locale--is-rtl .me-lg-n2{margin-left:-8px!important}.v-locale--is-ltr .me-lg-n3{margin-right:-12px!important}.v-locale--is-rtl .me-lg-n3{margin-left:-12px!important}.v-locale--is-ltr .me-lg-n4{margin-right:-16px!important}.v-locale--is-rtl .me-lg-n4{margin-left:-16px!important}.v-locale--is-ltr .me-lg-n5{margin-right:-20px!important}.v-locale--is-rtl .me-lg-n5{margin-left:-20px!important}.v-locale--is-ltr .me-lg-n6{margin-right:-24px!important}.v-locale--is-rtl .me-lg-n6{margin-left:-24px!important}.v-locale--is-ltr .me-lg-n7{margin-right:-28px!important}.v-locale--is-rtl .me-lg-n7{margin-left:-28px!important}.v-locale--is-ltr .me-lg-n8{margin-right:-32px!important}.v-locale--is-rtl .me-lg-n8{margin-left:-32px!important}.v-locale--is-ltr .me-lg-n9{margin-right:-36px!important}.v-locale--is-rtl .me-lg-n9{margin-left:-36px!important}.v-locale--is-ltr .me-lg-n10{margin-right:-40px!important}.v-locale--is-rtl .me-lg-n10{margin-left:-40px!important}.v-locale--is-ltr .me-lg-n11{margin-right:-44px!important}.v-locale--is-rtl .me-lg-n11{margin-left:-44px!important}.v-locale--is-ltr .me-lg-n12{margin-right:-48px!important}.v-locale--is-rtl .me-lg-n12{margin-left:-48px!important}.v-locale--is-ltr .me-lg-n13{margin-right:-52px!important}.v-locale--is-rtl .me-lg-n13{margin-left:-52px!important}.v-locale--is-ltr .me-lg-n14{margin-right:-56px!important}.v-locale--is-rtl .me-lg-n14{margin-left:-56px!important}.v-locale--is-ltr .me-lg-n15{margin-right:-60px!important}.v-locale--is-rtl .me-lg-n15{margin-left:-60px!important}.v-locale--is-ltr .me-lg-n16{margin-right:-64px!important}.v-locale--is-rtl .me-lg-n16{margin-left:-64px!important}.pa-lg-0{padding:0!important}.pa-lg-1{padding:4px!important}.pa-lg-2{padding:8px!important}.pa-lg-3{padding:12px!important}.pa-lg-4{padding:16px!important}.pa-lg-5{padding:20px!important}.pa-lg-6{padding:24px!important}.pa-lg-7{padding:28px!important}.pa-lg-8{padding:32px!important}.pa-lg-9{padding:36px!important}.pa-lg-10{padding:40px!important}.pa-lg-11{padding:44px!important}.pa-lg-12{padding:48px!important}.pa-lg-13{padding:52px!important}.pa-lg-14{padding:56px!important}.pa-lg-15{padding:60px!important}.pa-lg-16{padding:64px!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:4px!important;padding-left:4px!important}.px-lg-2{padding-right:8px!important;padding-left:8px!important}.px-lg-3{padding-right:12px!important;padding-left:12px!important}.px-lg-4{padding-right:16px!important;padding-left:16px!important}.px-lg-5{padding-right:20px!important;padding-left:20px!important}.px-lg-6{padding-right:24px!important;padding-left:24px!important}.px-lg-7{padding-right:28px!important;padding-left:28px!important}.px-lg-8{padding-right:32px!important;padding-left:32px!important}.px-lg-9{padding-right:36px!important;padding-left:36px!important}.px-lg-10{padding-right:40px!important;padding-left:40px!important}.px-lg-11{padding-right:44px!important;padding-left:44px!important}.px-lg-12{padding-right:48px!important;padding-left:48px!important}.px-lg-13{padding-right:52px!important;padding-left:52px!important}.px-lg-14{padding-right:56px!important;padding-left:56px!important}.px-lg-15{padding-right:60px!important;padding-left:60px!important}.px-lg-16{padding-right:64px!important;padding-left:64px!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:4px!important;padding-bottom:4px!important}.py-lg-2{padding-top:8px!important;padding-bottom:8px!important}.py-lg-3{padding-top:12px!important;padding-bottom:12px!important}.py-lg-4{padding-top:16px!important;padding-bottom:16px!important}.py-lg-5{padding-top:20px!important;padding-bottom:20px!important}.py-lg-6{padding-top:24px!important;padding-bottom:24px!important}.py-lg-7{padding-top:28px!important;padding-bottom:28px!important}.py-lg-8{padding-top:32px!important;padding-bottom:32px!important}.py-lg-9{padding-top:36px!important;padding-bottom:36px!important}.py-lg-10{padding-top:40px!important;padding-bottom:40px!important}.py-lg-11{padding-top:44px!important;padding-bottom:44px!important}.py-lg-12{padding-top:48px!important;padding-bottom:48px!important}.py-lg-13{padding-top:52px!important;padding-bottom:52px!important}.py-lg-14{padding-top:56px!important;padding-bottom:56px!important}.py-lg-15{padding-top:60px!important;padding-bottom:60px!important}.py-lg-16{padding-top:64px!important;padding-bottom:64px!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:4px!important}.pt-lg-2{padding-top:8px!important}.pt-lg-3{padding-top:12px!important}.pt-lg-4{padding-top:16px!important}.pt-lg-5{padding-top:20px!important}.pt-lg-6{padding-top:24px!important}.pt-lg-7{padding-top:28px!important}.pt-lg-8{padding-top:32px!important}.pt-lg-9{padding-top:36px!important}.pt-lg-10{padding-top:40px!important}.pt-lg-11{padding-top:44px!important}.pt-lg-12{padding-top:48px!important}.pt-lg-13{padding-top:52px!important}.pt-lg-14{padding-top:56px!important}.pt-lg-15{padding-top:60px!important}.pt-lg-16{padding-top:64px!important}.pr-lg-0{padding-right:0!important}.pr-lg-1{padding-right:4px!important}.pr-lg-2{padding-right:8px!important}.pr-lg-3{padding-right:12px!important}.pr-lg-4{padding-right:16px!important}.pr-lg-5{padding-right:20px!important}.pr-lg-6{padding-right:24px!important}.pr-lg-7{padding-right:28px!important}.pr-lg-8{padding-right:32px!important}.pr-lg-9{padding-right:36px!important}.pr-lg-10{padding-right:40px!important}.pr-lg-11{padding-right:44px!important}.pr-lg-12{padding-right:48px!important}.pr-lg-13{padding-right:52px!important}.pr-lg-14{padding-right:56px!important}.pr-lg-15{padding-right:60px!important}.pr-lg-16{padding-right:64px!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:4px!important}.pb-lg-2{padding-bottom:8px!important}.pb-lg-3{padding-bottom:12px!important}.pb-lg-4{padding-bottom:16px!important}.pb-lg-5{padding-bottom:20px!important}.pb-lg-6{padding-bottom:24px!important}.pb-lg-7{padding-bottom:28px!important}.pb-lg-8{padding-bottom:32px!important}.pb-lg-9{padding-bottom:36px!important}.pb-lg-10{padding-bottom:40px!important}.pb-lg-11{padding-bottom:44px!important}.pb-lg-12{padding-bottom:48px!important}.pb-lg-13{padding-bottom:52px!important}.pb-lg-14{padding-bottom:56px!important}.pb-lg-15{padding-bottom:60px!important}.pb-lg-16{padding-bottom:64px!important}.pl-lg-0{padding-left:0!important}.pl-lg-1{padding-left:4px!important}.pl-lg-2{padding-left:8px!important}.pl-lg-3{padding-left:12px!important}.pl-lg-4{padding-left:16px!important}.pl-lg-5{padding-left:20px!important}.pl-lg-6{padding-left:24px!important}.pl-lg-7{padding-left:28px!important}.pl-lg-8{padding-left:32px!important}.pl-lg-9{padding-left:36px!important}.pl-lg-10{padding-left:40px!important}.pl-lg-11{padding-left:44px!important}.pl-lg-12{padding-left:48px!important}.pl-lg-13{padding-left:52px!important}.pl-lg-14{padding-left:56px!important}.pl-lg-15{padding-left:60px!important}.pl-lg-16{padding-left:64px!important}.v-locale--is-ltr .ps-lg-0{padding-left:0!important}.v-locale--is-rtl .ps-lg-0{padding-right:0!important}.v-locale--is-ltr .ps-lg-1{padding-left:4px!important}.v-locale--is-rtl .ps-lg-1{padding-right:4px!important}.v-locale--is-ltr .ps-lg-2{padding-left:8px!important}.v-locale--is-rtl .ps-lg-2{padding-right:8px!important}.v-locale--is-ltr .ps-lg-3{padding-left:12px!important}.v-locale--is-rtl .ps-lg-3{padding-right:12px!important}.v-locale--is-ltr .ps-lg-4{padding-left:16px!important}.v-locale--is-rtl .ps-lg-4{padding-right:16px!important}.v-locale--is-ltr .ps-lg-5{padding-left:20px!important}.v-locale--is-rtl .ps-lg-5{padding-right:20px!important}.v-locale--is-ltr .ps-lg-6{padding-left:24px!important}.v-locale--is-rtl .ps-lg-6{padding-right:24px!important}.v-locale--is-ltr .ps-lg-7{padding-left:28px!important}.v-locale--is-rtl .ps-lg-7{padding-right:28px!important}.v-locale--is-ltr .ps-lg-8{padding-left:32px!important}.v-locale--is-rtl .ps-lg-8{padding-right:32px!important}.v-locale--is-ltr .ps-lg-9{padding-left:36px!important}.v-locale--is-rtl .ps-lg-9{padding-right:36px!important}.v-locale--is-ltr .ps-lg-10{padding-left:40px!important}.v-locale--is-rtl .ps-lg-10{padding-right:40px!important}.v-locale--is-ltr .ps-lg-11{padding-left:44px!important}.v-locale--is-rtl .ps-lg-11{padding-right:44px!important}.v-locale--is-ltr .ps-lg-12{padding-left:48px!important}.v-locale--is-rtl .ps-lg-12{padding-right:48px!important}.v-locale--is-ltr .ps-lg-13{padding-left:52px!important}.v-locale--is-rtl .ps-lg-13{padding-right:52px!important}.v-locale--is-ltr .ps-lg-14{padding-left:56px!important}.v-locale--is-rtl .ps-lg-14{padding-right:56px!important}.v-locale--is-ltr .ps-lg-15{padding-left:60px!important}.v-locale--is-rtl .ps-lg-15{padding-right:60px!important}.v-locale--is-ltr .ps-lg-16{padding-left:64px!important}.v-locale--is-rtl .ps-lg-16{padding-right:64px!important}.v-locale--is-ltr .pe-lg-0{padding-right:0!important}.v-locale--is-rtl .pe-lg-0{padding-left:0!important}.v-locale--is-ltr .pe-lg-1{padding-right:4px!important}.v-locale--is-rtl .pe-lg-1{padding-left:4px!important}.v-locale--is-ltr .pe-lg-2{padding-right:8px!important}.v-locale--is-rtl .pe-lg-2{padding-left:8px!important}.v-locale--is-ltr .pe-lg-3{padding-right:12px!important}.v-locale--is-rtl .pe-lg-3{padding-left:12px!important}.v-locale--is-ltr .pe-lg-4{padding-right:16px!important}.v-locale--is-rtl .pe-lg-4{padding-left:16px!important}.v-locale--is-ltr .pe-lg-5{padding-right:20px!important}.v-locale--is-rtl .pe-lg-5{padding-left:20px!important}.v-locale--is-ltr .pe-lg-6{padding-right:24px!important}.v-locale--is-rtl .pe-lg-6{padding-left:24px!important}.v-locale--is-ltr .pe-lg-7{padding-right:28px!important}.v-locale--is-rtl .pe-lg-7{padding-left:28px!important}.v-locale--is-ltr .pe-lg-8{padding-right:32px!important}.v-locale--is-rtl .pe-lg-8{padding-left:32px!important}.v-locale--is-ltr .pe-lg-9{padding-right:36px!important}.v-locale--is-rtl .pe-lg-9{padding-left:36px!important}.v-locale--is-ltr .pe-lg-10{padding-right:40px!important}.v-locale--is-rtl .pe-lg-10{padding-left:40px!important}.v-locale--is-ltr .pe-lg-11{padding-right:44px!important}.v-locale--is-rtl .pe-lg-11{padding-left:44px!important}.v-locale--is-ltr .pe-lg-12{padding-right:48px!important}.v-locale--is-rtl .pe-lg-12{padding-left:48px!important}.v-locale--is-ltr .pe-lg-13{padding-right:52px!important}.v-locale--is-rtl .pe-lg-13{padding-left:52px!important}.v-locale--is-ltr .pe-lg-14{padding-right:56px!important}.v-locale--is-rtl .pe-lg-14{padding-left:56px!important}.v-locale--is-ltr .pe-lg-15{padding-right:60px!important}.v-locale--is-rtl .pe-lg-15{padding-left:60px!important}.v-locale--is-ltr .pe-lg-16{padding-right:64px!important}.v-locale--is-rtl .pe-lg-16{padding-left:64px!important}.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}.text-lg-justify{text-align:justify!important}.text-lg-start{text-align:start!important}.text-lg-end{text-align:end!important}.text-lg-h1{font-size:6rem!important;line-height:6rem;letter-spacing:-.015625em!important}.text-lg-h1,.text-lg-h2{font-weight:300;font-family:Roboto,sans-serif!important}.text-lg-h2{font-size:3.75rem!important;line-height:3.75rem;letter-spacing:-.0083333333em!important}.text-lg-h3{font-size:3rem!important;line-height:3.125rem;letter-spacing:normal!important}.text-lg-h3,.text-lg-h4{font-weight:400;font-family:Roboto,sans-serif!important}.text-lg-h4{font-size:2.125rem!important;line-height:2.5rem;letter-spacing:.0073529412em!important}.text-lg-h5{font-size:1.5rem!important;font-weight:400;letter-spacing:normal!important}.text-lg-h5,.text-lg-h6{line-height:2rem;font-family:Roboto,sans-serif!important}.text-lg-h6{font-size:1.25rem!important;font-weight:500;letter-spacing:.0125em!important}.text-lg-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif!important}.text-lg-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif!important}.text-lg-body-1{font-size:1rem!important;line-height:1.5rem;letter-spacing:.03125em!important}.text-lg-body-1,.text-lg-body-2{font-weight:400;font-family:Roboto,sans-serif!important}.text-lg-body-2{font-size:.875rem!important;line-height:1.25rem;letter-spacing:.0178571429em!important}.text-lg-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif!important;text-transform:uppercase!important}.text-lg-caption{font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important}.text-lg-caption,.text-lg-overline{font-size:.75rem!important;font-family:Roboto,sans-serif!important}.text-lg-overline{font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;text-transform:uppercase!important}}@media(min-width:1920px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.float-xl-none{float:none!important}.float-xl-left{float:left!important}.float-xl-right{float:right!important}.v-locale--is-rtl .float-xl-end{float:left!important}.v-locale--is-ltr .float-xl-end,.v-locale--is-rtl .float-xl-start{float:right!important}.v-locale--is-ltr .float-xl-start{float:left!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-xl-start{justify-content:flex-start!important}.justify-xl-end{justify-content:flex-end!important}.justify-xl-center{justify-content:center!important}.justify-xl-space-between{justify-content:space-between!important}.justify-xl-space-around{justify-content:space-around!important}.align-xl-start{align-items:flex-start!important}.align-xl-end{align-items:flex-end!important}.align-xl-center{align-items:center!important}.align-xl-baseline{align-items:baseline!important}.align-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-space-between{align-content:space-between!important}.align-content-xl-space-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-6{order:6!important}.order-xl-7{order:7!important}.order-xl-8{order:8!important}.order-xl-9{order:9!important}.order-xl-10{order:10!important}.order-xl-11{order:11!important}.order-xl-12{order:12!important}.order-xl-last{order:13!important}.ma-xl-0{margin:0!important}.ma-xl-1{margin:4px!important}.ma-xl-2{margin:8px!important}.ma-xl-3{margin:12px!important}.ma-xl-4{margin:16px!important}.ma-xl-5{margin:20px!important}.ma-xl-6{margin:24px!important}.ma-xl-7{margin:28px!important}.ma-xl-8{margin:32px!important}.ma-xl-9{margin:36px!important}.ma-xl-10{margin:40px!important}.ma-xl-11{margin:44px!important}.ma-xl-12{margin:48px!important}.ma-xl-13{margin:52px!important}.ma-xl-14{margin:56px!important}.ma-xl-15{margin:60px!important}.ma-xl-16{margin:64px!important}.ma-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:4px!important;margin-left:4px!important}.mx-xl-2{margin-right:8px!important;margin-left:8px!important}.mx-xl-3{margin-right:12px!important;margin-left:12px!important}.mx-xl-4{margin-right:16px!important;margin-left:16px!important}.mx-xl-5{margin-right:20px!important;margin-left:20px!important}.mx-xl-6{margin-right:24px!important;margin-left:24px!important}.mx-xl-7{margin-right:28px!important;margin-left:28px!important}.mx-xl-8{margin-right:32px!important;margin-left:32px!important}.mx-xl-9{margin-right:36px!important;margin-left:36px!important}.mx-xl-10{margin-right:40px!important;margin-left:40px!important}.mx-xl-11{margin-right:44px!important;margin-left:44px!important}.mx-xl-12{margin-right:48px!important;margin-left:48px!important}.mx-xl-13{margin-right:52px!important;margin-left:52px!important}.mx-xl-14{margin-right:56px!important;margin-left:56px!important}.mx-xl-15{margin-right:60px!important;margin-left:60px!important}.mx-xl-16{margin-right:64px!important;margin-left:64px!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:4px!important;margin-bottom:4px!important}.my-xl-2{margin-top:8px!important;margin-bottom:8px!important}.my-xl-3{margin-top:12px!important;margin-bottom:12px!important}.my-xl-4{margin-top:16px!important;margin-bottom:16px!important}.my-xl-5{margin-top:20px!important;margin-bottom:20px!important}.my-xl-6{margin-top:24px!important;margin-bottom:24px!important}.my-xl-7{margin-top:28px!important;margin-bottom:28px!important}.my-xl-8{margin-top:32px!important;margin-bottom:32px!important}.my-xl-9{margin-top:36px!important;margin-bottom:36px!important}.my-xl-10{margin-top:40px!important;margin-bottom:40px!important}.my-xl-11{margin-top:44px!important;margin-bottom:44px!important}.my-xl-12{margin-top:48px!important;margin-bottom:48px!important}.my-xl-13{margin-top:52px!important;margin-bottom:52px!important}.my-xl-14{margin-top:56px!important;margin-bottom:56px!important}.my-xl-15{margin-top:60px!important;margin-bottom:60px!important}.my-xl-16{margin-top:64px!important;margin-bottom:64px!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:4px!important}.mt-xl-2{margin-top:8px!important}.mt-xl-3{margin-top:12px!important}.mt-xl-4{margin-top:16px!important}.mt-xl-5{margin-top:20px!important}.mt-xl-6{margin-top:24px!important}.mt-xl-7{margin-top:28px!important}.mt-xl-8{margin-top:32px!important}.mt-xl-9{margin-top:36px!important}.mt-xl-10{margin-top:40px!important}.mt-xl-11{margin-top:44px!important}.mt-xl-12{margin-top:48px!important}.mt-xl-13{margin-top:52px!important}.mt-xl-14{margin-top:56px!important}.mt-xl-15{margin-top:60px!important}.mt-xl-16{margin-top:64px!important}.mt-xl-auto{margin-top:auto!important}.mr-xl-0{margin-right:0!important}.mr-xl-1{margin-right:4px!important}.mr-xl-2{margin-right:8px!important}.mr-xl-3{margin-right:12px!important}.mr-xl-4{margin-right:16px!important}.mr-xl-5{margin-right:20px!important}.mr-xl-6{margin-right:24px!important}.mr-xl-7{margin-right:28px!important}.mr-xl-8{margin-right:32px!important}.mr-xl-9{margin-right:36px!important}.mr-xl-10{margin-right:40px!important}.mr-xl-11{margin-right:44px!important}.mr-xl-12{margin-right:48px!important}.mr-xl-13{margin-right:52px!important}.mr-xl-14{margin-right:56px!important}.mr-xl-15{margin-right:60px!important}.mr-xl-16{margin-right:64px!important}.mr-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:4px!important}.mb-xl-2{margin-bottom:8px!important}.mb-xl-3{margin-bottom:12px!important}.mb-xl-4{margin-bottom:16px!important}.mb-xl-5{margin-bottom:20px!important}.mb-xl-6{margin-bottom:24px!important}.mb-xl-7{margin-bottom:28px!important}.mb-xl-8{margin-bottom:32px!important}.mb-xl-9{margin-bottom:36px!important}.mb-xl-10{margin-bottom:40px!important}.mb-xl-11{margin-bottom:44px!important}.mb-xl-12{margin-bottom:48px!important}.mb-xl-13{margin-bottom:52px!important}.mb-xl-14{margin-bottom:56px!important}.mb-xl-15{margin-bottom:60px!important}.mb-xl-16{margin-bottom:64px!important}.mb-xl-auto{margin-bottom:auto!important}.ml-xl-0{margin-left:0!important}.ml-xl-1{margin-left:4px!important}.ml-xl-2{margin-left:8px!important}.ml-xl-3{margin-left:12px!important}.ml-xl-4{margin-left:16px!important}.ml-xl-5{margin-left:20px!important}.ml-xl-6{margin-left:24px!important}.ml-xl-7{margin-left:28px!important}.ml-xl-8{margin-left:32px!important}.ml-xl-9{margin-left:36px!important}.ml-xl-10{margin-left:40px!important}.ml-xl-11{margin-left:44px!important}.ml-xl-12{margin-left:48px!important}.ml-xl-13{margin-left:52px!important}.ml-xl-14{margin-left:56px!important}.ml-xl-15{margin-left:60px!important}.ml-xl-16{margin-left:64px!important}.ml-xl-auto{margin-left:auto!important}.v-locale--is-ltr .ms-xl-0{margin-left:0!important}.v-locale--is-rtl .ms-xl-0{margin-right:0!important}.v-locale--is-ltr .ms-xl-1{margin-left:4px!important}.v-locale--is-rtl .ms-xl-1{margin-right:4px!important}.v-locale--is-ltr .ms-xl-2{margin-left:8px!important}.v-locale--is-rtl .ms-xl-2{margin-right:8px!important}.v-locale--is-ltr .ms-xl-3{margin-left:12px!important}.v-locale--is-rtl .ms-xl-3{margin-right:12px!important}.v-locale--is-ltr .ms-xl-4{margin-left:16px!important}.v-locale--is-rtl .ms-xl-4{margin-right:16px!important}.v-locale--is-ltr .ms-xl-5{margin-left:20px!important}.v-locale--is-rtl .ms-xl-5{margin-right:20px!important}.v-locale--is-ltr .ms-xl-6{margin-left:24px!important}.v-locale--is-rtl .ms-xl-6{margin-right:24px!important}.v-locale--is-ltr .ms-xl-7{margin-left:28px!important}.v-locale--is-rtl .ms-xl-7{margin-right:28px!important}.v-locale--is-ltr .ms-xl-8{margin-left:32px!important}.v-locale--is-rtl .ms-xl-8{margin-right:32px!important}.v-locale--is-ltr .ms-xl-9{margin-left:36px!important}.v-locale--is-rtl .ms-xl-9{margin-right:36px!important}.v-locale--is-ltr .ms-xl-10{margin-left:40px!important}.v-locale--is-rtl .ms-xl-10{margin-right:40px!important}.v-locale--is-ltr .ms-xl-11{margin-left:44px!important}.v-locale--is-rtl .ms-xl-11{margin-right:44px!important}.v-locale--is-ltr .ms-xl-12{margin-left:48px!important}.v-locale--is-rtl .ms-xl-12{margin-right:48px!important}.v-locale--is-ltr .ms-xl-13{margin-left:52px!important}.v-locale--is-rtl .ms-xl-13{margin-right:52px!important}.v-locale--is-ltr .ms-xl-14{margin-left:56px!important}.v-locale--is-rtl .ms-xl-14{margin-right:56px!important}.v-locale--is-ltr .ms-xl-15{margin-left:60px!important}.v-locale--is-rtl .ms-xl-15{margin-right:60px!important}.v-locale--is-ltr .ms-xl-16{margin-left:64px!important}.v-locale--is-rtl .ms-xl-16{margin-right:64px!important}.v-locale--is-ltr .ms-xl-auto{margin-left:auto!important}.v-locale--is-rtl .ms-xl-auto{margin-right:auto!important}.v-locale--is-ltr .me-xl-0{margin-right:0!important}.v-locale--is-rtl .me-xl-0{margin-left:0!important}.v-locale--is-ltr .me-xl-1{margin-right:4px!important}.v-locale--is-rtl .me-xl-1{margin-left:4px!important}.v-locale--is-ltr .me-xl-2{margin-right:8px!important}.v-locale--is-rtl .me-xl-2{margin-left:8px!important}.v-locale--is-ltr .me-xl-3{margin-right:12px!important}.v-locale--is-rtl .me-xl-3{margin-left:12px!important}.v-locale--is-ltr .me-xl-4{margin-right:16px!important}.v-locale--is-rtl .me-xl-4{margin-left:16px!important}.v-locale--is-ltr .me-xl-5{margin-right:20px!important}.v-locale--is-rtl .me-xl-5{margin-left:20px!important}.v-locale--is-ltr .me-xl-6{margin-right:24px!important}.v-locale--is-rtl .me-xl-6{margin-left:24px!important}.v-locale--is-ltr .me-xl-7{margin-right:28px!important}.v-locale--is-rtl .me-xl-7{margin-left:28px!important}.v-locale--is-ltr .me-xl-8{margin-right:32px!important}.v-locale--is-rtl .me-xl-8{margin-left:32px!important}.v-locale--is-ltr .me-xl-9{margin-right:36px!important}.v-locale--is-rtl .me-xl-9{margin-left:36px!important}.v-locale--is-ltr .me-xl-10{margin-right:40px!important}.v-locale--is-rtl .me-xl-10{margin-left:40px!important}.v-locale--is-ltr .me-xl-11{margin-right:44px!important}.v-locale--is-rtl .me-xl-11{margin-left:44px!important}.v-locale--is-ltr .me-xl-12{margin-right:48px!important}.v-locale--is-rtl .me-xl-12{margin-left:48px!important}.v-locale--is-ltr .me-xl-13{margin-right:52px!important}.v-locale--is-rtl .me-xl-13{margin-left:52px!important}.v-locale--is-ltr .me-xl-14{margin-right:56px!important}.v-locale--is-rtl .me-xl-14{margin-left:56px!important}.v-locale--is-ltr .me-xl-15{margin-right:60px!important}.v-locale--is-rtl .me-xl-15{margin-left:60px!important}.v-locale--is-ltr .me-xl-16{margin-right:64px!important}.v-locale--is-rtl .me-xl-16{margin-left:64px!important}.v-locale--is-ltr .me-xl-auto{margin-right:auto!important}.v-locale--is-rtl .me-xl-auto{margin-left:auto!important}.ma-xl-n1{margin:-4px!important}.ma-xl-n2{margin:-8px!important}.ma-xl-n3{margin:-12px!important}.ma-xl-n4{margin:-16px!important}.ma-xl-n5{margin:-20px!important}.ma-xl-n6{margin:-24px!important}.ma-xl-n7{margin:-28px!important}.ma-xl-n8{margin:-32px!important}.ma-xl-n9{margin:-36px!important}.ma-xl-n10{margin:-40px!important}.ma-xl-n11{margin:-44px!important}.ma-xl-n12{margin:-48px!important}.ma-xl-n13{margin:-52px!important}.ma-xl-n14{margin:-56px!important}.ma-xl-n15{margin:-60px!important}.ma-xl-n16{margin:-64px!important}.mx-xl-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-xl-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-xl-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-xl-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-xl-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-xl-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-xl-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-xl-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-xl-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-xl-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-xl-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-xl-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-xl-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-xl-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-xl-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-xl-n16{margin-right:-64px!important;margin-left:-64px!important}.my-xl-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-xl-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-xl-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-xl-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-xl-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-xl-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-xl-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-xl-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-xl-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-xl-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-xl-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-xl-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-xl-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-xl-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-xl-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-xl-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-xl-n1{margin-top:-4px!important}.mt-xl-n2{margin-top:-8px!important}.mt-xl-n3{margin-top:-12px!important}.mt-xl-n4{margin-top:-16px!important}.mt-xl-n5{margin-top:-20px!important}.mt-xl-n6{margin-top:-24px!important}.mt-xl-n7{margin-top:-28px!important}.mt-xl-n8{margin-top:-32px!important}.mt-xl-n9{margin-top:-36px!important}.mt-xl-n10{margin-top:-40px!important}.mt-xl-n11{margin-top:-44px!important}.mt-xl-n12{margin-top:-48px!important}.mt-xl-n13{margin-top:-52px!important}.mt-xl-n14{margin-top:-56px!important}.mt-xl-n15{margin-top:-60px!important}.mt-xl-n16{margin-top:-64px!important}.mr-xl-n1{margin-right:-4px!important}.mr-xl-n2{margin-right:-8px!important}.mr-xl-n3{margin-right:-12px!important}.mr-xl-n4{margin-right:-16px!important}.mr-xl-n5{margin-right:-20px!important}.mr-xl-n6{margin-right:-24px!important}.mr-xl-n7{margin-right:-28px!important}.mr-xl-n8{margin-right:-32px!important}.mr-xl-n9{margin-right:-36px!important}.mr-xl-n10{margin-right:-40px!important}.mr-xl-n11{margin-right:-44px!important}.mr-xl-n12{margin-right:-48px!important}.mr-xl-n13{margin-right:-52px!important}.mr-xl-n14{margin-right:-56px!important}.mr-xl-n15{margin-right:-60px!important}.mr-xl-n16{margin-right:-64px!important}.mb-xl-n1{margin-bottom:-4px!important}.mb-xl-n2{margin-bottom:-8px!important}.mb-xl-n3{margin-bottom:-12px!important}.mb-xl-n4{margin-bottom:-16px!important}.mb-xl-n5{margin-bottom:-20px!important}.mb-xl-n6{margin-bottom:-24px!important}.mb-xl-n7{margin-bottom:-28px!important}.mb-xl-n8{margin-bottom:-32px!important}.mb-xl-n9{margin-bottom:-36px!important}.mb-xl-n10{margin-bottom:-40px!important}.mb-xl-n11{margin-bottom:-44px!important}.mb-xl-n12{margin-bottom:-48px!important}.mb-xl-n13{margin-bottom:-52px!important}.mb-xl-n14{margin-bottom:-56px!important}.mb-xl-n15{margin-bottom:-60px!important}.mb-xl-n16{margin-bottom:-64px!important}.ml-xl-n1{margin-left:-4px!important}.ml-xl-n2{margin-left:-8px!important}.ml-xl-n3{margin-left:-12px!important}.ml-xl-n4{margin-left:-16px!important}.ml-xl-n5{margin-left:-20px!important}.ml-xl-n6{margin-left:-24px!important}.ml-xl-n7{margin-left:-28px!important}.ml-xl-n8{margin-left:-32px!important}.ml-xl-n9{margin-left:-36px!important}.ml-xl-n10{margin-left:-40px!important}.ml-xl-n11{margin-left:-44px!important}.ml-xl-n12{margin-left:-48px!important}.ml-xl-n13{margin-left:-52px!important}.ml-xl-n14{margin-left:-56px!important}.ml-xl-n15{margin-left:-60px!important}.ml-xl-n16{margin-left:-64px!important}.v-locale--is-ltr .ms-xl-n1{margin-left:-4px!important}.v-locale--is-rtl .ms-xl-n1{margin-right:-4px!important}.v-locale--is-ltr .ms-xl-n2{margin-left:-8px!important}.v-locale--is-rtl .ms-xl-n2{margin-right:-8px!important}.v-locale--is-ltr .ms-xl-n3{margin-left:-12px!important}.v-locale--is-rtl .ms-xl-n3{margin-right:-12px!important}.v-locale--is-ltr .ms-xl-n4{margin-left:-16px!important}.v-locale--is-rtl .ms-xl-n4{margin-right:-16px!important}.v-locale--is-ltr .ms-xl-n5{margin-left:-20px!important}.v-locale--is-rtl .ms-xl-n5{margin-right:-20px!important}.v-locale--is-ltr .ms-xl-n6{margin-left:-24px!important}.v-locale--is-rtl .ms-xl-n6{margin-right:-24px!important}.v-locale--is-ltr .ms-xl-n7{margin-left:-28px!important}.v-locale--is-rtl .ms-xl-n7{margin-right:-28px!important}.v-locale--is-ltr .ms-xl-n8{margin-left:-32px!important}.v-locale--is-rtl .ms-xl-n8{margin-right:-32px!important}.v-locale--is-ltr .ms-xl-n9{margin-left:-36px!important}.v-locale--is-rtl .ms-xl-n9{margin-right:-36px!important}.v-locale--is-ltr .ms-xl-n10{margin-left:-40px!important}.v-locale--is-rtl .ms-xl-n10{margin-right:-40px!important}.v-locale--is-ltr .ms-xl-n11{margin-left:-44px!important}.v-locale--is-rtl .ms-xl-n11{margin-right:-44px!important}.v-locale--is-ltr .ms-xl-n12{margin-left:-48px!important}.v-locale--is-rtl .ms-xl-n12{margin-right:-48px!important}.v-locale--is-ltr .ms-xl-n13{margin-left:-52px!important}.v-locale--is-rtl .ms-xl-n13{margin-right:-52px!important}.v-locale--is-ltr .ms-xl-n14{margin-left:-56px!important}.v-locale--is-rtl .ms-xl-n14{margin-right:-56px!important}.v-locale--is-ltr .ms-xl-n15{margin-left:-60px!important}.v-locale--is-rtl .ms-xl-n15{margin-right:-60px!important}.v-locale--is-ltr .ms-xl-n16{margin-left:-64px!important}.v-locale--is-rtl .ms-xl-n16{margin-right:-64px!important}.v-locale--is-ltr .me-xl-n1{margin-right:-4px!important}.v-locale--is-rtl .me-xl-n1{margin-left:-4px!important}.v-locale--is-ltr .me-xl-n2{margin-right:-8px!important}.v-locale--is-rtl .me-xl-n2{margin-left:-8px!important}.v-locale--is-ltr .me-xl-n3{margin-right:-12px!important}.v-locale--is-rtl .me-xl-n3{margin-left:-12px!important}.v-locale--is-ltr .me-xl-n4{margin-right:-16px!important}.v-locale--is-rtl .me-xl-n4{margin-left:-16px!important}.v-locale--is-ltr .me-xl-n5{margin-right:-20px!important}.v-locale--is-rtl .me-xl-n5{margin-left:-20px!important}.v-locale--is-ltr .me-xl-n6{margin-right:-24px!important}.v-locale--is-rtl .me-xl-n6{margin-left:-24px!important}.v-locale--is-ltr .me-xl-n7{margin-right:-28px!important}.v-locale--is-rtl .me-xl-n7{margin-left:-28px!important}.v-locale--is-ltr .me-xl-n8{margin-right:-32px!important}.v-locale--is-rtl .me-xl-n8{margin-left:-32px!important}.v-locale--is-ltr .me-xl-n9{margin-right:-36px!important}.v-locale--is-rtl .me-xl-n9{margin-left:-36px!important}.v-locale--is-ltr .me-xl-n10{margin-right:-40px!important}.v-locale--is-rtl .me-xl-n10{margin-left:-40px!important}.v-locale--is-ltr .me-xl-n11{margin-right:-44px!important}.v-locale--is-rtl .me-xl-n11{margin-left:-44px!important}.v-locale--is-ltr .me-xl-n12{margin-right:-48px!important}.v-locale--is-rtl .me-xl-n12{margin-left:-48px!important}.v-locale--is-ltr .me-xl-n13{margin-right:-52px!important}.v-locale--is-rtl .me-xl-n13{margin-left:-52px!important}.v-locale--is-ltr .me-xl-n14{margin-right:-56px!important}.v-locale--is-rtl .me-xl-n14{margin-left:-56px!important}.v-locale--is-ltr .me-xl-n15{margin-right:-60px!important}.v-locale--is-rtl .me-xl-n15{margin-left:-60px!important}.v-locale--is-ltr .me-xl-n16{margin-right:-64px!important}.v-locale--is-rtl .me-xl-n16{margin-left:-64px!important}.pa-xl-0{padding:0!important}.pa-xl-1{padding:4px!important}.pa-xl-2{padding:8px!important}.pa-xl-3{padding:12px!important}.pa-xl-4{padding:16px!important}.pa-xl-5{padding:20px!important}.pa-xl-6{padding:24px!important}.pa-xl-7{padding:28px!important}.pa-xl-8{padding:32px!important}.pa-xl-9{padding:36px!important}.pa-xl-10{padding:40px!important}.pa-xl-11{padding:44px!important}.pa-xl-12{padding:48px!important}.pa-xl-13{padding:52px!important}.pa-xl-14{padding:56px!important}.pa-xl-15{padding:60px!important}.pa-xl-16{padding:64px!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:4px!important;padding-left:4px!important}.px-xl-2{padding-right:8px!important;padding-left:8px!important}.px-xl-3{padding-right:12px!important;padding-left:12px!important}.px-xl-4{padding-right:16px!important;padding-left:16px!important}.px-xl-5{padding-right:20px!important;padding-left:20px!important}.px-xl-6{padding-right:24px!important;padding-left:24px!important}.px-xl-7{padding-right:28px!important;padding-left:28px!important}.px-xl-8{padding-right:32px!important;padding-left:32px!important}.px-xl-9{padding-right:36px!important;padding-left:36px!important}.px-xl-10{padding-right:40px!important;padding-left:40px!important}.px-xl-11{padding-right:44px!important;padding-left:44px!important}.px-xl-12{padding-right:48px!important;padding-left:48px!important}.px-xl-13{padding-right:52px!important;padding-left:52px!important}.px-xl-14{padding-right:56px!important;padding-left:56px!important}.px-xl-15{padding-right:60px!important;padding-left:60px!important}.px-xl-16{padding-right:64px!important;padding-left:64px!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:4px!important;padding-bottom:4px!important}.py-xl-2{padding-top:8px!important;padding-bottom:8px!important}.py-xl-3{padding-top:12px!important;padding-bottom:12px!important}.py-xl-4{padding-top:16px!important;padding-bottom:16px!important}.py-xl-5{padding-top:20px!important;padding-bottom:20px!important}.py-xl-6{padding-top:24px!important;padding-bottom:24px!important}.py-xl-7{padding-top:28px!important;padding-bottom:28px!important}.py-xl-8{padding-top:32px!important;padding-bottom:32px!important}.py-xl-9{padding-top:36px!important;padding-bottom:36px!important}.py-xl-10{padding-top:40px!important;padding-bottom:40px!important}.py-xl-11{padding-top:44px!important;padding-bottom:44px!important}.py-xl-12{padding-top:48px!important;padding-bottom:48px!important}.py-xl-13{padding-top:52px!important;padding-bottom:52px!important}.py-xl-14{padding-top:56px!important;padding-bottom:56px!important}.py-xl-15{padding-top:60px!important;padding-bottom:60px!important}.py-xl-16{padding-top:64px!important;padding-bottom:64px!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:4px!important}.pt-xl-2{padding-top:8px!important}.pt-xl-3{padding-top:12px!important}.pt-xl-4{padding-top:16px!important}.pt-xl-5{padding-top:20px!important}.pt-xl-6{padding-top:24px!important}.pt-xl-7{padding-top:28px!important}.pt-xl-8{padding-top:32px!important}.pt-xl-9{padding-top:36px!important}.pt-xl-10{padding-top:40px!important}.pt-xl-11{padding-top:44px!important}.pt-xl-12{padding-top:48px!important}.pt-xl-13{padding-top:52px!important}.pt-xl-14{padding-top:56px!important}.pt-xl-15{padding-top:60px!important}.pt-xl-16{padding-top:64px!important}.pr-xl-0{padding-right:0!important}.pr-xl-1{padding-right:4px!important}.pr-xl-2{padding-right:8px!important}.pr-xl-3{padding-right:12px!important}.pr-xl-4{padding-right:16px!important}.pr-xl-5{padding-right:20px!important}.pr-xl-6{padding-right:24px!important}.pr-xl-7{padding-right:28px!important}.pr-xl-8{padding-right:32px!important}.pr-xl-9{padding-right:36px!important}.pr-xl-10{padding-right:40px!important}.pr-xl-11{padding-right:44px!important}.pr-xl-12{padding-right:48px!important}.pr-xl-13{padding-right:52px!important}.pr-xl-14{padding-right:56px!important}.pr-xl-15{padding-right:60px!important}.pr-xl-16{padding-right:64px!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:4px!important}.pb-xl-2{padding-bottom:8px!important}.pb-xl-3{padding-bottom:12px!important}.pb-xl-4{padding-bottom:16px!important}.pb-xl-5{padding-bottom:20px!important}.pb-xl-6{padding-bottom:24px!important}.pb-xl-7{padding-bottom:28px!important}.pb-xl-8{padding-bottom:32px!important}.pb-xl-9{padding-bottom:36px!important}.pb-xl-10{padding-bottom:40px!important}.pb-xl-11{padding-bottom:44px!important}.pb-xl-12{padding-bottom:48px!important}.pb-xl-13{padding-bottom:52px!important}.pb-xl-14{padding-bottom:56px!important}.pb-xl-15{padding-bottom:60px!important}.pb-xl-16{padding-bottom:64px!important}.pl-xl-0{padding-left:0!important}.pl-xl-1{padding-left:4px!important}.pl-xl-2{padding-left:8px!important}.pl-xl-3{padding-left:12px!important}.pl-xl-4{padding-left:16px!important}.pl-xl-5{padding-left:20px!important}.pl-xl-6{padding-left:24px!important}.pl-xl-7{padding-left:28px!important}.pl-xl-8{padding-left:32px!important}.pl-xl-9{padding-left:36px!important}.pl-xl-10{padding-left:40px!important}.pl-xl-11{padding-left:44px!important}.pl-xl-12{padding-left:48px!important}.pl-xl-13{padding-left:52px!important}.pl-xl-14{padding-left:56px!important}.pl-xl-15{padding-left:60px!important}.pl-xl-16{padding-left:64px!important}.v-locale--is-ltr .ps-xl-0{padding-left:0!important}.v-locale--is-rtl .ps-xl-0{padding-right:0!important}.v-locale--is-ltr .ps-xl-1{padding-left:4px!important}.v-locale--is-rtl .ps-xl-1{padding-right:4px!important}.v-locale--is-ltr .ps-xl-2{padding-left:8px!important}.v-locale--is-rtl .ps-xl-2{padding-right:8px!important}.v-locale--is-ltr .ps-xl-3{padding-left:12px!important}.v-locale--is-rtl .ps-xl-3{padding-right:12px!important}.v-locale--is-ltr .ps-xl-4{padding-left:16px!important}.v-locale--is-rtl .ps-xl-4{padding-right:16px!important}.v-locale--is-ltr .ps-xl-5{padding-left:20px!important}.v-locale--is-rtl .ps-xl-5{padding-right:20px!important}.v-locale--is-ltr .ps-xl-6{padding-left:24px!important}.v-locale--is-rtl .ps-xl-6{padding-right:24px!important}.v-locale--is-ltr .ps-xl-7{padding-left:28px!important}.v-locale--is-rtl .ps-xl-7{padding-right:28px!important}.v-locale--is-ltr .ps-xl-8{padding-left:32px!important}.v-locale--is-rtl .ps-xl-8{padding-right:32px!important}.v-locale--is-ltr .ps-xl-9{padding-left:36px!important}.v-locale--is-rtl .ps-xl-9{padding-right:36px!important}.v-locale--is-ltr .ps-xl-10{padding-left:40px!important}.v-locale--is-rtl .ps-xl-10{padding-right:40px!important}.v-locale--is-ltr .ps-xl-11{padding-left:44px!important}.v-locale--is-rtl .ps-xl-11{padding-right:44px!important}.v-locale--is-ltr .ps-xl-12{padding-left:48px!important}.v-locale--is-rtl .ps-xl-12{padding-right:48px!important}.v-locale--is-ltr .ps-xl-13{padding-left:52px!important}.v-locale--is-rtl .ps-xl-13{padding-right:52px!important}.v-locale--is-ltr .ps-xl-14{padding-left:56px!important}.v-locale--is-rtl .ps-xl-14{padding-right:56px!important}.v-locale--is-ltr .ps-xl-15{padding-left:60px!important}.v-locale--is-rtl .ps-xl-15{padding-right:60px!important}.v-locale--is-ltr .ps-xl-16{padding-left:64px!important}.v-locale--is-rtl .ps-xl-16{padding-right:64px!important}.v-locale--is-ltr .pe-xl-0{padding-right:0!important}.v-locale--is-rtl .pe-xl-0{padding-left:0!important}.v-locale--is-ltr .pe-xl-1{padding-right:4px!important}.v-locale--is-rtl .pe-xl-1{padding-left:4px!important}.v-locale--is-ltr .pe-xl-2{padding-right:8px!important}.v-locale--is-rtl .pe-xl-2{padding-left:8px!important}.v-locale--is-ltr .pe-xl-3{padding-right:12px!important}.v-locale--is-rtl .pe-xl-3{padding-left:12px!important}.v-locale--is-ltr .pe-xl-4{padding-right:16px!important}.v-locale--is-rtl .pe-xl-4{padding-left:16px!important}.v-locale--is-ltr .pe-xl-5{padding-right:20px!important}.v-locale--is-rtl .pe-xl-5{padding-left:20px!important}.v-locale--is-ltr .pe-xl-6{padding-right:24px!important}.v-locale--is-rtl .pe-xl-6{padding-left:24px!important}.v-locale--is-ltr .pe-xl-7{padding-right:28px!important}.v-locale--is-rtl .pe-xl-7{padding-left:28px!important}.v-locale--is-ltr .pe-xl-8{padding-right:32px!important}.v-locale--is-rtl .pe-xl-8{padding-left:32px!important}.v-locale--is-ltr .pe-xl-9{padding-right:36px!important}.v-locale--is-rtl .pe-xl-9{padding-left:36px!important}.v-locale--is-ltr .pe-xl-10{padding-right:40px!important}.v-locale--is-rtl .pe-xl-10{padding-left:40px!important}.v-locale--is-ltr .pe-xl-11{padding-right:44px!important}.v-locale--is-rtl .pe-xl-11{padding-left:44px!important}.v-locale--is-ltr .pe-xl-12{padding-right:48px!important}.v-locale--is-rtl .pe-xl-12{padding-left:48px!important}.v-locale--is-ltr .pe-xl-13{padding-right:52px!important}.v-locale--is-rtl .pe-xl-13{padding-left:52px!important}.v-locale--is-ltr .pe-xl-14{padding-right:56px!important}.v-locale--is-rtl .pe-xl-14{padding-left:56px!important}.v-locale--is-ltr .pe-xl-15{padding-right:60px!important}.v-locale--is-rtl .pe-xl-15{padding-left:60px!important}.v-locale--is-ltr .pe-xl-16{padding-right:64px!important}.v-locale--is-rtl .pe-xl-16{padding-left:64px!important}.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}.text-xl-justify{text-align:justify!important}.text-xl-start{text-align:start!important}.text-xl-end{text-align:end!important}.text-xl-h1{font-size:6rem!important;line-height:6rem;letter-spacing:-.015625em!important}.text-xl-h1,.text-xl-h2{font-weight:300;font-family:Roboto,sans-serif!important}.text-xl-h2{font-size:3.75rem!important;line-height:3.75rem;letter-spacing:-.0083333333em!important}.text-xl-h3{font-size:3rem!important;line-height:3.125rem;letter-spacing:normal!important}.text-xl-h3,.text-xl-h4{font-weight:400;font-family:Roboto,sans-serif!important}.text-xl-h4{font-size:2.125rem!important;line-height:2.5rem;letter-spacing:.0073529412em!important}.text-xl-h5{font-size:1.5rem!important;font-weight:400;letter-spacing:normal!important}.text-xl-h5,.text-xl-h6{line-height:2rem;font-family:Roboto,sans-serif!important}.text-xl-h6{font-size:1.25rem!important;font-weight:500;letter-spacing:.0125em!important}.text-xl-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif!important}.text-xl-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif!important}.text-xl-body-1{font-size:1rem!important;line-height:1.5rem;letter-spacing:.03125em!important}.text-xl-body-1,.text-xl-body-2{font-weight:400;font-family:Roboto,sans-serif!important}.text-xl-body-2{font-size:.875rem!important;line-height:1.25rem;letter-spacing:.0178571429em!important}.text-xl-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif!important;text-transform:uppercase!important}.text-xl-caption{font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important}.text-xl-caption,.text-xl-overline{font-size:.75rem!important;font-family:Roboto,sans-serif!important}.text-xl-overline{font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;text-transform:uppercase!important}}@media(min-width:2560px){.d-xxl-none{display:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.float-xxl-none{float:none!important}.float-xxl-left{float:left!important}.float-xxl-right{float:right!important}.v-locale--is-rtl .float-xxl-end{float:left!important}.v-locale--is-ltr .float-xxl-end,.v-locale--is-rtl .float-xxl-start{float:right!important}.v-locale--is-ltr .float-xxl-start{float:left!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-xxl-start{justify-content:flex-start!important}.justify-xxl-end{justify-content:flex-end!important}.justify-xxl-center{justify-content:center!important}.justify-xxl-space-between{justify-content:space-between!important}.justify-xxl-space-around{justify-content:space-around!important}.align-xxl-start{align-items:flex-start!important}.align-xxl-end{align-items:flex-end!important}.align-xxl-center{align-items:center!important}.align-xxl-baseline{align-items:baseline!important}.align-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-space-between{align-content:space-between!important}.align-content-xxl-space-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-6{order:6!important}.order-xxl-7{order:7!important}.order-xxl-8{order:8!important}.order-xxl-9{order:9!important}.order-xxl-10{order:10!important}.order-xxl-11{order:11!important}.order-xxl-12{order:12!important}.order-xxl-last{order:13!important}.ma-xxl-0{margin:0!important}.ma-xxl-1{margin:4px!important}.ma-xxl-2{margin:8px!important}.ma-xxl-3{margin:12px!important}.ma-xxl-4{margin:16px!important}.ma-xxl-5{margin:20px!important}.ma-xxl-6{margin:24px!important}.ma-xxl-7{margin:28px!important}.ma-xxl-8{margin:32px!important}.ma-xxl-9{margin:36px!important}.ma-xxl-10{margin:40px!important}.ma-xxl-11{margin:44px!important}.ma-xxl-12{margin:48px!important}.ma-xxl-13{margin:52px!important}.ma-xxl-14{margin:56px!important}.ma-xxl-15{margin:60px!important}.ma-xxl-16{margin:64px!important}.ma-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:4px!important;margin-left:4px!important}.mx-xxl-2{margin-right:8px!important;margin-left:8px!important}.mx-xxl-3{margin-right:12px!important;margin-left:12px!important}.mx-xxl-4{margin-right:16px!important;margin-left:16px!important}.mx-xxl-5{margin-right:20px!important;margin-left:20px!important}.mx-xxl-6{margin-right:24px!important;margin-left:24px!important}.mx-xxl-7{margin-right:28px!important;margin-left:28px!important}.mx-xxl-8{margin-right:32px!important;margin-left:32px!important}.mx-xxl-9{margin-right:36px!important;margin-left:36px!important}.mx-xxl-10{margin-right:40px!important;margin-left:40px!important}.mx-xxl-11{margin-right:44px!important;margin-left:44px!important}.mx-xxl-12{margin-right:48px!important;margin-left:48px!important}.mx-xxl-13{margin-right:52px!important;margin-left:52px!important}.mx-xxl-14{margin-right:56px!important;margin-left:56px!important}.mx-xxl-15{margin-right:60px!important;margin-left:60px!important}.mx-xxl-16{margin-right:64px!important;margin-left:64px!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:4px!important;margin-bottom:4px!important}.my-xxl-2{margin-top:8px!important;margin-bottom:8px!important}.my-xxl-3{margin-top:12px!important;margin-bottom:12px!important}.my-xxl-4{margin-top:16px!important;margin-bottom:16px!important}.my-xxl-5{margin-top:20px!important;margin-bottom:20px!important}.my-xxl-6{margin-top:24px!important;margin-bottom:24px!important}.my-xxl-7{margin-top:28px!important;margin-bottom:28px!important}.my-xxl-8{margin-top:32px!important;margin-bottom:32px!important}.my-xxl-9{margin-top:36px!important;margin-bottom:36px!important}.my-xxl-10{margin-top:40px!important;margin-bottom:40px!important}.my-xxl-11{margin-top:44px!important;margin-bottom:44px!important}.my-xxl-12{margin-top:48px!important;margin-bottom:48px!important}.my-xxl-13{margin-top:52px!important;margin-bottom:52px!important}.my-xxl-14{margin-top:56px!important;margin-bottom:56px!important}.my-xxl-15{margin-top:60px!important;margin-bottom:60px!important}.my-xxl-16{margin-top:64px!important;margin-bottom:64px!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:4px!important}.mt-xxl-2{margin-top:8px!important}.mt-xxl-3{margin-top:12px!important}.mt-xxl-4{margin-top:16px!important}.mt-xxl-5{margin-top:20px!important}.mt-xxl-6{margin-top:24px!important}.mt-xxl-7{margin-top:28px!important}.mt-xxl-8{margin-top:32px!important}.mt-xxl-9{margin-top:36px!important}.mt-xxl-10{margin-top:40px!important}.mt-xxl-11{margin-top:44px!important}.mt-xxl-12{margin-top:48px!important}.mt-xxl-13{margin-top:52px!important}.mt-xxl-14{margin-top:56px!important}.mt-xxl-15{margin-top:60px!important}.mt-xxl-16{margin-top:64px!important}.mt-xxl-auto{margin-top:auto!important}.mr-xxl-0{margin-right:0!important}.mr-xxl-1{margin-right:4px!important}.mr-xxl-2{margin-right:8px!important}.mr-xxl-3{margin-right:12px!important}.mr-xxl-4{margin-right:16px!important}.mr-xxl-5{margin-right:20px!important}.mr-xxl-6{margin-right:24px!important}.mr-xxl-7{margin-right:28px!important}.mr-xxl-8{margin-right:32px!important}.mr-xxl-9{margin-right:36px!important}.mr-xxl-10{margin-right:40px!important}.mr-xxl-11{margin-right:44px!important}.mr-xxl-12{margin-right:48px!important}.mr-xxl-13{margin-right:52px!important}.mr-xxl-14{margin-right:56px!important}.mr-xxl-15{margin-right:60px!important}.mr-xxl-16{margin-right:64px!important}.mr-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:4px!important}.mb-xxl-2{margin-bottom:8px!important}.mb-xxl-3{margin-bottom:12px!important}.mb-xxl-4{margin-bottom:16px!important}.mb-xxl-5{margin-bottom:20px!important}.mb-xxl-6{margin-bottom:24px!important}.mb-xxl-7{margin-bottom:28px!important}.mb-xxl-8{margin-bottom:32px!important}.mb-xxl-9{margin-bottom:36px!important}.mb-xxl-10{margin-bottom:40px!important}.mb-xxl-11{margin-bottom:44px!important}.mb-xxl-12{margin-bottom:48px!important}.mb-xxl-13{margin-bottom:52px!important}.mb-xxl-14{margin-bottom:56px!important}.mb-xxl-15{margin-bottom:60px!important}.mb-xxl-16{margin-bottom:64px!important}.mb-xxl-auto{margin-bottom:auto!important}.ml-xxl-0{margin-left:0!important}.ml-xxl-1{margin-left:4px!important}.ml-xxl-2{margin-left:8px!important}.ml-xxl-3{margin-left:12px!important}.ml-xxl-4{margin-left:16px!important}.ml-xxl-5{margin-left:20px!important}.ml-xxl-6{margin-left:24px!important}.ml-xxl-7{margin-left:28px!important}.ml-xxl-8{margin-left:32px!important}.ml-xxl-9{margin-left:36px!important}.ml-xxl-10{margin-left:40px!important}.ml-xxl-11{margin-left:44px!important}.ml-xxl-12{margin-left:48px!important}.ml-xxl-13{margin-left:52px!important}.ml-xxl-14{margin-left:56px!important}.ml-xxl-15{margin-left:60px!important}.ml-xxl-16{margin-left:64px!important}.ml-xxl-auto{margin-left:auto!important}.v-locale--is-ltr .ms-xxl-0{margin-left:0!important}.v-locale--is-rtl .ms-xxl-0{margin-right:0!important}.v-locale--is-ltr .ms-xxl-1{margin-left:4px!important}.v-locale--is-rtl .ms-xxl-1{margin-right:4px!important}.v-locale--is-ltr .ms-xxl-2{margin-left:8px!important}.v-locale--is-rtl .ms-xxl-2{margin-right:8px!important}.v-locale--is-ltr .ms-xxl-3{margin-left:12px!important}.v-locale--is-rtl .ms-xxl-3{margin-right:12px!important}.v-locale--is-ltr .ms-xxl-4{margin-left:16px!important}.v-locale--is-rtl .ms-xxl-4{margin-right:16px!important}.v-locale--is-ltr .ms-xxl-5{margin-left:20px!important}.v-locale--is-rtl .ms-xxl-5{margin-right:20px!important}.v-locale--is-ltr .ms-xxl-6{margin-left:24px!important}.v-locale--is-rtl .ms-xxl-6{margin-right:24px!important}.v-locale--is-ltr .ms-xxl-7{margin-left:28px!important}.v-locale--is-rtl .ms-xxl-7{margin-right:28px!important}.v-locale--is-ltr .ms-xxl-8{margin-left:32px!important}.v-locale--is-rtl .ms-xxl-8{margin-right:32px!important}.v-locale--is-ltr .ms-xxl-9{margin-left:36px!important}.v-locale--is-rtl .ms-xxl-9{margin-right:36px!important}.v-locale--is-ltr .ms-xxl-10{margin-left:40px!important}.v-locale--is-rtl .ms-xxl-10{margin-right:40px!important}.v-locale--is-ltr .ms-xxl-11{margin-left:44px!important}.v-locale--is-rtl .ms-xxl-11{margin-right:44px!important}.v-locale--is-ltr .ms-xxl-12{margin-left:48px!important}.v-locale--is-rtl .ms-xxl-12{margin-right:48px!important}.v-locale--is-ltr .ms-xxl-13{margin-left:52px!important}.v-locale--is-rtl .ms-xxl-13{margin-right:52px!important}.v-locale--is-ltr .ms-xxl-14{margin-left:56px!important}.v-locale--is-rtl .ms-xxl-14{margin-right:56px!important}.v-locale--is-ltr .ms-xxl-15{margin-left:60px!important}.v-locale--is-rtl .ms-xxl-15{margin-right:60px!important}.v-locale--is-ltr .ms-xxl-16{margin-left:64px!important}.v-locale--is-rtl .ms-xxl-16{margin-right:64px!important}.v-locale--is-ltr .ms-xxl-auto{margin-left:auto!important}.v-locale--is-rtl .ms-xxl-auto{margin-right:auto!important}.v-locale--is-ltr .me-xxl-0{margin-right:0!important}.v-locale--is-rtl .me-xxl-0{margin-left:0!important}.v-locale--is-ltr .me-xxl-1{margin-right:4px!important}.v-locale--is-rtl .me-xxl-1{margin-left:4px!important}.v-locale--is-ltr .me-xxl-2{margin-right:8px!important}.v-locale--is-rtl .me-xxl-2{margin-left:8px!important}.v-locale--is-ltr .me-xxl-3{margin-right:12px!important}.v-locale--is-rtl .me-xxl-3{margin-left:12px!important}.v-locale--is-ltr .me-xxl-4{margin-right:16px!important}.v-locale--is-rtl .me-xxl-4{margin-left:16px!important}.v-locale--is-ltr .me-xxl-5{margin-right:20px!important}.v-locale--is-rtl .me-xxl-5{margin-left:20px!important}.v-locale--is-ltr .me-xxl-6{margin-right:24px!important}.v-locale--is-rtl .me-xxl-6{margin-left:24px!important}.v-locale--is-ltr .me-xxl-7{margin-right:28px!important}.v-locale--is-rtl .me-xxl-7{margin-left:28px!important}.v-locale--is-ltr .me-xxl-8{margin-right:32px!important}.v-locale--is-rtl .me-xxl-8{margin-left:32px!important}.v-locale--is-ltr .me-xxl-9{margin-right:36px!important}.v-locale--is-rtl .me-xxl-9{margin-left:36px!important}.v-locale--is-ltr .me-xxl-10{margin-right:40px!important}.v-locale--is-rtl .me-xxl-10{margin-left:40px!important}.v-locale--is-ltr .me-xxl-11{margin-right:44px!important}.v-locale--is-rtl .me-xxl-11{margin-left:44px!important}.v-locale--is-ltr .me-xxl-12{margin-right:48px!important}.v-locale--is-rtl .me-xxl-12{margin-left:48px!important}.v-locale--is-ltr .me-xxl-13{margin-right:52px!important}.v-locale--is-rtl .me-xxl-13{margin-left:52px!important}.v-locale--is-ltr .me-xxl-14{margin-right:56px!important}.v-locale--is-rtl .me-xxl-14{margin-left:56px!important}.v-locale--is-ltr .me-xxl-15{margin-right:60px!important}.v-locale--is-rtl .me-xxl-15{margin-left:60px!important}.v-locale--is-ltr .me-xxl-16{margin-right:64px!important}.v-locale--is-rtl .me-xxl-16{margin-left:64px!important}.v-locale--is-ltr .me-xxl-auto{margin-right:auto!important}.v-locale--is-rtl .me-xxl-auto{margin-left:auto!important}.ma-xxl-n1{margin:-4px!important}.ma-xxl-n2{margin:-8px!important}.ma-xxl-n3{margin:-12px!important}.ma-xxl-n4{margin:-16px!important}.ma-xxl-n5{margin:-20px!important}.ma-xxl-n6{margin:-24px!important}.ma-xxl-n7{margin:-28px!important}.ma-xxl-n8{margin:-32px!important}.ma-xxl-n9{margin:-36px!important}.ma-xxl-n10{margin:-40px!important}.ma-xxl-n11{margin:-44px!important}.ma-xxl-n12{margin:-48px!important}.ma-xxl-n13{margin:-52px!important}.ma-xxl-n14{margin:-56px!important}.ma-xxl-n15{margin:-60px!important}.ma-xxl-n16{margin:-64px!important}.mx-xxl-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-xxl-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-xxl-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-xxl-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-xxl-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-xxl-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-xxl-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-xxl-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-xxl-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-xxl-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-xxl-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-xxl-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-xxl-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-xxl-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-xxl-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-xxl-n16{margin-right:-64px!important;margin-left:-64px!important}.my-xxl-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-xxl-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-xxl-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-xxl-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-xxl-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-xxl-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-xxl-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-xxl-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-xxl-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-xxl-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-xxl-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-xxl-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-xxl-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-xxl-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-xxl-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-xxl-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-xxl-n1{margin-top:-4px!important}.mt-xxl-n2{margin-top:-8px!important}.mt-xxl-n3{margin-top:-12px!important}.mt-xxl-n4{margin-top:-16px!important}.mt-xxl-n5{margin-top:-20px!important}.mt-xxl-n6{margin-top:-24px!important}.mt-xxl-n7{margin-top:-28px!important}.mt-xxl-n8{margin-top:-32px!important}.mt-xxl-n9{margin-top:-36px!important}.mt-xxl-n10{margin-top:-40px!important}.mt-xxl-n11{margin-top:-44px!important}.mt-xxl-n12{margin-top:-48px!important}.mt-xxl-n13{margin-top:-52px!important}.mt-xxl-n14{margin-top:-56px!important}.mt-xxl-n15{margin-top:-60px!important}.mt-xxl-n16{margin-top:-64px!important}.mr-xxl-n1{margin-right:-4px!important}.mr-xxl-n2{margin-right:-8px!important}.mr-xxl-n3{margin-right:-12px!important}.mr-xxl-n4{margin-right:-16px!important}.mr-xxl-n5{margin-right:-20px!important}.mr-xxl-n6{margin-right:-24px!important}.mr-xxl-n7{margin-right:-28px!important}.mr-xxl-n8{margin-right:-32px!important}.mr-xxl-n9{margin-right:-36px!important}.mr-xxl-n10{margin-right:-40px!important}.mr-xxl-n11{margin-right:-44px!important}.mr-xxl-n12{margin-right:-48px!important}.mr-xxl-n13{margin-right:-52px!important}.mr-xxl-n14{margin-right:-56px!important}.mr-xxl-n15{margin-right:-60px!important}.mr-xxl-n16{margin-right:-64px!important}.mb-xxl-n1{margin-bottom:-4px!important}.mb-xxl-n2{margin-bottom:-8px!important}.mb-xxl-n3{margin-bottom:-12px!important}.mb-xxl-n4{margin-bottom:-16px!important}.mb-xxl-n5{margin-bottom:-20px!important}.mb-xxl-n6{margin-bottom:-24px!important}.mb-xxl-n7{margin-bottom:-28px!important}.mb-xxl-n8{margin-bottom:-32px!important}.mb-xxl-n9{margin-bottom:-36px!important}.mb-xxl-n10{margin-bottom:-40px!important}.mb-xxl-n11{margin-bottom:-44px!important}.mb-xxl-n12{margin-bottom:-48px!important}.mb-xxl-n13{margin-bottom:-52px!important}.mb-xxl-n14{margin-bottom:-56px!important}.mb-xxl-n15{margin-bottom:-60px!important}.mb-xxl-n16{margin-bottom:-64px!important}.ml-xxl-n1{margin-left:-4px!important}.ml-xxl-n2{margin-left:-8px!important}.ml-xxl-n3{margin-left:-12px!important}.ml-xxl-n4{margin-left:-16px!important}.ml-xxl-n5{margin-left:-20px!important}.ml-xxl-n6{margin-left:-24px!important}.ml-xxl-n7{margin-left:-28px!important}.ml-xxl-n8{margin-left:-32px!important}.ml-xxl-n9{margin-left:-36px!important}.ml-xxl-n10{margin-left:-40px!important}.ml-xxl-n11{margin-left:-44px!important}.ml-xxl-n12{margin-left:-48px!important}.ml-xxl-n13{margin-left:-52px!important}.ml-xxl-n14{margin-left:-56px!important}.ml-xxl-n15{margin-left:-60px!important}.ml-xxl-n16{margin-left:-64px!important}.v-locale--is-ltr .ms-xxl-n1{margin-left:-4px!important}.v-locale--is-rtl .ms-xxl-n1{margin-right:-4px!important}.v-locale--is-ltr .ms-xxl-n2{margin-left:-8px!important}.v-locale--is-rtl .ms-xxl-n2{margin-right:-8px!important}.v-locale--is-ltr .ms-xxl-n3{margin-left:-12px!important}.v-locale--is-rtl .ms-xxl-n3{margin-right:-12px!important}.v-locale--is-ltr .ms-xxl-n4{margin-left:-16px!important}.v-locale--is-rtl .ms-xxl-n4{margin-right:-16px!important}.v-locale--is-ltr .ms-xxl-n5{margin-left:-20px!important}.v-locale--is-rtl .ms-xxl-n5{margin-right:-20px!important}.v-locale--is-ltr .ms-xxl-n6{margin-left:-24px!important}.v-locale--is-rtl .ms-xxl-n6{margin-right:-24px!important}.v-locale--is-ltr .ms-xxl-n7{margin-left:-28px!important}.v-locale--is-rtl .ms-xxl-n7{margin-right:-28px!important}.v-locale--is-ltr .ms-xxl-n8{margin-left:-32px!important}.v-locale--is-rtl .ms-xxl-n8{margin-right:-32px!important}.v-locale--is-ltr .ms-xxl-n9{margin-left:-36px!important}.v-locale--is-rtl .ms-xxl-n9{margin-right:-36px!important}.v-locale--is-ltr .ms-xxl-n10{margin-left:-40px!important}.v-locale--is-rtl .ms-xxl-n10{margin-right:-40px!important}.v-locale--is-ltr .ms-xxl-n11{margin-left:-44px!important}.v-locale--is-rtl .ms-xxl-n11{margin-right:-44px!important}.v-locale--is-ltr .ms-xxl-n12{margin-left:-48px!important}.v-locale--is-rtl .ms-xxl-n12{margin-right:-48px!important}.v-locale--is-ltr .ms-xxl-n13{margin-left:-52px!important}.v-locale--is-rtl .ms-xxl-n13{margin-right:-52px!important}.v-locale--is-ltr .ms-xxl-n14{margin-left:-56px!important}.v-locale--is-rtl .ms-xxl-n14{margin-right:-56px!important}.v-locale--is-ltr .ms-xxl-n15{margin-left:-60px!important}.v-locale--is-rtl .ms-xxl-n15{margin-right:-60px!important}.v-locale--is-ltr .ms-xxl-n16{margin-left:-64px!important}.v-locale--is-rtl .ms-xxl-n16{margin-right:-64px!important}.v-locale--is-ltr .me-xxl-n1{margin-right:-4px!important}.v-locale--is-rtl .me-xxl-n1{margin-left:-4px!important}.v-locale--is-ltr .me-xxl-n2{margin-right:-8px!important}.v-locale--is-rtl .me-xxl-n2{margin-left:-8px!important}.v-locale--is-ltr .me-xxl-n3{margin-right:-12px!important}.v-locale--is-rtl .me-xxl-n3{margin-left:-12px!important}.v-locale--is-ltr .me-xxl-n4{margin-right:-16px!important}.v-locale--is-rtl .me-xxl-n4{margin-left:-16px!important}.v-locale--is-ltr .me-xxl-n5{margin-right:-20px!important}.v-locale--is-rtl .me-xxl-n5{margin-left:-20px!important}.v-locale--is-ltr .me-xxl-n6{margin-right:-24px!important}.v-locale--is-rtl .me-xxl-n6{margin-left:-24px!important}.v-locale--is-ltr .me-xxl-n7{margin-right:-28px!important}.v-locale--is-rtl .me-xxl-n7{margin-left:-28px!important}.v-locale--is-ltr .me-xxl-n8{margin-right:-32px!important}.v-locale--is-rtl .me-xxl-n8{margin-left:-32px!important}.v-locale--is-ltr .me-xxl-n9{margin-right:-36px!important}.v-locale--is-rtl .me-xxl-n9{margin-left:-36px!important}.v-locale--is-ltr .me-xxl-n10{margin-right:-40px!important}.v-locale--is-rtl .me-xxl-n10{margin-left:-40px!important}.v-locale--is-ltr .me-xxl-n11{margin-right:-44px!important}.v-locale--is-rtl .me-xxl-n11{margin-left:-44px!important}.v-locale--is-ltr .me-xxl-n12{margin-right:-48px!important}.v-locale--is-rtl .me-xxl-n12{margin-left:-48px!important}.v-locale--is-ltr .me-xxl-n13{margin-right:-52px!important}.v-locale--is-rtl .me-xxl-n13{margin-left:-52px!important}.v-locale--is-ltr .me-xxl-n14{margin-right:-56px!important}.v-locale--is-rtl .me-xxl-n14{margin-left:-56px!important}.v-locale--is-ltr .me-xxl-n15{margin-right:-60px!important}.v-locale--is-rtl .me-xxl-n15{margin-left:-60px!important}.v-locale--is-ltr .me-xxl-n16{margin-right:-64px!important}.v-locale--is-rtl .me-xxl-n16{margin-left:-64px!important}.pa-xxl-0{padding:0!important}.pa-xxl-1{padding:4px!important}.pa-xxl-2{padding:8px!important}.pa-xxl-3{padding:12px!important}.pa-xxl-4{padding:16px!important}.pa-xxl-5{padding:20px!important}.pa-xxl-6{padding:24px!important}.pa-xxl-7{padding:28px!important}.pa-xxl-8{padding:32px!important}.pa-xxl-9{padding:36px!important}.pa-xxl-10{padding:40px!important}.pa-xxl-11{padding:44px!important}.pa-xxl-12{padding:48px!important}.pa-xxl-13{padding:52px!important}.pa-xxl-14{padding:56px!important}.pa-xxl-15{padding:60px!important}.pa-xxl-16{padding:64px!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:4px!important;padding-left:4px!important}.px-xxl-2{padding-right:8px!important;padding-left:8px!important}.px-xxl-3{padding-right:12px!important;padding-left:12px!important}.px-xxl-4{padding-right:16px!important;padding-left:16px!important}.px-xxl-5{padding-right:20px!important;padding-left:20px!important}.px-xxl-6{padding-right:24px!important;padding-left:24px!important}.px-xxl-7{padding-right:28px!important;padding-left:28px!important}.px-xxl-8{padding-right:32px!important;padding-left:32px!important}.px-xxl-9{padding-right:36px!important;padding-left:36px!important}.px-xxl-10{padding-right:40px!important;padding-left:40px!important}.px-xxl-11{padding-right:44px!important;padding-left:44px!important}.px-xxl-12{padding-right:48px!important;padding-left:48px!important}.px-xxl-13{padding-right:52px!important;padding-left:52px!important}.px-xxl-14{padding-right:56px!important;padding-left:56px!important}.px-xxl-15{padding-right:60px!important;padding-left:60px!important}.px-xxl-16{padding-right:64px!important;padding-left:64px!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:4px!important;padding-bottom:4px!important}.py-xxl-2{padding-top:8px!important;padding-bottom:8px!important}.py-xxl-3{padding-top:12px!important;padding-bottom:12px!important}.py-xxl-4{padding-top:16px!important;padding-bottom:16px!important}.py-xxl-5{padding-top:20px!important;padding-bottom:20px!important}.py-xxl-6{padding-top:24px!important;padding-bottom:24px!important}.py-xxl-7{padding-top:28px!important;padding-bottom:28px!important}.py-xxl-8{padding-top:32px!important;padding-bottom:32px!important}.py-xxl-9{padding-top:36px!important;padding-bottom:36px!important}.py-xxl-10{padding-top:40px!important;padding-bottom:40px!important}.py-xxl-11{padding-top:44px!important;padding-bottom:44px!important}.py-xxl-12{padding-top:48px!important;padding-bottom:48px!important}.py-xxl-13{padding-top:52px!important;padding-bottom:52px!important}.py-xxl-14{padding-top:56px!important;padding-bottom:56px!important}.py-xxl-15{padding-top:60px!important;padding-bottom:60px!important}.py-xxl-16{padding-top:64px!important;padding-bottom:64px!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:4px!important}.pt-xxl-2{padding-top:8px!important}.pt-xxl-3{padding-top:12px!important}.pt-xxl-4{padding-top:16px!important}.pt-xxl-5{padding-top:20px!important}.pt-xxl-6{padding-top:24px!important}.pt-xxl-7{padding-top:28px!important}.pt-xxl-8{padding-top:32px!important}.pt-xxl-9{padding-top:36px!important}.pt-xxl-10{padding-top:40px!important}.pt-xxl-11{padding-top:44px!important}.pt-xxl-12{padding-top:48px!important}.pt-xxl-13{padding-top:52px!important}.pt-xxl-14{padding-top:56px!important}.pt-xxl-15{padding-top:60px!important}.pt-xxl-16{padding-top:64px!important}.pr-xxl-0{padding-right:0!important}.pr-xxl-1{padding-right:4px!important}.pr-xxl-2{padding-right:8px!important}.pr-xxl-3{padding-right:12px!important}.pr-xxl-4{padding-right:16px!important}.pr-xxl-5{padding-right:20px!important}.pr-xxl-6{padding-right:24px!important}.pr-xxl-7{padding-right:28px!important}.pr-xxl-8{padding-right:32px!important}.pr-xxl-9{padding-right:36px!important}.pr-xxl-10{padding-right:40px!important}.pr-xxl-11{padding-right:44px!important}.pr-xxl-12{padding-right:48px!important}.pr-xxl-13{padding-right:52px!important}.pr-xxl-14{padding-right:56px!important}.pr-xxl-15{padding-right:60px!important}.pr-xxl-16{padding-right:64px!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:4px!important}.pb-xxl-2{padding-bottom:8px!important}.pb-xxl-3{padding-bottom:12px!important}.pb-xxl-4{padding-bottom:16px!important}.pb-xxl-5{padding-bottom:20px!important}.pb-xxl-6{padding-bottom:24px!important}.pb-xxl-7{padding-bottom:28px!important}.pb-xxl-8{padding-bottom:32px!important}.pb-xxl-9{padding-bottom:36px!important}.pb-xxl-10{padding-bottom:40px!important}.pb-xxl-11{padding-bottom:44px!important}.pb-xxl-12{padding-bottom:48px!important}.pb-xxl-13{padding-bottom:52px!important}.pb-xxl-14{padding-bottom:56px!important}.pb-xxl-15{padding-bottom:60px!important}.pb-xxl-16{padding-bottom:64px!important}.pl-xxl-0{padding-left:0!important}.pl-xxl-1{padding-left:4px!important}.pl-xxl-2{padding-left:8px!important}.pl-xxl-3{padding-left:12px!important}.pl-xxl-4{padding-left:16px!important}.pl-xxl-5{padding-left:20px!important}.pl-xxl-6{padding-left:24px!important}.pl-xxl-7{padding-left:28px!important}.pl-xxl-8{padding-left:32px!important}.pl-xxl-9{padding-left:36px!important}.pl-xxl-10{padding-left:40px!important}.pl-xxl-11{padding-left:44px!important}.pl-xxl-12{padding-left:48px!important}.pl-xxl-13{padding-left:52px!important}.pl-xxl-14{padding-left:56px!important}.pl-xxl-15{padding-left:60px!important}.pl-xxl-16{padding-left:64px!important}.v-locale--is-ltr .ps-xxl-0{padding-left:0!important}.v-locale--is-rtl .ps-xxl-0{padding-right:0!important}.v-locale--is-ltr .ps-xxl-1{padding-left:4px!important}.v-locale--is-rtl .ps-xxl-1{padding-right:4px!important}.v-locale--is-ltr .ps-xxl-2{padding-left:8px!important}.v-locale--is-rtl .ps-xxl-2{padding-right:8px!important}.v-locale--is-ltr .ps-xxl-3{padding-left:12px!important}.v-locale--is-rtl .ps-xxl-3{padding-right:12px!important}.v-locale--is-ltr .ps-xxl-4{padding-left:16px!important}.v-locale--is-rtl .ps-xxl-4{padding-right:16px!important}.v-locale--is-ltr .ps-xxl-5{padding-left:20px!important}.v-locale--is-rtl .ps-xxl-5{padding-right:20px!important}.v-locale--is-ltr .ps-xxl-6{padding-left:24px!important}.v-locale--is-rtl .ps-xxl-6{padding-right:24px!important}.v-locale--is-ltr .ps-xxl-7{padding-left:28px!important}.v-locale--is-rtl .ps-xxl-7{padding-right:28px!important}.v-locale--is-ltr .ps-xxl-8{padding-left:32px!important}.v-locale--is-rtl .ps-xxl-8{padding-right:32px!important}.v-locale--is-ltr .ps-xxl-9{padding-left:36px!important}.v-locale--is-rtl .ps-xxl-9{padding-right:36px!important}.v-locale--is-ltr .ps-xxl-10{padding-left:40px!important}.v-locale--is-rtl .ps-xxl-10{padding-right:40px!important}.v-locale--is-ltr .ps-xxl-11{padding-left:44px!important}.v-locale--is-rtl .ps-xxl-11{padding-right:44px!important}.v-locale--is-ltr .ps-xxl-12{padding-left:48px!important}.v-locale--is-rtl .ps-xxl-12{padding-right:48px!important}.v-locale--is-ltr .ps-xxl-13{padding-left:52px!important}.v-locale--is-rtl .ps-xxl-13{padding-right:52px!important}.v-locale--is-ltr .ps-xxl-14{padding-left:56px!important}.v-locale--is-rtl .ps-xxl-14{padding-right:56px!important}.v-locale--is-ltr .ps-xxl-15{padding-left:60px!important}.v-locale--is-rtl .ps-xxl-15{padding-right:60px!important}.v-locale--is-ltr .ps-xxl-16{padding-left:64px!important}.v-locale--is-rtl .ps-xxl-16{padding-right:64px!important}.v-locale--is-ltr .pe-xxl-0{padding-right:0!important}.v-locale--is-rtl .pe-xxl-0{padding-left:0!important}.v-locale--is-ltr .pe-xxl-1{padding-right:4px!important}.v-locale--is-rtl .pe-xxl-1{padding-left:4px!important}.v-locale--is-ltr .pe-xxl-2{padding-right:8px!important}.v-locale--is-rtl .pe-xxl-2{padding-left:8px!important}.v-locale--is-ltr .pe-xxl-3{padding-right:12px!important}.v-locale--is-rtl .pe-xxl-3{padding-left:12px!important}.v-locale--is-ltr .pe-xxl-4{padding-right:16px!important}.v-locale--is-rtl .pe-xxl-4{padding-left:16px!important}.v-locale--is-ltr .pe-xxl-5{padding-right:20px!important}.v-locale--is-rtl .pe-xxl-5{padding-left:20px!important}.v-locale--is-ltr .pe-xxl-6{padding-right:24px!important}.v-locale--is-rtl .pe-xxl-6{padding-left:24px!important}.v-locale--is-ltr .pe-xxl-7{padding-right:28px!important}.v-locale--is-rtl .pe-xxl-7{padding-left:28px!important}.v-locale--is-ltr .pe-xxl-8{padding-right:32px!important}.v-locale--is-rtl .pe-xxl-8{padding-left:32px!important}.v-locale--is-ltr .pe-xxl-9{padding-right:36px!important}.v-locale--is-rtl .pe-xxl-9{padding-left:36px!important}.v-locale--is-ltr .pe-xxl-10{padding-right:40px!important}.v-locale--is-rtl .pe-xxl-10{padding-left:40px!important}.v-locale--is-ltr .pe-xxl-11{padding-right:44px!important}.v-locale--is-rtl .pe-xxl-11{padding-left:44px!important}.v-locale--is-ltr .pe-xxl-12{padding-right:48px!important}.v-locale--is-rtl .pe-xxl-12{padding-left:48px!important}.v-locale--is-ltr .pe-xxl-13{padding-right:52px!important}.v-locale--is-rtl .pe-xxl-13{padding-left:52px!important}.v-locale--is-ltr .pe-xxl-14{padding-right:56px!important}.v-locale--is-rtl .pe-xxl-14{padding-left:56px!important}.v-locale--is-ltr .pe-xxl-15{padding-right:60px!important}.v-locale--is-rtl .pe-xxl-15{padding-left:60px!important}.v-locale--is-ltr .pe-xxl-16{padding-right:64px!important}.v-locale--is-rtl .pe-xxl-16{padding-left:64px!important}.text-xxl-left{text-align:left!important}.text-xxl-right{text-align:right!important}.text-xxl-center{text-align:center!important}.text-xxl-justify{text-align:justify!important}.text-xxl-start{text-align:start!important}.text-xxl-end{text-align:end!important}.text-xxl-h1{font-size:6rem!important;line-height:6rem;letter-spacing:-.015625em!important}.text-xxl-h1,.text-xxl-h2{font-weight:300;font-family:Roboto,sans-serif!important}.text-xxl-h2{font-size:3.75rem!important;line-height:3.75rem;letter-spacing:-.0083333333em!important}.text-xxl-h3{font-size:3rem!important;line-height:3.125rem;letter-spacing:normal!important}.text-xxl-h3,.text-xxl-h4{font-weight:400;font-family:Roboto,sans-serif!important}.text-xxl-h4{font-size:2.125rem!important;line-height:2.5rem;letter-spacing:.0073529412em!important}.text-xxl-h5{font-size:1.5rem!important;font-weight:400;letter-spacing:normal!important}.text-xxl-h5,.text-xxl-h6{line-height:2rem;font-family:Roboto,sans-serif!important}.text-xxl-h6{font-size:1.25rem!important;font-weight:500;letter-spacing:.0125em!important}.text-xxl-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif!important}.text-xxl-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif!important}.text-xxl-body-1{font-size:1rem!important;line-height:1.5rem;letter-spacing:.03125em!important}.text-xxl-body-1,.text-xxl-body-2{font-weight:400;font-family:Roboto,sans-serif!important}.text-xxl-body-2{font-size:.875rem!important;line-height:1.25rem;letter-spacing:.0178571429em!important}.text-xxl-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif!important;text-transform:uppercase!important}.text-xxl-caption{font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important}.text-xxl-caption,.text-xxl-overline{font-size:.75rem!important;font-family:Roboto,sans-serif!important}.text-xxl-overline{font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;text-transform:uppercase!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.float-print-none{float:none!important}.float-print-left{float:left!important}.float-print-right{float:right!important}.v-locale--is-rtl .float-print-end{float:left!important}.v-locale--is-ltr .float-print-end,.v-locale--is-rtl .float-print-start{float:right!important}.v-locale--is-ltr .float-print-start{float:left!important}}.v-application{display:flex;background:rgb(var(--v-theme-background));color:rgb(var(--v-theme-on-background))}.v-application a{cursor:pointer}.v-application__wrap{flex:1 1 auto;-webkit-backface-visibility:hidden;backface-visibility:hidden;display:flex;flex-direction:column;min-height:100vh;max-width:100%;position:relative}@-moz-document url-prefix(){@media print{.v-application,.v-application__wrap{display:block}}}.v-app-bar{align-items:flex-start;display:flex;flex-direction:column;justify-content:space-between;max-width:100%;overflow:hidden;padding-left:4px;padding-right:calc(4px + var(--v-scrollbar-offset));position:fixed;transition:.2s cubic-bezier(.4,0,.2,1);transition-property:height,transform;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface))}.v-app-bar--is-active{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.v-app-bar--border{border-width:0 0 thin;box-shadow:none}.v-app-bar--absolute{position:absolute}.v-app-bar--border.v-app-bar--bottom{border-bottom-width:0;border-top-width:0 0 thin}.v-app-bar--collapsed{max-width:112px;overflow:hidden}.v-app-bar--collapsed.v-locale--is-ltr,.v-locale--is-ltr .v-app-bar--collapsed{border-bottom-right-radius:24px}.v-app-bar--collapsed.v-locale--is-rtl,.v-locale--is-rtl .v-app-bar--collapsed{border-bottom-left-radius:24px}.v-app-bar--flat{box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.v-app-bar--floating{display:inline-flex}.v-app-bar--rounded{border-radius:4px}.v-app-bar__content{align-items:center;display:flex;flex:0 0 auto;transition:inherit;width:100%}.v-app-bar--density-default .v-app-bar__content{padding-bottom:8px;padding-top:8px}.v-app-bar--density-comfortable .v-app-bar__content{padding-bottom:4px;padding-top:4px}.v-app-bar--density-compact .v-app-bar__content{padding-bottom:0;padding-top:0}.v-app-bar__extension{align-items:center;display:flex;flex:0 0 auto;transition:inherit;width:100%}.v-app-bar__image{height:100%;left:0;position:absolute;top:0;width:100%;z-index:-1;display:flex}.v-app-bar__append{-webkit-margin-start:auto;margin-inline-start:auto}.v-app-bar__append,.v-app-bar__prepend{display:flex;flex:0 1 auto}.v-img{--v-theme-overlay-multiplier:3;z-index:0}.v-img__error,.v-img__img,.v-img__picture,.v-img__placeholder{z-index:-1;position:absolute;top:0;left:0;width:100%;height:100%}.v-img__img--preload{filter:blur(4px)}.v-img__img--contain{-o-object-fit:contain;object-fit:contain}.v-img__img--cover{-o-object-fit:cover;object-fit:cover}.v-card-media .v-img{height:200px}.v-card-media .v-img__img{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.v-responsive{display:flex;flex:1 0 auto;max-width:100%;overflow:hidden;position:relative}.v-responsive__content{flex:1 0 0px;max-width:100%}.v-responsive__sizer~.v-responsive__content{-webkit-margin-start:-100%;margin-inline-start:-100%}.v-responsive__sizer{flex:1 0 0px;transition:padding-bottom .2s cubic-bezier(.4,0,.2,1);pointer-events:none}.v-btn{align-items:center;border-radius:4px;display:inline-flex;font-weight:500;justify-content:center;letter-spacing:.0892857143em;line-height:normal;outline:none;overflow:visible;position:relative;text-decoration:none;text-indent:.0892857143em;text-transform:uppercase;transition-property:box-shadow,transform,opacity,color;transition-duration:.28s;transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;flex-shrink:0;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0}.v-btn--size-x-small{--v-btn-size:0.625rem;--v-btn-height:20px;font-size:.625rem;min-width:36px;padding:0 8px}.v-btn--size-small{--v-btn-size:0.75rem;--v-btn-height:28px;font-size:.75rem;min-width:50px;padding:0 12px}.v-btn--size-default{--v-btn-size:0.875rem;--v-btn-height:36px;font-size:.875rem;min-width:64px;padding:0 16px}.v-btn--size-large{--v-btn-size:1rem;--v-btn-height:44px;font-size:1rem;min-width:78px;padding:0 20px}.v-btn--size-x-large{--v-btn-size:1.125rem;--v-btn-height:52px;font-size:1.125rem;min-width:92px;padding:0 24px}.v-btn.v-btn--density-default{height:calc(var(--v-btn-height))}.v-btn.v-btn--density-comfortable{height:calc(var(--v-btn-height) - 8px)}.v-btn.v-btn--density-compact{height:calc(var(--v-btn-height) - 12px)}.v-btn--border{border-width:thin;box-shadow:none}.v-btn:hover .v-btn__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*.04)}.v-btn:focus .v-btn__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*.12)}.v-btn--variant-contained-text,.v-btn--variant-outlined,.v-btn--variant-plain,.v-btn--variant-text{background:transparent;color:inherit}.v-btn--variant-plain{opacity:.62}.v-btn--variant-plain:focus,.v-btn--variant-plain:hover{opacity:1}.v-btn--variant-plain .v-btn__overlay{display:none}.v-btn--variant-contained{background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface));box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.v-btn--variant-outlined{border:thin solid currentColor}.v-btn--variant-text .v-btn__overlay{background:currentColor}.v-btn--variant-contained-text .v-btn__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;transition:opacity .2s ease-in-out}.v-btn--flat{box-shadow:none}.v-btn--icon{border-radius:50%;min-width:0;padding:0}.v-btn--icon.v-btn--density-default{width:calc(var(--v-btn-height) + 12px);height:calc(var(--v-btn-height) + 12px)}.v-btn--icon.v-btn--density-comfortable{width:calc(var(--v-btn-height));height:calc(var(--v-btn-height))}.v-btn--icon.v-btn--density-compact{width:calc(var(--v-btn-height) - 8px);height:calc(var(--v-btn-height) - 8px)}.v-btn--elevated:focus,.v-btn--elevated:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.v-btn--elevated:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.v-btn--block{display:flex;flex:1 0 auto;min-width:100%}.v-btn--disabled{pointer-events:none}.v-btn--disabled.v-btn--disabled{color:rgba(var(--v-theme-on-surface),.26);opacity:1}.v-btn--disabled.v-btn--variant-contained{background:rgb(var(--v-theme-surface));box-shadow:none}.v-btn--disabled.v-btn--variant-contained .v-btn__overlay{opacity:.4615384615}.v-btn--stacked{flex-direction:column;line-height:1.7}.v-btn--stacked.v-btn--size-x-small{--v-btn-size:0.625rem;--v-btn-height:56px;font-size:.625rem;min-width:56px;padding:0 12px}.v-btn--stacked.v-btn--size-small{--v-btn-size:0.75rem;--v-btn-height:64px;font-size:.75rem;min-width:64px;padding:0 14px}.v-btn--stacked.v-btn--size-default{--v-btn-size:0.875rem;--v-btn-height:72px;font-size:.875rem;min-width:72px;padding:0 16px}.v-btn--stacked.v-btn--size-large{--v-btn-size:1rem;--v-btn-height:80px;font-size:1rem;min-width:80px;padding:0 18px}.v-btn--stacked.v-btn--size-x-large{--v-btn-size:1.125rem;--v-btn-height:88px;font-size:1.125rem;min-width:88px;padding:0 20px}.v-btn--stacked.v-btn--density-default{height:calc(var(--v-btn-height))}.v-btn--stacked.v-btn--density-comfortable{height:calc(var(--v-btn-height) - 16px)}.v-btn--stacked.v-btn--density-compact{height:calc(var(--v-btn-height) - 24px)}.v-btn__overlay{background-color:currentColor;border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.v-app-bar .v-btn,.v-bottom-navigation .v-btn{box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.v-bottom-navigation .v-btn{filter:grayscale(1);flex-direction:column;font-size:.75rem;height:auto;max-width:168px;min-width:80px;opacity:.64;text-transform:none;transition-duration:.2s;transition-property:transform,opacity,filter;width:auto;border-radius:0}.v-bottom-navigation--grow .v-btn{width:100%}.v-bottom-navigation--horizontal .v-btn{flex-direction:row}.v-bottom-navigation--shift .v-btn>.v-icon{transform:translateY(0);transition:inherit}.v-bottom-navigation--shift .v-btn>:not([class*=v-]){opacity:0;position:absolute;top:50%;transform:scale(.8) translateY(10px);transition:inherit}.v-bottom-navigation .v-btn--active{filter:grayscale(0);opacity:1}.v-bottom-navigation .v-btn--active .v-btn__overlay,.v-bottom-navigation .v-btn--active:hover.v-btn__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*.12)}.v-bottom-navigation .v-btn--active:focus .v-btn__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*.16)}.v-bottom-navigation--shift .v-btn--active>.v-icon{transform:translateY(-7px)}.v-bottom-navigation--shift .v-btn--active>:not([class*=v-]){opacity:1;transform:scale(1) translateY(5px)}.v-card-actions .v-btn{padding:0 8px;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.v-card-actions .v-btn~.v-btn{-webkit-margin-start:.5rem;margin-inline-start:.5rem}.v-banner-actions .v-btn{padding:0 8px}.v-banner-actions .v-btn,.v-pagination .v-btn{box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.v-pagination .v-btn{border-radius:4px}.v-pagination .v-btn.v-btn--density-default{height:calc(var(--v-btn-height));width:calc(var(--v-btn-height))}.v-pagination .v-btn.v-btn--density-comfortable{height:calc(var(--v-btn-height) - 4px);width:calc(var(--v-btn-height) - 4px)}.v-pagination .v-btn.v-btn--density-compact{height:calc(var(--v-btn-height) - 8px);width:calc(var(--v-btn-height) - 8px)}.v-pagination__list .v-btn--elevated{box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.v-pagination__item--is-active .v-btn__overlay{opacity:var(--v-border-opacity)}.v-ripple__container{border-radius:inherit;width:100%;height:100%;z-index:0;contain:strict}.v-ripple__animation,.v-ripple__container{color:inherit;position:absolute;left:0;top:0;overflow:hidden;pointer-events:none}.v-ripple__animation{border-radius:50%;background:currentColor;opacity:0;will-change:transform,opacity}.v-ripple__animation--enter{transition:none}.v-ripple__animation--in{transition:transform .25s cubic-bezier(0,0,.2,1),opacity .1s cubic-bezier(0,0,.2,1)}.v-ripple__animation--out{transition:opacity .3s cubic-bezier(.4,0,1,1)}.v-icon{align-items:center;display:inline-flex;font-feature-settings:"liga";justify-content:center;letter-spacing:normal;line-height:1;position:relative;text-indent:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle}.v-icon--left{-webkit-margin-end:8px;margin-inline-end:8px}.v-icon--right{-webkit-margin-start:8px;margin-inline-start:8px}.v-icon--size-x-small{font-size:16px;height:16px;width:16px}.v-icon--size-small{font-size:20px;height:20px;width:20px}.v-icon--size-default{font-size:24px;height:24px;width:24px}.v-icon--size-large{font-size:28px;height:28px;width:28px}.v-icon--size-x-large{font-size:32px;height:32px;width:32px}.v-icon__svg{fill:currentColor}.v-bottom-navigation .v-btn:not(.v-btn--icon):not(.v-btn--stacked) .v-icon--size-default{font-size:24px}.v-bottom-navigation:not(.v-bottom-navigation--horizontal) .v-btn:not(.v-btn--icon):not(.v-btn--stacked) .v-icon--size-default{margin:0}.v-btn:not(.v-btn--icon) .v-icon--left{-webkit-margin-start:calc(var(--v-btn-height)/-9);margin-inline-start:calc(var(--v-btn-height)/-9);-webkit-margin-end:calc(var(--v-btn-height)/4.5);margin-inline-end:calc(var(--v-btn-height)/4.5)}.v-btn:not(.v-btn--icon) .v-icon--right{-webkit-margin-start:calc(var(--v-btn-height)/4.5);margin-inline-start:calc(var(--v-btn-height)/4.5);-webkit-margin-end:calc(var(--v-btn-height)/-9);margin-inline-end:calc(var(--v-btn-height)/-9)}.v-app-bar-title{font-size:1.5rem;padding:6px 20px}.v-app-bar-title__placeholder{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v-alert{padding:16px;position:relative;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);border-radius:4px;background:rgba(var(--v-theme-on-surface),var(--v-hover-opacity));color:rgb(var(--v-theme-on-surface))}.v-alert--absolute{position:absolute}.v-alert--fixed{position:fixed}.v-alert--variant-contained-text,.v-alert--variant-outlined,.v-alert--variant-plain,.v-alert--variant-text{background:transparent;color:inherit}.v-alert--variant-plain{opacity:.62}.v-alert--variant-plain:focus,.v-alert--variant-plain:hover{opacity:1}.v-alert--variant-plain .v-alert__overlay{display:none}.v-alert--variant-contained{background:rgba(var(--v-theme-on-surface),var(--v-hover-opacity));color:rgb(var(--v-theme-on-surface))}.v-alert--variant-outlined{border:thin solid currentColor}.v-alert--variant-text .v-alert__overlay{background:currentColor}.v-alert--variant-contained-text .v-alert__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;transition:opacity .2s ease-in-out}.v-alert.v-alert--border{--v-border-opacity:0.26}.v-alert--border{-webkit-padding-start:24px;padding-inline-start:24px}.v-alert:not(.v-alert--prominent) .v-avatar{--v-avatar-height:24px}.v-alert--variant-plain{transition:opacity .2s cubic-bezier(.4,0,.2,1)}.v-alert--density-default{padding-top:16px;padding-bottom:16px}.v-alert--density-default.v-alert--prominent .v-alert__avatar{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px}.v-alert--density-default.v-alert--prominent .v-alert__avatar .v-icon{font-size:40px}.v-alert--density-comfortable{padding-top:12px;padding-bottom:12px}.v-alert--density-comfortable.v-alert--prominent .v-alert__avatar{-webkit-margin-start:-2px;margin-inline-start:-2px;-webkit-margin-end:14px;margin-inline-end:14px}.v-alert--density-comfortable.v-alert--prominent .v-alert__avatar .v-icon{font-size:34px}.v-alert--density-compact{padding-top:8px;padding-bottom:8px}.v-alert--density-compact.v-alert--prominent .v-alert__avatar{-webkit-margin-start:-4px;margin-inline-start:-4px;-webkit-margin-end:12px;margin-inline-end:12px}.v-alert--density-compact.v-alert--prominent .v-alert__avatar .v-icon{font-size:28px}.v-alert__avatar{align-self:flex-start;display:flex;position:relative;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px}.v-alert__avatar .v-icon{font-size:24px;height:24px;width:24px}.v-alert--prominent .v-alert__avatar{align-self:center;flex:1 0 auto;max-width:40px}.v-alert--tip .v-alert__avatar{-webkit-margin-start:-33px;margin-inline-start:-33px;max-height:24px;max-width:24px}.v-alert--tip .v-alert__avatar:before{content:"";top:4px;left:4px;position:absolute;width:16px;height:16px;background:#fff;border-radius:inherit}.v-alert--tip .v-alert__avatar .v-avatar{height:auto;max-width:inherit;max-height:inherit}.v-alert__border{border-radius:inherit;bottom:0;left:0;opacity:var(--v-border-opacity);position:absolute;right:0;top:0;width:100%;border-color:currentColor;border-style:solid;border-width:0}.v-alert__border--border{border-width:8px;box-shadow:none}.v-alert--border-start .v-alert__border{border-inline-start-width:8px;border-inline-end-width:0}.v-alert--border-top .v-alert__border{border-top-width:8px;border-bottom-width:0}.v-alert--border-bottom .v-alert__border{border-bottom-width:8px;border-top-width:0}.v-alert--border-end .v-alert__border{border-inline-end-width:8px;border-inline-start-width:0}.v-alert--border.v-alert--tip .v-alert__border{--v-border-opacity:1;border-inline-start-width:6px}.v-alert__close{align-self:flex-start;display:flex;flex:0 1 auto;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-padding-start:8px;padding-inline-start:8px}.v-alert__close .v-btn{height:inherit;width:inherit}.v-alert__close .v-icon{font-size:20px}.v-alert__content{display:flex}.v-alert--prominent .v-alert__content{align-items:center}.v-alert-text{padding:16px}.v-alert--border-start .v-alert-text{-webkit-padding-end:24px;padding-inline-end:24px}.v-alert--border-end .v-alert-text{-webkit-padding-start:24px;padding-inline-start:24px}.v-alert__text{display:flex;flex:1 1}.v-avatar{align-items:center;display:inline-flex;justify-content:center;line-height:normal;overflow:hidden;position:relative;text-align:center;vertical-align:middle;border-radius:50%}.v-avatar.v-avatar--size-x-small{--v-avatar-height:24px}.v-avatar.v-avatar--size-small{--v-avatar-height:32px}.v-avatar.v-avatar--size-default{--v-avatar-height:40px}.v-avatar.v-avatar--size-large{--v-avatar-height:48px}.v-avatar.v-avatar--size-x-large{--v-avatar-height:56px}.v-avatar.v-avatar--density-default{height:calc(var(--v-avatar-height));width:calc(var(--v-avatar-height))}.v-avatar.v-avatar--density-comfortable{height:calc(var(--v-avatar-height) - 4px);width:calc(var(--v-avatar-height) - 4px)}.v-avatar.v-avatar--density-compact{height:calc(var(--v-avatar-height) - 8px);width:calc(var(--v-avatar-height) - 8px)}.v-avatar>*{border-radius:inherit;width:inherit;height:inherit}.v-avatar>.v-icon{font-size:var(--v-avatar-height)}.v-avatar--rounded{border-radius:4px}.v-list-item-avatar .v-avatar{overflow:visible;height:inherit;width:inherit}.v-badge{display:inline-block;line-height:1}.v-badge__badge{align-items:center;border-radius:10px;display:flex;font-size:.75rem;font-weight:500;height:1.25rem;justify-content:center;min-width:20px;padding:4px;pointer-events:auto;position:absolute;text-align:center;text-indent:0;transition:.225s cubic-bezier(.4,0,.2,1);white-space:nowrap}.v-badge--bordered .v-badge__badge:after{border-radius:inherit;border-style:solid;border-width:2px;bottom:0;color:rgb(var(--v-theme-background));content:"";left:0;position:absolute;right:0;top:0;transform:scale(1.2)}.v-badge--dot .v-badge__badge{border-radius:4.5px;height:9px;min-width:0;padding:0;width:9px;background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface))}.v-badge--dot .v-badge__badge:after{border-width:1.5px}.v-badge--inline .v-badge__badge{position:relative;vertical-align:middle}.v-badge__badge .v-icon{color:inherit;font-size:.75rem;height:.75rem;width:.75rem}.v-badge__badge .v-img,.v-badge__badge img{height:100%;width:100%}.v-badge__content{padding:0 2px}.v-badge__wrapper{display:flex;position:relative}.v-badge--inline .v-badge__wrapper{align-items:center;display:inline-flex;justify-content:center;margin:0 4px}.v-banner{display:flex;flex-wrap:wrap;font-size:.875rem;padding-bottom:8px;-webkit-padding-end:8px;padding-inline-end:8px;-webkit-padding-start:24px;padding-inline-start:24px;position:relative;width:100%;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0 0 thin 0;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);border-radius:0;background:rgb(var(--v-theme-background));color:rgb(var(--v-theme-on-surface))}.v-banner--border{box-shadow:none}.v-banner--absolute{position:absolute}.v-banner--fixed{position:fixed}.v-banner--sticky{position:sticky}.v-banner--border{border-width:thin}.v-banner--mobile{align-items:center;-webkit-padding-end:8px;padding-inline-end:8px;-webkit-padding-start:16px;padding-inline-start:16px}.v-banner--rounded{border-radius:4px}.v-banner--density-default.v-banner--one-line{padding-top:10px}.v-banner--density-default.v-banner--three-line,.v-banner--density-default.v-banner--two-line{padding-top:24px}.v-banner--density-comfortable.v-banner--one-line{padding-top:6px}.v-banner--density-comfortable.v-banner--three-line,.v-banner--density-comfortable.v-banner--two-line{padding-top:20px}.v-banner--density-compact.v-banner--one-line{padding-top:2px}.v-banner--density-compact.v-banner--three-line,.v-banner--density-compact.v-banner--two-line{padding-top:16px}.v-banner--sticky{top:0}.v-banner-actions{align-items:flex-end;display:flex;flex:0 1;justify-content:flex-end}.v-banner--mobile .v-banner-actions{flex:1 0}.v-banner-content{display:flex;flex:1 1;min-width:0;-webkit-padding-end:90px;padding-inline-end:90px}.v-banner--mobile .v-banner-content{flex:1 1 auto;-webkit-padding-end:8px;padding-inline-end:8px}.v-banner--two-line .v-banner-content{margin-bottom:4px}.v-banner--three-line .v-banner-content{margin-bottom:8px}.v-banner-avatar{align-self:flex-start;border-radius:50%;-webkit-margin-end:24px;margin-inline-end:24px;-webkit-margin-start:0;margin-inline-start:0;position:relative}.v-banner-avatar:after{background:currentColor;border-radius:inherit;bottom:0;content:"";left:0;opacity:var(--v-border-opacity);position:absolute;right:0;top:0}.v-banner--mobile .v-banner-avatar{-webkit-margin-end:16px;margin-inline-end:16px}.v-banner--one-line .v-banner-avatar{align-self:center}.v-banner-text{-webkit-box-orient:vertical;align-self:flex-start;color:rgb(var(--v-theme-on-surface));display:-webkit-box;line-height:1.375rem;overflow:hidden}.v-banner--one-line .v-banner-text{align-self:center}.v-banner--two-line .v-banner-text{-webkit-line-clamp:2}.v-banner--three-line .v-banner-text{-webkit-line-clamp:3}.v-bottom-navigation{display:flex;max-width:100%;overflow:hidden;position:fixed;transition:.2s cubic-bezier(.4,0,.2,1);border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface))}.v-bottom-navigation--border{border-width:thin;box-shadow:none}.v-bottom-navigation--is-active{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.v-bottom-navigation--absolute{position:absolute}.v-bottom-navigation__content{display:flex;flex:none;justify-content:center;transition:inherit;width:100%}.v-breadcrumbs{line-height:1.375rem;padding:16px}.v-breadcrumbs--rounded{border-radius:4px}.v-breadcrumbs--density-default{padding-top:16px;padding-bottom:16px}.v-breadcrumbs--density-comfortable{padding-top:12px;padding-bottom:12px}.v-breadcrumbs--density-compact{padding-top:8px;padding-bottom:8px}.v-breadcrumbs-item{align-items:center;color:inherit;display:inline-flex;padding:0 4px;text-decoration:none;vertical-align:middle}.v-breadcrumbs-item--disabled{opacity:var(--v-disabled-opacity);pointer-events:none}.v-breadcrumbs-item--link:hover{text-decoration:underline}.v-breadcrumbs-item .v-icon{font-size:1rem;-webkit-margin-start:-4px;margin-inline-start:-4px;-webkit-margin-end:2px;margin-inline-end:2px}.v-breadcrumbs-divider{display:inline-block;padding:0 8px;vertical-align:middle}.v-card{color:rgb(var(--v-theme-on-surface));position:relative;padding:0;text-decoration:none;transition-duration:.28s;transition-property:box-shadow,opacity,color;transition-timing-function:cubic-bezier(.4,0,.2,1);border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;border-radius:4px}.v-card--border{border-width:thin;box-shadow:none}.v-card--absolute{position:absolute}.v-card--fixed{position:fixed}.v-card:hover .v-card__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*.04)}.v-card--active .v-card__overlay,.v-card--active:hover.v-card__overlay,.v-card:focus .v-card__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*.12)}.v-card--active:focus .v-card__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*.16)}.v-card--variant-contained-text,.v-card--variant-outlined,.v-card--variant-plain,.v-card--variant-text{background:transparent;color:inherit}.v-card--variant-plain{opacity:.62}.v-card--variant-plain:focus,.v-card--variant-plain:hover{opacity:1}.v-card--variant-plain .v-card__overlay{display:none}.v-card--variant-contained{background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface));box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12)}.v-card--variant-outlined{border:thin solid currentColor}.v-card--variant-text .v-card__overlay{background:currentColor}.v-card--variant-contained-text .v-card__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;transition:opacity .2s ease-in-out}.v-card--disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.v-card--disabled>[class*=v-card-]{opacity:.6}.v-card--flat{box-shadow:none}.v-card--hover{cursor:pointer;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.v-card--hover:after,.v-card--hover:before{border-radius:inherit;bottom:0;content:"";display:block;left:0;pointer-events:none;position:absolute;right:0;top:0;transition:inherit}.v-card--hover:before{opacity:1;z-index:-1;box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12)}.v-card--hover:after{z-index:1;opacity:0;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.v-card--hover:hover:after{opacity:1}.v-card--hover:hover:before{opacity:0}.v-card--link{cursor:pointer}.v-card--tile{border-radius:0}.v-card-actions{align-items:center;display:flex;flex:1 1 auto;min-height:52px;padding:.5rem}.v-card-avatar{align-self:flex-start;padding:.5rem 1rem}.v-card-header .v-card-avatar:last-child{-webkit-padding-end:0;padding-inline-end:0}.v-card-header .v-card-avatar:first-child{-webkit-padding-start:0;padding-inline-start:0}.v-card-header-text{flex:1 1 auto}.v-card-img{border-radius:inherit;display:flex;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:-1}.v-card-header{align-items:center;display:flex;padding:.5rem 1rem}.v-card-media{overflow:hidden}.v-card .v-card-media:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.v-card .v-card-media:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.v-card-subtitle{align-items:center;display:flex;font-size:.875rem;font-weight:400;letter-spacing:.0178571429em;opacity:var(--v-medium-emphasis-opacity);padding:0 1rem;text-transform:none}.v-card .v-card-subtitle{line-height:1.25rem}.v-card--density-comfortable .v-card-subtitle{line-height:1.125rem}.v-card--density-compact .v-card-subtitle{line-height:1rem}.v-card-header .v-card-subtitle{padding:0}.v-card-text{font-size:.875rem;font-weight:400;letter-spacing:.0178571429em;opacity:var(--v-medium-emphasis-opacity);padding:1rem;text-transform:false;transition:inherit;transition-property:color,opacity}.v-card .v-card-text{line-height:1.25rem}.v-card--density-comfortable .v-card-text{line-height:1.2rem}.v-card--density-compact .v-card-text{line-height:1.15rem}.v-card-title{align-items:center;display:flex;font-size:1.25rem;font-weight:500;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;letter-spacing:.0125em;overflow-wrap:normal;padding:.5rem 1rem;text-transform:none;word-break:normal;word-wrap:break-word}.v-card .v-card-title{line-height:2rem}.v-card--density-comfortable .v-card-title{line-height:1.75rem}.v-card--density-compact .v-card-title{line-height:1.55rem}.v-card-header .v-card-title{padding:0}.v-card__overlay{background-color:currentColor;border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.v-card__overlay+.v-card-media{border-top-left-radius:inherit;border-top-right-radius:inherit}.v-dialog .v-overlay__content>.v-card{border-radius:inherit;overflow:hidden;box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}.v-chip{align-items:center;cursor:default;display:inline-flex;position:relative;text-decoration:none;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);border-radius:9999px}.v-chip--size-x-small{--v-chip-size:0.625rem;--v-chip-height:16px;font-size:.625rem;padding:0 6px}.v-chip--size-x-small .v-avatar{--v-avatar-height:8px}.v-chip--pill.v-chip--size-x-small .v-avatar{--v-avatar-height:16px}.v-chip--size-x-small .v-chip__prepend{-webkit-margin-start:-3px;margin-inline-start:-3px;-webkit-margin-end:3px;margin-inline-end:3px}.v-chip--pill.v-chip--size-x-small .v-chip__prepend{-webkit-margin-start:-6px;margin-inline-start:-6px}.v-chip--size-x-small .v-chip__append{-webkit-margin-end:-3px;margin-inline-end:-3px;-webkit-margin-start:3px;margin-inline-start:3px}.v-chip--pill.v-chip--size-x-small .v-chip__append{-webkit-margin-end:-6px;margin-inline-end:-6px}.v-chip--size-small{--v-chip-size:0.75rem;--v-chip-height:24px;font-size:.75rem;padding:0 9px}.v-chip--size-small .v-avatar{--v-avatar-height:16px}.v-chip--pill.v-chip--size-small .v-avatar{--v-avatar-height:24px}.v-chip--size-small .v-chip__prepend{-webkit-margin-start:-4.5px;margin-inline-start:-4.5px;-webkit-margin-end:4.5px;margin-inline-end:4.5px}.v-chip--pill.v-chip--size-small .v-chip__prepend{-webkit-margin-start:-9px;margin-inline-start:-9px}.v-chip--size-small .v-chip__append{-webkit-margin-end:-4.5px;margin-inline-end:-4.5px;-webkit-margin-start:4.5px;margin-inline-start:4.5px}.v-chip--pill.v-chip--size-small .v-chip__append{-webkit-margin-end:-9px;margin-inline-end:-9px}.v-chip--size-default{--v-chip-size:0.875rem;--v-chip-height:32px;font-size:.875rem;padding:0 12px}.v-chip--size-default .v-avatar{--v-avatar-height:24px}.v-chip--pill.v-chip--size-default .v-avatar{--v-avatar-height:32px}.v-chip--size-default .v-chip__prepend{-webkit-margin-start:-6px;margin-inline-start:-6px;-webkit-margin-end:6px;margin-inline-end:6px}.v-chip--pill.v-chip--size-default .v-chip__prepend{-webkit-margin-start:-12px;margin-inline-start:-12px}.v-chip--size-default .v-chip__append{-webkit-margin-end:-6px;margin-inline-end:-6px;-webkit-margin-start:6px;margin-inline-start:6px}.v-chip--pill.v-chip--size-default .v-chip__append{-webkit-margin-end:-12px;margin-inline-end:-12px}.v-chip--size-large{--v-chip-size:1rem;--v-chip-height:40px;font-size:1rem;padding:0 15px}.v-chip--size-large .v-avatar{--v-avatar-height:32px}.v-chip--pill.v-chip--size-large .v-avatar{--v-avatar-height:40px}.v-chip--size-large .v-chip__prepend{-webkit-margin-start:-7.5px;margin-inline-start:-7.5px;-webkit-margin-end:7.5px;margin-inline-end:7.5px}.v-chip--pill.v-chip--size-large .v-chip__prepend{-webkit-margin-start:-15px;margin-inline-start:-15px}.v-chip--size-large .v-chip__append{-webkit-margin-end:-7.5px;margin-inline-end:-7.5px;-webkit-margin-start:7.5px;margin-inline-start:7.5px}.v-chip--pill.v-chip--size-large .v-chip__append{-webkit-margin-end:-15px;margin-inline-end:-15px}.v-chip--size-x-large{--v-chip-size:1.125rem;--v-chip-height:48px;font-size:1.125rem;padding:0 18px}.v-chip--size-x-large .v-avatar{--v-avatar-height:40px}.v-chip--pill.v-chip--size-x-large .v-avatar{--v-avatar-height:48px}.v-chip--size-x-large .v-chip__prepend{-webkit-margin-start:-9px;margin-inline-start:-9px;-webkit-margin-end:9px;margin-inline-end:9px}.v-chip--pill.v-chip--size-x-large .v-chip__prepend{-webkit-margin-start:-18px;margin-inline-start:-18px}.v-chip--size-x-large .v-chip__append{-webkit-margin-end:-9px;margin-inline-end:-9px;-webkit-margin-start:9px;margin-inline-start:9px}.v-chip--pill.v-chip--size-x-large .v-chip__append{-webkit-margin-end:-18px;margin-inline-end:-18px}.v-chip.v-chip--density-default{height:calc(var(--v-chip-height))}.v-chip.v-chip--density-comfortable{height:calc(var(--v-chip-height) - 8px)}.v-chip.v-chip--density-compact{height:calc(var(--v-chip-height) - 12px)}.v-chip--variant-contained-text,.v-chip--variant-outlined,.v-chip--variant-plain,.v-chip--variant-text{background:transparent;color:inherit}.v-chip--variant-plain{opacity:.26}.v-chip--variant-plain:focus,.v-chip--variant-plain:hover{opacity:1}.v-chip--variant-plain .v-chip__overlay{display:none}.v-chip--variant-contained{background:rgba(var(--v-theme-on-surface),var(--v-activated-opacity));color:currentColor}.v-chip--variant-outlined{border:thin solid currentColor}.v-chip--variant-text .v-chip__overlay{background:currentColor}.v-chip--variant-contained-text .v-chip__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;transition:opacity .2s ease-in-out}.v-chip--border{border-width:thin}.v-chip--link{cursor:pointer}.v-chip__append{-webkit-margin-start:8px;margin-inline-start:8px;-webkit-margin-end:0;margin-inline-end:0}.v-chip__append+.v-chip__close{-webkit-margin-start:0;margin-inline-start:0}.v-chip__prepend{-webkit-margin-start:-12px;margin-inline-start:-12px;-webkit-margin-end:8px;margin-inline-end:8px}.v-chip__close{align-self:center;cursor:pointer;display:inline-flex;flex:0 1 auto;font-size:18px;max-height:18px;max-width:18px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-margin-start:8px;margin-inline-start:8px;-webkit-margin-end:-4px;margin-inline-end:-4px}.v-chip__close .v-icon{font-size:inherit}.v-chip--disabled{opacity:.3;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.v-chip--label{border-radius:8px}.v-code{background-color:rgb(var(--v-code-background-color));border-radius:3px;font-size:85%;font-weight:400;padding:.2em .4em}.v-dialog{z-index:2400}.v-dialog .v-overlay__content{max-height:360px;min-width:240px;max-width:560px;border-radius:4px}@media(max-width:959px){.v-dialog .v-overlay__content{max-width:280px}}.v-dialog .v-overlay__content>.v-card>.v-card-avatar{padding:0}.v-dialog .v-overlay__content>.v-card>.v-card-header{padding:14px 24px 0}.v-dialog .v-overlay__content>.v-card>.v-card-header+.v-card-text{padding-top:10px}.v-dialog .v-overlay__content>.v-card>.v-card-text{font-size:inherit;letter-spacing:.03125em;line-height:inherit;padding:16px 24px 10px}.v-dialog--fullscreen{--v-scrollbar-offset:0px}.v-dialog--fullscreen .v-overlay__content{border-radius:0;margin:0;width:100%;height:100%;overflow-y:auto;top:0;left:0}.v-overlay-container{bottom:0;contain:strict}.v-overlay,.v-overlay-container{left:0;pointer-events:none;position:fixed;right:0;top:0}.v-overlay{align-items:center;border-radius:inherit;display:flex;height:100%;justify-content:center;z-index:800;-webkit-padding-end:var(--v-scrollbar-offset);padding-inline-end:var(--v-scrollbar-offset)}.v-overlay__content{outline:none;position:relative}.v-overlay__scrim{background:rgb(var(--v-theme-on-surface));border-radius:inherit;bottom:0;height:100%;left:0;opacity:32%;position:absolute;right:0;top:0;width:100%}.v-overlay--absolute{position:absolute}.v-overlay--active{pointer-events:auto}.v-divider{display:block;flex:1 1 100%;height:0;max-height:0;transition:inherit;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:thin 0 0 0}.v-divider--vertical{align-self:stretch;border-width:0 thin 0 0;display:inline-flex;height:inherit;margin-left:-1px;max-height:100%;max-width:0;vertical-align:text-bottom;width:0}.v-divider--inset:not(.v-divider--vertical){max-width:calc(100% - 72px);-webkit-margin-start:72px;margin-inline-start:72px}.v-divider--inset.v-divider--vertical{margin-bottom:8px;margin-top:8px;max-height:calc(100% - 16px)}.v-footer{align-items:center;display:flex;flex:1 1 auto;padding:8px 24px;position:relative;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);border-radius:0;background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface))}.v-footer--absolute{position:absolute}.v-footer--fixed{position:fixed}.v-footer--rounded{border-radius:4px}.v-container{width:100%;padding:12px;margin-right:auto;margin-left:auto}@media(min-width:960px){.v-container{max-width:900px}}@media(min-width:1280px){.v-container{max-width:1200px}}@media(min-width:1920px){.v-container{max-width:1800px}}@media(min-width:2560px){.v-container{max-width:2400px}}.v-container--fluid{max-width:100%}.v-row{display:flex;flex-wrap:wrap;flex:1 1 auto;margin:-12px}.v-row+.row{margin-top:12px}.v-row+.row--dense{margin-top:4px}.v-row--dense{margin:-4px}.v-row--dense>.v-col,.v-row--dense>[class*=v-col-]{padding:4px}.v-row.v-row--no-gutters{margin:0}.v-row.v-row--no-gutters>.v-col,.v-row.v-row--no-gutters>[class*=v-col-]{padding:0}.v-col,.v-col-1,.v-col-10,.v-col-11,.v-col-12,.v-col-2,.v-col-3,.v-col-4,.v-col-5,.v-col-6,.v-col-7,.v-col-8,.v-col-9,.v-col-auto,.v-col-lg,.v-col-lg-1,.v-col-lg-10,.v-col-lg-11,.v-col-lg-12,.v-col-lg-2,.v-col-lg-3,.v-col-lg-4,.v-col-lg-5,.v-col-lg-6,.v-col-lg-7,.v-col-lg-8,.v-col-lg-9,.v-col-lg-auto,.v-col-md,.v-col-md-1,.v-col-md-10,.v-col-md-11,.v-col-md-12,.v-col-md-2,.v-col-md-3,.v-col-md-4,.v-col-md-5,.v-col-md-6,.v-col-md-7,.v-col-md-8,.v-col-md-9,.v-col-md-auto,.v-col-sm,.v-col-sm-1,.v-col-sm-10,.v-col-sm-11,.v-col-sm-12,.v-col-sm-2,.v-col-sm-3,.v-col-sm-4,.v-col-sm-5,.v-col-sm-6,.v-col-sm-7,.v-col-sm-8,.v-col-sm-9,.v-col-sm-auto,.v-col-xl,.v-col-xl-1,.v-col-xl-10,.v-col-xl-11,.v-col-xl-12,.v-col-xl-2,.v-col-xl-3,.v-col-xl-4,.v-col-xl-5,.v-col-xl-6,.v-col-xl-7,.v-col-xl-8,.v-col-xl-9,.v-col-xl-auto,.v-col-xxl,.v-col-xxl-1,.v-col-xxl-10,.v-col-xxl-11,.v-col-xxl-12,.v-col-xxl-2,.v-col-xxl-3,.v-col-xxl-4,.v-col-xxl-5,.v-col-xxl-6,.v-col-xxl-7,.v-col-xxl-8,.v-col-xxl-9,.v-col-xxl-auto{width:100%;padding:12px}.v-col{flex-basis:0;flex-grow:1;max-width:100%}.v-col-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-3{flex:0 0 25%;max-width:25%}.v-col-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-6{flex:0 0 50%;max-width:50%}.v-col-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-9{flex:0 0 75%;max-width:75%}.v-col-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-12{flex:0 0 100%;max-width:100%}.offset-1.v-locale--is-ltr,.v-locale--is-ltr .offset-1{margin-left:8.3333333333%}.offset-1.v-locale--is-rtl,.v-locale--is-rtl .offset-1{margin-right:8.3333333333%}.offset-2.v-locale--is-ltr,.v-locale--is-ltr .offset-2{margin-left:16.6666666667%}.offset-2.v-locale--is-rtl,.v-locale--is-rtl .offset-2{margin-right:16.6666666667%}.offset-3.v-locale--is-ltr,.v-locale--is-ltr .offset-3{margin-left:25%}.offset-3.v-locale--is-rtl,.v-locale--is-rtl .offset-3{margin-right:25%}.offset-4.v-locale--is-ltr,.v-locale--is-ltr .offset-4{margin-left:33.3333333333%}.offset-4.v-locale--is-rtl,.v-locale--is-rtl .offset-4{margin-right:33.3333333333%}.offset-5.v-locale--is-ltr,.v-locale--is-ltr .offset-5{margin-left:41.6666666667%}.offset-5.v-locale--is-rtl,.v-locale--is-rtl .offset-5{margin-right:41.6666666667%}.offset-6.v-locale--is-ltr,.v-locale--is-ltr .offset-6{margin-left:50%}.offset-6.v-locale--is-rtl,.v-locale--is-rtl .offset-6{margin-right:50%}.offset-7.v-locale--is-ltr,.v-locale--is-ltr .offset-7{margin-left:58.3333333333%}.offset-7.v-locale--is-rtl,.v-locale--is-rtl .offset-7{margin-right:58.3333333333%}.offset-8.v-locale--is-ltr,.v-locale--is-ltr .offset-8{margin-left:66.6666666667%}.offset-8.v-locale--is-rtl,.v-locale--is-rtl .offset-8{margin-right:66.6666666667%}.offset-9.v-locale--is-ltr,.v-locale--is-ltr .offset-9{margin-left:75%}.offset-9.v-locale--is-rtl,.v-locale--is-rtl .offset-9{margin-right:75%}.offset-10.v-locale--is-ltr,.v-locale--is-ltr .offset-10{margin-left:83.3333333333%}.offset-10.v-locale--is-rtl,.v-locale--is-rtl .offset-10{margin-right:83.3333333333%}.offset-11.v-locale--is-ltr,.v-locale--is-ltr .offset-11{margin-left:91.6666666667%}.offset-11.v-locale--is-rtl,.v-locale--is-rtl .offset-11{margin-right:91.6666666667%}@media(min-width:600px){.v-col-sm{flex-basis:0;flex-grow:1;max-width:100%}.v-col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-sm-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-sm-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-sm-3{flex:0 0 25%;max-width:25%}.v-col-sm-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-sm-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-sm-6{flex:0 0 50%;max-width:50%}.v-col-sm-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-sm-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-sm-9{flex:0 0 75%;max-width:75%}.v-col-sm-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-sm-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-sm-12{flex:0 0 100%;max-width:100%}.offset-sm-0.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-0{margin-left:0}.offset-sm-0.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-0{margin-right:0}.offset-sm-1.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-1{margin-left:8.3333333333%}.offset-sm-1.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-1{margin-right:8.3333333333%}.offset-sm-2.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-2{margin-left:16.6666666667%}.offset-sm-2.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-2{margin-right:16.6666666667%}.offset-sm-3.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-3{margin-left:25%}.offset-sm-3.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-3{margin-right:25%}.offset-sm-4.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-4{margin-left:33.3333333333%}.offset-sm-4.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-4{margin-right:33.3333333333%}.offset-sm-5.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-5{margin-left:41.6666666667%}.offset-sm-5.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-5{margin-right:41.6666666667%}.offset-sm-6.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-6{margin-left:50%}.offset-sm-6.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-6{margin-right:50%}.offset-sm-7.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-7{margin-left:58.3333333333%}.offset-sm-7.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-7{margin-right:58.3333333333%}.offset-sm-8.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-8{margin-left:66.6666666667%}.offset-sm-8.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-8{margin-right:66.6666666667%}.offset-sm-9.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-9{margin-left:75%}.offset-sm-9.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-9{margin-right:75%}.offset-sm-10.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-10{margin-left:83.3333333333%}.offset-sm-10.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-10{margin-right:83.3333333333%}.offset-sm-11.v-locale--is-ltr,.v-locale--is-ltr .offset-sm-11{margin-left:91.6666666667%}.offset-sm-11.v-locale--is-rtl,.v-locale--is-rtl .offset-sm-11{margin-right:91.6666666667%}}@media(min-width:960px){.v-col-md{flex-basis:0;flex-grow:1;max-width:100%}.v-col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-md-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-md-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-md-3{flex:0 0 25%;max-width:25%}.v-col-md-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-md-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-md-6{flex:0 0 50%;max-width:50%}.v-col-md-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-md-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-md-9{flex:0 0 75%;max-width:75%}.v-col-md-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-md-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-md-12{flex:0 0 100%;max-width:100%}.offset-md-0.v-locale--is-ltr,.v-locale--is-ltr .offset-md-0{margin-left:0}.offset-md-0.v-locale--is-rtl,.v-locale--is-rtl .offset-md-0{margin-right:0}.offset-md-1.v-locale--is-ltr,.v-locale--is-ltr .offset-md-1{margin-left:8.3333333333%}.offset-md-1.v-locale--is-rtl,.v-locale--is-rtl .offset-md-1{margin-right:8.3333333333%}.offset-md-2.v-locale--is-ltr,.v-locale--is-ltr .offset-md-2{margin-left:16.6666666667%}.offset-md-2.v-locale--is-rtl,.v-locale--is-rtl .offset-md-2{margin-right:16.6666666667%}.offset-md-3.v-locale--is-ltr,.v-locale--is-ltr .offset-md-3{margin-left:25%}.offset-md-3.v-locale--is-rtl,.v-locale--is-rtl .offset-md-3{margin-right:25%}.offset-md-4.v-locale--is-ltr,.v-locale--is-ltr .offset-md-4{margin-left:33.3333333333%}.offset-md-4.v-locale--is-rtl,.v-locale--is-rtl .offset-md-4{margin-right:33.3333333333%}.offset-md-5.v-locale--is-ltr,.v-locale--is-ltr .offset-md-5{margin-left:41.6666666667%}.offset-md-5.v-locale--is-rtl,.v-locale--is-rtl .offset-md-5{margin-right:41.6666666667%}.offset-md-6.v-locale--is-ltr,.v-locale--is-ltr .offset-md-6{margin-left:50%}.offset-md-6.v-locale--is-rtl,.v-locale--is-rtl .offset-md-6{margin-right:50%}.offset-md-7.v-locale--is-ltr,.v-locale--is-ltr .offset-md-7{margin-left:58.3333333333%}.offset-md-7.v-locale--is-rtl,.v-locale--is-rtl .offset-md-7{margin-right:58.3333333333%}.offset-md-8.v-locale--is-ltr,.v-locale--is-ltr .offset-md-8{margin-left:66.6666666667%}.offset-md-8.v-locale--is-rtl,.v-locale--is-rtl .offset-md-8{margin-right:66.6666666667%}.offset-md-9.v-locale--is-ltr,.v-locale--is-ltr .offset-md-9{margin-left:75%}.offset-md-9.v-locale--is-rtl,.v-locale--is-rtl .offset-md-9{margin-right:75%}.offset-md-10.v-locale--is-ltr,.v-locale--is-ltr .offset-md-10{margin-left:83.3333333333%}.offset-md-10.v-locale--is-rtl,.v-locale--is-rtl .offset-md-10{margin-right:83.3333333333%}.offset-md-11.v-locale--is-ltr,.v-locale--is-ltr .offset-md-11{margin-left:91.6666666667%}.offset-md-11.v-locale--is-rtl,.v-locale--is-rtl .offset-md-11{margin-right:91.6666666667%}}@media(min-width:1280px){.v-col-lg{flex-basis:0;flex-grow:1;max-width:100%}.v-col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-lg-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-lg-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-lg-3{flex:0 0 25%;max-width:25%}.v-col-lg-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-lg-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-lg-6{flex:0 0 50%;max-width:50%}.v-col-lg-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-lg-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-lg-9{flex:0 0 75%;max-width:75%}.v-col-lg-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-lg-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-lg-12{flex:0 0 100%;max-width:100%}.offset-lg-0.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-0{margin-left:0}.offset-lg-0.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-0{margin-right:0}.offset-lg-1.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-1{margin-left:8.3333333333%}.offset-lg-1.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-1{margin-right:8.3333333333%}.offset-lg-2.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-2{margin-left:16.6666666667%}.offset-lg-2.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-2{margin-right:16.6666666667%}.offset-lg-3.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-3{margin-left:25%}.offset-lg-3.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-3{margin-right:25%}.offset-lg-4.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-4{margin-left:33.3333333333%}.offset-lg-4.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-4{margin-right:33.3333333333%}.offset-lg-5.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-5{margin-left:41.6666666667%}.offset-lg-5.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-5{margin-right:41.6666666667%}.offset-lg-6.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-6{margin-left:50%}.offset-lg-6.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-6{margin-right:50%}.offset-lg-7.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-7{margin-left:58.3333333333%}.offset-lg-7.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-7{margin-right:58.3333333333%}.offset-lg-8.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-8{margin-left:66.6666666667%}.offset-lg-8.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-8{margin-right:66.6666666667%}.offset-lg-9.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-9{margin-left:75%}.offset-lg-9.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-9{margin-right:75%}.offset-lg-10.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-10{margin-left:83.3333333333%}.offset-lg-10.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-10{margin-right:83.3333333333%}.offset-lg-11.v-locale--is-ltr,.v-locale--is-ltr .offset-lg-11{margin-left:91.6666666667%}.offset-lg-11.v-locale--is-rtl,.v-locale--is-rtl .offset-lg-11{margin-right:91.6666666667%}}@media(min-width:1920px){.v-col-xl{flex-basis:0;flex-grow:1;max-width:100%}.v-col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-xl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-xl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-xl-3{flex:0 0 25%;max-width:25%}.v-col-xl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-xl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-xl-6{flex:0 0 50%;max-width:50%}.v-col-xl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-xl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-xl-9{flex:0 0 75%;max-width:75%}.v-col-xl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-xl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-xl-12{flex:0 0 100%;max-width:100%}.offset-xl-0.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-0{margin-left:0}.offset-xl-0.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-0{margin-right:0}.offset-xl-1.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-1{margin-left:8.3333333333%}.offset-xl-1.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-1{margin-right:8.3333333333%}.offset-xl-2.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-2{margin-left:16.6666666667%}.offset-xl-2.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-2{margin-right:16.6666666667%}.offset-xl-3.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-3{margin-left:25%}.offset-xl-3.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-3{margin-right:25%}.offset-xl-4.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-4{margin-left:33.3333333333%}.offset-xl-4.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-4{margin-right:33.3333333333%}.offset-xl-5.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-5{margin-left:41.6666666667%}.offset-xl-5.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-5{margin-right:41.6666666667%}.offset-xl-6.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-6{margin-left:50%}.offset-xl-6.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-6{margin-right:50%}.offset-xl-7.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-7{margin-left:58.3333333333%}.offset-xl-7.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-7{margin-right:58.3333333333%}.offset-xl-8.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-8{margin-left:66.6666666667%}.offset-xl-8.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-8{margin-right:66.6666666667%}.offset-xl-9.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-9{margin-left:75%}.offset-xl-9.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-9{margin-right:75%}.offset-xl-10.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-10{margin-left:83.3333333333%}.offset-xl-10.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-10{margin-right:83.3333333333%}.offset-xl-11.v-locale--is-ltr,.v-locale--is-ltr .offset-xl-11{margin-left:91.6666666667%}.offset-xl-11.v-locale--is-rtl,.v-locale--is-rtl .offset-xl-11{margin-right:91.6666666667%}}@media(min-width:2560px){.v-col-xxl{flex-basis:0;flex-grow:1;max-width:100%}.v-col-xxl-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-xxl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-xxl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-xxl-3{flex:0 0 25%;max-width:25%}.v-col-xxl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-xxl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-xxl-6{flex:0 0 50%;max-width:50%}.v-col-xxl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-xxl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-xxl-9{flex:0 0 75%;max-width:75%}.v-col-xxl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-xxl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-xxl-12{flex:0 0 100%;max-width:100%}.offset-xxl-0.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-0{margin-left:0}.offset-xxl-0.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-0{margin-right:0}.offset-xxl-1.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-1{margin-left:8.3333333333%}.offset-xxl-1.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-1{margin-right:8.3333333333%}.offset-xxl-2.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-2{margin-left:16.6666666667%}.offset-xxl-2.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-2{margin-right:16.6666666667%}.offset-xxl-3.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-3{margin-left:25%}.offset-xxl-3.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-3{margin-right:25%}.offset-xxl-4.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-4{margin-left:33.3333333333%}.offset-xxl-4.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-4{margin-right:33.3333333333%}.offset-xxl-5.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-5{margin-left:41.6666666667%}.offset-xxl-5.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-5{margin-right:41.6666666667%}.offset-xxl-6.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-6{margin-left:50%}.offset-xxl-6.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-6{margin-right:50%}.offset-xxl-7.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-7{margin-left:58.3333333333%}.offset-xxl-7.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-7{margin-right:58.3333333333%}.offset-xxl-8.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-8{margin-left:66.6666666667%}.offset-xxl-8.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-8{margin-right:66.6666666667%}.offset-xxl-9.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-9{margin-left:75%}.offset-xxl-9.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-9{margin-right:75%}.offset-xxl-10.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-10{margin-left:83.3333333333%}.offset-xxl-10.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-10{margin-right:83.3333333333%}.offset-xxl-11.v-locale--is-ltr,.v-locale--is-ltr .offset-xxl-11{margin-left:91.6666666667%}.offset-xxl-11.v-locale--is-rtl,.v-locale--is-rtl .offset-xxl-11{margin-right:91.6666666667%}}.v-kbd{background:rgb(var(--v-kbd-background-color));border-radius:3px;color:rgb(var(--v-kbd-color));font-size:85%;font-weight:400;padding:.2em .4rem;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.v-item-group{flex:0 1 auto;max-width:100%;position:relative;transition:.2s cubic-bezier(.4,0,.2,1)}.v-layout{--v-scrollbar-offset:0px;position:relative;display:flex;flex:1 1 auto;overflow:auto;z-index:0}.v-layout--full-height{--v-scrollbar-offset:inherit;height:100%}.v-layout-item{position:fixed;transition:.2s cubic-bezier(.4,0,.2,1)}.v-layout-item--absolute{position:absolute}.v-locale-provider{display:contents}.v-list{overflow:auto;padding:8px 0;position:relative;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);border-radius:0}.v-list--border{border-width:thin;box-shadow:none}.v-list--absolute{position:absolute}.v-list--fixed{position:fixed}.v-list--disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.v-list--disabled>[class*=v-list-]{opacity:.6}.v-list--rounded{border-radius:4px}.v-list--subheader{padding-top:0}.v-list-img{border-radius:inherit;display:flex;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:-1}.v-list-subheader{align-items:center;background:inherit;display:flex;font-size:.875rem;font-weight:500;line-height:1.375rem;-webkit-padding-end:16px;padding-inline-end:16px;-webkit-padding-start:16px;padding-inline-start:16px;min-height:48px;transition:min-height .2s cubic-bezier(.4,0,.2,1)}.v-list-subheader__text{opacity:var(--v-medium-emphasis-opacity);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v-list--density-default .v-list-subheader{min-height:48px}.v-list--density-comfortable .v-list-subheader{min-height:44px}.v-list--density-compact .v-list-subheader{min-height:40px}.v-list-subheader--inset{-webkit-padding-start:72px;padding-inline-start:72px}.v-list--nav .v-list-subheader{font-size:.75rem}.v-list--subheader-sticky .v-list-subheader{background:inherit;left:0;position:sticky;top:0;z-index:1}.v-list__overlay{background-color:currentColor;border-radius:inherit;bottom:0;left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:0;transition:opacity .2s ease-in-out}.v-list-item{align-items:center;display:flex;padding:8px 16px;position:relative;outline:none;text-decoration:none;transition:.2s cubic-bezier(.4,0,.2,1);border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;border-radius:4px}.v-list-item--border{border-width:thin;box-shadow:none}.v-list-item:hover .v-list-item__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*.04)}.v-list-item--active .v-list-item__overlay,.v-list-item--active:hover.v-list-item__overlay,.v-list-item:focus .v-list-item__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*.12)}.v-list-item--active:focus .v-list-item__overlay{opacity:calc(var(--v-theme-overlay-multiplier)*.16)}.v-list-item--variant-contained-text,.v-list-item--variant-outlined,.v-list-item--variant-plain,.v-list-item--variant-text{background:transparent;color:inherit}.v-list-item--variant-plain{opacity:.62}.v-list-item--variant-plain:focus,.v-list-item--variant-plain:hover{opacity:1}.v-list-item--variant-plain .v-list-item__overlay{display:none}.v-list-item--variant-contained{background:rgba(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface))}.v-list-item--variant-outlined{border:thin solid currentColor}.v-list-item--variant-text .v-list-item__overlay{background:currentColor}.v-list-item--variant-contained-text .v-list-item__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;transition:opacity .2s ease-in-out}.v-list-item--rounded{border-radius:4px}.v-list-item--disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;opacity:.6}.v-list-item--link{cursor:pointer}.v-list-item-avatar{align-self:center;height:40px;transition:inherit;transition-property:height,width;width:40px}.v-list-item-avatar--start{-webkit-margin-end:16px;margin-inline-end:16px}.v-list-item-avatar--end{-webkit-margin-start:16px;margin-inline-start:16px}.v-list--density-default .v-list-item-avatar{height:40px;width:40px}.v-list--density-default.v-list--three-line .v-list-item-avatar{margin-top:4px}.v-list--density-comfortable .v-list-item-avatar{height:34px;width:34px}.v-list--density-comfortable.v-list--three-line .v-list-item-avatar{margin-top:8px}.v-list--density-compact .v-list-item-avatar{height:28px;width:28px}.v-list--density-compact.v-list--three-line .v-list-item-avatar{margin-top:12px}.v-list--two-line .v-list-item-avatar{margin-top:4px;margin-bottom:4px}.v-list--three-line .v-list-item-avatar{align-self:flex-start}.v-list-item-media{margin-top:0;margin-bottom:0}.v-list-item-media--start{-webkit-margin-end:16px;margin-inline-end:16px}.v-list-item-media--end{-webkit-margin-start:16px;margin-inline-start:16px}.v-list--two-line .v-list-item-media{margin-top:-4px;margin-bottom:-4px}.v-list--three-line .v-list-item-media{margin-top:0;margin-bottom:0}.v-list-item-header{flex:1 1 auto;min-width:0}.v-list-item-subtitle{-webkit-box-orient:vertical;display:-webkit-box;opacity:var(--v-medium-emphasis-opacity);overflow:hidden;padding:0;text-overflow:ellipsis;font-size:.875rem;font-weight:400;letter-spacing:.0178571429em;line-height:1rem;text-transform:none}.v-list--two-line .v-list-item-subtitle{-webkit-line-clamp:1}.v-list--three-line .v-list-item-subtitle{-webkit-line-clamp:2}.v-list--nav .v-list-item-subtitle{font-size:.75rem;font-weight:400;letter-spacing:.0178571429em;line-height:1rem}.v-list-item-title{-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;overflow-wrap:normal;overflow:hidden;padding:0;white-space:nowrap;text-overflow:ellipsis;word-break:normal;word-wrap:break-word;font-size:1rem;font-weight:400;letter-spacing:.009375em;line-height:1.5rem;text-transform:none}.v-list--nav .v-list-item-title{font-size:.8125rem;font-weight:500;letter-spacing:normal;line-height:1rem}.v-list--density-default.v-list--one-line .v-list-item{min-height:48px;padding:8px 16px}.v-list--density-default.v-list--two-line .v-list-item{min-height:64px;padding:12px 16px}.v-list--density-default.v-list--three-line .v-list-item{min-height:88px;padding:16px 16px}.v-list--density-comfortable.v-list--one-line .v-list-item{min-height:44px;padding:4px 16px}.v-list--density-comfortable.v-list--two-line .v-list-item{min-height:60px;padding:8px 16px}.v-list--density-comfortable.v-list--three-line .v-list-item{min-height:84px;padding:12px 16px}.v-list--density-compact.v-list--one-line .v-list-item{min-height:40px;padding:0 16px}.v-list--density-compact.v-list--two-line .v-list-item{min-height:56px;padding:4px 16px}.v-list--density-compact.v-list--three-line .v-list-item{min-height:80px;padding:8px 16px}.v-list-item__overlay{background-color:currentColor;border-radius:inherit;bottom:0;left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:0;transition:opacity .2s ease-in-out}.v-list-item--active.v-list-item--contained .v-list-item__overlay{--v-theme-overlay-multiplier:0}.v-main{display:flex;flex:1 0 auto;max-width:100%;transition:.2s cubic-bezier(.4,0,.2,1)}.v-main__wrap{flex:1 1 auto;max-width:100%;position:relative}@-moz-document url-prefix(){@media print{.v-main{display:block}}}.v-navigation-drawer{-webkit-overflow-scrolling:touch;display:flex;flex-direction:column;height:100%;max-width:100%;pointer-events:auto;top:0;transition-duration:.2s;transition-property:box-shadow,transform,visibility,width;transition-timing-function:cubic-bezier(.4,0,.2,1);will-change:transform;position:fixed;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface))}.v-navigation-drawer--border{border-width:thin;box-shadow:none}.v-navigation-drawer--absolute{position:absolute}.v-navigation-drawer--floating{border-color:transparent}.v-navigation-drawer--rounded{border-radius:4px}.v-navigation-drawer--start{border-inline-end-width:thin}.v-locale--is-ltr .v-navigation-drawer--start,.v-navigation-drawer--start.v-locale--is-ltr{left:0;right:auto}.v-locale--is-rtl .v-navigation-drawer--start,.v-navigation-drawer--start.v-locale--is-rtl{left:auto;right:0}.v-navigation-drawer--end{border-inline-start-width:thin}.v-locale--is-ltr .v-navigation-drawer--end,.v-navigation-drawer--end.v-locale--is-ltr{left:auto;right:0}.v-locale--is-rtl .v-navigation-drawer--end,.v-navigation-drawer--end.v-locale--is-rtl{left:0;right:auto}.v-navigation-drawer--temporary{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.v-navigation-drawer__content{flex:0 1 auto;height:100%;max-width:100%;overflow-x:hidden;overflow-y:auto}.v-navigation-drawer__img{height:100%;left:0;position:absolute;top:0;width:100%;z-index:-1}.v-navigation-drawer__img img{height:inherit;-o-object-fit:cover;object-fit:cover;width:inherit}.v-pagination__list{display:inline-flex;list-style-type:none;justify-content:center;width:100%}.v-pagination__first,.v-pagination__item,.v-pagination__last,.v-pagination__next,.v-pagination__prev{margin:.3rem}.v-sheet{border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);border-radius:0;background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface))}.v-sheet--border{border-width:thin;box-shadow:none}.v-sheet--absolute{position:absolute}.v-sheet--fixed{position:fixed}.v-sheet--rounded{border-radius:4px}.v-dialog .v-overlay__content>.v-sheet{border-radius:inherit;overflow:hidden;box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}.v-progress-circular{align-items:center;display:inline-flex;justify-content:center;position:relative;vertical-align:middle}.v-progress-circular>svg{width:100%;height:100%;margin:auto;position:absolute;top:0;bottom:0;left:0;right:0;z-index:0}.v-progress-circular__content{align-items:center;display:flex;justify-content:center}.v-progress-circular__underlay{color:rgba(var(--v-border-color),var(--v-border-opacity));stroke:currentColor;z-index:1}.v-progress-circular__overlay{stroke:currentColor;transition:all .6s ease-in-out,stroke-width 0s;z-index:2}.v-progress-circular--size-x-small{height:16px;width:16px}.v-progress-circular--size-small{height:24px;width:24px}.v-progress-circular--size-default{height:32px;width:32px}.v-progress-circular--size-large{height:48px;width:48px}.v-progress-circular--size-x-large{height:64px;width:64px}.v-progress-circular--indeterminate>svg{-webkit-animation:progress-circular-rotate 1.4s linear infinite;animation:progress-circular-rotate 1.4s linear infinite;transform-origin:center center;transition:all .2s ease-in-out}.v-progress-circular--indeterminate .v-progress-circular__overlay{-webkit-animation:progress-circular-dash 1.4s ease-in-out infinite;animation:progress-circular-dash 1.4s ease-in-out infinite;stroke-dasharray:25,200;stroke-dashoffset:0;stroke-linecap:round}.v-progress-circular--disable-shrink>svg{-webkit-animation-duration:.7s;animation-duration:.7s}.v-progress-circular--disable-shrink .v-progress-circular__overlay{-webkit-animation:none;animation:none}.v-progress-circular--indeterminate:not(.v-progress-circular--visible) .v-progress-circular__overlay,.v-progress-circular--indeterminate:not(.v-progress-circular--visible)>svg{-webkit-animation-play-state:paused!important;animation-play-state:paused!important}@-webkit-keyframes progress-circular-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0px}50%{stroke-dasharray:100,200;stroke-dashoffset:-15px}to{stroke-dasharray:100,200;stroke-dashoffset:-124px}}@keyframes progress-circular-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0px}50%{stroke-dasharray:100,200;stroke-dashoffset:-15px}to{stroke-dasharray:100,200;stroke-dashoffset:-124px}}@-webkit-keyframes progress-circular-rotate{to{transform:rotate(270deg)}}@keyframes progress-circular-rotate{to{transform:rotate(270deg)}}.v-rating{max-width:100%;display:inline-flex;white-space:nowrap}.v-rating--readonly{pointer-events:none}.v-rating__wrapper{align-items:center;display:inline-flex;flex-direction:column}.v-rating__wrapper--bottom{flex-direction:column-reverse}.v-rating__item{display:inline-flex;position:relative}.v-rating__item label{cursor:pointer}.v-rating__item .v-btn--variant-plain{opacity:1}.v-rating__item .v-btn{transition-property:transform}.v-rating__item .v-btn .v-icon{transition:inherit;transition-timing-function:cubic-bezier(0,0,.2,1)}.v-rating__item:hover:not(.v-rating__item--focused) .v-icon{transform:scale(1.25)}.v-rating__item--focused .v-btn__overlay{display:block;opacity:var(--v-hover-opacity)}.v-rating__item--half{overflow:hidden;position:absolute;width:50%;z-index:1}.v-rating__item--half .v-btn__overlay,.v-rating__item--half:hover .v-btn__overlay{opacity:0}.v-rating__hidden{height:0;opacity:0;position:absolute;width:0}.v-system-bar{align-items:center;background:rgba(var(--v-theme-on-background),.02);display:flex;flex:1 1 auto;font-size:1rem;font-weight:400;height:24px;justify-content:flex-end;padding:0 8px;position:relative;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);border-radius:0;text-align:end}.v-system-bar i{color:rgba(var(--v-theme-on-background),.5);font-size:16px}.v-system-bar--absolute{position:absolute}.v-system-bar--fixed{position:fixed}.v-system-bar--lights-out{background:rgba(var(--v-theme-background),.7)}.v-system-bar--rounded{border-radius:0}.v-system-bar--window{height:32px}.v-system-bar--window i{font-size:20px}.v-theme-provider{background:rgb(var(--v-theme-background));color:rgb(var(--v-theme-on-background))}.v-timeline .v-timeline-divider__dot{background:rgb(var(--v-theme-on-surface))}.v-timeline{display:grid;grid-auto-flow:dense;position:relative}.v-timeline--horizontal.v-timeline{grid-template-rows:auto -webkit-min-content auto;grid-template-rows:auto min-content auto;width:100%}.v-timeline--horizontal.v-timeline .v-timeline-item__body,.v-timeline--horizontal.v-timeline .v-timeline-item__opposite{-webkit-padding-start:calc(var(--v-timeline-dot-size)/2 - 5px);padding-inline-start:calc(var(--v-timeline-dot-size)/2 - 5px)}.v-timeline--horizontal.v-timeline .v-timeline-item:nth-child(2n) .v-timeline-item__body{grid-row:3;padding-top:24px}.v-timeline--horizontal.v-timeline .v-timeline-item:nth-child(2n) .v-timeline-item__opposite,.v-timeline--horizontal.v-timeline .v-timeline-item:nth-child(odd) .v-timeline-item__body{grid-row:1;padding-bottom:24px}.v-timeline--horizontal.v-timeline .v-timeline-item:nth-child(odd) .v-timeline-item__opposite{grid-row:3;padding-top:24px}.v-timeline--vertical.v-timeline{grid-template-columns:auto -webkit-min-content auto;grid-template-columns:auto min-content auto;height:100%}.v-timeline--vertical.v-timeline .v-timeline-item__body,.v-timeline--vertical.v-timeline .v-timeline-item__opposite{padding-top:calc((var(--v-timeline-dot-size) - 1.5em)/2)}.v-timeline--vertical.v-timeline .v-timeline-item:nth-child(2n) .v-timeline-item__body{grid-column:1;text-align:end;-webkit-padding-end:24px;padding-inline-end:24px}.v-timeline--vertical.v-timeline .v-timeline-item:nth-child(2n) .v-timeline-item__opposite,.v-timeline--vertical.v-timeline .v-timeline-item:nth-child(odd) .v-timeline-item__body{grid-column:3;-webkit-padding-start:24px;padding-inline-start:24px}.v-timeline--vertical.v-timeline .v-timeline-item:nth-child(odd) .v-timeline-item__opposite{grid-column:1;text-align:end;-webkit-padding-end:24px;padding-inline-end:24px}.v-timeline-item{display:contents}.v-timeline-divider__line{background:rgba(var(--v-border-color),var(--v-border-opacity));position:absolute}.v-timeline--horizontal .v-timeline-divider__line{height:var(--v-timeline-line-thickness);width:calc(100% - var(--v-timeline-line-inset, 0px))}.v-timeline--vertical .v-timeline-divider__line{height:100%;width:var(--v-timeline-line-thickness)}.v-timeline--vertical.v-timeline--inset-line .v-timeline-divider__line{height:calc(100% - var(--v-timeline-dot-size) - var(--v-timeline-line-inset));bottom:calc(var(--v-timeline-line-inset)/2)}.v-timeline--horizontal.v-timeline--inset-line .v-timeline-divider__line{width:calc(100% - var(--v-timeline-dot-size) - var(--v-timeline-line-inset));inset-inline-end:calc(var(--v-timeline-line-inset)/2)}.v-timeline--vertical.v-timeline:not(.v-timeline--inset-line) .v-timeline-item:first-child .v-timeline-divider__line{bottom:0;height:calc(100% - var(--v-timeline-dot-size)/2)}.v-timeline--horizontal.v-timeline:not(.v-timeline--inset-line) .v-timeline-item:first-child .v-timeline-divider__line{width:calc(100% - var(--v-timeline-dot-size)/2);inset-inline-end:0}.v-timeline-divider{position:relative;display:flex;align-items:center}.v-timeline--horizontal .v-timeline-divider{flex-direction:row;grid-row:2}.v-timeline--vertical .v-timeline-divider{flex-direction:column;grid-column:2}.v-timeline-divider__dot{z-index:1;flex-shrink:0;border-radius:50%;display:flex;justify-content:center;align-items:center;box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.v-timeline-divider__dot--size-x-small{height:22px;width:22px}.v-timeline-divider__dot--size-x-small .v-timeline-divider__inner-dot{height:calc(100% - 6px);width:calc(100% - 6px)}.v-timeline-divider__dot--size-small{height:30px;width:30px}.v-timeline-divider__dot--size-small .v-timeline-divider__inner-dot{height:calc(100% - 8px);width:calc(100% - 8px)}.v-timeline-divider__dot--size-default{height:38px;width:38px}.v-timeline-divider__dot--size-default .v-timeline-divider__inner-dot{height:calc(100% - 8px);width:calc(100% - 8px)}.v-timeline-divider__dot--size-large{height:46px;width:46px}.v-timeline-divider__dot--size-large .v-timeline-divider__inner-dot{height:calc(100% - 8px);width:calc(100% - 8px)}.v-timeline-divider__dot--size-x-large{height:54px;width:54px}.v-timeline-divider__dot--size-x-large .v-timeline-divider__inner-dot{height:calc(100% - 10px);width:calc(100% - 10px)}.v-timeline-divider__inner-dot{align-items:center;border-radius:50%;display:flex;justify-content:center}.v-timeline--horizontal.v-timeline--density-comfortable{height:100%}.v-timeline--horizontal.v-timeline--density-comfortable.v-timeline--side-end{grid-template-rows:-webkit-min-content -webkit-min-content auto;grid-template-rows:min-content min-content auto}.v-timeline--horizontal.v-timeline--density-comfortable.v-timeline--side-start{grid-template-rows:auto -webkit-min-content -webkit-min-content;grid-template-rows:auto min-content min-content}.v-timeline--vertical.v-timeline--density-comfortable{width:100%}.v-timeline--vertical.v-timeline--density-comfortable.v-timeline--side-end{grid-template-columns:-webkit-min-content -webkit-min-content auto;grid-template-columns:min-content min-content auto}.v-timeline--vertical.v-timeline--density-comfortable.v-timeline--side-start{grid-template-columns:auto -webkit-min-content -webkit-min-content;grid-template-columns:auto min-content min-content}.v-timeline--horizontal.v-timeline--density-compact.v-timeline--side-end{grid-template-rows:-webkit-min-content auto;grid-template-rows:min-content auto}.v-timeline--horizontal.v-timeline--density-compact.v-timeline--side-start{grid-template-rows:auto -webkit-min-content;grid-template-rows:auto min-content}.v-timeline--horizontal.v-timeline--density-compact .v-timeline-item__body{grid-row:1}.v-timeline--vertical.v-timeline--density-compact.v-timeline--side-end{grid-template-columns:-webkit-min-content auto;grid-template-columns:min-content auto}.v-timeline--vertical.v-timeline--density-compact.v-timeline--side-start{grid-template-columns:auto -webkit-min-content;grid-template-columns:auto min-content}.v-timeline--vertical.v-timeline--density-compact .v-timeline-item__body{grid-column:3}.v-timeline--horizontal.v-timeline.v-timeline--side-end .v-timeline-item .v-timeline-item__body{grid-row:3;padding-bottom:0;padding-top:24px}.v-timeline--horizontal.v-timeline.v-timeline--side-end .v-timeline-item .v-timeline-item__opposite{grid-row:1;padding-bottom:24px;padding-top:0}.v-timeline--vertical.v-timeline.v-timeline--side-end .v-timeline-item .v-timeline-item__body{grid-column:3;text-align:initial;-webkit-padding-start:24px;padding-inline-start:24px}.v-timeline--vertical.v-timeline.v-timeline--side-end .v-timeline-item .v-timeline-item__opposite{grid-column:1;-webkit-padding-end:24px;padding-inline-end:24px}.v-timeline--horizontal.v-timeline.v-timeline--side-start .v-timeline-item .v-timeline-item__body{grid-row:1;padding-bottom:24px;padding-top:0}.v-timeline--horizontal.v-timeline.v-timeline--side-start .v-timeline-item .v-timeline-item__opposite{grid-row:3;padding-bottom:0;padding-top:24px}.v-timeline--vertical.v-timeline.v-timeline--side-start .v-timeline-item .v-timeline-item__body{grid-column:1;text-align:end;-webkit-padding-end:24px;padding-inline-end:24px}.v-timeline--vertical.v-timeline.v-timeline--side-start .v-timeline-item .v-timeline-item__opposite{grid-column:3;-webkit-padding-start:24px;padding-inline-start:24px}.v-timeline-divider--fill-dot .v-timeline-divider__inner-dot{height:inherit;width:inherit}.v-timeline--truncate-line-end .v-timeline-item:last-child .v-timeline-divider__line{display:none} \ No newline at end of file diff --git a/analyseOTA/index.html b/analyseOTA/index.html index 9edcb69..ff442b1 100644 --- a/analyseOTA/index.html +++ b/analyseOTA/index.html @@ -1 +1 @@ -Vue App
\ No newline at end of file +Vue App
\ No newline at end of file diff --git a/analyseOTA/js/app-legacy.5c0fd10a.js b/analyseOTA/js/app-legacy.5c0fd10a.js new file mode 100644 index 0000000..5954738 --- /dev/null +++ b/analyseOTA/js/app-legacy.5c0fd10a.js @@ -0,0 +1,2 @@ +(function(){"use strict";var e={2848:function(e,t,n){n(6992),n(8674),n(9601),n(7727);var r=n(9963),a=(n(1778),n(6784)),o=n(6491),i=n(1731),s=(0,a.R)({components:o,directives:i,theme:{defaultTheme:"dark"}}),l=n(6252),u=n(3577),c=(0,l.Uk)(" OTA Analyzer ");function p(e,t,n,r,a,o){var i=(0,l.up)("v-app-bar-title"),s=(0,l.up)("v-spacer"),p=(0,l.up)("v-btn"),f=(0,l.up)("v-app-bar"),d=(0,l.up)("router-view"),h=(0,l.up)("v-container"),g=(0,l.up)("v-main"),m=(0,l.up)("v-app");return(0,l.wg)(),(0,l.j4)(m,null,{default:(0,l.w5)((function(){return[(0,l.Wm)(f,{rounded:"",color:"primary"},{default:(0,l.w5)((function(){return[(0,l.Wm)(i,null,{default:(0,l.w5)((function(){return[c]})),_:1}),(0,l.Wm)(s),((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(a.links,(function(e){return(0,l.wg)(),(0,l.j4)(p,{key:"".concat(e,"-header-link"),to:{name:e},class:"ml-5",color:"primary"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,u.zw)(e),1)]})),_:2},1032,["to"])})),128))]})),_:1}),(0,l.Wm)(g,null,{default:(0,l.w5)((function(){return[(0,l.Wm)(h,{fluid:""},{default:(0,l.w5)((function(){return[(0,l.Wm)(d)]})),_:1})]})),_:1})]})),_:1})}var f={data:function(){return{links:["Analysis","Demo","About"]}}},d=n(3744);const h=(0,d.Z)(f,[["render",p]]);var g=h,m=(n(9826),n(1539),n(7042),n(1249),n(1038),n(8783),n(2119)),y=(0,l.Uk)("This tool does not upload your package anywhere. All analysis are done in the frontend using Javascript.");function w(e,t,n,r,a,o){var i=(0,l.up)("v-alert"),s=(0,l.up)("v-row"),u=(0,l.up)("BaseFile"),c=(0,l.up)("PayloadDetail"),p=(0,l.up)("v-col"),f=(0,l.up)("v-divider"),d=(0,l.up)("PayloadComposition");return(0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l.Wm)(s,null,{default:(0,l.w5)((function(){return[(0,l.Wm)(i,{style:{color:"yellow"}},{default:(0,l.w5)((function(){return[y]})),_:1})]})),_:1}),(0,l.Wm)(s,null,{default:(0,l.w5)((function(){return[(0,l.Wm)(p,{cols:"12",md:"6"},{default:(0,l.w5)((function(){return[(0,l.Wm)(u,{label:"Please drag and drop an OTA package or select one",onFileSelect:e.unpackOTA},null,8,["onFileSelect"]),e.zipFile&&e.payload?((0,l.wg)(),(0,l.j4)(c,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):(0,l.kq)("",!0)]})),_:1}),(0,l.Wm)(f,{vertical:""}),(0,l.Wm)(p,{cols:"12",md:"6"},{default:(0,l.w5)((function(){return[e.zipFile&&e.payload.manifest?((0,l.wg)(),(0,l.j4)(d,{key:0,manifest:e.payload.manifest},null,8,["manifest"])):(0,l.kq)("",!0)]})),_:1})]})),_:1})],64)}var b=n(170),v=(n(5666),{class:"file-select ma-5"}),O={key:0},x={key:1},k={key:2};function _(e,t,n,a,o,i){return(0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l._)("label",v,[(0,l._)("div",{class:"select-button",onDragover:t[0]||(t[0]=function(){return e.dragover&&e.dragover.apply(e,arguments)}),onDragleave:t[1]||(t[1]=function(){return e.dragleave&&e.dragleave.apply(e,arguments)}),onDrop:t[2]||(t[2]=function(){return e.drop&&e.drop.apply(e,arguments)})},[e.label?((0,l.wg)(),(0,l.iD)("span",O,(0,u.zw)(e.fileName?"":e.label),1)):((0,l.wg)(),(0,l.iD)("span",x,"Select File")),e.fileName?((0,l.wg)(),(0,l.iD)("div",k,"File selected: "+(0,u.zw)(e.fileName),1)):(0,l.kq)("",!0)],32),(0,l._)("input",{ref:"file",type:"file",accept:".zip",onChange:t[3]||(t[3]=function(){return e.handleFileChange&&e.handleFileChange.apply(e,arguments)})},null,544)]),(0,l.wy)((0,l._)("input",{class:(0,u.C_)(["url-input",{"url-invalid":!e.parsedURL&&""!=e.url,"url-valid":e.parsedURL||""==e.url}]),ref:"url_input",type:"url",placeholder:"type a URL","onUpdate:modelValue":t[4]||(t[4]=function(t){return e.url=t}),onKeyup:t[5]||(t[5]=function(){return e.urlKeyup&&e.urlKeyup.apply(e,arguments)})},null,34),[[r.nr,e.url]])],64)}n(3948),n(285),n(1637),n(8309);var S=(0,l.aZ)({props:{label:{type:String,default:""}},emits:{"file-select":null},data:function(){return{fileName:"",url:""}},computed:{parsedURL:function(){try{return new URL(this.url)}catch(e){return null}}},methods:{handleFileChange:function(e){if(e.currentTarget){var t=e.currentTarget;if(!(null==t.files||t.files.length<1)){var n=t.files[0];this.$emit("file-select",n),this.url="",this.fileName=t.files[0].name}}},dragover:function(e){if(e.preventDefault(),e.currentTarget){var t=e.currentTarget;t.classList.contains("file-hover")||t.classList.add("file-hover")}},dragleave:function(e){if(e.currentTarget){var t=e.currentTarget;t.classList.remove("file-hover")}},drop:function(e){if(e.preventDefault(),e.currentTarget){var t=e.currentTarget;e.dataTransfer&&0!=e.dataTransfer.files.length&&(t.files=e.dataTransfer.files,this.handleFileChange(e),t.classList.remove("file-hover"))}},urlKeyup:function(e){if(console.log(this.url),"Enter"==e.key){var t=e.target;if(null==this.parsedURL)return void console.error("".concat(t.value," is an invalid URL"));this.$emit("file-select",this.parsedURL)}}}});const P=(0,d.Z)(S,[["render",_],["__scopeId","data-v-0630c5ec"]]);var I=P,E=function(e){return(0,l.dD)("data-v-05db67f2"),e=e(),(0,l.Cn)(),e},z=(0,l.Uk)("Export Metadata"),L={ref:"download"},T={key:1},j=E((function(){return(0,l._)("h3",null,"Partition List",-1)})),D={key:1,class:"signature"},A=E((function(){return(0,l._)("h3",null,"Metadata Signature",-1)})),B={style:{"white-space":"pre-wrap"}};function Z(e,t,n,r,a,o){var i=(0,l.up)("v-btn"),s=(0,l.up)("BasicInfo"),c=(0,l.up)("v-divider"),p=(0,l.up)("PartitionDetail"),f=(0,l.up)("v-card"),d=(0,l.up)("v-col"),h=(0,l.up)("v-row");return(0,l.wg)(),(0,l.iD)(l.HY,null,[e.zipFile&&e.payload?((0,l.wg)(),(0,l.j4)(i,{key:0,class:"download-btn",onClick:e.exportOTAPackage},{default:(0,l.w5)((function(){return[z]})),_:1},8,["onClick"])):(0,l.kq)("",!0),(0,l._)("a",L,null,512),(0,l.Wm)(s,{zipFile:e.zipFile,payload:e.payload,class:"mb-5"},null,8,["zipFile","payload"]),(0,l.Wm)(c),e.payload?((0,l.wg)(),(0,l.iD)("div",T,[j,e.payload.manifest?((0,l.wg)(),(0,l.j4)(h,{key:0,class:"mb-5"},{default:(0,l.w5)((function(){return[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.payload.manifest.partitions,(function(t){return(0,l.wg)(),(0,l.j4)(d,{key:t.partitionName,cols:"12",md:"4"},{default:(0,l.w5)((function(){return[(0,l.Wm)(f,{elevation:"5",hover:"",shaped:"",class:"partial-info"},{default:(0,l.w5)((function(){return[(0,l.Wm)(p,{partition:t,dynamicPartitionList:e.dynamicPartitions},null,8,["partition","dynamicPartitionList"])]})),_:2},1024)]})),_:2},1024)})),128))]})),_:1})):(0,l.kq)("",!0),(0,l.Wm)(c),e.payload.metadata_signature&&!e.payload.manifest.nonAB?((0,l.wg)(),(0,l.iD)("div",D,[A,(0,l._)("span",B,(0,u.zw)(e.octToHex(e.payload.metadata_signature.signatures[0].data)),1)])):(0,l.kq)("",!0)])):(0,l.kq)("",!0)],64)}n(6535),n(9244);var C=function(e){return(0,l.dD)("data-v-6dba348a"),e=e(),(0,l.Cn)(),e},N={key:0},R={key:1},M=C((function(){return(0,l._)("strong",null," Estimate COW Size: ",-1)})),F={key:2},U=C((function(){return(0,l._)("strong",null," Postinstall Script: ",-1)})),V={class:"toggle"},H={key:0},W={key:0},q=C((function(){return(0,l._)("strong",null," Old Partition Size: ",-1)})),K={key:1},J=C((function(){return(0,l._)("strong",null," Old Partition Hash: ",-1)})),Y={class:"hex"},G=C((function(){return(0,l._)("strong",null," New Partition Size: ",-1)})),$={key:2},X=C((function(){return(0,l._)("strong",null," New Partition Hash: ",-1)})),Q={class:"hex"},ee={key:3},te=C((function(){return(0,l._)("strong",null," Version: ",-1)})),ne={key:4},re=C((function(){return(0,l._)("strong",null," Version: ",-1)})),ae={class:"toggle"},oe={key:0};function ie(e,t,n,r,a,o){var i=(0,l.up)("OperationDetail");return(0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l._)("h4",{class:(0,u.C_)({"new-partition":!e.partition.oldPartitionInfo})},(0,u.zw)(e.partition.partitionName),3),e.isDynamicPartition?((0,l.wg)(),(0,l.iD)("p",N," Dynamic: ✅ ")):(0,l.kq)("",!0),e.partition.estimateCowSize?((0,l.wg)(),(0,l.iD)("p",R,[M,(0,l.Uk)(" "+(0,u.zw)(e.partition.estimateCowSize)+" Bytes ",1)])):(0,l.kq)("",!0),e.partition.postinstallPath?((0,l.wg)(),(0,l.iD)("p",F,[U,(0,l.Uk)(" "+(0,u.zw)(e.partition.postinstallPath),1)])):(0,l.kq)("",!0),(0,l._)("div",V,[(0,l._)("h4",{onClick:t[0]||(t[0]=function(t){return e.toggle("showInfo")}),class:(0,u.C_)({active:e.showInfo,inactive:!e.showInfo})}," Partition Infos ",2),e.showInfo?((0,l.wg)(),(0,l.iD)("ul",H,[e.partition.oldPartitionInfo?((0,l.wg)(),(0,l.iD)("li",W,[q,(0,l.Uk)(" "+(0,u.zw)(e.partition.oldPartitionInfo.size)+" Bytes ",1)])):(0,l.kq)("",!0),e.partition.oldPartitionInfo?((0,l.wg)(),(0,l.iD)("li",K,[J,(0,l._)("div",Y,(0,u.zw)(e.octToHex(e.partition.oldPartitionInfo.hash,!1,16)),1)])):(0,l.kq)("",!0),(0,l._)("li",null,[G,(0,l.Uk)(" "+(0,u.zw)(e.partition.newPartitionInfo.size)+" Bytes ",1)]),e.partition.newPartitionInfo.hash?((0,l.wg)(),(0,l.iD)("li",$,[X,(0,l._)("div",Q,(0,u.zw)(e.octToHex(e.partition.newPartitionInfo.hash,!1,16)),1)])):(0,l.kq)("",!0),e.partition.version?((0,l.wg)(),(0,l.iD)("li",ee,[te,(0,l.Uk)(" "+(0,u.zw)(e.partition.version),1)])):(0,l.kq)("",!0),e.readableTimestamp?((0,l.wg)(),(0,l.iD)("li",ne,[re,(0,l.Uk)(" "+(0,u.zw)(e.readableTimestamp),1)])):(0,l.kq)("",!0)])):(0,l.kq)("",!0)]),(0,l._)("div",ae,[(0,l._)("h4",{onClick:t[1]||(t[1]=function(t){return e.toggle("showOPs")}),class:(0,u.C_)({active:e.showOPs,inactive:!e.showOPs})}," Total Operations: "+(0,u.zw)(e.partition.operations.length),3),e.showOPs?((0,l.wg)(),(0,l.iD)("ul",oe,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.partition.operations,(function(t){return(0,l.wg)(),(0,l.iD)("li",{key:t.dataSha256Hash},[(0,l.Wm)(i,{operation:t,mapType:e.opType.mapType},null,8,["operation","mapType"])])})),128))])):(0,l.kq)("",!0)])],64)}n(9714);var se=n(4402),le=(n(7941),n(9653),n(3753),n(2100)),ue=le.Reader,ce=le.Writer,pe=le.util,fe=le.roots["default"]||(le.roots["default"]={}),de=fe.chromeos_update_engine=function(){var e={};return e.Extent=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.startBlock=e.uint64();break;case 2:r.numBlocks=e.uint64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==(0,se.Z)(e)||null===e?"object expected":null==e.startBlock||!e.hasOwnProperty("startBlock")||pe.isInteger(e.startBlock)||e.startBlock&&pe.isInteger(e.startBlock.low)&&pe.isInteger(e.startBlock.high)?null==e.numBlocks||!e.hasOwnProperty("numBlocks")||pe.isInteger(e.numBlocks)||e.numBlocks&&pe.isInteger(e.numBlocks.low)&&pe.isInteger(e.numBlocks.high)?null:"numBlocks: integer|Long expected":"startBlock: integer|Long expected"},e.fromObject=function(e){if(e instanceof fe.chromeos_update_engine.Extent)return e;var t=new fe.chromeos_update_engine.Extent;return null!=e.startBlock&&(pe.Long?(t.startBlock=pe.Long.fromValue(e.startBlock)).unsigned=!0:"string"===typeof e.startBlock?t.startBlock=parseInt(e.startBlock,10):"number"===typeof e.startBlock?t.startBlock=e.startBlock:"object"===(0,se.Z)(e.startBlock)&&(t.startBlock=new pe.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0))),null!=e.numBlocks&&(pe.Long?(t.numBlocks=pe.Long.fromValue(e.numBlocks)).unsigned=!0:"string"===typeof e.numBlocks?t.numBlocks=parseInt(e.numBlocks,10):"number"===typeof e.numBlocks?t.numBlocks=e.numBlocks:"object"===(0,se.Z)(e.numBlocks)&&(t.numBlocks=new pe.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(pe.Long){var r=new pe.Long(0,0,!0);n.startBlock=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.startBlock=t.longs===String?"0":0;if(pe.Long){var a=new pe.Long(0,0,!0);n.numBlocks=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.numBlocks=t.longs===String?"0":0}return null!=e.startBlock&&e.hasOwnProperty("startBlock")&&("number"===typeof e.startBlock?n.startBlock=t.longs===String?String(e.startBlock):e.startBlock:n.startBlock=t.longs===String?pe.Long.prototype.toString.call(e.startBlock):t.longs===Number?new pe.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0):e.startBlock),null!=e.numBlocks&&e.hasOwnProperty("numBlocks")&&("number"===typeof e.numBlocks?n.numBlocks=t.longs===String?String(e.numBlocks):e.numBlocks:n.numBlocks=t.longs===String?pe.Long.prototype.toString.call(e.numBlocks):t.longs===Number?new pe.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0):e.numBlocks),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,le.util.toJSONOptions)},e}(),e.Signatures=function(){function e(e){if(this.signatures=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.signatures&&r.signatures.length||(r.signatures=[]),r.signatures.push(fe.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==(0,se.Z)(e)||null===e)return"object expected";if(null!=e.signatures&&e.hasOwnProperty("signatures")){if(!Array.isArray(e.signatures))return"signatures: array expected";for(var t=0;t>>3){case 1:r.version=e.uint32();break;case 2:r.data=e.bytes();break;case 3:r.unpaddedSignatureSize=e.fixed32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==(0,se.Z)(e)||null===e?"object expected":null!=e.version&&e.hasOwnProperty("version")&&!pe.isInteger(e.version)?"version: integer expected":null!=e.data&&e.hasOwnProperty("data")&&!(e.data&&"number"===typeof e.data.length||pe.isString(e.data))?"data: buffer expected":null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&!pe.isInteger(e.unpaddedSignatureSize)?"unpaddedSignatureSize: integer expected":null},e.fromObject=function(e){if(e instanceof fe.chromeos_update_engine.Signatures.Signature)return e;var t=new fe.chromeos_update_engine.Signatures.Signature;return null!=e.version&&(t.version=e.version>>>0),null!=e.data&&("string"===typeof e.data?pe.base64.decode(e.data,t.data=pe.newBuffer(pe.base64.length(e.data)),0):e.data.length&&(t.data=e.data)),null!=e.unpaddedSignatureSize&&(t.unpaddedSignatureSize=e.unpaddedSignatureSize>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.version=0,t.bytes===String?n.data="":(n.data=[],t.bytes!==Array&&(n.data=pe.newBuffer(n.data))),n.unpaddedSignatureSize=0),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.data&&e.hasOwnProperty("data")&&(n.data=t.bytes===String?pe.base64.encode(e.data,0,e.data.length):t.bytes===Array?Array.prototype.slice.call(e.data):e.data),null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&(n.unpaddedSignatureSize=e.unpaddedSignatureSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,le.util.toJSONOptions)},e}(),e}(),e.PartitionInfo=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.size=e.uint64();break;case 2:r.hash=e.bytes();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==(0,se.Z)(e)||null===e?"object expected":null==e.size||!e.hasOwnProperty("size")||pe.isInteger(e.size)||e.size&&pe.isInteger(e.size.low)&&pe.isInteger(e.size.high)?null!=e.hash&&e.hasOwnProperty("hash")&&!(e.hash&&"number"===typeof e.hash.length||pe.isString(e.hash))?"hash: buffer expected":null:"size: integer|Long expected"},e.fromObject=function(e){if(e instanceof fe.chromeos_update_engine.PartitionInfo)return e;var t=new fe.chromeos_update_engine.PartitionInfo;return null!=e.size&&(pe.Long?(t.size=pe.Long.fromValue(e.size)).unsigned=!0:"string"===typeof e.size?t.size=parseInt(e.size,10):"number"===typeof e.size?t.size=e.size:"object"===(0,se.Z)(e.size)&&(t.size=new pe.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0))),null!=e.hash&&("string"===typeof e.hash?pe.base64.decode(e.hash,t.hash=pe.newBuffer(pe.base64.length(e.hash)),0):e.hash.length&&(t.hash=e.hash)),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(pe.Long){var r=new pe.Long(0,0,!0);n.size=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.size=t.longs===String?"0":0;t.bytes===String?n.hash="":(n.hash=[],t.bytes!==Array&&(n.hash=pe.newBuffer(n.hash)))}return null!=e.size&&e.hasOwnProperty("size")&&("number"===typeof e.size?n.size=t.longs===String?String(e.size):e.size:n.size=t.longs===String?pe.Long.prototype.toString.call(e.size):t.longs===Number?new pe.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0):e.size),null!=e.hash&&e.hasOwnProperty("hash")&&(n.hash=t.bytes===String?pe.base64.encode(e.hash,0,e.hash.length):t.bytes===Array?Array.prototype.slice.call(e.hash):e.hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,le.util.toJSONOptions)},e}(),e.ImageInfo=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.board=e.string();break;case 2:r.key=e.string();break;case 3:r.channel=e.string();break;case 4:r.version=e.string();break;case 5:r.buildChannel=e.string();break;case 6:r.buildVersion=e.string();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==(0,se.Z)(e)||null===e?"object expected":null!=e.board&&e.hasOwnProperty("board")&&!pe.isString(e.board)?"board: string expected":null!=e.key&&e.hasOwnProperty("key")&&!pe.isString(e.key)?"key: string expected":null!=e.channel&&e.hasOwnProperty("channel")&&!pe.isString(e.channel)?"channel: string expected":null!=e.version&&e.hasOwnProperty("version")&&!pe.isString(e.version)?"version: string expected":null!=e.buildChannel&&e.hasOwnProperty("buildChannel")&&!pe.isString(e.buildChannel)?"buildChannel: string expected":null!=e.buildVersion&&e.hasOwnProperty("buildVersion")&&!pe.isString(e.buildVersion)?"buildVersion: string expected":null},e.fromObject=function(e){if(e instanceof fe.chromeos_update_engine.ImageInfo)return e;var t=new fe.chromeos_update_engine.ImageInfo;return null!=e.board&&(t.board=String(e.board)),null!=e.key&&(t.key=String(e.key)),null!=e.channel&&(t.channel=String(e.channel)),null!=e.version&&(t.version=String(e.version)),null!=e.buildChannel&&(t.buildChannel=String(e.buildChannel)),null!=e.buildVersion&&(t.buildVersion=String(e.buildVersion)),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.board="",n.key="",n.channel="",n.version="",n.buildChannel="",n.buildVersion=""),null!=e.board&&e.hasOwnProperty("board")&&(n.board=e.board),null!=e.key&&e.hasOwnProperty("key")&&(n.key=e.key),null!=e.channel&&e.hasOwnProperty("channel")&&(n.channel=e.channel),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.buildChannel&&e.hasOwnProperty("buildChannel")&&(n.buildChannel=e.buildChannel),null!=e.buildVersion&&e.hasOwnProperty("buildVersion")&&(n.buildVersion=e.buildVersion),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,le.util.toJSONOptions)},e}(),e.InstallOperation=function(){function e(e){if(this.srcExtents=[],this.dstExtents=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.dataOffset=e.uint64();break;case 3:r.dataLength=e.uint64();break;case 4:r.srcExtents&&r.srcExtents.length||(r.srcExtents=[]),r.srcExtents.push(fe.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 5:r.srcLength=e.uint64();break;case 6:r.dstExtents&&r.dstExtents.length||(r.dstExtents=[]),r.dstExtents.push(fe.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 7:r.dstLength=e.uint64();break;case 8:r.dataSha256Hash=e.bytes();break;case 9:r.srcSha256Hash=e.bytes();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("type"))throw pe.ProtocolError("missing required 'type'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==(0,se.Z)(e)||null===e)return"object expected";switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 8:case 6:case 7:case 10:case 9:case 11:case 12:case 13:break}if(null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&!pe.isInteger(e.dataOffset)&&!(e.dataOffset&&pe.isInteger(e.dataOffset.low)&&pe.isInteger(e.dataOffset.high)))return"dataOffset: integer|Long expected";if(null!=e.dataLength&&e.hasOwnProperty("dataLength")&&!pe.isInteger(e.dataLength)&&!(e.dataLength&&pe.isInteger(e.dataLength.low)&&pe.isInteger(e.dataLength.high)))return"dataLength: integer|Long expected";if(null!=e.srcExtents&&e.hasOwnProperty("srcExtents")){if(!Array.isArray(e.srcExtents))return"srcExtents: array expected";for(var t=0;t>>0,e.dataOffset.high>>>0).toNumber(!0))),null!=e.dataLength&&(pe.Long?(t.dataLength=pe.Long.fromValue(e.dataLength)).unsigned=!0:"string"===typeof e.dataLength?t.dataLength=parseInt(e.dataLength,10):"number"===typeof e.dataLength?t.dataLength=e.dataLength:"object"===(0,se.Z)(e.dataLength)&&(t.dataLength=new pe.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0))),e.srcExtents){if(!Array.isArray(e.srcExtents))throw TypeError(".chromeos_update_engine.InstallOperation.srcExtents: array expected");t.srcExtents=[];for(var n=0;n>>0,e.srcLength.high>>>0).toNumber(!0))),e.dstExtents){if(!Array.isArray(e.dstExtents))throw TypeError(".chromeos_update_engine.InstallOperation.dstExtents: array expected");t.dstExtents=[];for(var r=0;r>>0,e.dstLength.high>>>0).toNumber(!0))),null!=e.dataSha256Hash&&("string"===typeof e.dataSha256Hash?pe.base64.decode(e.dataSha256Hash,t.dataSha256Hash=pe.newBuffer(pe.base64.length(e.dataSha256Hash)),0):e.dataSha256Hash.length&&(t.dataSha256Hash=e.dataSha256Hash)),null!=e.srcSha256Hash&&("string"===typeof e.srcSha256Hash?pe.base64.decode(e.srcSha256Hash,t.srcSha256Hash=pe.newBuffer(pe.base64.length(e.srcSha256Hash)),0):e.srcSha256Hash.length&&(t.srcSha256Hash=e.srcSha256Hash)),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.srcExtents=[],n.dstExtents=[]),t.defaults){if(n.type=t.enums===String?"REPLACE":0,pe.Long){var r=new pe.Long(0,0,!0);n.dataOffset=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.dataOffset=t.longs===String?"0":0;if(pe.Long){var a=new pe.Long(0,0,!0);n.dataLength=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.dataLength=t.longs===String?"0":0;if(pe.Long){var o=new pe.Long(0,0,!0);n.srcLength=t.longs===String?o.toString():t.longs===Number?o.toNumber():o}else n.srcLength=t.longs===String?"0":0;if(pe.Long){var i=new pe.Long(0,0,!0);n.dstLength=t.longs===String?i.toString():t.longs===Number?i.toNumber():i}else n.dstLength=t.longs===String?"0":0;t.bytes===String?n.dataSha256Hash="":(n.dataSha256Hash=[],t.bytes!==Array&&(n.dataSha256Hash=pe.newBuffer(n.dataSha256Hash))),t.bytes===String?n.srcSha256Hash="":(n.srcSha256Hash=[],t.bytes!==Array&&(n.srcSha256Hash=pe.newBuffer(n.srcSha256Hash)))}if(null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?fe.chromeos_update_engine.InstallOperation.Type[e.type]:e.type),null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&("number"===typeof e.dataOffset?n.dataOffset=t.longs===String?String(e.dataOffset):e.dataOffset:n.dataOffset=t.longs===String?pe.Long.prototype.toString.call(e.dataOffset):t.longs===Number?new pe.LongBits(e.dataOffset.low>>>0,e.dataOffset.high>>>0).toNumber(!0):e.dataOffset),null!=e.dataLength&&e.hasOwnProperty("dataLength")&&("number"===typeof e.dataLength?n.dataLength=t.longs===String?String(e.dataLength):e.dataLength:n.dataLength=t.longs===String?pe.Long.prototype.toString.call(e.dataLength):t.longs===Number?new pe.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0):e.dataLength),e.srcExtents&&e.srcExtents.length){n.srcExtents=[];for(var s=0;s>>0,e.srcLength.high>>>0).toNumber(!0):e.srcLength),e.dstExtents&&e.dstExtents.length){n.dstExtents=[];for(var l=0;l>>0,e.dstLength.high>>>0).toNumber(!0):e.dstLength),null!=e.dataSha256Hash&&e.hasOwnProperty("dataSha256Hash")&&(n.dataSha256Hash=t.bytes===String?pe.base64.encode(e.dataSha256Hash,0,e.dataSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.dataSha256Hash):e.dataSha256Hash),null!=e.srcSha256Hash&&e.hasOwnProperty("srcSha256Hash")&&(n.srcSha256Hash=t.bytes===String?pe.base64.encode(e.srcSha256Hash,0,e.srcSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.srcSha256Hash):e.srcSha256Hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,le.util.toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="REPLACE"]=0,t[e[1]="REPLACE_BZ"]=1,t[e[2]="MOVE"]=2,t[e[3]="BSDIFF"]=3,t[e[4]="SOURCE_COPY"]=4,t[e[5]="SOURCE_BSDIFF"]=5,t[e[8]="REPLACE_XZ"]=8,t[e[6]="ZERO"]=6,t[e[7]="DISCARD"]=7,t[e[10]="BROTLI_BSDIFF"]=10,t[e[9]="PUFFDIFF"]=9,t[e[11]="ZUCCHINI"]=11,t[e[12]="LZ4DIFF_BSDIFF"]=12,t[e[13]="LZ4DIFF_PUFFDIFF"]=13,t}(),e}(),e.CowMergeOperation=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.srcExtent=fe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 3:r.dstExtent=fe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 4:r.srcOffset=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==(0,se.Z)(e)||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:break}if(null!=e.srcExtent&&e.hasOwnProperty("srcExtent")){var t=fe.chromeos_update_engine.Extent.verify(e.srcExtent);if(t)return"srcExtent."+t}if(null!=e.dstExtent&&e.hasOwnProperty("dstExtent")){var n=fe.chromeos_update_engine.Extent.verify(e.dstExtent);if(n)return"dstExtent."+n}return null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&!pe.isInteger(e.srcOffset)?"srcOffset: integer expected":null},e.fromObject=function(e){if(e instanceof fe.chromeos_update_engine.CowMergeOperation)return e;var t=new fe.chromeos_update_engine.CowMergeOperation;switch(e.type){case"COW_COPY":case 0:t.type=0;break;case"COW_XOR":case 1:t.type=1;break;case"COW_REPLACE":case 2:t.type=2;break}if(null!=e.srcExtent){if("object"!==(0,se.Z)(e.srcExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.srcExtent: object expected");t.srcExtent=fe.chromeos_update_engine.Extent.fromObject(e.srcExtent)}if(null!=e.dstExtent){if("object"!==(0,se.Z)(e.dstExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.dstExtent: object expected");t.dstExtent=fe.chromeos_update_engine.Extent.fromObject(e.dstExtent)}return null!=e.srcOffset&&(t.srcOffset=e.srcOffset>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.type=t.enums===String?"COW_COPY":0,n.srcExtent=null,n.dstExtent=null,n.srcOffset=0),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?fe.chromeos_update_engine.CowMergeOperation.Type[e.type]:e.type),null!=e.srcExtent&&e.hasOwnProperty("srcExtent")&&(n.srcExtent=fe.chromeos_update_engine.Extent.toObject(e.srcExtent,t)),null!=e.dstExtent&&e.hasOwnProperty("dstExtent")&&(n.dstExtent=fe.chromeos_update_engine.Extent.toObject(e.dstExtent,t)),null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&(n.srcOffset=e.srcOffset),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,le.util.toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="COW_COPY"]=0,t[e[1]="COW_XOR"]=1,t[e[2]="COW_REPLACE"]=2,t}(),e}(),e.PartitionUpdate=function(){function e(e){if(this.newPartitionSignature=[],this.operations=[],this.mergeOperations=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.partitionName=e.string();break;case 2:r.runPostinstall=e.bool();break;case 3:r.postinstallPath=e.string();break;case 4:r.filesystemType=e.string();break;case 5:r.newPartitionSignature&&r.newPartitionSignature.length||(r.newPartitionSignature=[]),r.newPartitionSignature.push(fe.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;case 6:r.oldPartitionInfo=fe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:r.newPartitionInfo=fe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:r.operations&&r.operations.length||(r.operations=[]),r.operations.push(fe.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 9:r.postinstallOptional=e.bool();break;case 10:r.hashTreeDataExtent=fe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 11:r.hashTreeExtent=fe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 12:r.hashTreeAlgorithm=e.string();break;case 13:r.hashTreeSalt=e.bytes();break;case 14:r.fecDataExtent=fe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 15:r.fecExtent=fe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 16:r.fecRoots=e.uint32();break;case 17:r.version=e.string();break;case 18:r.mergeOperations&&r.mergeOperations.length||(r.mergeOperations=[]),r.mergeOperations.push(fe.chromeos_update_engine.CowMergeOperation.decode(e,e.uint32()));break;case 19:r.estimateCowSize=e.uint64();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("partitionName"))throw pe.ProtocolError("missing required 'partitionName'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==(0,se.Z)(e)||null===e)return"object expected";if(!pe.isString(e.partitionName))return"partitionName: string expected";if(null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&"boolean"!==typeof e.runPostinstall)return"runPostinstall: boolean expected";if(null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&!pe.isString(e.postinstallPath))return"postinstallPath: string expected";if(null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&!pe.isString(e.filesystemType))return"filesystemType: string expected";if(null!=e.newPartitionSignature&&e.hasOwnProperty("newPartitionSignature")){if(!Array.isArray(e.newPartitionSignature))return"newPartitionSignature: array expected";for(var t=0;t>>0),null!=e.version&&(t.version=String(e.version)),e.mergeOperations){if(!Array.isArray(e.mergeOperations))throw TypeError(".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected");t.mergeOperations=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.newPartitionSignature=[],n.operations=[],n.mergeOperations=[]),t.defaults)if(n.partitionName="",n.runPostinstall=!1,n.postinstallPath="",n.filesystemType="",n.oldPartitionInfo=null,n.newPartitionInfo=null,n.postinstallOptional=!1,n.hashTreeDataExtent=null,n.hashTreeExtent=null,n.hashTreeAlgorithm="",t.bytes===String?n.hashTreeSalt="":(n.hashTreeSalt=[],t.bytes!==Array&&(n.hashTreeSalt=pe.newBuffer(n.hashTreeSalt))),n.fecDataExtent=null,n.fecExtent=null,n.fecRoots=2,n.version="",pe.Long){var r=new pe.Long(0,0,!0);n.estimateCowSize=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.estimateCowSize=t.longs===String?"0":0;if(null!=e.partitionName&&e.hasOwnProperty("partitionName")&&(n.partitionName=e.partitionName),null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&(n.runPostinstall=e.runPostinstall),null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&(n.postinstallPath=e.postinstallPath),null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&(n.filesystemType=e.filesystemType),e.newPartitionSignature&&e.newPartitionSignature.length){n.newPartitionSignature=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0):e.estimateCowSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,le.util.toJSONOptions)},e}(),e.DynamicPartitionGroup=function(){function e(e){if(this.partitionNames=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.name=e.string();break;case 2:r.size=e.uint64();break;case 3:r.partitionNames&&r.partitionNames.length||(r.partitionNames=[]),r.partitionNames.push(e.string());break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("name"))throw pe.ProtocolError("missing required 'name'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==(0,se.Z)(e)||null===e)return"object expected";if(!pe.isString(e.name))return"name: string expected";if(null!=e.size&&e.hasOwnProperty("size")&&!pe.isInteger(e.size)&&!(e.size&&pe.isInteger(e.size.low)&&pe.isInteger(e.size.high)))return"size: integer|Long expected";if(null!=e.partitionNames&&e.hasOwnProperty("partitionNames")){if(!Array.isArray(e.partitionNames))return"partitionNames: array expected";for(var t=0;t>>0,e.size.high>>>0).toNumber(!0))),e.partitionNames){if(!Array.isArray(e.partitionNames))throw TypeError(".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected");t.partitionNames=[];for(var n=0;n>>0,e.size.high>>>0).toNumber(!0):e.size),e.partitionNames&&e.partitionNames.length){n.partitionNames=[];for(var a=0;a>>3){case 1:r.groups&&r.groups.length||(r.groups=[]),r.groups.push(fe.chromeos_update_engine.DynamicPartitionGroup.decode(e,e.uint32()));break;case 2:r.snapshotEnabled=e.bool();break;case 3:r.vabcEnabled=e.bool();break;case 4:r.vabcCompressionParam=e.string();break;case 5:r.cowVersion=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==(0,se.Z)(e)||null===e)return"object expected";if(null!=e.groups&&e.hasOwnProperty("groups")){if(!Array.isArray(e.groups))return"groups: array expected";for(var t=0;t>>0),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.groups=[]),t.defaults&&(n.snapshotEnabled=!1,n.vabcEnabled=!1,n.vabcCompressionParam="",n.cowVersion=0),e.groups&&e.groups.length){n.groups=[];for(var r=0;r>>3){case 1:r.packageName=e.string();break;case 2:r.version=e.int64();break;case 3:r.isCompressed=e.bool();break;case 4:r.decompressedSize=e.int64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==(0,se.Z)(e)||null===e?"object expected":null!=e.packageName&&e.hasOwnProperty("packageName")&&!pe.isString(e.packageName)?"packageName: string expected":null==e.version||!e.hasOwnProperty("version")||pe.isInteger(e.version)||e.version&&pe.isInteger(e.version.low)&&pe.isInteger(e.version.high)?null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&"boolean"!==typeof e.isCompressed?"isCompressed: boolean expected":null==e.decompressedSize||!e.hasOwnProperty("decompressedSize")||pe.isInteger(e.decompressedSize)||e.decompressedSize&&pe.isInteger(e.decompressedSize.low)&&pe.isInteger(e.decompressedSize.high)?null:"decompressedSize: integer|Long expected":"version: integer|Long expected"},e.fromObject=function(e){if(e instanceof fe.chromeos_update_engine.ApexInfo)return e;var t=new fe.chromeos_update_engine.ApexInfo;return null!=e.packageName&&(t.packageName=String(e.packageName)),null!=e.version&&(pe.Long?(t.version=pe.Long.fromValue(e.version)).unsigned=!1:"string"===typeof e.version?t.version=parseInt(e.version,10):"number"===typeof e.version?t.version=e.version:"object"===(0,se.Z)(e.version)&&(t.version=new pe.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber())),null!=e.isCompressed&&(t.isCompressed=Boolean(e.isCompressed)),null!=e.decompressedSize&&(pe.Long?(t.decompressedSize=pe.Long.fromValue(e.decompressedSize)).unsigned=!1:"string"===typeof e.decompressedSize?t.decompressedSize=parseInt(e.decompressedSize,10):"number"===typeof e.decompressedSize?t.decompressedSize=e.decompressedSize:"object"===(0,se.Z)(e.decompressedSize)&&(t.decompressedSize=new pe.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber())),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(n.packageName="",pe.Long){var r=new pe.Long(0,0,!1);n.version=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.version=t.longs===String?"0":0;if(n.isCompressed=!1,pe.Long){var a=new pe.Long(0,0,!1);n.decompressedSize=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.decompressedSize=t.longs===String?"0":0}return null!=e.packageName&&e.hasOwnProperty("packageName")&&(n.packageName=e.packageName),null!=e.version&&e.hasOwnProperty("version")&&("number"===typeof e.version?n.version=t.longs===String?String(e.version):e.version:n.version=t.longs===String?pe.Long.prototype.toString.call(e.version):t.longs===Number?new pe.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber():e.version),null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&(n.isCompressed=e.isCompressed),null!=e.decompressedSize&&e.hasOwnProperty("decompressedSize")&&("number"===typeof e.decompressedSize?n.decompressedSize=t.longs===String?String(e.decompressedSize):e.decompressedSize:n.decompressedSize=t.longs===String?pe.Long.prototype.toString.call(e.decompressedSize):t.longs===Number?new pe.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber():e.decompressedSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,le.util.toJSONOptions)},e}(),e.ApexMetadata=function(){function e(e){if(this.apexInfo=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(fe.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==(0,se.Z)(e)||null===e)return"object expected";if(null!=e.apexInfo&&e.hasOwnProperty("apexInfo")){if(!Array.isArray(e.apexInfo))return"apexInfo: array expected";for(var t=0;t>>3){case 1:r.installOperations&&r.installOperations.length||(r.installOperations=[]),r.installOperations.push(fe.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 2:r.kernelInstallOperations&&r.kernelInstallOperations.length||(r.kernelInstallOperations=[]),r.kernelInstallOperations.push(fe.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 3:r.blockSize=e.uint32();break;case 4:r.signaturesOffset=e.uint64();break;case 5:r.signaturesSize=e.uint64();break;case 6:r.oldKernelInfo=fe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:r.newKernelInfo=fe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:r.oldRootfsInfo=fe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 9:r.newRootfsInfo=fe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 10:r.oldImageInfo=fe.chromeos_update_engine.ImageInfo.decode(e,e.uint32());break;case 11:r.newImageInfo=fe.chromeos_update_engine.ImageInfo.decode(e,e.uint32());break;case 12:r.minorVersion=e.uint32();break;case 13:r.partitions&&r.partitions.length||(r.partitions=[]),r.partitions.push(fe.chromeos_update_engine.PartitionUpdate.decode(e,e.uint32()));break;case 14:r.maxTimestamp=e.int64();break;case 15:r.dynamicPartitionMetadata=fe.chromeos_update_engine.DynamicPartitionMetadata.decode(e,e.uint32());break;case 16:r.partialUpdate=e.bool();break;case 17:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(fe.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==(0,se.Z)(e)||null===e)return"object expected";if(null!=e.installOperations&&e.hasOwnProperty("installOperations")){if(!Array.isArray(e.installOperations))return"installOperations: array expected";for(var t=0;t>>0),null!=e.signaturesOffset&&(pe.Long?(t.signaturesOffset=pe.Long.fromValue(e.signaturesOffset)).unsigned=!0:"string"===typeof e.signaturesOffset?t.signaturesOffset=parseInt(e.signaturesOffset,10):"number"===typeof e.signaturesOffset?t.signaturesOffset=e.signaturesOffset:"object"===(0,se.Z)(e.signaturesOffset)&&(t.signaturesOffset=new pe.LongBits(e.signaturesOffset.low>>>0,e.signaturesOffset.high>>>0).toNumber(!0))),null!=e.signaturesSize&&(pe.Long?(t.signaturesSize=pe.Long.fromValue(e.signaturesSize)).unsigned=!0:"string"===typeof e.signaturesSize?t.signaturesSize=parseInt(e.signaturesSize,10):"number"===typeof e.signaturesSize?t.signaturesSize=e.signaturesSize:"object"===(0,se.Z)(e.signaturesSize)&&(t.signaturesSize=new pe.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0))),null!=e.oldKernelInfo){if("object"!==(0,se.Z)(e.oldKernelInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.oldKernelInfo: object expected");t.oldKernelInfo=fe.chromeos_update_engine.PartitionInfo.fromObject(e.oldKernelInfo)}if(null!=e.newKernelInfo){if("object"!==(0,se.Z)(e.newKernelInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.newKernelInfo: object expected");t.newKernelInfo=fe.chromeos_update_engine.PartitionInfo.fromObject(e.newKernelInfo)}if(null!=e.oldRootfsInfo){if("object"!==(0,se.Z)(e.oldRootfsInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.oldRootfsInfo: object expected");t.oldRootfsInfo=fe.chromeos_update_engine.PartitionInfo.fromObject(e.oldRootfsInfo)}if(null!=e.newRootfsInfo){if("object"!==(0,se.Z)(e.newRootfsInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.newRootfsInfo: object expected");t.newRootfsInfo=fe.chromeos_update_engine.PartitionInfo.fromObject(e.newRootfsInfo)}if(null!=e.oldImageInfo){if("object"!==(0,se.Z)(e.oldImageInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.oldImageInfo: object expected");t.oldImageInfo=fe.chromeos_update_engine.ImageInfo.fromObject(e.oldImageInfo)}if(null!=e.newImageInfo){if("object"!==(0,se.Z)(e.newImageInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.newImageInfo: object expected");t.newImageInfo=fe.chromeos_update_engine.ImageInfo.fromObject(e.newImageInfo)}if(null!=e.minorVersion&&(t.minorVersion=e.minorVersion>>>0),e.partitions){if(!Array.isArray(e.partitions))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected");t.partitions=[];for(var a=0;a>>0,e.maxTimestamp.high>>>0).toNumber())),null!=e.dynamicPartitionMetadata){if("object"!==(0,se.Z)(e.dynamicPartitionMetadata))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected");t.dynamicPartitionMetadata=fe.chromeos_update_engine.DynamicPartitionMetadata.fromObject(e.dynamicPartitionMetadata)}if(null!=e.partialUpdate&&(t.partialUpdate=Boolean(e.partialUpdate)),e.apexInfo){if(!Array.isArray(e.apexInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected");t.apexInfo=[];for(var o=0;o>>0,e.signaturesOffset.high>>>0).toNumber(!0):e.signaturesOffset),null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&("number"===typeof e.signaturesSize?n.signaturesSize=t.longs===String?String(e.signaturesSize):e.signaturesSize:n.signaturesSize=t.longs===String?pe.Long.prototype.toString.call(e.signaturesSize):t.longs===Number?new pe.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0):e.signaturesSize),null!=e.oldKernelInfo&&e.hasOwnProperty("oldKernelInfo")&&(n.oldKernelInfo=fe.chromeos_update_engine.PartitionInfo.toObject(e.oldKernelInfo,t)),null!=e.newKernelInfo&&e.hasOwnProperty("newKernelInfo")&&(n.newKernelInfo=fe.chromeos_update_engine.PartitionInfo.toObject(e.newKernelInfo,t)),null!=e.oldRootfsInfo&&e.hasOwnProperty("oldRootfsInfo")&&(n.oldRootfsInfo=fe.chromeos_update_engine.PartitionInfo.toObject(e.oldRootfsInfo,t)),null!=e.newRootfsInfo&&e.hasOwnProperty("newRootfsInfo")&&(n.newRootfsInfo=fe.chromeos_update_engine.PartitionInfo.toObject(e.newRootfsInfo,t)),null!=e.oldImageInfo&&e.hasOwnProperty("oldImageInfo")&&(n.oldImageInfo=fe.chromeos_update_engine.ImageInfo.toObject(e.oldImageInfo,t)),null!=e.newImageInfo&&e.hasOwnProperty("newImageInfo")&&(n.newImageInfo=fe.chromeos_update_engine.ImageInfo.toObject(e.newImageInfo,t)),null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&(n.minorVersion=e.minorVersion),e.partitions&&e.partitions.length){n.partitions=[];for(var l=0;l>>0,e.maxTimestamp.high>>>0).toNumber():e.maxTimestamp),null!=e.dynamicPartitionMetadata&&e.hasOwnProperty("dynamicPartitionMetadata")&&(n.dynamicPartitionMetadata=fe.chromeos_update_engine.DynamicPartitionMetadata.toObject(e.dynamicPartitionMetadata,t)),null!=e.partialUpdate&&e.hasOwnProperty("partialUpdate")&&(n.partialUpdate=e.partialUpdate),e.apexInfo&&e.apexInfo.length){n.apexInfo=[];for(var u=0;u0&&void 0!==arguments[0]?arguments[0]:"";return(0,ve.Z)(this,n),e=t.call(this),(0,we.Z)((0,ge.Z)(e),"offset",void 0),(0,we.Z)((0,ge.Z)(e),"contentType",void 0),(0,we.Z)((0,ge.Z)(e),"blob",void 0),(0,we.Z)((0,ge.Z)(e),"prefixLength",void 0),(0,we.Z)((0,ge.Z)(e),"header",void 0),e.offset=0,e.contentType=r,e.blob=new Blob([],{type:r}),e.prefixLength=0,e}return(0,be.Z)(n,[{key:"readHeader",value:function(){var e=(0,b.Z)(regeneratorRuntime.mark((function e(t){var n,r,a,o,i,s,l,u,c;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return n=0,r=function(e){var r=Ze(t,n,e);return n+=e,r},e.next=4,t.slice(0,Te).arrayBuffer();case 4:if(a=e.sent,o=new TextDecoder,i=a.slice(0,Ie.length),s=o.decode(i),s==Ie){e.next=10;break}throw new Error("MAGIC is not correct, expected: ".concat(Ie," actual: ").concat(s));case 10:return n+=Ie.length,e.next=13,r(Ee);case 13:return l=e.sent,e.next=16,r(ze);case 16:if(u=e.sent,l==je){e.next=19;break}throw new Error("Unexpected major version number: ".concat(l));case 19:return e.next=21,r(Le);case 21:c=e.sent,this.header=new Be(s,l,u,c);case 23:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"writeUint8Array",value:function(){var e=(0,b.Z)(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if((0,me.Z)((0,ye.Z)(n.prototype),"writeUint8Array",this).call(this,t),this.blob=new Blob([this.blob,t.buffer],{type:this.contentType}),this.offset=this.blob.size,!(this.offset>=Te&&0==this.prefixLength)){e.next=9;break}return console.log("Parsing header!"),e.next=7,this.readHeader(this.blob);case 7:this.prefixLength=Te+this.header.manifest_len+this.header.metadata_signature_len,console.log("Computed metadata length: ".concat(this.prefixLength));case 9:if(!(this.prefixLength>0)){e.next=14;break}if(console.log("".concat(this.offset,"/").concat(this.prefixLength)),!(this.offset>=this.prefixLength)){e.next=14;break}throw this.blob=this.blob.slice(0,this.prefixLength),new Ae;case 14:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getData",value:function(){return this.blob}}]),n}(_e.QV),Re=function(){function e(t){(0,ve.Z)(this,e),(0,we.Z)(this,"zipreader",void 0),(0,we.Z)(this,"buffer",void 0),(0,we.Z)(this,"metadata",void 0),(0,we.Z)(this,"manifest",void 0),(0,we.Z)(this,"metadata_signature",void 0),(0,we.Z)(this,"header",void 0),t instanceof File?this.zipreader=new _e.Mr(new _e.Nt(t)):t instanceof URL?this.zipreader=new _e.Mr(new _e.pE(t.href)):this.zipreader=t.reader}return(0,be.Z)(e,[{key:"getMetadataLength",value:function(){return Te+this.header.manifest_len+this.header.metadata_signature_len}},{key:"unzip",value:function(){var e=(0,b.Z)(regeneratorRuntime.mark((function e(){var t,n,r,a,o,i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.zipreader.getEntries();case 2:t=e.sent,n=(0,he.Z)(t),e.prev=4,n.s();case 6:if((r=n.n()).done){e.next=35;break}if(a=r.value,"payload.bin"!=a.filename){e.next=28;break}return o=new Ne(""),e.prev=10,e.next=13,a.getData(o);case 13:e.next=22;break;case 15:if(e.prev=15,e.t0=e["catch"](10),!(e.t0 instanceof Ae)){e.next=20;break}e.next=22;break;case 20:throw console.log(e.t0),e.t0;case 22:return this.buffer=o.getData(),e.next=25,this.readManifest(this.buffer,o.header);case 25:console.log("AB OTA manifest parsed"),e.next=33;break;case 28:if("META-INF/com/android/metadata"!=a.filename){e.next=33;break}return e.next=31,a.getData(new _e.Ek);case 31:this.metadata=e.sent,console.log("OTA Package metadata parsed");case 33:e.next=6;break;case 35:e.next=40;break;case 37:e.prev=37,e.t1=e["catch"](4),n.e(e.t1);case 40:return e.prev=40,n.f(),e.finish(40);case 43:if(this.manifest){e.next=57;break}return console.log("Failed to parse AB OTA package, falling back to non-AB"),e.prev=45,i=new Se(this.zipreader),e.next=49,i.init();case 49:i.nonAB=!0,this.manifest=i,e.next=57;break;case 53:return e.prev=53,e.t2=e["catch"](45),alert("Please select a legit OTA package"),e.abrupt("return");case 57:case"end":return e.stop()}}),e,this,[[4,37,40,43],[10,15],[45,53]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"readManifest",value:function(){var e=(0,b.Z)(regeneratorRuntime.mark((function e(t,n){var r,a,o;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.header=n,r=Te,e.next=4,t.slice(r,r+n.manifest_len).arrayBuffer();case 4:return a=e.sent,r+=n.manifest_len,this.manifest=de.DeltaArchiveManifest.decode(new Uint8Array(a)),e.next=9,t.slice(r,r+n.metadata_signature_len).arrayBuffer();case 9:o=e.sent,r+=n.metadata_signature_len,this.metadata_signature=de.Signatures.decode(new Uint8Array(o)),this.manifest.nonAB=!1;case 13:case"end":return e.stop()}}),e,this)})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"parseMetadata",value:function(){var e,t=(0,he.Z)(De);try{for(t.s();!(e=t.n()).done;){var n=e.value,r=new RegExp(n.prefix+".+");this.metadata.match(r)?this[n.key]=He(this.metadata.match(r)[0],n.prefix):this[n.key]=""}}catch(a){t.e(a)}finally{t.f()}}},{key:"init",value:function(){var e=(0,b.Z)(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.unzip();case 2:this.parseMetadata();case 3:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}]),e}(),Me=function(e){(0,Oe.Z)(n,e);var t=(0,xe.Z)(n);function n(){return(0,ve.Z)(this,n),t.apply(this,arguments)}return(0,be.Z)(n,[{key:"getWithDefault",value:function(e){return this.has(e)?this.get(e):e}}]),n}((0,ke.Z)(Map)),Fe=(0,be.Z)((function e(){(0,ve.Z)(this,e),(0,we.Z)(this,"mapType",void 0);var t=de.InstallOperation.Type;this.mapType=new Me;for(var n=0,r=Object.keys(t);n1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:16,r="",a=0;a3&&void 0!==arguments[3]?arguments[3]:15;(0,ve.Z)(this,e),(0,we.Z)(this,"statisticData",void 0),(0,we.Z)(this,"trimmedData",void 0),(0,we.Z)(this,"title",void 0),(0,we.Z)(this,"unit",void 0),(0,we.Z)(this,"maximumEntries",void 0),this.statisticData=t,this.trimmedData=ot(t,a),this.title=n,this.unit=r,this.maximumEntries=a}return(0,be.Z)(e,[{key:"listData",value:function(){var e,t="",n=(0,he.Z)(this.statisticData);try{for(n.s();!(e=n.n()).done;){var r=(0,rt.Z)(e.value,2),a=r[0],o=r[1];t+=a+" : "+o.toString()+" Blocks\n"}}catch(i){n.e(i)}finally{n.f()}return t}},{key:"getEchartsOption",value:function(){var e={};return e.title={text:this.title,left:"center"},e.tooltip={trigger:"item",formatter:"{a}
{b} : {c} "+this.unit+" ({d}%)"},e.legend={orient:"horizontal",left:"top",top:"10%",data:Array.from(this.trimmedData.keys())},e.series=[{name:this.title,type:"pie",radius:"55%",center:["50%","60%"],data:Array.from(this.trimmedData).map((function(e){return{value:e[1],name:e[0]}})),emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],e}}]),e}();function ot(e,t){if(e.size<=t)return e;for(var n=new Map,r=0;ro&&(o=c,i=u)}}catch(y){s.e(y)}finally{s.f()}n.set(i,o)}var p,f=0,d=(0,he.Z)(e);try{for(d.s();!(p=d.n()).done;){var h=(0,rt.Z)(p.value,2),g=h[0],m=h[1];n.get(g)||(f+=m)}}catch(y){d.e(y)}finally{d.f()}return n.set("other",f),n}var it=function(){function e(t){(0,ve.Z)(this,e),(0,we.Z)(this,"build",void 0),(0,we.Z)(this,"mapFiles",void 0),(0,we.Z)(this,"maps",void 0),t instanceof File?this.build=new _e.Mr(new _e.Nt(t)):this.build=new _e.Mr(new _e.pE(t.href)),this.mapFiles=new Map,this.maps=new Map}return(0,be.Z)(e,[{key:"init",value:function(){var e=(0,b.Z)(regeneratorRuntime.mark((function e(){var t,n,r,a=this;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.build.getEntries();case 2:t=e.sent,n=/IMAGES\/[a-z_]*\.map/g,r=/[\w_]+(?=\.map)/g,t.forEach((function(e){e.filename.match(n)&&a.mapFiles.set(e.filename.match(r)[0],e)}));case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"add",value:function(){var e=(0,b.Z)(regeneratorRuntime.mark((function e(t,n){var r,a,o,i,s,l,u,c,p,f,d,h,g;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:for(r=[],a=/\d+/g,o=/\d+\-\d+/g,i=0;i");if(!this.mapFiles.get(t)){e.next=14;break}return e.next=7,this.mapFiles.get(t).getData(new _e.Ek);case 7:s=e.sent,l=s.split("\n"),u=(0,he.Z)(l);try{for(u.s();!(c=u.n()).done;)for(p=c.value,f=p.split(" "),d=1;d2&&void 0!==s[2]?s[2]:4096,a=s.length>3&&void 0!==s[3]?s[3]:null,e.t0=t,e.next="blocks"===e.t0?5:"payload"===e.t0?8:"COWmerge"===e.t0?11:"filenames"===e.t0?14:"extensions"===e.t0?21:28;break;case 5:return o=ct(n),i=new at(o,"Operated blocks in target build","blocks"),e.abrupt("break",28);case 8:return o=ft(n),i=new at(o,"Payload disk usage","bytes"),e.abrupt("break",28);case 11:return o=pt(n,r),i=new at(o,"COW merge operations","blocks"),e.abrupt("break",28);case 14:if(null!=a){e.next=16;break}throw new Error("Target file is required for filenames analysis");case 16:return e.next=18,gt(n,r,a);case 18:return o=e.sent,i=new at(o,"Size of operated filenames","bytes"),e.abrupt("break",28);case 21:if(null!=a){e.next=23;break}throw new Error("Target file is required for filenames analysis");case 23:return e.next=25,dt(n,r,a);case 25:return o=e.sent,i=new at(o,"Size of operated extensions","bytes"),e.abrupt("break",28);case 28:if(!i){e.next=32;break}return e.abrupt("return",i);case 32:throw"Please double check if this is a proper AB OTA package.";case 33:case"end":return e.stop()}}),e)}))),wt.apply(this,arguments)}function bt(e){if(!e)return 0;var t=function(e,t){return e+t.numBlocks};return e.reduce(t,0)}function vt(e){var t=function(e,t){return e+"("+t.startBlock+","+t.numBlocks+")"};return e.reduce(t,"")}function Ot(e,t,n){for(var r=bt(t),a=new Map,o=0;o1?t[t.length-1]:"unknown"===t[0]?"unknown":"<"==e[0]&&e.endsWith(">")?e:"no-extension"}var kt=(0,l.aZ)({props:{operation:{type:Object,required:!0},mapType:{type:Me,required:!0}},data:function(){return{srcTotalBlocks:0,srcBlocks:"",dstTotalBlocks:0,dstBlocks:""}},mounted:function(){this.operation.srcExtents&&(this.srcTotalBlocks=bt(this.operation.srcExtents),this.srcBlocks=vt(this.operation.srcExtents)),this.operation.dstExtents&&(this.dstTotalBlocks=bt(this.operation.dstExtents),this.dstBlocks=vt(this.operation.dstExtents))}});const _t=(0,d.Z)(kt,[["render",nt],["__scopeId","data-v-44174082"]]);var St=_t,Pt=(0,l.aZ)({components:{OperationDetail:St},props:{partition:{type:de.PartitionUpdate,required:!0},dynamicPartitionList:{type:Array,required:!0}},data:function(){return{showOPs:!1,showInfo:!1,opType:new Fe}},methods:{toggle:function(e){this[e]=!this[e]},octToHex:Ve},computed:{readableTimestamp:function(){var e=parseInt(this.partition.version);return isNaN(e)?"":new Date(1e3*e).toString()},isDynamicPartition:function(){return this.dynamicPartitionList.indexOf(this.partition.partitionName)>=0}}});const It=(0,d.Z)(Pt,[["render",ie],["__scopeId","data-v-6dba348a"]]);var Et=It,zt=(n(3210),function(e){return(0,l.dD)("data-v-0514c264"),e=e(),(0,l.Cn)(),e}),Lt=zt((function(){return(0,l._)("h3",null,"Basic infos",-1)})),Tt={class:"align"},jt=zt((function(){return(0,l._)("strong",null," File name ",-1)})),Dt=zt((function(){return(0,l._)("strong",null," File size ",-1)})),At={class:"align"},Bt={class:"wrap"},Zt={key:2},Ct={class:"align"},Nt=zt((function(){return(0,l._)("strong",null," Incremental ",-1)})),Rt={key:0},Mt={key:1},Ft=zt((function(){return(0,l._)("strong",null," Partial ",-1)})),Ut={key:0},Vt={key:1},Ht=zt((function(){return(0,l._)("strong",null," A/B update ",-1)})),Wt={key:0},qt={key:1},Kt=zt((function(){return(0,l._)("strong",null," VAB ",-1)})),Jt={key:0},Yt={key:1},Gt=zt((function(){return(0,l._)("strong",null," VABC ",-1)})),$t={key:0},Xt={key:1},Qt={key:0},en=zt((function(){return(0,l._)("strong",null," Total Dynamic Partition Size ",-1)})),tn={key:1},nn=zt((function(){return(0,l._)("strong",null," Total VABC COW Size ",-1)}));function rn(e,t,n,r,a,o){return(0,l.wg)(),(0,l.iD)(l.HY,null,[Lt,e.zipFile?((0,l.wg)(),(0,l.iD)("div",(0,u.vs)((0,l.dG)({key:0},e.$attrs)),[(0,l._)("ul",Tt,[(0,l._)("li",null,[jt,(0,l.Uk)(" "+(0,u.zw)(e.zipFile.getFileName()),1)]),(0,l._)("li",null,[Dt,(0,l.Uk)(" "+(0,u.zw)(e.zipFile.getFileSize())+" Bytes",1)])])],16)):(0,l.kq)("",!0),e.payload&&e.payload.metadata?((0,l.wg)(),(0,l.iD)("div",(0,u.vs)((0,l.dG)({key:1},e.$attrs)),[(0,l._)("ul",At,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.otaMetadata,(function(t){return(0,l.wg)(),(0,l.iD)("li",{key:t.name},[(0,l._)("strong",null,(0,u.zw)(t.name.trim()+" "),1),(0,l._)("p",Bt,(0,u.zw)(String(e.payload[t.key]).trim()),1)])})),128))])],16)):(0,l.kq)("",!0),e.payload&&e.payload.manifest?((0,l.wg)(),(0,l.iD)("div",Zt,[(0,l._)("ul",Ct,[(0,l._)("li",null,[Nt,e.payload.preBuild?((0,l.wg)(),(0,l.iD)("span",Rt," ✅ ")):((0,l.wg)(),(0,l.iD)("span",Mt," ❌ "))]),(0,l._)("li",null,[Ft,e.payload.manifest.partialUpdate?((0,l.wg)(),(0,l.iD)("span",Ut," ✅ ")):((0,l.wg)(),(0,l.iD)("span",Vt," ❌ "))]),(0,l._)("li",null,[Ht,e.payload.manifest.nonAB?((0,l.wg)(),(0,l.iD)("span",qt," ❌ ")):((0,l.wg)(),(0,l.iD)("span",Wt," ✅ "))]),(0,l._)("li",null,[Kt,e.payload.manifest.dynamicPartitionMetadata.snapshotEnabled?((0,l.wg)(),(0,l.iD)("span",Jt," ✅ ")):((0,l.wg)(),(0,l.iD)("span",Yt," ❌ "))]),(0,l._)("li",null,[Gt,e.payload.manifest.dynamicPartitionMetadata.vabcEnabled?((0,l.wg)(),(0,l.iD)("span",$t," ✅ ")):((0,l.wg)(),(0,l.iD)("span",Xt," ❌ "))]),e.totalDynamicPartitionSize?((0,l.wg)(),(0,l.iD)("li",Qt,[en,(0,l.Uk)(" "+(0,u.zw)(e.totalDynamicPartitionSize),1)])):(0,l.kq)("",!0),e.totalCOWSize?((0,l.wg)(),(0,l.iD)("li",tn,[nn,(0,l.Uk)(" "+(0,u.zw)(e.totalCOWSize),1)])):(0,l.kq)("",!0)])])):(0,l.kq)("",!0)],64)}n(7327),n(189),n(6755);var an=function(){function e(t){(0,ve.Z)(this,e),(0,we.Z)(this,"file",void 0),(0,we.Z)(this,"reader",void 0),this.file=t,this.reader=ln(t)}return(0,be.Z)(e,[{key:"getFileName",value:function(){return un(this.file)}},{key:"getFileSize",value:function(){return this.file instanceof File?this.file.size:0}}]),e}();function on(e,t){return sn.apply(this,arguments)}function sn(){return sn=(0,b.Z)(regeneratorRuntime.mark((function e(t,n){var r,a,o,i,s,l,u,c;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return r=t,a=new _e._Q(new _e.U5("application/zip")),e.next=4,r.getEntries();case 4:o=e.sent,i=(0,he.Z)(o.filter((function(e){return!!e&&n(e)}))),e.prev=6,i.s();case 8:if((s=i.n()).done){e.next=18;break}return l=s.value,u=new _e.U5,e.next=13,l.getData(u);case 13:c=e.sent,console.log("Adding ".concat(l.filename,", ").concat(c.size)),a.add(l.filename,new _e.Nt(u.getData()),{level:0});case 16:e.next=8;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e["catch"](6),i.e(e.t0);case 23:return e.prev=23,i.f(),e.finish(23);case 26:return e.abrupt("return",a);case 27:case"end":return e.stop()}}),e,null,[[6,20,23,26]])}))),sn.apply(this,arguments)}function ln(e){return e instanceof File?new _e.Mr(new _e.Nt(e)):new _e.Mr(new _e.pE(e.href))}function un(e){return e instanceof File?e.name:e.pathname}function cn(e){return pn.apply(this,arguments)}function pn(){return pn=(0,b.Z)(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,on(ln(t),(function(e){return e.filename.startsWith("META/")||e.filename.endsWith(".map")}));case 2:return n=e.sent,e.next=5,n.close();case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)}))),pn.apply(this,arguments)}function fn(e){return dn.apply(this,arguments)}function dn(){return dn=(0,b.Z)(regeneratorRuntime.mark((function e(t){var n,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,on(t.zipreader,(function(e){return"payload.bin"!=e.filename}));case 2:return n=e.sent,e.next=5,n.add("payload.bin",new _e.Nt(t.buffer.slice(0,t.getMetadataLength())),{level:0});case 5:return e.next=7,n.close();case 7:return r=e.sent,e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)}))),dn.apply(this,arguments)}function hn(e,t,n){var r=window.URL.createObjectURL(e);t.href=r,t.download=n,t.click(),window.URL.revokeObjectURL(r)}function gn(e,t){return e.endsWith(t)?e:e+t}var mn=(0,l.aZ)({props:{zipFile:{type:an,required:!0},payload:{type:Re,required:!0}},data:function(){return{MetadataFormat:De}},computed:{otaMetadata:function(){var e=this;return De.filter((function(t){return String(e.payload[t.key]).length>0}))},totalCOWSize:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.partitions.map((function(e){return e.estimateCowSize||0}));return n?n.reduce((function(e,t){return e+t})):0},totalDynamicPartitionSize:function(){var e,t,n,r,a=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.groups;if(!a)return 0;var o=new Set(a.flatMap((function(e){return e.partitionNames}))),i=(null===(r=this.payload.manifest)||void 0===r?void 0:r.partitions.filter((function(e){return o.has(e.partitionName)})))||[];return i.length<=0?0:i.map((function(e){var t;return(null===(t=e.newPartitionInfo)||void 0===t?void 0:t.size)||0})).reduce((function(e,t){return e+t}))}}});const yn=(0,d.Z)(mn,[["render",rn],["__scopeId","data-v-0514c264"]]);var wn=yn,bn=(0,l.aZ)({components:{PartitionDetail:Et,BasicInfo:wn},props:{zipFile:{type:an,default:null},payload:{type:Re,default:null}},methods:{octToHex:Ve,exportOTAPackage:function(){var e=this;return(0,b.Z)(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,fn(e.payload);case 2:n=t.sent,r=e.$refs["download"],hn(n,r,"trimmed_"+gn(e.zipFile.getFileName(),".zip"));case 5:case"end":return t.stop()}}),t)})))()}},computed:{dynamicPartitions:function(){var e,t,n;return(null===(e=this.payload.manifest)||void 0===e||null===(t=e.dynamicPartitionMetadata)||void 0===t||null===(n=t.groups)||void 0===n?void 0:n.flatMap((function(e){return e.partitionNames||[]})))||[]}}});const vn=(0,d.Z)(bn,[["render",Z],["__scopeId","data-v-05db67f2"]]);var On=vn,xn=(0,l.Uk)("Export Target File Metadata"),kn={ref:"download"},_n={key:1},Sn=(0,l.Uk)(" Analyse Installed Blocks (in target build) "),Pn=(0,l.Uk)(" Analyse Payload Composition "),In=(0,l.Uk)(" Analyse COW Merge Operations "),En={key:0,class:"tooltiptext"},zn=(0,l.Uk)(" Analyse Filenames "),Ln=(0,l.Uk)(" Analyse File Extensions ");function Tn(e,t,n,r,a,o){var i=(0,l.up)("v-btn"),s=(0,l.up)("PartialCheckbox"),u=(0,l.up)("PieChart"),c=(0,l.up)("v-divider"),p=(0,l.up)("v-col"),f=(0,l.up)("v-row"),d=(0,l.up)("BaseFile");return(0,l.wg)(),(0,l.iD)(l.HY,null,[e.targetFile?((0,l.wg)(),(0,l.j4)(i,{key:0,block:"",class:"md-6",onClick:e.exportTargetFileMetadata},{default:(0,l.w5)((function(){return[xn]})),_:1},8,["onClick"])):(0,l.kq)("",!0),(0,l._)("a",kn,null,512),(0,l.Wm)(s,{modelValue:e.partitionInclude,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.partitionInclude=t}),labels:e.updatePartitions},null,8,["modelValue","labels"]),e.echartsData?((0,l.wg)(),(0,l.iD)("div",_n,[(0,l.Wm)(u,{echartsData:e.echartsData,onClick:e.piechartClick},null,8,["echartsData","onClick"])])):(0,l.kq)("",!0),(0,l.Wm)(c),(0,l.Wm)(f,null,{default:(0,l.w5)((function(){return[(0,l.Wm)(p,{cols:"12",md:"6"},{default:(0,l.w5)((function(){return[(0,l.Wm)(i,{block:"",onClick:t[1]||(t[1]=function(t){return e.updateChart("blocks")})},{default:(0,l.w5)((function(){return[Sn]})),_:1})]})),_:1}),(0,l.Wm)(p,{cols:"12",md:"6"},{default:(0,l.w5)((function(){return[(0,l.Wm)(i,{block:"",onClick:t[2]||(t[2]=function(t){return e.updateChart("payload")})},{default:(0,l.w5)((function(){return[Pn]})),_:1})]})),_:1})]})),_:1}),(0,l.Wm)(f,null,{default:(0,l.w5)((function(){return[(0,l.Wm)(p,{cols:"12",md:"6",class:"tooltip"},{default:(0,l.w5)((function(){return[(0,l.Wm)(i,{disabled:e.manifest.nonAB||!e.manifest.dynamicPartitionMetadata.vabcEnabled,title:"Only available for VABC update",block:"",onClick:t[3]||(t[3]=function(t){return e.updateChart("COWmerge")})},{default:(0,l.w5)((function(){return[In]})),_:1},8,["disabled"]),e.manifest.nonAB?((0,l.wg)(),(0,l.iD)("span",En," This function is only supported in A/B OTA ")):(0,l.kq)("",!0)]})),_:1}),(0,l.Wm)(p,{cols:"12",md:"6"},{default:(0,l.w5)((function(){return[(0,l.Wm)(i,{block:"",disabled:!e.targetFile,onClick:t[4]||(t[4]=function(t){return e.updateChart("filenames")})},{default:(0,l.w5)((function(){return[zn]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),(0,l.Wm)(f,null,{default:(0,l.w5)((function(){return[(0,l.Wm)(p,{cols:"12",md:"6"},{default:(0,l.w5)((function(){return[(0,l.Wm)(i,{block:"",disabled:!e.targetFile,onClick:t[5]||(t[5]=function(t){return e.updateChart("extensions")})},{default:(0,l.w5)((function(){return[Ln]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),(0,l.Wm)(f,null,{default:(0,l.w5)((function(){return[(0,l.Wm)(p,{cols:"12",md:"6"}),(0,l.Wm)(p,{cols:"12",md:"6"},{default:(0,l.w5)((function(){return[e.demo?(0,l.kq)("",!0):((0,l.wg)(),(0,l.j4)(d,{key:0,label:"Drag and drop or Select The target Android build",onFileSelect:e.selectBuild},null,8,["onFileSelect"]))]})),_:1})]})),_:1})],64)}var jn=n(9669),Dn=n.n(jn),An=["value","checked"],Bn={key:0};function Zn(e,t,n,r,a,o){var i=(0,l.up)("v-btn"),s=(0,l.up)("v-col"),c=(0,l.up)("v-row");return(0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l.Wm)(i,{block:"",type:"button",class:"my-5",onClick:e.revertAllSelection},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,u.zw)(e.selectAllText[e.selectAll]),1)]})),_:1},8,["onClick"]),(0,l.Wm)(c,{class:"mb-5"},{default:(0,l.w5)((function(){return[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.labels,(function(n){return(0,l.wg)(),(0,l.j4)(s,{key:n,cols:"12",md:"4"},{default:(0,l.w5)((function(){return[(0,l._)("input",{type:"checkbox",value:n,checked:e.modelValue.get(n),onChange:t[0]||(t[0]=function(t){return e.updateSelected(t.target.value)})},null,40,An),n?((0,l.wg)(),(0,l.iD)("label",Bn,(0,u.zw)(n),1)):(0,l.kq)("",!0)]})),_:2},1024)})),128))]})),_:1})],64)}var Cn=(0,l.aZ)({props:{labels:{type:Array,default:new Array},modelValue:{type:Map,default:new Map}},data:function(){return{selectAll:1,selectAllText:["Select All","Unselect All"]}},mounted:function(){var e,t=(0,he.Z)(this.labels);try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,!0)}}catch(r){t.e(r)}finally{t.f()}},methods:{updateSelected:function(e){this.modelValue.set(e,!this.modelValue.get(e)),this.$emit("update:modelValue",this.modelValue)},revertAllSelection:function(){this.selectAll=1-this.selectAll;var e,t=(0,he.Z)(this.modelValue.keys());try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,Boolean(this.selectAll))}}catch(r){t.e(r)}finally{t.f()}}}});const Nn=(0,d.Z)(Cn,[["render",Zn],["__scopeId","data-v-533f2336"]]);var Rn=Nn,Mn=n(4781);function Fn(e,t,n,r,a,o){var i=arguments,s=(0,l.up)("v-chart");return(0,l.wg)(),(0,l.j4)(s,{class:"chart",option:o.getEchartsOption,onClick:t[0]||(t[0]=function(t){return e.$emit.apply(e,["click"].concat((0,Mn.Z)(i)))})},null,8,["option"])}var Un=n(8023),Vn=n(1416),Hn=n(8650),Wn=n(8690),qn=n(3703),Kn=n(6179),Jn=n(487);(0,Un.D)([Vn.N,Hn.N,Wn.N,qn.N,Kn.N]);var Yn={components:{VChart:Jn.ZP},provide:(0,we.Z)({},Jn.bw,"dark"),props:{echartsData:{type:at,required:!0}},computed:{getEchartsOption:function(){return this.echartsData.getEchartsOption()}}};const Gn=(0,d.Z)(Yn,[["render",Fn],["__scopeId","data-v-5d1cb486"]]);var $n=Gn,Xn=(0,l.aZ)({components:{PartialCheckbox:Rn,PieChart:$n,BaseFile:I},props:{manifest:{type:de.DeltaArchiveManifest,default:function(){return[]}},demo:{type:Boolean,default:!1}},data:function(){return{partitionInclude:new Map,echartsData:null,listData:"",targetFile:null}},computed:{updatePartitions:function(){return this.manifest.partitions.map((function(e){return e.partitionName}))}},mounted:function(){var e=this;return(0,b.Z)(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(!e.demo){t.next=11;break}return t.prev=1,t.next=4,Dn().get("./files/cf_x86_target_file_demo.zip",{responseType:"blob"});case 4:n=t.sent,e.targetFile=new File([n.data],"target_demo.zip"),t.next=11;break;case 8:t.prev=8,t.t0=t["catch"](1),console.log("Please put a proper example target file in /public/files/");case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))()},methods:{piechartClick:function(e){console.log(e)},updateChart:function(e){var t=this;return(0,b.Z)(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return r=t.manifest.partitions.filter((function(e){return t.partitionInclude.get(e.partitionName)})),n.prev=1,n.next=4,yt(e,r,t.manifest.blockSize,t.targetFile);case 4:t.echartsData=n.sent,n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Cannot be processed for the following issue: ".concat(n.t0));case 10:case"end":return n.stop()}}),n,null,[[1,7]])})))()},selectBuild:function(e){this.targetFile=e},exportTargetFileMetadata:function(){var e=this;return(0,b.Z)(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,cn(e.targetFile);case 2:n=t.sent,r=e.$refs["download"],hn(n,r,"trimmed_"+gn(un(e.targetFile),".zip"));case 5:case"end":return t.stop()}}),t)})))()}}});const Qn=(0,d.Z)(Xn,[["render",Tn],["__scopeId","data-v-44b569bd"]]);var er=Qn,tr=(0,l.aZ)({components:{BaseFile:I,PayloadDetail:On,PayloadComposition:er},data:function(){return{zipFile:null,payload:null}},methods:{unpackOTA:function(e){var t=this;return(0,b.Z)(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return t.zipFile=new an(e),n.prev=1,t.payload=new Re(t.zipFile),n.next=5,t.payload.init();case 5:n.next=11;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Please check if this is a correct OTA package (.zip). ".concat(n.t0)),console.log(n.t0);case 11:case"end":return n.stop()}}),n,null,[[1,7]])})))()}}});const nr=(0,d.Z)(tr,[["render",w]]);var rr=nr;function ar(e,t,n,r,a,o){var i=(0,l.up)("PayloadDetail"),s=(0,l.up)("v-col"),u=(0,l.up)("v-divider"),c=(0,l.up)("PayloadComposition"),p=(0,l.up)("v-row");return(0,l.wg)(),(0,l.j4)(p,null,{default:(0,l.w5)((function(){return[(0,l.Wm)(s,{cols:"12",md:"6"},{default:(0,l.w5)((function(){return[e.zipFile&&e.payload?((0,l.wg)(),(0,l.j4)(i,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):(0,l.kq)("",!0)]})),_:1}),(0,l.Wm)(u,{vertical:""}),(0,l.Wm)(s,{cols:"12",md:"6"},{default:(0,l.w5)((function(){return[e.zipFile&&e.payload.manifest?((0,l.wg)(),(0,l.j4)(c,{key:0,manifest:e.payload.manifest,demo:!0},null,8,["manifest"])):(0,l.kq)("",!0)]})),_:1})]})),_:1})}var or=(0,l.aZ)({components:{PayloadDetail:On,PayloadComposition:er},data:function(){return{zipFile:null,payload:null}},created:function(){var e=this;return(0,b.Z)(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,Dn().get("./files/cf_x86_demo.zip",{responseType:"blob"});case 3:return n=t.sent,e.zipFile=new an(new File([n.data],"ota_demo.zip")),e.payload=new Re(e.zipFile),t.next=8,e.payload.init();case 8:t.next=13;break;case 10:t.prev=10,t.t0=t["catch"](0),console.log("Please put a proper example OTA in /public/files/");case 13:case"end":return t.stop()}}),t,null,[[0,10]])})))()}});const ir=(0,d.Z)(or,[["render",ar]]);var sr=ir,lr={class:"about"},ur=(0,l._)("p",null,"A web based tool to inspect Android OTA packages.",-1),cr=[ur];function pr(e,t){return(0,l.wg)(),(0,l.iD)("div",lr,cr)}const fr={},dr=(0,d.Z)(fr,[["render",pr]]);var hr=dr,gr=function(e){return(0,l.dD)("data-v-50c6f348"),e=e(),(0,l.Cn)(),e},mr=gr((function(){return(0,l._)("h1",null,"Not Found!",-1)})),yr=gr((function(){return(0,l._)("p",null,[(0,l._)("a",{href:"/"},"Go home?")],-1)}));function wr(e,t){var n=(0,l.up)("center");return(0,l.wg)(),(0,l.j4)(n,null,{default:(0,l.w5)((function(){return[mr,yr]})),_:1})}const br={},vr=(0,d.Z)(br,[["render",wr],["__scopeId","data-v-50c6f348"]]);var Or=vr,xr=[{path:"/",name:"Analysis",component:rr,meta:{title:"Analyse OTA package - from AOSP"}},{path:"/demo",name:"Demo",component:sr},{path:"/about",name:"About",component:hr},{path:"/:catchAll(.*)",name:"Not Found",component:Or}],kr=(0,m.p7)({history:(0,m.PO)("/analyseOTA/"),routes:xr});kr.beforeEach((function(e,t,n){var r=e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.title})),a=(e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})),t.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})));r?document.title=r.meta.title:a&&(document.title=a.meta.title),Array.from(document.querySelectorAll("[data-vue-router-controlled]")).map((function(e){return e.parentNode.removeChild(e)})),n()}));var _r=kr,Sr=n(8410),Pr=(0,Sr.MT)({state:{},mutations:{},actions:{},modules:{}}),Ir=(0,r.ri)(g);Ir.use(_r),Ir.use(Pr),Ir.use(s),Ir.mount("#app")}},t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,n),o.exports}n.m=e,function(){var e=[];n.O=function(t,r,a,o){if(!r){var i=1/0;for(c=0;c=o)&&Object.keys(n.O).every((function(e){return n.O[e](r[l])}))?r.splice(l--,1):(s=!1,o0&&e[c-1][2]>o;c--)e[c]=e[c-1];e[c]=[r,a,o]}}(),function(){n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,{a:t}),t}}(),function(){n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}}(),function(){var e={143:0};n.O.j=function(t){return 0===e[t]};var t=function(t,r){var a,o,i=r[0],s=r[1],l=r[2],u=0;if(i.some((function(t){return 0!==e[t]}))){for(a in s)n.o(s,a)&&(n.m[a]=s[a]);if(l)var c=l(n)}for(t&&t(r);u\n\n\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=ee415730\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createTextVNode(\"This tool does not upload your package anywhere. All analysis are done in the frontend using Javascript.\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_alert = _resolveComponent(\"v-alert\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n const _component_BaseFile = _resolveComponent(\"BaseFile\")!\n const _component_PayloadDetail = _resolveComponent(\"PayloadDetail\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n const _component_PayloadComposition = _resolveComponent(\"PayloadComposition\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_alert, { style: {\"color\":\"yellow\"} }, {\n default: _withCtx(() => [\n _hoisted_1\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_BaseFile, {\n label: \"Please drag and drop an OTA package or select one\",\n onFileSelect: _ctx.unpackOTA\n }, null, 8, [\"onFileSelect\"]),\n (_ctx.zipFile && _ctx.payload)\n ? (_openBlock(), _createBlock(_component_PayloadDetail, {\n key: 0,\n zipFile: _ctx.zipFile,\n payload: _ctx.payload\n }, null, 8, [\"zipFile\", \"payload\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_component_v_divider, { vertical: \"\" }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n (_ctx.zipFile && _ctx.payload.manifest)\n ? (_openBlock(), _createBlock(_component_PayloadComposition, {\n key: 0,\n manifest: _ctx.payload.manifest\n }, null, 8, [\"manifest\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ], 64))\n}","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, vModelText as _vModelText, normalizeClass as _normalizeClass, withDirectives as _withDirectives, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0630c5ec\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"file-select ma-5\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = { key: 2 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"label\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"select-button\",\n onDragover: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.dragover && _ctx.dragover(...args))),\n onDragleave: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.dragleave && _ctx.dragleave(...args))),\n onDrop: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.drop && _ctx.drop(...args)))\n }, [\n (_ctx.label)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_2, _toDisplayString(!_ctx.fileName ? _ctx.label : ''), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_3, \"Select File\")),\n (_ctx.fileName)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, \"File selected: \" + _toDisplayString(_ctx.fileName), 1))\n : _createCommentVNode(\"\", true)\n ], 32),\n _createElementVNode(\"input\", {\n ref: \"file\",\n type: \"file\",\n accept: \".zip\",\n onChange: _cache[3] || (_cache[3] = \n//@ts-ignore\n(...args) => (_ctx.handleFileChange && _ctx.handleFileChange(...args)))\n }, null, 544)\n ]),\n _withDirectives(_createElementVNode(\"input\", {\n class: _normalizeClass([\"url-input\", {\n 'url-invalid': !_ctx.parsedURL && _ctx.url != '',\n 'url-valid': _ctx.parsedURL || _ctx.url == ''\n }]),\n ref: \"url_input\",\n type: \"url\",\n placeholder: \"type a URL\",\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.url) = $event)),\n onKeyup: _cache[5] || (_cache[5] = \n//@ts-ignore\n(...args) => (_ctx.urlKeyup && _ctx.urlKeyup(...args)))\n }, null, 34), [\n [_vModelText, _ctx.url]\n ])\n ], 64))\n}","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n label: {\n type: String,\n default: ''\n }\n },\n emits: {\n 'file-select': null\n },\n data() {\n return {\n fileName: '',\n url: ''\n }\n },\n computed: {\n parsedURL(): URL | null {\n try {\n return new URL(this.url)\n } catch {\n return null\n }\n }\n },\n\n methods: {\n handleFileChange(event: any) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (target.files == null || target.files.length < 1) {\n return\n }\n const selectedFile = target.files![0]\n this.$emit('file-select', selectedFile)\n // If user selects a file, clear the URL component\n this.url = ''\n this.fileName = target.files![0].name\n },\n dragover(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!target.classList.contains('file-hover')) {\n target.classList.add('file-hover')\n }\n },\n dragleave(event: DragEvent) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n target.classList.remove('file-hover')\n },\n drop(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!event.dataTransfer || event.dataTransfer.files.length == 0) {\n return\n }\n target.files = event.dataTransfer.files\n this.handleFileChange(event)\n target.classList.remove('file-hover')\n },\n urlKeyup(event: KeyboardEvent) {\n console.log(this.url)\n if (event.key == 'Enter') {\n const target = event.target as HTMLInputElement\n if (this.parsedURL == null) {\n console.error(`${target.value} is an invalid URL`)\n return\n }\n this.$emit('file-select', this.parsedURL)\n }\n }\n }\n})\n","import { render } from \"./BaseFile.vue?vue&type=template&id=0630c5ec&scoped=true&ts=true\"\nimport script from \"./BaseFile.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseFile.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0630c5ec\"]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-05db67f2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/_createTextVNode(\"Export Metadata\")\nconst _hoisted_2 = { ref: \"download\" }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h3\", null, \"Partition List\", -1))\nconst _hoisted_5 = {\n key: 1,\n class: \"signature\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h3\", null, \"Metadata Signature\", -1))\nconst _hoisted_7 = { style: {\"white-space\":\"pre-wrap\"} }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_btn = _resolveComponent(\"v-btn\")!\n const _component_BasicInfo = _resolveComponent(\"BasicInfo\")!\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n const _component_PartitionDetail = _resolveComponent(\"PartitionDetail\")!\n const _component_v_card = _resolveComponent(\"v-card\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (_ctx.zipFile && _ctx.payload)\n ? (_openBlock(), _createBlock(_component_v_btn, {\n key: 0,\n class: \"download-btn\",\n onClick: _ctx.exportOTAPackage\n }, {\n default: _withCtx(() => [\n _hoisted_1\n ]),\n _: 1\n }, 8, [\"onClick\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"a\", _hoisted_2, null, 512),\n _createVNode(_component_BasicInfo, {\n zipFile: _ctx.zipFile,\n payload: _ctx.payload,\n class: \"mb-5\"\n }, null, 8, [\"zipFile\", \"payload\"]),\n _createVNode(_component_v_divider),\n (_ctx.payload)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _hoisted_4,\n (_ctx.payload.manifest)\n ? (_openBlock(), _createBlock(_component_v_row, {\n key: 0,\n class: \"mb-5\"\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.payload.manifest.partitions, (partition) => {\n return (_openBlock(), _createBlock(_component_v_col, {\n key: partition.partitionName,\n cols: \"12\",\n md: \"4\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_card, {\n elevation: \"5\",\n hover: \"\",\n shaped: \"\",\n class: \"partial-info\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_PartitionDetail, {\n partition: partition,\n dynamicPartitionList: _ctx.dynamicPartitions\n }, null, 8, [\"partition\", \"dynamicPartitionList\"])\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1024))\n }), 128))\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_v_divider),\n (_ctx.payload.metadata_signature && !_ctx.payload.manifest.nonAB)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _hoisted_6,\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.octToHex(_ctx.payload.metadata_signature.signatures[0].data)), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6dba348a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = { key: 1 }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Estimate COW Size: \", -1))\nconst _hoisted_4 = { key: 2 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Postinstall Script: \", -1))\nconst _hoisted_6 = { class: \"toggle\" }\nconst _hoisted_7 = { key: 0 }\nconst _hoisted_8 = { key: 0 }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Old Partition Size: \", -1))\nconst _hoisted_10 = { key: 1 }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Old Partition Hash: \", -1))\nconst _hoisted_12 = { class: \"hex\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" New Partition Size: \", -1))\nconst _hoisted_14 = { key: 2 }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" New Partition Hash: \", -1))\nconst _hoisted_16 = { class: \"hex\" }\nconst _hoisted_17 = { key: 3 }\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Version: \", -1))\nconst _hoisted_19 = { key: 4 }\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Version: \", -1))\nconst _hoisted_21 = { class: \"toggle\" }\nconst _hoisted_22 = { key: 0 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_OperationDetail = _resolveComponent(\"OperationDetail\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"h4\", {\n class: _normalizeClass({ 'new-partition': !_ctx.partition.oldPartitionInfo })\n }, _toDisplayString(_ctx.partition.partitionName), 3),\n (_ctx.isDynamicPartition)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_1, \" Dynamic: ✅ \"))\n : _createCommentVNode(\"\", true),\n (_ctx.partition.estimateCowSize)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_2, [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.estimateCowSize) + \" Bytes \", 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.partition.postinstallPath)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_4, [\n _hoisted_5,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.postinstallPath), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"h4\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.toggle('showInfo'))),\n class: _normalizeClass({ active: _ctx.showInfo, inactive: !_ctx.showInfo })\n }, \" Partition Infos \", 2),\n (_ctx.showInfo)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_7, [\n (_ctx.partition.oldPartitionInfo)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_8, [\n _hoisted_9,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.oldPartitionInfo.size) + \" Bytes \", 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.partition.oldPartitionInfo)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"div\", _hoisted_12, _toDisplayString(_ctx.octToHex(_ctx.partition.oldPartitionInfo.hash, false, 16)), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"li\", null, [\n _hoisted_13,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.newPartitionInfo.size) + \" Bytes \", 1)\n ]),\n (_ctx.partition.newPartitionInfo.hash)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_14, [\n _hoisted_15,\n _createElementVNode(\"div\", _hoisted_16, _toDisplayString(_ctx.octToHex(_ctx.partition.newPartitionInfo.hash, false, 16)), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.partition.version)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_17, [\n _hoisted_18,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.version), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.readableTimestamp)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_19, [\n _hoisted_20,\n _createTextVNode(\" \" + _toDisplayString(_ctx.readableTimestamp), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"h4\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.toggle('showOPs'))),\n class: _normalizeClass({ active: _ctx.showOPs, inactive: !_ctx.showOPs })\n }, \" Total Operations: \" + _toDisplayString(_ctx.partition.operations.length), 3),\n (_ctx.showOPs)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_22, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.partition.operations, (operation) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: operation.dataSha256Hash\n }, [\n _createVNode(_component_OperationDetail, {\n operation: operation,\n mapType: _ctx.opType.mapType\n }, null, 8, [\"operation\", \"mapType\"])\n ]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ], 64))\n}","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\nimport * as $protobuf from \"protobufjs/minimal\";\n\n// Common aliases\nconst $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nconst $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\nexport const chromeos_update_engine = $root.chromeos_update_engine = (() => {\n\n /**\n * Namespace chromeos_update_engine.\n * @exports chromeos_update_engine\n * @namespace\n */\n const chromeos_update_engine = {};\n\n chromeos_update_engine.Extent = (function() {\n\n /**\n * Properties of an Extent.\n * @memberof chromeos_update_engine\n * @interface IExtent\n * @property {number|Long|null} [startBlock] Extent startBlock\n * @property {number|Long|null} [numBlocks] Extent numBlocks\n */\n\n /**\n * Constructs a new Extent.\n * @memberof chromeos_update_engine\n * @classdesc Represents an Extent.\n * @implements IExtent\n * @constructor\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n */\n function Extent(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Extent startBlock.\n * @member {number|Long} startBlock\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.startBlock = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Extent numBlocks.\n * @member {number|Long} numBlocks\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.numBlocks = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new Extent instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n * @returns {chromeos_update_engine.Extent} Extent instance\n */\n Extent.create = function create(properties) {\n return new Extent(properties);\n };\n\n /**\n * Encodes the specified Extent message. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startBlock != null && Object.hasOwnProperty.call(message, \"startBlock\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.startBlock);\n if (message.numBlocks != null && Object.hasOwnProperty.call(message, \"numBlocks\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.numBlocks);\n return writer;\n };\n\n /**\n * Encodes the specified Extent message, length delimited. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Extent();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.startBlock = reader.uint64();\n break;\n case 2:\n message.numBlocks = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an Extent message.\n * @function verify\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Extent.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (!$util.isInteger(message.startBlock) && !(message.startBlock && $util.isInteger(message.startBlock.low) && $util.isInteger(message.startBlock.high)))\n return \"startBlock: integer|Long expected\";\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (!$util.isInteger(message.numBlocks) && !(message.numBlocks && $util.isInteger(message.numBlocks.low) && $util.isInteger(message.numBlocks.high)))\n return \"numBlocks: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an Extent message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Extent} Extent\n */\n Extent.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Extent)\n return object;\n let message = new $root.chromeos_update_engine.Extent();\n if (object.startBlock != null)\n if ($util.Long)\n (message.startBlock = $util.Long.fromValue(object.startBlock)).unsigned = true;\n else if (typeof object.startBlock === \"string\")\n message.startBlock = parseInt(object.startBlock, 10);\n else if (typeof object.startBlock === \"number\")\n message.startBlock = object.startBlock;\n else if (typeof object.startBlock === \"object\")\n message.startBlock = new $util.LongBits(object.startBlock.low >>> 0, object.startBlock.high >>> 0).toNumber(true);\n if (object.numBlocks != null)\n if ($util.Long)\n (message.numBlocks = $util.Long.fromValue(object.numBlocks)).unsigned = true;\n else if (typeof object.numBlocks === \"string\")\n message.numBlocks = parseInt(object.numBlocks, 10);\n else if (typeof object.numBlocks === \"number\")\n message.numBlocks = object.numBlocks;\n else if (typeof object.numBlocks === \"object\")\n message.numBlocks = new $util.LongBits(object.numBlocks.low >>> 0, object.numBlocks.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from an Extent message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.Extent} message Extent\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Extent.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.startBlock = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.startBlock = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.numBlocks = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.numBlocks = options.longs === String ? \"0\" : 0;\n }\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (typeof message.startBlock === \"number\")\n object.startBlock = options.longs === String ? String(message.startBlock) : message.startBlock;\n else\n object.startBlock = options.longs === String ? $util.Long.prototype.toString.call(message.startBlock) : options.longs === Number ? new $util.LongBits(message.startBlock.low >>> 0, message.startBlock.high >>> 0).toNumber(true) : message.startBlock;\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (typeof message.numBlocks === \"number\")\n object.numBlocks = options.longs === String ? String(message.numBlocks) : message.numBlocks;\n else\n object.numBlocks = options.longs === String ? $util.Long.prototype.toString.call(message.numBlocks) : options.longs === Number ? new $util.LongBits(message.numBlocks.low >>> 0, message.numBlocks.high >>> 0).toNumber(true) : message.numBlocks;\n return object;\n };\n\n /**\n * Converts this Extent to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Extent\n * @instance\n * @returns {Object.} JSON object\n */\n Extent.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Extent;\n })();\n\n chromeos_update_engine.Signatures = (function() {\n\n /**\n * Properties of a Signatures.\n * @memberof chromeos_update_engine\n * @interface ISignatures\n * @property {Array.|null} [signatures] Signatures signatures\n */\n\n /**\n * Constructs a new Signatures.\n * @memberof chromeos_update_engine\n * @classdesc Represents a Signatures.\n * @implements ISignatures\n * @constructor\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n */\n function Signatures(properties) {\n this.signatures = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signatures signatures.\n * @member {Array.} signatures\n * @memberof chromeos_update_engine.Signatures\n * @instance\n */\n Signatures.prototype.signatures = $util.emptyArray;\n\n /**\n * Creates a new Signatures instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures} Signatures instance\n */\n Signatures.create = function create(properties) {\n return new Signatures(properties);\n };\n\n /**\n * Encodes the specified Signatures message. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.signatures != null && message.signatures.length)\n for (let i = 0; i < message.signatures.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.signatures[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Signatures message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.signatures && message.signatures.length))\n message.signatures = [];\n message.signatures.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signatures message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signatures.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.signatures != null && message.hasOwnProperty(\"signatures\")) {\n if (!Array.isArray(message.signatures))\n return \"signatures: array expected\";\n for (let i = 0; i < message.signatures.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.signatures[i]);\n if (error)\n return \"signatures.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a Signatures message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures} Signatures\n */\n Signatures.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures)\n return object;\n let message = new $root.chromeos_update_engine.Signatures();\n if (object.signatures) {\n if (!Array.isArray(object.signatures))\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: array expected\");\n message.signatures = [];\n for (let i = 0; i < object.signatures.length; ++i) {\n if (typeof object.signatures[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: object expected\");\n message.signatures[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.signatures[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Signatures message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.Signatures} message Signatures\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signatures.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.signatures = [];\n if (message.signatures && message.signatures.length) {\n object.signatures = [];\n for (let j = 0; j < message.signatures.length; ++j)\n object.signatures[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.signatures[j], options);\n }\n return object;\n };\n\n /**\n * Converts this Signatures to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures\n * @instance\n * @returns {Object.} JSON object\n */\n Signatures.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n Signatures.Signature = (function() {\n\n /**\n * Properties of a Signature.\n * @memberof chromeos_update_engine.Signatures\n * @interface ISignature\n * @property {number|null} [version] Signature version\n * @property {Uint8Array|null} [data] Signature data\n * @property {number|null} [unpaddedSignatureSize] Signature unpaddedSignatureSize\n */\n\n /**\n * Constructs a new Signature.\n * @memberof chromeos_update_engine.Signatures\n * @classdesc Represents a Signature.\n * @implements ISignature\n * @constructor\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n */\n function Signature(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signature version.\n * @member {number} version\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.version = 0;\n\n /**\n * Signature data.\n * @member {Uint8Array} data\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.data = $util.newBuffer([]);\n\n /**\n * Signature unpaddedSignatureSize.\n * @member {number} unpaddedSignatureSize\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.unpaddedSignatureSize = 0;\n\n /**\n * Creates a new Signature instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures.Signature} Signature instance\n */\n Signature.create = function create(properties) {\n return new Signature(properties);\n };\n\n /**\n * Encodes the specified Signature message. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.version);\n if (message.data != null && Object.hasOwnProperty.call(message, \"data\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.data);\n if (message.unpaddedSignatureSize != null && Object.hasOwnProperty.call(message, \"unpaddedSignatureSize\"))\n writer.uint32(/* id 3, wireType 5 =*/29).fixed32(message.unpaddedSignatureSize);\n return writer;\n };\n\n /**\n * Encodes the specified Signature message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures.Signature();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.version = reader.uint32();\n break;\n case 2:\n message.data = reader.bytes();\n break;\n case 3:\n message.unpaddedSignatureSize = reader.fixed32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signature message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signature.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version))\n return \"version: integer expected\";\n if (message.data != null && message.hasOwnProperty(\"data\"))\n if (!(message.data && typeof message.data.length === \"number\" || $util.isString(message.data)))\n return \"data: buffer expected\";\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n if (!$util.isInteger(message.unpaddedSignatureSize))\n return \"unpaddedSignatureSize: integer expected\";\n return null;\n };\n\n /**\n * Creates a Signature message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n */\n Signature.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures.Signature)\n return object;\n let message = new $root.chromeos_update_engine.Signatures.Signature();\n if (object.version != null)\n message.version = object.version >>> 0;\n if (object.data != null)\n if (typeof object.data === \"string\")\n $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);\n else if (object.data.length)\n message.data = object.data;\n if (object.unpaddedSignatureSize != null)\n message.unpaddedSignatureSize = object.unpaddedSignatureSize >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a Signature message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.Signature} message Signature\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signature.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.version = 0;\n if (options.bytes === String)\n object.data = \"\";\n else {\n object.data = [];\n if (options.bytes !== Array)\n object.data = $util.newBuffer(object.data);\n }\n object.unpaddedSignatureSize = 0;\n }\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.data != null && message.hasOwnProperty(\"data\"))\n object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n object.unpaddedSignatureSize = message.unpaddedSignatureSize;\n return object;\n };\n\n /**\n * Converts this Signature to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n * @returns {Object.} JSON object\n */\n Signature.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Signature;\n })();\n\n return Signatures;\n })();\n\n chromeos_update_engine.PartitionInfo = (function() {\n\n /**\n * Properties of a PartitionInfo.\n * @memberof chromeos_update_engine\n * @interface IPartitionInfo\n * @property {number|Long|null} [size] PartitionInfo size\n * @property {Uint8Array|null} [hash] PartitionInfo hash\n */\n\n /**\n * Constructs a new PartitionInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionInfo.\n * @implements IPartitionInfo\n * @constructor\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n */\n function PartitionInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionInfo size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * PartitionInfo hash.\n * @member {Uint8Array} hash\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.hash = $util.newBuffer([]);\n\n /**\n * Creates a new PartitionInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo instance\n */\n PartitionInfo.create = function create(properties) {\n return new PartitionInfo(properties);\n };\n\n /**\n * Encodes the specified PartitionInfo message. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.size);\n if (message.hash != null && Object.hasOwnProperty.call(message, \"hash\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.hash);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.size = reader.uint64();\n break;\n case 2:\n message.hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionInfo message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n if (!(message.hash && typeof message.hash.length === \"number\" || $util.isString(message.hash)))\n return \"hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates a PartitionInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n */\n PartitionInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionInfo)\n return object;\n let message = new $root.chromeos_update_engine.PartitionInfo();\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.hash != null)\n if (typeof object.hash === \"string\")\n $util.base64.decode(object.hash, message.hash = $util.newBuffer($util.base64.length(object.hash)), 0);\n else if (object.hash.length)\n message.hash = object.hash;\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.PartitionInfo} message PartitionInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.hash = \"\";\n else {\n object.hash = [];\n if (options.bytes !== Array)\n object.hash = $util.newBuffer(object.hash);\n }\n }\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n object.hash = options.bytes === String ? $util.base64.encode(message.hash, 0, message.hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.hash) : message.hash;\n return object;\n };\n\n /**\n * Converts this PartitionInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionInfo;\n })();\n\n chromeos_update_engine.ImageInfo = (function() {\n\n /**\n * Properties of an ImageInfo.\n * @memberof chromeos_update_engine\n * @interface IImageInfo\n * @property {string|null} [board] ImageInfo board\n * @property {string|null} [key] ImageInfo key\n * @property {string|null} [channel] ImageInfo channel\n * @property {string|null} [version] ImageInfo version\n * @property {string|null} [buildChannel] ImageInfo buildChannel\n * @property {string|null} [buildVersion] ImageInfo buildVersion\n */\n\n /**\n * Constructs a new ImageInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ImageInfo.\n * @implements IImageInfo\n * @constructor\n * @param {chromeos_update_engine.IImageInfo=} [properties] Properties to set\n */\n function ImageInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ImageInfo board.\n * @member {string} board\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.board = \"\";\n\n /**\n * ImageInfo key.\n * @member {string} key\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.key = \"\";\n\n /**\n * ImageInfo channel.\n * @member {string} channel\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.channel = \"\";\n\n /**\n * ImageInfo version.\n * @member {string} version\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.version = \"\";\n\n /**\n * ImageInfo buildChannel.\n * @member {string} buildChannel\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.buildChannel = \"\";\n\n /**\n * ImageInfo buildVersion.\n * @member {string} buildVersion\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.buildVersion = \"\";\n\n /**\n * Creates a new ImageInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.IImageInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo instance\n */\n ImageInfo.create = function create(properties) {\n return new ImageInfo(properties);\n };\n\n /**\n * Encodes the specified ImageInfo message. Does not implicitly {@link chromeos_update_engine.ImageInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.IImageInfo} message ImageInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ImageInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.board != null && Object.hasOwnProperty.call(message, \"board\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.board);\n if (message.key != null && Object.hasOwnProperty.call(message, \"key\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.key);\n if (message.channel != null && Object.hasOwnProperty.call(message, \"channel\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.channel);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.version);\n if (message.buildChannel != null && Object.hasOwnProperty.call(message, \"buildChannel\"))\n writer.uint32(/* id 5, wireType 2 =*/42).string(message.buildChannel);\n if (message.buildVersion != null && Object.hasOwnProperty.call(message, \"buildVersion\"))\n writer.uint32(/* id 6, wireType 2 =*/50).string(message.buildVersion);\n return writer;\n };\n\n /**\n * Encodes the specified ImageInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ImageInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.IImageInfo} message ImageInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ImageInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ImageInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ImageInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ImageInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.board = reader.string();\n break;\n case 2:\n message.key = reader.string();\n break;\n case 3:\n message.channel = reader.string();\n break;\n case 4:\n message.version = reader.string();\n break;\n case 5:\n message.buildChannel = reader.string();\n break;\n case 6:\n message.buildVersion = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ImageInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ImageInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ImageInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ImageInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.board != null && message.hasOwnProperty(\"board\"))\n if (!$util.isString(message.board))\n return \"board: string expected\";\n if (message.key != null && message.hasOwnProperty(\"key\"))\n if (!$util.isString(message.key))\n return \"key: string expected\";\n if (message.channel != null && message.hasOwnProperty(\"channel\"))\n if (!$util.isString(message.channel))\n return \"channel: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.buildChannel != null && message.hasOwnProperty(\"buildChannel\"))\n if (!$util.isString(message.buildChannel))\n return \"buildChannel: string expected\";\n if (message.buildVersion != null && message.hasOwnProperty(\"buildVersion\"))\n if (!$util.isString(message.buildVersion))\n return \"buildVersion: string expected\";\n return null;\n };\n\n /**\n * Creates an ImageInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo\n */\n ImageInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ImageInfo)\n return object;\n let message = new $root.chromeos_update_engine.ImageInfo();\n if (object.board != null)\n message.board = String(object.board);\n if (object.key != null)\n message.key = String(object.key);\n if (object.channel != null)\n message.channel = String(object.channel);\n if (object.version != null)\n message.version = String(object.version);\n if (object.buildChannel != null)\n message.buildChannel = String(object.buildChannel);\n if (object.buildVersion != null)\n message.buildVersion = String(object.buildVersion);\n return message;\n };\n\n /**\n * Creates a plain object from an ImageInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.ImageInfo} message ImageInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ImageInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.board = \"\";\n object.key = \"\";\n object.channel = \"\";\n object.version = \"\";\n object.buildChannel = \"\";\n object.buildVersion = \"\";\n }\n if (message.board != null && message.hasOwnProperty(\"board\"))\n object.board = message.board;\n if (message.key != null && message.hasOwnProperty(\"key\"))\n object.key = message.key;\n if (message.channel != null && message.hasOwnProperty(\"channel\"))\n object.channel = message.channel;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.buildChannel != null && message.hasOwnProperty(\"buildChannel\"))\n object.buildChannel = message.buildChannel;\n if (message.buildVersion != null && message.hasOwnProperty(\"buildVersion\"))\n object.buildVersion = message.buildVersion;\n return object;\n };\n\n /**\n * Converts this ImageInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ImageInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ImageInfo;\n })();\n\n chromeos_update_engine.InstallOperation = (function() {\n\n /**\n * Properties of an InstallOperation.\n * @memberof chromeos_update_engine\n * @interface IInstallOperation\n * @property {chromeos_update_engine.InstallOperation.Type} type InstallOperation type\n * @property {number|Long|null} [dataOffset] InstallOperation dataOffset\n * @property {number|Long|null} [dataLength] InstallOperation dataLength\n * @property {Array.|null} [srcExtents] InstallOperation srcExtents\n * @property {number|Long|null} [srcLength] InstallOperation srcLength\n * @property {Array.|null} [dstExtents] InstallOperation dstExtents\n * @property {number|Long|null} [dstLength] InstallOperation dstLength\n * @property {Uint8Array|null} [dataSha256Hash] InstallOperation dataSha256Hash\n * @property {Uint8Array|null} [srcSha256Hash] InstallOperation srcSha256Hash\n */\n\n /**\n * Constructs a new InstallOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents an InstallOperation.\n * @implements IInstallOperation\n * @constructor\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n */\n function InstallOperation(properties) {\n this.srcExtents = [];\n this.dstExtents = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * InstallOperation type.\n * @member {chromeos_update_engine.InstallOperation.Type} type\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.type = 0;\n\n /**\n * InstallOperation dataOffset.\n * @member {number|Long} dataOffset\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataLength.\n * @member {number|Long} dataLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation srcExtents.\n * @member {Array.} srcExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcExtents = $util.emptyArray;\n\n /**\n * InstallOperation srcLength.\n * @member {number|Long} srcLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dstExtents.\n * @member {Array.} dstExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstExtents = $util.emptyArray;\n\n /**\n * InstallOperation dstLength.\n * @member {number|Long} dstLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataSha256Hash.\n * @member {Uint8Array} dataSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataSha256Hash = $util.newBuffer([]);\n\n /**\n * InstallOperation srcSha256Hash.\n * @member {Uint8Array} srcSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcSha256Hash = $util.newBuffer([]);\n\n /**\n * Creates a new InstallOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation instance\n */\n InstallOperation.create = function create(properties) {\n return new InstallOperation(properties);\n };\n\n /**\n * Encodes the specified InstallOperation message. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.dataOffset != null && Object.hasOwnProperty.call(message, \"dataOffset\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.dataOffset);\n if (message.dataLength != null && Object.hasOwnProperty.call(message, \"dataLength\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.dataLength);\n if (message.srcExtents != null && message.srcExtents.length)\n for (let i = 0; i < message.srcExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.srcExtents[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.srcLength != null && Object.hasOwnProperty.call(message, \"srcLength\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.srcLength);\n if (message.dstExtents != null && message.dstExtents.length)\n for (let i = 0; i < message.dstExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.dstExtents[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.dstLength != null && Object.hasOwnProperty.call(message, \"dstLength\"))\n writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.dstLength);\n if (message.dataSha256Hash != null && Object.hasOwnProperty.call(message, \"dataSha256Hash\"))\n writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.dataSha256Hash);\n if (message.srcSha256Hash != null && Object.hasOwnProperty.call(message, \"srcSha256Hash\"))\n writer.uint32(/* id 9, wireType 2 =*/74).bytes(message.srcSha256Hash);\n return writer;\n };\n\n /**\n * Encodes the specified InstallOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.InstallOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.dataOffset = reader.uint64();\n break;\n case 3:\n message.dataLength = reader.uint64();\n break;\n case 4:\n if (!(message.srcExtents && message.srcExtents.length))\n message.srcExtents = [];\n message.srcExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 5:\n message.srcLength = reader.uint64();\n break;\n case 6:\n if (!(message.dstExtents && message.dstExtents.length))\n message.dstExtents = [];\n message.dstExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 7:\n message.dstLength = reader.uint64();\n break;\n case 8:\n message.dataSha256Hash = reader.bytes();\n break;\n case 9:\n message.srcSha256Hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"type\"))\n throw $util.ProtocolError(\"missing required 'type'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an InstallOperation message.\n * @function verify\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n InstallOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 8:\n case 6:\n case 7:\n case 10:\n case 9:\n case 11:\n case 12:\n case 13:\n break;\n }\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (!$util.isInteger(message.dataOffset) && !(message.dataOffset && $util.isInteger(message.dataOffset.low) && $util.isInteger(message.dataOffset.high)))\n return \"dataOffset: integer|Long expected\";\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (!$util.isInteger(message.dataLength) && !(message.dataLength && $util.isInteger(message.dataLength.low) && $util.isInteger(message.dataLength.high)))\n return \"dataLength: integer|Long expected\";\n if (message.srcExtents != null && message.hasOwnProperty(\"srcExtents\")) {\n if (!Array.isArray(message.srcExtents))\n return \"srcExtents: array expected\";\n for (let i = 0; i < message.srcExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtents[i]);\n if (error)\n return \"srcExtents.\" + error;\n }\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (!$util.isInteger(message.srcLength) && !(message.srcLength && $util.isInteger(message.srcLength.low) && $util.isInteger(message.srcLength.high)))\n return \"srcLength: integer|Long expected\";\n if (message.dstExtents != null && message.hasOwnProperty(\"dstExtents\")) {\n if (!Array.isArray(message.dstExtents))\n return \"dstExtents: array expected\";\n for (let i = 0; i < message.dstExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtents[i]);\n if (error)\n return \"dstExtents.\" + error;\n }\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (!$util.isInteger(message.dstLength) && !(message.dstLength && $util.isInteger(message.dstLength.low) && $util.isInteger(message.dstLength.high)))\n return \"dstLength: integer|Long expected\";\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n if (!(message.dataSha256Hash && typeof message.dataSha256Hash.length === \"number\" || $util.isString(message.dataSha256Hash)))\n return \"dataSha256Hash: buffer expected\";\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n if (!(message.srcSha256Hash && typeof message.srcSha256Hash.length === \"number\" || $util.isString(message.srcSha256Hash)))\n return \"srcSha256Hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates an InstallOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n */\n InstallOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.InstallOperation)\n return object;\n let message = new $root.chromeos_update_engine.InstallOperation();\n switch (object.type) {\n case \"REPLACE\":\n case 0:\n message.type = 0;\n break;\n case \"REPLACE_BZ\":\n case 1:\n message.type = 1;\n break;\n case \"MOVE\":\n case 2:\n message.type = 2;\n break;\n case \"BSDIFF\":\n case 3:\n message.type = 3;\n break;\n case \"SOURCE_COPY\":\n case 4:\n message.type = 4;\n break;\n case \"SOURCE_BSDIFF\":\n case 5:\n message.type = 5;\n break;\n case \"REPLACE_XZ\":\n case 8:\n message.type = 8;\n break;\n case \"ZERO\":\n case 6:\n message.type = 6;\n break;\n case \"DISCARD\":\n case 7:\n message.type = 7;\n break;\n case \"BROTLI_BSDIFF\":\n case 10:\n message.type = 10;\n break;\n case \"PUFFDIFF\":\n case 9:\n message.type = 9;\n break;\n case \"ZUCCHINI\":\n case 11:\n message.type = 11;\n break;\n case \"LZ4DIFF_BSDIFF\":\n case 12:\n message.type = 12;\n break;\n case \"LZ4DIFF_PUFFDIFF\":\n case 13:\n message.type = 13;\n break;\n }\n if (object.dataOffset != null)\n if ($util.Long)\n (message.dataOffset = $util.Long.fromValue(object.dataOffset)).unsigned = true;\n else if (typeof object.dataOffset === \"string\")\n message.dataOffset = parseInt(object.dataOffset, 10);\n else if (typeof object.dataOffset === \"number\")\n message.dataOffset = object.dataOffset;\n else if (typeof object.dataOffset === \"object\")\n message.dataOffset = new $util.LongBits(object.dataOffset.low >>> 0, object.dataOffset.high >>> 0).toNumber(true);\n if (object.dataLength != null)\n if ($util.Long)\n (message.dataLength = $util.Long.fromValue(object.dataLength)).unsigned = true;\n else if (typeof object.dataLength === \"string\")\n message.dataLength = parseInt(object.dataLength, 10);\n else if (typeof object.dataLength === \"number\")\n message.dataLength = object.dataLength;\n else if (typeof object.dataLength === \"object\")\n message.dataLength = new $util.LongBits(object.dataLength.low >>> 0, object.dataLength.high >>> 0).toNumber(true);\n if (object.srcExtents) {\n if (!Array.isArray(object.srcExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: array expected\");\n message.srcExtents = [];\n for (let i = 0; i < object.srcExtents.length; ++i) {\n if (typeof object.srcExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: object expected\");\n message.srcExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.srcExtents[i]);\n }\n }\n if (object.srcLength != null)\n if ($util.Long)\n (message.srcLength = $util.Long.fromValue(object.srcLength)).unsigned = true;\n else if (typeof object.srcLength === \"string\")\n message.srcLength = parseInt(object.srcLength, 10);\n else if (typeof object.srcLength === \"number\")\n message.srcLength = object.srcLength;\n else if (typeof object.srcLength === \"object\")\n message.srcLength = new $util.LongBits(object.srcLength.low >>> 0, object.srcLength.high >>> 0).toNumber(true);\n if (object.dstExtents) {\n if (!Array.isArray(object.dstExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: array expected\");\n message.dstExtents = [];\n for (let i = 0; i < object.dstExtents.length; ++i) {\n if (typeof object.dstExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: object expected\");\n message.dstExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.dstExtents[i]);\n }\n }\n if (object.dstLength != null)\n if ($util.Long)\n (message.dstLength = $util.Long.fromValue(object.dstLength)).unsigned = true;\n else if (typeof object.dstLength === \"string\")\n message.dstLength = parseInt(object.dstLength, 10);\n else if (typeof object.dstLength === \"number\")\n message.dstLength = object.dstLength;\n else if (typeof object.dstLength === \"object\")\n message.dstLength = new $util.LongBits(object.dstLength.low >>> 0, object.dstLength.high >>> 0).toNumber(true);\n if (object.dataSha256Hash != null)\n if (typeof object.dataSha256Hash === \"string\")\n $util.base64.decode(object.dataSha256Hash, message.dataSha256Hash = $util.newBuffer($util.base64.length(object.dataSha256Hash)), 0);\n else if (object.dataSha256Hash.length)\n message.dataSha256Hash = object.dataSha256Hash;\n if (object.srcSha256Hash != null)\n if (typeof object.srcSha256Hash === \"string\")\n $util.base64.decode(object.srcSha256Hash, message.srcSha256Hash = $util.newBuffer($util.base64.length(object.srcSha256Hash)), 0);\n else if (object.srcSha256Hash.length)\n message.srcSha256Hash = object.srcSha256Hash;\n return message;\n };\n\n /**\n * Creates a plain object from an InstallOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.InstallOperation} message InstallOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n InstallOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.srcExtents = [];\n object.dstExtents = [];\n }\n if (options.defaults) {\n object.type = options.enums === String ? \"REPLACE\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.srcLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.srcLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dstLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dstLength = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.dataSha256Hash = \"\";\n else {\n object.dataSha256Hash = [];\n if (options.bytes !== Array)\n object.dataSha256Hash = $util.newBuffer(object.dataSha256Hash);\n }\n if (options.bytes === String)\n object.srcSha256Hash = \"\";\n else {\n object.srcSha256Hash = [];\n if (options.bytes !== Array)\n object.srcSha256Hash = $util.newBuffer(object.srcSha256Hash);\n }\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.InstallOperation.Type[message.type] : message.type;\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (typeof message.dataOffset === \"number\")\n object.dataOffset = options.longs === String ? String(message.dataOffset) : message.dataOffset;\n else\n object.dataOffset = options.longs === String ? $util.Long.prototype.toString.call(message.dataOffset) : options.longs === Number ? new $util.LongBits(message.dataOffset.low >>> 0, message.dataOffset.high >>> 0).toNumber(true) : message.dataOffset;\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (typeof message.dataLength === \"number\")\n object.dataLength = options.longs === String ? String(message.dataLength) : message.dataLength;\n else\n object.dataLength = options.longs === String ? $util.Long.prototype.toString.call(message.dataLength) : options.longs === Number ? new $util.LongBits(message.dataLength.low >>> 0, message.dataLength.high >>> 0).toNumber(true) : message.dataLength;\n if (message.srcExtents && message.srcExtents.length) {\n object.srcExtents = [];\n for (let j = 0; j < message.srcExtents.length; ++j)\n object.srcExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.srcExtents[j], options);\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (typeof message.srcLength === \"number\")\n object.srcLength = options.longs === String ? String(message.srcLength) : message.srcLength;\n else\n object.srcLength = options.longs === String ? $util.Long.prototype.toString.call(message.srcLength) : options.longs === Number ? new $util.LongBits(message.srcLength.low >>> 0, message.srcLength.high >>> 0).toNumber(true) : message.srcLength;\n if (message.dstExtents && message.dstExtents.length) {\n object.dstExtents = [];\n for (let j = 0; j < message.dstExtents.length; ++j)\n object.dstExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.dstExtents[j], options);\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (typeof message.dstLength === \"number\")\n object.dstLength = options.longs === String ? String(message.dstLength) : message.dstLength;\n else\n object.dstLength = options.longs === String ? $util.Long.prototype.toString.call(message.dstLength) : options.longs === Number ? new $util.LongBits(message.dstLength.low >>> 0, message.dstLength.high >>> 0).toNumber(true) : message.dstLength;\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n object.dataSha256Hash = options.bytes === String ? $util.base64.encode(message.dataSha256Hash, 0, message.dataSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.dataSha256Hash) : message.dataSha256Hash;\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n object.srcSha256Hash = options.bytes === String ? $util.base64.encode(message.srcSha256Hash, 0, message.srcSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.srcSha256Hash) : message.srcSha256Hash;\n return object;\n };\n\n /**\n * Converts this InstallOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n * @returns {Object.} JSON object\n */\n InstallOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.InstallOperation.Type\n * @enum {number}\n * @property {number} REPLACE=0 REPLACE value\n * @property {number} REPLACE_BZ=1 REPLACE_BZ value\n * @property {number} MOVE=2 MOVE value\n * @property {number} BSDIFF=3 BSDIFF value\n * @property {number} SOURCE_COPY=4 SOURCE_COPY value\n * @property {number} SOURCE_BSDIFF=5 SOURCE_BSDIFF value\n * @property {number} REPLACE_XZ=8 REPLACE_XZ value\n * @property {number} ZERO=6 ZERO value\n * @property {number} DISCARD=7 DISCARD value\n * @property {number} BROTLI_BSDIFF=10 BROTLI_BSDIFF value\n * @property {number} PUFFDIFF=9 PUFFDIFF value\n * @property {number} ZUCCHINI=11 ZUCCHINI value\n * @property {number} LZ4DIFF_BSDIFF=12 LZ4DIFF_BSDIFF value\n * @property {number} LZ4DIFF_PUFFDIFF=13 LZ4DIFF_PUFFDIFF value\n */\n InstallOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"REPLACE\"] = 0;\n values[valuesById[1] = \"REPLACE_BZ\"] = 1;\n values[valuesById[2] = \"MOVE\"] = 2;\n values[valuesById[3] = \"BSDIFF\"] = 3;\n values[valuesById[4] = \"SOURCE_COPY\"] = 4;\n values[valuesById[5] = \"SOURCE_BSDIFF\"] = 5;\n values[valuesById[8] = \"REPLACE_XZ\"] = 8;\n values[valuesById[6] = \"ZERO\"] = 6;\n values[valuesById[7] = \"DISCARD\"] = 7;\n values[valuesById[10] = \"BROTLI_BSDIFF\"] = 10;\n values[valuesById[9] = \"PUFFDIFF\"] = 9;\n values[valuesById[11] = \"ZUCCHINI\"] = 11;\n values[valuesById[12] = \"LZ4DIFF_BSDIFF\"] = 12;\n values[valuesById[13] = \"LZ4DIFF_PUFFDIFF\"] = 13;\n return values;\n })();\n\n return InstallOperation;\n })();\n\n chromeos_update_engine.CowMergeOperation = (function() {\n\n /**\n * Properties of a CowMergeOperation.\n * @memberof chromeos_update_engine\n * @interface ICowMergeOperation\n * @property {chromeos_update_engine.CowMergeOperation.Type|null} [type] CowMergeOperation type\n * @property {chromeos_update_engine.IExtent|null} [srcExtent] CowMergeOperation srcExtent\n * @property {chromeos_update_engine.IExtent|null} [dstExtent] CowMergeOperation dstExtent\n * @property {number|null} [srcOffset] CowMergeOperation srcOffset\n */\n\n /**\n * Constructs a new CowMergeOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents a CowMergeOperation.\n * @implements ICowMergeOperation\n * @constructor\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n */\n function CowMergeOperation(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * CowMergeOperation type.\n * @member {chromeos_update_engine.CowMergeOperation.Type} type\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.type = 0;\n\n /**\n * CowMergeOperation srcExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} srcExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcExtent = null;\n\n /**\n * CowMergeOperation dstExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} dstExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.dstExtent = null;\n\n /**\n * CowMergeOperation srcOffset.\n * @member {number} srcOffset\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcOffset = 0;\n\n /**\n * Creates a new CowMergeOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation instance\n */\n CowMergeOperation.create = function create(properties) {\n return new CowMergeOperation(properties);\n };\n\n /**\n * Encodes the specified CowMergeOperation message. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.srcExtent != null && Object.hasOwnProperty.call(message, \"srcExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.srcExtent, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.dstExtent != null && Object.hasOwnProperty.call(message, \"dstExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.dstExtent, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.srcOffset != null && Object.hasOwnProperty.call(message, \"srcOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.srcOffset);\n return writer;\n };\n\n /**\n * Encodes the specified CowMergeOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.CowMergeOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.srcExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 3:\n message.dstExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 4:\n message.srcOffset = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a CowMergeOperation message.\n * @function verify\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n CowMergeOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtent);\n if (error)\n return \"srcExtent.\" + error;\n }\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtent);\n if (error)\n return \"dstExtent.\" + error;\n }\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n if (!$util.isInteger(message.srcOffset))\n return \"srcOffset: integer expected\";\n return null;\n };\n\n /**\n * Creates a CowMergeOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n */\n CowMergeOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.CowMergeOperation)\n return object;\n let message = new $root.chromeos_update_engine.CowMergeOperation();\n switch (object.type) {\n case \"COW_COPY\":\n case 0:\n message.type = 0;\n break;\n case \"COW_XOR\":\n case 1:\n message.type = 1;\n break;\n case \"COW_REPLACE\":\n case 2:\n message.type = 2;\n break;\n }\n if (object.srcExtent != null) {\n if (typeof object.srcExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.srcExtent: object expected\");\n message.srcExtent = $root.chromeos_update_engine.Extent.fromObject(object.srcExtent);\n }\n if (object.dstExtent != null) {\n if (typeof object.dstExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.dstExtent: object expected\");\n message.dstExtent = $root.chromeos_update_engine.Extent.fromObject(object.dstExtent);\n }\n if (object.srcOffset != null)\n message.srcOffset = object.srcOffset >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a CowMergeOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.CowMergeOperation} message CowMergeOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n CowMergeOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"COW_COPY\" : 0;\n object.srcExtent = null;\n object.dstExtent = null;\n object.srcOffset = 0;\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.CowMergeOperation.Type[message.type] : message.type;\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\"))\n object.srcExtent = $root.chromeos_update_engine.Extent.toObject(message.srcExtent, options);\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\"))\n object.dstExtent = $root.chromeos_update_engine.Extent.toObject(message.dstExtent, options);\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n object.srcOffset = message.srcOffset;\n return object;\n };\n\n /**\n * Converts this CowMergeOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n * @returns {Object.} JSON object\n */\n CowMergeOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.CowMergeOperation.Type\n * @enum {number}\n * @property {number} COW_COPY=0 COW_COPY value\n * @property {number} COW_XOR=1 COW_XOR value\n * @property {number} COW_REPLACE=2 COW_REPLACE value\n */\n CowMergeOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"COW_COPY\"] = 0;\n values[valuesById[1] = \"COW_XOR\"] = 1;\n values[valuesById[2] = \"COW_REPLACE\"] = 2;\n return values;\n })();\n\n return CowMergeOperation;\n })();\n\n chromeos_update_engine.PartitionUpdate = (function() {\n\n /**\n * Properties of a PartitionUpdate.\n * @memberof chromeos_update_engine\n * @interface IPartitionUpdate\n * @property {string} partitionName PartitionUpdate partitionName\n * @property {boolean|null} [runPostinstall] PartitionUpdate runPostinstall\n * @property {string|null} [postinstallPath] PartitionUpdate postinstallPath\n * @property {string|null} [filesystemType] PartitionUpdate filesystemType\n * @property {Array.|null} [newPartitionSignature] PartitionUpdate newPartitionSignature\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldPartitionInfo] PartitionUpdate oldPartitionInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newPartitionInfo] PartitionUpdate newPartitionInfo\n * @property {Array.|null} [operations] PartitionUpdate operations\n * @property {boolean|null} [postinstallOptional] PartitionUpdate postinstallOptional\n * @property {chromeos_update_engine.IExtent|null} [hashTreeDataExtent] PartitionUpdate hashTreeDataExtent\n * @property {chromeos_update_engine.IExtent|null} [hashTreeExtent] PartitionUpdate hashTreeExtent\n * @property {string|null} [hashTreeAlgorithm] PartitionUpdate hashTreeAlgorithm\n * @property {Uint8Array|null} [hashTreeSalt] PartitionUpdate hashTreeSalt\n * @property {chromeos_update_engine.IExtent|null} [fecDataExtent] PartitionUpdate fecDataExtent\n * @property {chromeos_update_engine.IExtent|null} [fecExtent] PartitionUpdate fecExtent\n * @property {number|null} [fecRoots] PartitionUpdate fecRoots\n * @property {string|null} [version] PartitionUpdate version\n * @property {Array.|null} [mergeOperations] PartitionUpdate mergeOperations\n * @property {number|Long|null} [estimateCowSize] PartitionUpdate estimateCowSize\n */\n\n /**\n * Constructs a new PartitionUpdate.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionUpdate.\n * @implements IPartitionUpdate\n * @constructor\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n */\n function PartitionUpdate(properties) {\n this.newPartitionSignature = [];\n this.operations = [];\n this.mergeOperations = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionUpdate partitionName.\n * @member {string} partitionName\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.partitionName = \"\";\n\n /**\n * PartitionUpdate runPostinstall.\n * @member {boolean} runPostinstall\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.runPostinstall = false;\n\n /**\n * PartitionUpdate postinstallPath.\n * @member {string} postinstallPath\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallPath = \"\";\n\n /**\n * PartitionUpdate filesystemType.\n * @member {string} filesystemType\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.filesystemType = \"\";\n\n /**\n * PartitionUpdate newPartitionSignature.\n * @member {Array.} newPartitionSignature\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionSignature = $util.emptyArray;\n\n /**\n * PartitionUpdate oldPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.oldPartitionInfo = null;\n\n /**\n * PartitionUpdate newPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionInfo = null;\n\n /**\n * PartitionUpdate operations.\n * @member {Array.} operations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.operations = $util.emptyArray;\n\n /**\n * PartitionUpdate postinstallOptional.\n * @member {boolean} postinstallOptional\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallOptional = false;\n\n /**\n * PartitionUpdate hashTreeDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeDataExtent = null;\n\n /**\n * PartitionUpdate hashTreeExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeExtent = null;\n\n /**\n * PartitionUpdate hashTreeAlgorithm.\n * @member {string} hashTreeAlgorithm\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeAlgorithm = \"\";\n\n /**\n * PartitionUpdate hashTreeSalt.\n * @member {Uint8Array} hashTreeSalt\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeSalt = $util.newBuffer([]);\n\n /**\n * PartitionUpdate fecDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecDataExtent = null;\n\n /**\n * PartitionUpdate fecExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecExtent = null;\n\n /**\n * PartitionUpdate fecRoots.\n * @member {number} fecRoots\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecRoots = 2;\n\n /**\n * PartitionUpdate version.\n * @member {string} version\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.version = \"\";\n\n /**\n * PartitionUpdate mergeOperations.\n * @member {Array.} mergeOperations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.mergeOperations = $util.emptyArray;\n\n /**\n * PartitionUpdate estimateCowSize.\n * @member {number|Long} estimateCowSize\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.estimateCowSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new PartitionUpdate instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate instance\n */\n PartitionUpdate.create = function create(properties) {\n return new PartitionUpdate(properties);\n };\n\n /**\n * Encodes the specified PartitionUpdate message. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.partitionName);\n if (message.runPostinstall != null && Object.hasOwnProperty.call(message, \"runPostinstall\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.runPostinstall);\n if (message.postinstallPath != null && Object.hasOwnProperty.call(message, \"postinstallPath\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.postinstallPath);\n if (message.filesystemType != null && Object.hasOwnProperty.call(message, \"filesystemType\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.filesystemType);\n if (message.newPartitionSignature != null && message.newPartitionSignature.length)\n for (let i = 0; i < message.newPartitionSignature.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.newPartitionSignature[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.oldPartitionInfo != null && Object.hasOwnProperty.call(message, \"oldPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldPartitionInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newPartitionInfo != null && Object.hasOwnProperty.call(message, \"newPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newPartitionInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.operations != null && message.operations.length)\n for (let i = 0; i < message.operations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.operations[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.postinstallOptional != null && Object.hasOwnProperty.call(message, \"postinstallOptional\"))\n writer.uint32(/* id 9, wireType 0 =*/72).bool(message.postinstallOptional);\n if (message.hashTreeDataExtent != null && Object.hasOwnProperty.call(message, \"hashTreeDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeDataExtent, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.hashTreeExtent != null && Object.hasOwnProperty.call(message, \"hashTreeExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeExtent, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.hashTreeAlgorithm != null && Object.hasOwnProperty.call(message, \"hashTreeAlgorithm\"))\n writer.uint32(/* id 12, wireType 2 =*/98).string(message.hashTreeAlgorithm);\n if (message.hashTreeSalt != null && Object.hasOwnProperty.call(message, \"hashTreeSalt\"))\n writer.uint32(/* id 13, wireType 2 =*/106).bytes(message.hashTreeSalt);\n if (message.fecDataExtent != null && Object.hasOwnProperty.call(message, \"fecDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecDataExtent, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.fecExtent != null && Object.hasOwnProperty.call(message, \"fecExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecExtent, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.fecRoots != null && Object.hasOwnProperty.call(message, \"fecRoots\"))\n writer.uint32(/* id 16, wireType 0 =*/128).uint32(message.fecRoots);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 17, wireType 2 =*/138).string(message.version);\n if (message.mergeOperations != null && message.mergeOperations.length)\n for (let i = 0; i < message.mergeOperations.length; ++i)\n $root.chromeos_update_engine.CowMergeOperation.encode(message.mergeOperations[i], writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n if (message.estimateCowSize != null && Object.hasOwnProperty.call(message, \"estimateCowSize\"))\n writer.uint32(/* id 19, wireType 0 =*/152).uint64(message.estimateCowSize);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionUpdate message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionUpdate();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.partitionName = reader.string();\n break;\n case 2:\n message.runPostinstall = reader.bool();\n break;\n case 3:\n message.postinstallPath = reader.string();\n break;\n case 4:\n message.filesystemType = reader.string();\n break;\n case 5:\n if (!(message.newPartitionSignature && message.newPartitionSignature.length))\n message.newPartitionSignature = [];\n message.newPartitionSignature.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n case 6:\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n if (!(message.operations && message.operations.length))\n message.operations = [];\n message.operations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 9:\n message.postinstallOptional = reader.bool();\n break;\n case 10:\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 11:\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 12:\n message.hashTreeAlgorithm = reader.string();\n break;\n case 13:\n message.hashTreeSalt = reader.bytes();\n break;\n case 14:\n message.fecDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 15:\n message.fecExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 16:\n message.fecRoots = reader.uint32();\n break;\n case 17:\n message.version = reader.string();\n break;\n case 18:\n if (!(message.mergeOperations && message.mergeOperations.length))\n message.mergeOperations = [];\n message.mergeOperations.push($root.chromeos_update_engine.CowMergeOperation.decode(reader, reader.uint32()));\n break;\n case 19:\n message.estimateCowSize = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"partitionName\"))\n throw $util.ProtocolError(\"missing required 'partitionName'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionUpdate message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionUpdate.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.partitionName))\n return \"partitionName: string expected\";\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n if (typeof message.runPostinstall !== \"boolean\")\n return \"runPostinstall: boolean expected\";\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n if (!$util.isString(message.postinstallPath))\n return \"postinstallPath: string expected\";\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n if (!$util.isString(message.filesystemType))\n return \"filesystemType: string expected\";\n if (message.newPartitionSignature != null && message.hasOwnProperty(\"newPartitionSignature\")) {\n if (!Array.isArray(message.newPartitionSignature))\n return \"newPartitionSignature: array expected\";\n for (let i = 0; i < message.newPartitionSignature.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.newPartitionSignature[i]);\n if (error)\n return \"newPartitionSignature.\" + error;\n }\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldPartitionInfo);\n if (error)\n return \"oldPartitionInfo.\" + error;\n }\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newPartitionInfo);\n if (error)\n return \"newPartitionInfo.\" + error;\n }\n if (message.operations != null && message.hasOwnProperty(\"operations\")) {\n if (!Array.isArray(message.operations))\n return \"operations: array expected\";\n for (let i = 0; i < message.operations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.operations[i]);\n if (error)\n return \"operations.\" + error;\n }\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n if (typeof message.postinstallOptional !== \"boolean\")\n return \"postinstallOptional: boolean expected\";\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeDataExtent);\n if (error)\n return \"hashTreeDataExtent.\" + error;\n }\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeExtent);\n if (error)\n return \"hashTreeExtent.\" + error;\n }\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n if (!$util.isString(message.hashTreeAlgorithm))\n return \"hashTreeAlgorithm: string expected\";\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n if (!(message.hashTreeSalt && typeof message.hashTreeSalt.length === \"number\" || $util.isString(message.hashTreeSalt)))\n return \"hashTreeSalt: buffer expected\";\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecDataExtent);\n if (error)\n return \"fecDataExtent.\" + error;\n }\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecExtent);\n if (error)\n return \"fecExtent.\" + error;\n }\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n if (!$util.isInteger(message.fecRoots))\n return \"fecRoots: integer expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.mergeOperations != null && message.hasOwnProperty(\"mergeOperations\")) {\n if (!Array.isArray(message.mergeOperations))\n return \"mergeOperations: array expected\";\n for (let i = 0; i < message.mergeOperations.length; ++i) {\n let error = $root.chromeos_update_engine.CowMergeOperation.verify(message.mergeOperations[i]);\n if (error)\n return \"mergeOperations.\" + error;\n }\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (!$util.isInteger(message.estimateCowSize) && !(message.estimateCowSize && $util.isInteger(message.estimateCowSize.low) && $util.isInteger(message.estimateCowSize.high)))\n return \"estimateCowSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a PartitionUpdate message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n */\n PartitionUpdate.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionUpdate)\n return object;\n let message = new $root.chromeos_update_engine.PartitionUpdate();\n if (object.partitionName != null)\n message.partitionName = String(object.partitionName);\n if (object.runPostinstall != null)\n message.runPostinstall = Boolean(object.runPostinstall);\n if (object.postinstallPath != null)\n message.postinstallPath = String(object.postinstallPath);\n if (object.filesystemType != null)\n message.filesystemType = String(object.filesystemType);\n if (object.newPartitionSignature) {\n if (!Array.isArray(object.newPartitionSignature))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: array expected\");\n message.newPartitionSignature = [];\n for (let i = 0; i < object.newPartitionSignature.length; ++i) {\n if (typeof object.newPartitionSignature[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: object expected\");\n message.newPartitionSignature[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.newPartitionSignature[i]);\n }\n }\n if (object.oldPartitionInfo != null) {\n if (typeof object.oldPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.oldPartitionInfo: object expected\");\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldPartitionInfo);\n }\n if (object.newPartitionInfo != null) {\n if (typeof object.newPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionInfo: object expected\");\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newPartitionInfo);\n }\n if (object.operations) {\n if (!Array.isArray(object.operations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: array expected\");\n message.operations = [];\n for (let i = 0; i < object.operations.length; ++i) {\n if (typeof object.operations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: object expected\");\n message.operations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.operations[i]);\n }\n }\n if (object.postinstallOptional != null)\n message.postinstallOptional = Boolean(object.postinstallOptional);\n if (object.hashTreeDataExtent != null) {\n if (typeof object.hashTreeDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeDataExtent: object expected\");\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeDataExtent);\n }\n if (object.hashTreeExtent != null) {\n if (typeof object.hashTreeExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeExtent: object expected\");\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeExtent);\n }\n if (object.hashTreeAlgorithm != null)\n message.hashTreeAlgorithm = String(object.hashTreeAlgorithm);\n if (object.hashTreeSalt != null)\n if (typeof object.hashTreeSalt === \"string\")\n $util.base64.decode(object.hashTreeSalt, message.hashTreeSalt = $util.newBuffer($util.base64.length(object.hashTreeSalt)), 0);\n else if (object.hashTreeSalt.length)\n message.hashTreeSalt = object.hashTreeSalt;\n if (object.fecDataExtent != null) {\n if (typeof object.fecDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecDataExtent: object expected\");\n message.fecDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecDataExtent);\n }\n if (object.fecExtent != null) {\n if (typeof object.fecExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecExtent: object expected\");\n message.fecExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecExtent);\n }\n if (object.fecRoots != null)\n message.fecRoots = object.fecRoots >>> 0;\n if (object.version != null)\n message.version = String(object.version);\n if (object.mergeOperations) {\n if (!Array.isArray(object.mergeOperations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected\");\n message.mergeOperations = [];\n for (let i = 0; i < object.mergeOperations.length; ++i) {\n if (typeof object.mergeOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: object expected\");\n message.mergeOperations[i] = $root.chromeos_update_engine.CowMergeOperation.fromObject(object.mergeOperations[i]);\n }\n }\n if (object.estimateCowSize != null)\n if ($util.Long)\n (message.estimateCowSize = $util.Long.fromValue(object.estimateCowSize)).unsigned = true;\n else if (typeof object.estimateCowSize === \"string\")\n message.estimateCowSize = parseInt(object.estimateCowSize, 10);\n else if (typeof object.estimateCowSize === \"number\")\n message.estimateCowSize = object.estimateCowSize;\n else if (typeof object.estimateCowSize === \"object\")\n message.estimateCowSize = new $util.LongBits(object.estimateCowSize.low >>> 0, object.estimateCowSize.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionUpdate message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.PartitionUpdate} message PartitionUpdate\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionUpdate.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.newPartitionSignature = [];\n object.operations = [];\n object.mergeOperations = [];\n }\n if (options.defaults) {\n object.partitionName = \"\";\n object.runPostinstall = false;\n object.postinstallPath = \"\";\n object.filesystemType = \"\";\n object.oldPartitionInfo = null;\n object.newPartitionInfo = null;\n object.postinstallOptional = false;\n object.hashTreeDataExtent = null;\n object.hashTreeExtent = null;\n object.hashTreeAlgorithm = \"\";\n if (options.bytes === String)\n object.hashTreeSalt = \"\";\n else {\n object.hashTreeSalt = [];\n if (options.bytes !== Array)\n object.hashTreeSalt = $util.newBuffer(object.hashTreeSalt);\n }\n object.fecDataExtent = null;\n object.fecExtent = null;\n object.fecRoots = 2;\n object.version = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.estimateCowSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.estimateCowSize = options.longs === String ? \"0\" : 0;\n }\n if (message.partitionName != null && message.hasOwnProperty(\"partitionName\"))\n object.partitionName = message.partitionName;\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n object.runPostinstall = message.runPostinstall;\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n object.postinstallPath = message.postinstallPath;\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n object.filesystemType = message.filesystemType;\n if (message.newPartitionSignature && message.newPartitionSignature.length) {\n object.newPartitionSignature = [];\n for (let j = 0; j < message.newPartitionSignature.length; ++j)\n object.newPartitionSignature[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.newPartitionSignature[j], options);\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\"))\n object.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldPartitionInfo, options);\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\"))\n object.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newPartitionInfo, options);\n if (message.operations && message.operations.length) {\n object.operations = [];\n for (let j = 0; j < message.operations.length; ++j)\n object.operations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.operations[j], options);\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n object.postinstallOptional = message.postinstallOptional;\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\"))\n object.hashTreeDataExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeDataExtent, options);\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\"))\n object.hashTreeExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeExtent, options);\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n object.hashTreeAlgorithm = message.hashTreeAlgorithm;\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n object.hashTreeSalt = options.bytes === String ? $util.base64.encode(message.hashTreeSalt, 0, message.hashTreeSalt.length) : options.bytes === Array ? Array.prototype.slice.call(message.hashTreeSalt) : message.hashTreeSalt;\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\"))\n object.fecDataExtent = $root.chromeos_update_engine.Extent.toObject(message.fecDataExtent, options);\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\"))\n object.fecExtent = $root.chromeos_update_engine.Extent.toObject(message.fecExtent, options);\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n object.fecRoots = message.fecRoots;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.mergeOperations && message.mergeOperations.length) {\n object.mergeOperations = [];\n for (let j = 0; j < message.mergeOperations.length; ++j)\n object.mergeOperations[j] = $root.chromeos_update_engine.CowMergeOperation.toObject(message.mergeOperations[j], options);\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (typeof message.estimateCowSize === \"number\")\n object.estimateCowSize = options.longs === String ? String(message.estimateCowSize) : message.estimateCowSize;\n else\n object.estimateCowSize = options.longs === String ? $util.Long.prototype.toString.call(message.estimateCowSize) : options.longs === Number ? new $util.LongBits(message.estimateCowSize.low >>> 0, message.estimateCowSize.high >>> 0).toNumber(true) : message.estimateCowSize;\n return object;\n };\n\n /**\n * Converts this PartitionUpdate to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionUpdate.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionUpdate;\n })();\n\n chromeos_update_engine.DynamicPartitionGroup = (function() {\n\n /**\n * Properties of a DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionGroup\n * @property {string} name DynamicPartitionGroup name\n * @property {number|Long|null} [size] DynamicPartitionGroup size\n * @property {Array.|null} [partitionNames] DynamicPartitionGroup partitionNames\n */\n\n /**\n * Constructs a new DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionGroup.\n * @implements IDynamicPartitionGroup\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n */\n function DynamicPartitionGroup(properties) {\n this.partitionNames = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionGroup name.\n * @member {string} name\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.name = \"\";\n\n /**\n * DynamicPartitionGroup size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DynamicPartitionGroup partitionNames.\n * @member {Array.} partitionNames\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.partitionNames = $util.emptyArray;\n\n /**\n * Creates a new DynamicPartitionGroup instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup instance\n */\n DynamicPartitionGroup.create = function create(properties) {\n return new DynamicPartitionGroup(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.size);\n if (message.partitionNames != null && message.partitionNames.length)\n for (let i = 0; i < message.partitionNames.length; ++i)\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.partitionNames[i]);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.name = reader.string();\n break;\n case 2:\n message.size = reader.uint64();\n break;\n case 3:\n if (!(message.partitionNames && message.partitionNames.length))\n message.partitionNames = [];\n message.partitionNames.push(reader.string());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"name\"))\n throw $util.ProtocolError(\"missing required 'name'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionGroup message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionGroup.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.partitionNames != null && message.hasOwnProperty(\"partitionNames\")) {\n if (!Array.isArray(message.partitionNames))\n return \"partitionNames: array expected\";\n for (let i = 0; i < message.partitionNames.length; ++i)\n if (!$util.isString(message.partitionNames[i]))\n return \"partitionNames: string[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a DynamicPartitionGroup message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n */\n DynamicPartitionGroup.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionGroup)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n if (object.name != null)\n message.name = String(object.name);\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.partitionNames) {\n if (!Array.isArray(object.partitionNames))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected\");\n message.partitionNames = [];\n for (let i = 0; i < object.partitionNames.length; ++i)\n message.partitionNames[i] = String(object.partitionNames[i]);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionGroup message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.DynamicPartitionGroup} message DynamicPartitionGroup\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionGroup.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.partitionNames = [];\n if (options.defaults) {\n object.name = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.partitionNames && message.partitionNames.length) {\n object.partitionNames = [];\n for (let j = 0; j < message.partitionNames.length; ++j)\n object.partitionNames[j] = message.partitionNames[j];\n }\n return object;\n };\n\n /**\n * Converts this DynamicPartitionGroup to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionGroup.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionGroup;\n })();\n\n chromeos_update_engine.DynamicPartitionMetadata = (function() {\n\n /**\n * Properties of a DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionMetadata\n * @property {Array.|null} [groups] DynamicPartitionMetadata groups\n * @property {boolean|null} [snapshotEnabled] DynamicPartitionMetadata snapshotEnabled\n * @property {boolean|null} [vabcEnabled] DynamicPartitionMetadata vabcEnabled\n * @property {string|null} [vabcCompressionParam] DynamicPartitionMetadata vabcCompressionParam\n * @property {number|null} [cowVersion] DynamicPartitionMetadata cowVersion\n */\n\n /**\n * Constructs a new DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionMetadata.\n * @implements IDynamicPartitionMetadata\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n */\n function DynamicPartitionMetadata(properties) {\n this.groups = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionMetadata groups.\n * @member {Array.} groups\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.groups = $util.emptyArray;\n\n /**\n * DynamicPartitionMetadata snapshotEnabled.\n * @member {boolean} snapshotEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.snapshotEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcEnabled.\n * @member {boolean} vabcEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcCompressionParam.\n * @member {string} vabcCompressionParam\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcCompressionParam = \"\";\n\n /**\n * DynamicPartitionMetadata cowVersion.\n * @member {number} cowVersion\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.cowVersion = 0;\n\n /**\n * Creates a new DynamicPartitionMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata instance\n */\n DynamicPartitionMetadata.create = function create(properties) {\n return new DynamicPartitionMetadata(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.groups != null && message.groups.length)\n for (let i = 0; i < message.groups.length; ++i)\n $root.chromeos_update_engine.DynamicPartitionGroup.encode(message.groups[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.snapshotEnabled != null && Object.hasOwnProperty.call(message, \"snapshotEnabled\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.snapshotEnabled);\n if (message.vabcEnabled != null && Object.hasOwnProperty.call(message, \"vabcEnabled\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.vabcEnabled);\n if (message.vabcCompressionParam != null && Object.hasOwnProperty.call(message, \"vabcCompressionParam\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.vabcCompressionParam);\n if (message.cowVersion != null && Object.hasOwnProperty.call(message, \"cowVersion\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.cowVersion);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.groups && message.groups.length))\n message.groups = [];\n message.groups.push($root.chromeos_update_engine.DynamicPartitionGroup.decode(reader, reader.uint32()));\n break;\n case 2:\n message.snapshotEnabled = reader.bool();\n break;\n case 3:\n message.vabcEnabled = reader.bool();\n break;\n case 4:\n message.vabcCompressionParam = reader.string();\n break;\n case 5:\n message.cowVersion = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.groups != null && message.hasOwnProperty(\"groups\")) {\n if (!Array.isArray(message.groups))\n return \"groups: array expected\";\n for (let i = 0; i < message.groups.length; ++i) {\n let error = $root.chromeos_update_engine.DynamicPartitionGroup.verify(message.groups[i]);\n if (error)\n return \"groups.\" + error;\n }\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n if (typeof message.snapshotEnabled !== \"boolean\")\n return \"snapshotEnabled: boolean expected\";\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n if (typeof message.vabcEnabled !== \"boolean\")\n return \"vabcEnabled: boolean expected\";\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n if (!$util.isString(message.vabcCompressionParam))\n return \"vabcCompressionParam: string expected\";\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n if (!$util.isInteger(message.cowVersion))\n return \"cowVersion: integer expected\";\n return null;\n };\n\n /**\n * Creates a DynamicPartitionMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n */\n DynamicPartitionMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionMetadata)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n if (object.groups) {\n if (!Array.isArray(object.groups))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: array expected\");\n message.groups = [];\n for (let i = 0; i < object.groups.length; ++i) {\n if (typeof object.groups[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: object expected\");\n message.groups[i] = $root.chromeos_update_engine.DynamicPartitionGroup.fromObject(object.groups[i]);\n }\n }\n if (object.snapshotEnabled != null)\n message.snapshotEnabled = Boolean(object.snapshotEnabled);\n if (object.vabcEnabled != null)\n message.vabcEnabled = Boolean(object.vabcEnabled);\n if (object.vabcCompressionParam != null)\n message.vabcCompressionParam = String(object.vabcCompressionParam);\n if (object.cowVersion != null)\n message.cowVersion = object.cowVersion >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.DynamicPartitionMetadata} message DynamicPartitionMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.groups = [];\n if (options.defaults) {\n object.snapshotEnabled = false;\n object.vabcEnabled = false;\n object.vabcCompressionParam = \"\";\n object.cowVersion = 0;\n }\n if (message.groups && message.groups.length) {\n object.groups = [];\n for (let j = 0; j < message.groups.length; ++j)\n object.groups[j] = $root.chromeos_update_engine.DynamicPartitionGroup.toObject(message.groups[j], options);\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n object.snapshotEnabled = message.snapshotEnabled;\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n object.vabcEnabled = message.vabcEnabled;\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n object.vabcCompressionParam = message.vabcCompressionParam;\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n object.cowVersion = message.cowVersion;\n return object;\n };\n\n /**\n * Converts this DynamicPartitionMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionMetadata;\n })();\n\n chromeos_update_engine.ApexInfo = (function() {\n\n /**\n * Properties of an ApexInfo.\n * @memberof chromeos_update_engine\n * @interface IApexInfo\n * @property {string|null} [packageName] ApexInfo packageName\n * @property {number|Long|null} [version] ApexInfo version\n * @property {boolean|null} [isCompressed] ApexInfo isCompressed\n * @property {number|Long|null} [decompressedSize] ApexInfo decompressedSize\n */\n\n /**\n * Constructs a new ApexInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexInfo.\n * @implements IApexInfo\n * @constructor\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n */\n function ApexInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexInfo packageName.\n * @member {string} packageName\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.packageName = \"\";\n\n /**\n * ApexInfo version.\n * @member {number|Long} version\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * ApexInfo isCompressed.\n * @member {boolean} isCompressed\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.isCompressed = false;\n\n /**\n * ApexInfo decompressedSize.\n * @member {number|Long} decompressedSize\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.decompressedSize = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * Creates a new ApexInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo instance\n */\n ApexInfo.create = function create(properties) {\n return new ApexInfo(properties);\n };\n\n /**\n * Encodes the specified ApexInfo message. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.packageName != null && Object.hasOwnProperty.call(message, \"packageName\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.packageName);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.version);\n if (message.isCompressed != null && Object.hasOwnProperty.call(message, \"isCompressed\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isCompressed);\n if (message.decompressedSize != null && Object.hasOwnProperty.call(message, \"decompressedSize\"))\n writer.uint32(/* id 4, wireType 0 =*/32).int64(message.decompressedSize);\n return writer;\n };\n\n /**\n * Encodes the specified ApexInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.packageName = reader.string();\n break;\n case 2:\n message.version = reader.int64();\n break;\n case 3:\n message.isCompressed = reader.bool();\n break;\n case 4:\n message.decompressedSize = reader.int64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n if (!$util.isString(message.packageName))\n return \"packageName: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high)))\n return \"version: integer|Long expected\";\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n if (typeof message.isCompressed !== \"boolean\")\n return \"isCompressed: boolean expected\";\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (!$util.isInteger(message.decompressedSize) && !(message.decompressedSize && $util.isInteger(message.decompressedSize.low) && $util.isInteger(message.decompressedSize.high)))\n return \"decompressedSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an ApexInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n */\n ApexInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexInfo)\n return object;\n let message = new $root.chromeos_update_engine.ApexInfo();\n if (object.packageName != null)\n message.packageName = String(object.packageName);\n if (object.version != null)\n if ($util.Long)\n (message.version = $util.Long.fromValue(object.version)).unsigned = false;\n else if (typeof object.version === \"string\")\n message.version = parseInt(object.version, 10);\n else if (typeof object.version === \"number\")\n message.version = object.version;\n else if (typeof object.version === \"object\")\n message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber();\n if (object.isCompressed != null)\n message.isCompressed = Boolean(object.isCompressed);\n if (object.decompressedSize != null)\n if ($util.Long)\n (message.decompressedSize = $util.Long.fromValue(object.decompressedSize)).unsigned = false;\n else if (typeof object.decompressedSize === \"string\")\n message.decompressedSize = parseInt(object.decompressedSize, 10);\n else if (typeof object.decompressedSize === \"number\")\n message.decompressedSize = object.decompressedSize;\n else if (typeof object.decompressedSize === \"object\")\n message.decompressedSize = new $util.LongBits(object.decompressedSize.low >>> 0, object.decompressedSize.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from an ApexInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.ApexInfo} message ApexInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.packageName = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.version = options.longs === String ? \"0\" : 0;\n object.isCompressed = false;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.decompressedSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.decompressedSize = options.longs === String ? \"0\" : 0;\n }\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n object.packageName = message.packageName;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (typeof message.version === \"number\")\n object.version = options.longs === String ? String(message.version) : message.version;\n else\n object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version;\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n object.isCompressed = message.isCompressed;\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (typeof message.decompressedSize === \"number\")\n object.decompressedSize = options.longs === String ? String(message.decompressedSize) : message.decompressedSize;\n else\n object.decompressedSize = options.longs === String ? $util.Long.prototype.toString.call(message.decompressedSize) : options.longs === Number ? new $util.LongBits(message.decompressedSize.low >>> 0, message.decompressedSize.high >>> 0).toNumber() : message.decompressedSize;\n return object;\n };\n\n /**\n * Converts this ApexInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ApexInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexInfo;\n })();\n\n chromeos_update_engine.ApexMetadata = (function() {\n\n /**\n * Properties of an ApexMetadata.\n * @memberof chromeos_update_engine\n * @interface IApexMetadata\n * @property {Array.|null} [apexInfo] ApexMetadata apexInfo\n */\n\n /**\n * Constructs a new ApexMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexMetadata.\n * @implements IApexMetadata\n * @constructor\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n */\n function ApexMetadata(properties) {\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexMetadata apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n */\n ApexMetadata.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new ApexMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata instance\n */\n ApexMetadata.create = function create(properties) {\n return new ApexMetadata(properties);\n };\n\n /**\n * Encodes the specified ApexMetadata message. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified ApexMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates an ApexMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n */\n ApexMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexMetadata)\n return object;\n let message = new $root.chromeos_update_engine.ApexMetadata();\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from an ApexMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.ApexMetadata} message ApexMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.apexInfo = [];\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this ApexMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n ApexMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexMetadata;\n })();\n\n chromeos_update_engine.DeltaArchiveManifest = (function() {\n\n /**\n * Properties of a DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @interface IDeltaArchiveManifest\n * @property {Array.|null} [installOperations] DeltaArchiveManifest installOperations\n * @property {Array.|null} [kernelInstallOperations] DeltaArchiveManifest kernelInstallOperations\n * @property {number|null} [blockSize] DeltaArchiveManifest blockSize\n * @property {number|Long|null} [signaturesOffset] DeltaArchiveManifest signaturesOffset\n * @property {number|Long|null} [signaturesSize] DeltaArchiveManifest signaturesSize\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldKernelInfo] DeltaArchiveManifest oldKernelInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newKernelInfo] DeltaArchiveManifest newKernelInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldRootfsInfo] DeltaArchiveManifest oldRootfsInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newRootfsInfo] DeltaArchiveManifest newRootfsInfo\n * @property {chromeos_update_engine.IImageInfo|null} [oldImageInfo] DeltaArchiveManifest oldImageInfo\n * @property {chromeos_update_engine.IImageInfo|null} [newImageInfo] DeltaArchiveManifest newImageInfo\n * @property {number|null} [minorVersion] DeltaArchiveManifest minorVersion\n * @property {Array.|null} [partitions] DeltaArchiveManifest partitions\n * @property {number|Long|null} [maxTimestamp] DeltaArchiveManifest maxTimestamp\n * @property {chromeos_update_engine.IDynamicPartitionMetadata|null} [dynamicPartitionMetadata] DeltaArchiveManifest dynamicPartitionMetadata\n * @property {boolean|null} [partialUpdate] DeltaArchiveManifest partialUpdate\n * @property {Array.|null} [apexInfo] DeltaArchiveManifest apexInfo\n */\n\n /**\n * Constructs a new DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DeltaArchiveManifest.\n * @implements IDeltaArchiveManifest\n * @constructor\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n */\n function DeltaArchiveManifest(properties) {\n this.installOperations = [];\n this.kernelInstallOperations = [];\n this.partitions = [];\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DeltaArchiveManifest installOperations.\n * @member {Array.} installOperations\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.installOperations = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest kernelInstallOperations.\n * @member {Array.} kernelInstallOperations\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.kernelInstallOperations = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest blockSize.\n * @member {number} blockSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.blockSize = 4096;\n\n /**\n * DeltaArchiveManifest signaturesOffset.\n * @member {number|Long} signaturesOffset\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest signaturesSize.\n * @member {number|Long} signaturesSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest oldKernelInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldKernelInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.oldKernelInfo = null;\n\n /**\n * DeltaArchiveManifest newKernelInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newKernelInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.newKernelInfo = null;\n\n /**\n * DeltaArchiveManifest oldRootfsInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldRootfsInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.oldRootfsInfo = null;\n\n /**\n * DeltaArchiveManifest newRootfsInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newRootfsInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.newRootfsInfo = null;\n\n /**\n * DeltaArchiveManifest oldImageInfo.\n * @member {chromeos_update_engine.IImageInfo|null|undefined} oldImageInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.oldImageInfo = null;\n\n /**\n * DeltaArchiveManifest newImageInfo.\n * @member {chromeos_update_engine.IImageInfo|null|undefined} newImageInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.newImageInfo = null;\n\n /**\n * DeltaArchiveManifest minorVersion.\n * @member {number} minorVersion\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.minorVersion = 0;\n\n /**\n * DeltaArchiveManifest partitions.\n * @member {Array.} partitions\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partitions = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest maxTimestamp.\n * @member {number|Long} maxTimestamp\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.maxTimestamp = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * DeltaArchiveManifest dynamicPartitionMetadata.\n * @member {chromeos_update_engine.IDynamicPartitionMetadata|null|undefined} dynamicPartitionMetadata\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.dynamicPartitionMetadata = null;\n\n /**\n * DeltaArchiveManifest partialUpdate.\n * @member {boolean} partialUpdate\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partialUpdate = false;\n\n /**\n * DeltaArchiveManifest apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new DeltaArchiveManifest instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest instance\n */\n DeltaArchiveManifest.create = function create(properties) {\n return new DeltaArchiveManifest(properties);\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.installOperations != null && message.installOperations.length)\n for (let i = 0; i < message.installOperations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.installOperations[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.kernelInstallOperations != null && message.kernelInstallOperations.length)\n for (let i = 0; i < message.kernelInstallOperations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.kernelInstallOperations[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.blockSize != null && Object.hasOwnProperty.call(message, \"blockSize\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.blockSize);\n if (message.signaturesOffset != null && Object.hasOwnProperty.call(message, \"signaturesOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.signaturesOffset);\n if (message.signaturesSize != null && Object.hasOwnProperty.call(message, \"signaturesSize\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.signaturesSize);\n if (message.oldKernelInfo != null && Object.hasOwnProperty.call(message, \"oldKernelInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldKernelInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newKernelInfo != null && Object.hasOwnProperty.call(message, \"newKernelInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newKernelInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.oldRootfsInfo != null && Object.hasOwnProperty.call(message, \"oldRootfsInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldRootfsInfo, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.newRootfsInfo != null && Object.hasOwnProperty.call(message, \"newRootfsInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newRootfsInfo, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim();\n if (message.oldImageInfo != null && Object.hasOwnProperty.call(message, \"oldImageInfo\"))\n $root.chromeos_update_engine.ImageInfo.encode(message.oldImageInfo, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.newImageInfo != null && Object.hasOwnProperty.call(message, \"newImageInfo\"))\n $root.chromeos_update_engine.ImageInfo.encode(message.newImageInfo, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.minorVersion != null && Object.hasOwnProperty.call(message, \"minorVersion\"))\n writer.uint32(/* id 12, wireType 0 =*/96).uint32(message.minorVersion);\n if (message.partitions != null && message.partitions.length)\n for (let i = 0; i < message.partitions.length; ++i)\n $root.chromeos_update_engine.PartitionUpdate.encode(message.partitions[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();\n if (message.maxTimestamp != null && Object.hasOwnProperty.call(message, \"maxTimestamp\"))\n writer.uint32(/* id 14, wireType 0 =*/112).int64(message.maxTimestamp);\n if (message.dynamicPartitionMetadata != null && Object.hasOwnProperty.call(message, \"dynamicPartitionMetadata\"))\n $root.chromeos_update_engine.DynamicPartitionMetadata.encode(message.dynamicPartitionMetadata, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.partialUpdate != null && Object.hasOwnProperty.call(message, \"partialUpdate\"))\n writer.uint32(/* id 16, wireType 0 =*/128).bool(message.partialUpdate);\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message, length delimited. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.installOperations && message.installOperations.length))\n message.installOperations = [];\n message.installOperations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 2:\n if (!(message.kernelInstallOperations && message.kernelInstallOperations.length))\n message.kernelInstallOperations = [];\n message.kernelInstallOperations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 3:\n message.blockSize = reader.uint32();\n break;\n case 4:\n message.signaturesOffset = reader.uint64();\n break;\n case 5:\n message.signaturesSize = reader.uint64();\n break;\n case 6:\n message.oldKernelInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newKernelInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n message.oldRootfsInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 9:\n message.newRootfsInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 10:\n message.oldImageInfo = $root.chromeos_update_engine.ImageInfo.decode(reader, reader.uint32());\n break;\n case 11:\n message.newImageInfo = $root.chromeos_update_engine.ImageInfo.decode(reader, reader.uint32());\n break;\n case 12:\n message.minorVersion = reader.uint32();\n break;\n case 13:\n if (!(message.partitions && message.partitions.length))\n message.partitions = [];\n message.partitions.push($root.chromeos_update_engine.PartitionUpdate.decode(reader, reader.uint32()));\n break;\n case 14:\n message.maxTimestamp = reader.int64();\n break;\n case 15:\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.decode(reader, reader.uint32());\n break;\n case 16:\n message.partialUpdate = reader.bool();\n break;\n case 17:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DeltaArchiveManifest message.\n * @function verify\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DeltaArchiveManifest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.installOperations != null && message.hasOwnProperty(\"installOperations\")) {\n if (!Array.isArray(message.installOperations))\n return \"installOperations: array expected\";\n for (let i = 0; i < message.installOperations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.installOperations[i]);\n if (error)\n return \"installOperations.\" + error;\n }\n }\n if (message.kernelInstallOperations != null && message.hasOwnProperty(\"kernelInstallOperations\")) {\n if (!Array.isArray(message.kernelInstallOperations))\n return \"kernelInstallOperations: array expected\";\n for (let i = 0; i < message.kernelInstallOperations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.kernelInstallOperations[i]);\n if (error)\n return \"kernelInstallOperations.\" + error;\n }\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n if (!$util.isInteger(message.blockSize))\n return \"blockSize: integer expected\";\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (!$util.isInteger(message.signaturesOffset) && !(message.signaturesOffset && $util.isInteger(message.signaturesOffset.low) && $util.isInteger(message.signaturesOffset.high)))\n return \"signaturesOffset: integer|Long expected\";\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (!$util.isInteger(message.signaturesSize) && !(message.signaturesSize && $util.isInteger(message.signaturesSize.low) && $util.isInteger(message.signaturesSize.high)))\n return \"signaturesSize: integer|Long expected\";\n if (message.oldKernelInfo != null && message.hasOwnProperty(\"oldKernelInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldKernelInfo);\n if (error)\n return \"oldKernelInfo.\" + error;\n }\n if (message.newKernelInfo != null && message.hasOwnProperty(\"newKernelInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newKernelInfo);\n if (error)\n return \"newKernelInfo.\" + error;\n }\n if (message.oldRootfsInfo != null && message.hasOwnProperty(\"oldRootfsInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldRootfsInfo);\n if (error)\n return \"oldRootfsInfo.\" + error;\n }\n if (message.newRootfsInfo != null && message.hasOwnProperty(\"newRootfsInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newRootfsInfo);\n if (error)\n return \"newRootfsInfo.\" + error;\n }\n if (message.oldImageInfo != null && message.hasOwnProperty(\"oldImageInfo\")) {\n let error = $root.chromeos_update_engine.ImageInfo.verify(message.oldImageInfo);\n if (error)\n return \"oldImageInfo.\" + error;\n }\n if (message.newImageInfo != null && message.hasOwnProperty(\"newImageInfo\")) {\n let error = $root.chromeos_update_engine.ImageInfo.verify(message.newImageInfo);\n if (error)\n return \"newImageInfo.\" + error;\n }\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n if (!$util.isInteger(message.minorVersion))\n return \"minorVersion: integer expected\";\n if (message.partitions != null && message.hasOwnProperty(\"partitions\")) {\n if (!Array.isArray(message.partitions))\n return \"partitions: array expected\";\n for (let i = 0; i < message.partitions.length; ++i) {\n let error = $root.chromeos_update_engine.PartitionUpdate.verify(message.partitions[i]);\n if (error)\n return \"partitions.\" + error;\n }\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (!$util.isInteger(message.maxTimestamp) && !(message.maxTimestamp && $util.isInteger(message.maxTimestamp.low) && $util.isInteger(message.maxTimestamp.high)))\n return \"maxTimestamp: integer|Long expected\";\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\")) {\n let error = $root.chromeos_update_engine.DynamicPartitionMetadata.verify(message.dynamicPartitionMetadata);\n if (error)\n return \"dynamicPartitionMetadata.\" + error;\n }\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n if (typeof message.partialUpdate !== \"boolean\")\n return \"partialUpdate: boolean expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a DeltaArchiveManifest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n */\n DeltaArchiveManifest.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DeltaArchiveManifest)\n return object;\n let message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n if (object.installOperations) {\n if (!Array.isArray(object.installOperations))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.installOperations: array expected\");\n message.installOperations = [];\n for (let i = 0; i < object.installOperations.length; ++i) {\n if (typeof object.installOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.installOperations: object expected\");\n message.installOperations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.installOperations[i]);\n }\n }\n if (object.kernelInstallOperations) {\n if (!Array.isArray(object.kernelInstallOperations))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.kernelInstallOperations: array expected\");\n message.kernelInstallOperations = [];\n for (let i = 0; i < object.kernelInstallOperations.length; ++i) {\n if (typeof object.kernelInstallOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.kernelInstallOperations: object expected\");\n message.kernelInstallOperations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.kernelInstallOperations[i]);\n }\n }\n if (object.blockSize != null)\n message.blockSize = object.blockSize >>> 0;\n if (object.signaturesOffset != null)\n if ($util.Long)\n (message.signaturesOffset = $util.Long.fromValue(object.signaturesOffset)).unsigned = true;\n else if (typeof object.signaturesOffset === \"string\")\n message.signaturesOffset = parseInt(object.signaturesOffset, 10);\n else if (typeof object.signaturesOffset === \"number\")\n message.signaturesOffset = object.signaturesOffset;\n else if (typeof object.signaturesOffset === \"object\")\n message.signaturesOffset = new $util.LongBits(object.signaturesOffset.low >>> 0, object.signaturesOffset.high >>> 0).toNumber(true);\n if (object.signaturesSize != null)\n if ($util.Long)\n (message.signaturesSize = $util.Long.fromValue(object.signaturesSize)).unsigned = true;\n else if (typeof object.signaturesSize === \"string\")\n message.signaturesSize = parseInt(object.signaturesSize, 10);\n else if (typeof object.signaturesSize === \"number\")\n message.signaturesSize = object.signaturesSize;\n else if (typeof object.signaturesSize === \"object\")\n message.signaturesSize = new $util.LongBits(object.signaturesSize.low >>> 0, object.signaturesSize.high >>> 0).toNumber(true);\n if (object.oldKernelInfo != null) {\n if (typeof object.oldKernelInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.oldKernelInfo: object expected\");\n message.oldKernelInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldKernelInfo);\n }\n if (object.newKernelInfo != null) {\n if (typeof object.newKernelInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.newKernelInfo: object expected\");\n message.newKernelInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newKernelInfo);\n }\n if (object.oldRootfsInfo != null) {\n if (typeof object.oldRootfsInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.oldRootfsInfo: object expected\");\n message.oldRootfsInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldRootfsInfo);\n }\n if (object.newRootfsInfo != null) {\n if (typeof object.newRootfsInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.newRootfsInfo: object expected\");\n message.newRootfsInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newRootfsInfo);\n }\n if (object.oldImageInfo != null) {\n if (typeof object.oldImageInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.oldImageInfo: object expected\");\n message.oldImageInfo = $root.chromeos_update_engine.ImageInfo.fromObject(object.oldImageInfo);\n }\n if (object.newImageInfo != null) {\n if (typeof object.newImageInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.newImageInfo: object expected\");\n message.newImageInfo = $root.chromeos_update_engine.ImageInfo.fromObject(object.newImageInfo);\n }\n if (object.minorVersion != null)\n message.minorVersion = object.minorVersion >>> 0;\n if (object.partitions) {\n if (!Array.isArray(object.partitions))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected\");\n message.partitions = [];\n for (let i = 0; i < object.partitions.length; ++i) {\n if (typeof object.partitions[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: object expected\");\n message.partitions[i] = $root.chromeos_update_engine.PartitionUpdate.fromObject(object.partitions[i]);\n }\n }\n if (object.maxTimestamp != null)\n if ($util.Long)\n (message.maxTimestamp = $util.Long.fromValue(object.maxTimestamp)).unsigned = false;\n else if (typeof object.maxTimestamp === \"string\")\n message.maxTimestamp = parseInt(object.maxTimestamp, 10);\n else if (typeof object.maxTimestamp === \"number\")\n message.maxTimestamp = object.maxTimestamp;\n else if (typeof object.maxTimestamp === \"object\")\n message.maxTimestamp = new $util.LongBits(object.maxTimestamp.low >>> 0, object.maxTimestamp.high >>> 0).toNumber();\n if (object.dynamicPartitionMetadata != null) {\n if (typeof object.dynamicPartitionMetadata !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected\");\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.fromObject(object.dynamicPartitionMetadata);\n }\n if (object.partialUpdate != null)\n message.partialUpdate = Boolean(object.partialUpdate);\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DeltaArchiveManifest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.DeltaArchiveManifest} message DeltaArchiveManifest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DeltaArchiveManifest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.installOperations = [];\n object.kernelInstallOperations = [];\n object.partitions = [];\n object.apexInfo = [];\n }\n if (options.defaults) {\n object.blockSize = 4096;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesSize = options.longs === String ? \"0\" : 0;\n object.oldKernelInfo = null;\n object.newKernelInfo = null;\n object.oldRootfsInfo = null;\n object.newRootfsInfo = null;\n object.oldImageInfo = null;\n object.newImageInfo = null;\n object.minorVersion = 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.maxTimestamp = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.maxTimestamp = options.longs === String ? \"0\" : 0;\n object.dynamicPartitionMetadata = null;\n object.partialUpdate = false;\n }\n if (message.installOperations && message.installOperations.length) {\n object.installOperations = [];\n for (let j = 0; j < message.installOperations.length; ++j)\n object.installOperations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.installOperations[j], options);\n }\n if (message.kernelInstallOperations && message.kernelInstallOperations.length) {\n object.kernelInstallOperations = [];\n for (let j = 0; j < message.kernelInstallOperations.length; ++j)\n object.kernelInstallOperations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.kernelInstallOperations[j], options);\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n object.blockSize = message.blockSize;\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (typeof message.signaturesOffset === \"number\")\n object.signaturesOffset = options.longs === String ? String(message.signaturesOffset) : message.signaturesOffset;\n else\n object.signaturesOffset = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesOffset) : options.longs === Number ? new $util.LongBits(message.signaturesOffset.low >>> 0, message.signaturesOffset.high >>> 0).toNumber(true) : message.signaturesOffset;\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (typeof message.signaturesSize === \"number\")\n object.signaturesSize = options.longs === String ? String(message.signaturesSize) : message.signaturesSize;\n else\n object.signaturesSize = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesSize) : options.longs === Number ? new $util.LongBits(message.signaturesSize.low >>> 0, message.signaturesSize.high >>> 0).toNumber(true) : message.signaturesSize;\n if (message.oldKernelInfo != null && message.hasOwnProperty(\"oldKernelInfo\"))\n object.oldKernelInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldKernelInfo, options);\n if (message.newKernelInfo != null && message.hasOwnProperty(\"newKernelInfo\"))\n object.newKernelInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newKernelInfo, options);\n if (message.oldRootfsInfo != null && message.hasOwnProperty(\"oldRootfsInfo\"))\n object.oldRootfsInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldRootfsInfo, options);\n if (message.newRootfsInfo != null && message.hasOwnProperty(\"newRootfsInfo\"))\n object.newRootfsInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newRootfsInfo, options);\n if (message.oldImageInfo != null && message.hasOwnProperty(\"oldImageInfo\"))\n object.oldImageInfo = $root.chromeos_update_engine.ImageInfo.toObject(message.oldImageInfo, options);\n if (message.newImageInfo != null && message.hasOwnProperty(\"newImageInfo\"))\n object.newImageInfo = $root.chromeos_update_engine.ImageInfo.toObject(message.newImageInfo, options);\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n object.minorVersion = message.minorVersion;\n if (message.partitions && message.partitions.length) {\n object.partitions = [];\n for (let j = 0; j < message.partitions.length; ++j)\n object.partitions[j] = $root.chromeos_update_engine.PartitionUpdate.toObject(message.partitions[j], options);\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (typeof message.maxTimestamp === \"number\")\n object.maxTimestamp = options.longs === String ? String(message.maxTimestamp) : message.maxTimestamp;\n else\n object.maxTimestamp = options.longs === String ? $util.Long.prototype.toString.call(message.maxTimestamp) : options.longs === Number ? new $util.LongBits(message.maxTimestamp.low >>> 0, message.maxTimestamp.high >>> 0).toNumber() : message.maxTimestamp;\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\"))\n object.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.toObject(message.dynamicPartitionMetadata, options);\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n object.partialUpdate = message.partialUpdate;\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this DeltaArchiveManifest to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n * @returns {Object.} JSON object\n */\n DeltaArchiveManifest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DeltaArchiveManifest;\n })();\n\n return chromeos_update_engine;\n})();\n\nexport { $root as default };\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TextWriter, ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { chromeos_update_engine } from './update_metadata_pb.js'\n\n/**\n * Parse the non-A/B OTA package and return it as a DeltaArchiveManifest\n * @param {ZipReader} packedFile\n */\nexport class PayloadNonAB extends chromeos_update_engine.DeltaArchiveManifest {\n nonAB: boolean = true\n Blocksize: number = 4096\n packedFile: ZipReader\n constructor(packedFile: ZipReader) {\n super()\n this.packedFile = packedFile\n }\n\n async init() {\n this.Blocksize = 4096\n this.partialUpdate = false\n this.dynamicPartitionMetadata = new chromeos_update_engine.DynamicPartitionMetadata(\n { snapshotEnabled: false, vabcEnabled: false }\n )\n this.partitions = []\n\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.transfer.list)/g\n const /** Array */ entries = await this.packedFile.getEntries()\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n const match = entry.filename.match(regexName)![0]\n let newPartition = new chromeos_update_engine.PartitionUpdate({\n partitionName: match\n })\n newPartition.rawText = await entry.getData!(new TextWriter())\n await this.parseTransferList(newPartition)\n this.partitions.push(newPartition)\n }\n }\n }\n\n async parseTransferList(partition: chromeos_update_engine.PartitionUpdate) {\n let /** Array */ lines = partition.rawText.split('\\n')\n // First four line in header: version, total blocks,\n // number of stashed entries, maximum used memory for stash\n if (lines.length < 4) {\n throw 'At least 4 lines in header should be provided.'\n }\n partition.version = lines[0]\n partition.totalBlocks = parseInt(lines[1])\n partition.entryStashed = parseInt(lines[2])\n partition.maxStashed = parseInt(lines[3])\n partition.newPartitionInfo = new chromeos_update_engine.PartitionInfo()\n partition.newPartitionInfo.hash = new Uint8Array()\n partition.newPartitionInfo.size = 'unknown'\n /**\n * The main body have 8 different ops:\n * zero [rangeset] : fill zeros\n * new [rangeset] : fill with new data from \n * erase [rangeset] : mark given blocks as empty\n * move <...>\n * bsdiff <...>\n * imgdiff <...> :\n * Read the source blocks and apply (not for move op) to the target blocks\n * stash : load the given source range to memory\n * free : free the given \n * format:\n * [rangeset]: <# of pairs>, , , ...\n * : a hex number with length of 40\n * <...>: We expect to parse the remainder of the parameter tokens as one of:\n * (loads data from source image only)\n * - <[stash_id:stash_range] ...> (loads data from stashes only)\n * <[stash_id:stash_range] ...>\n * (loads data from both source image and stashes)\n */\n partition.operations = new Array()\n let newDataSize = await this.sizeNewData(partition.partitionName)\n for (const line of lines.slice(4)) {\n let op = new chromeos_update_engine.InstallOperation()\n let elements = line.split(' ')\n op.type = elements[0]\n switch ((op.type as unknown) as string) {\n case 'zero':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'new':\n // unlike an A/B OTA, the payload only exists in the payload.bin,\n // in an non-A/B OTA, the payload exists in both .new.data and .patch.data.\n // The new ops do not have any information about data length.\n // what we do here is: read in the size of .new.data, assume the first new\n // op have the data length of the size of .new.data.\n op.dataLength = newDataSize\n newDataSize = 0\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'erase':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'move':\n op.dstExtents = parseRange([], elements[2])\n break\n case 'bsdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'imgdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'stash':\n break\n case 'free':\n break\n }\n partition.operations.push(op)\n }\n }\n\n /**\n * Return the size of .new.data.*\n * @param {String} partitionName\n * @return {Number}\n */\n async sizeNewData(partitionName: string) {\n const /** Array */ entries = await this.packedFile.getEntries()\n const /** RegExp */ regexName = new RegExp(partitionName + '.new.dat.*')\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n return entry.uncompressedSize\n }\n }\n }\n}\n\n/**\n * Parse the range string and return it as an array of extents\n * @param {extents} Array\n * @param {String} rangeset\n * @return Array\n */\nfunction parseRange(extents: Object[], rangeset: string) {\n const regexRange = new RegExp('[d,]+')\n if (rangeset.match(regexRange)) {\n let elements = rangeset.split(',')\n for (let i = 1; i < elements.length; i = i + 2) {\n let extent = new Object({\n startBlock: parseInt(elements[i]),\n numBlocks: parseInt(elements[i + 1]) - parseInt(elements[i])\n })\n extents.push(extent)\n }\n }\n return extents\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class paypload is used to read in and\n * parse the payload.bin file from a OTA.zip file.\n * Class OpType creates a Map that can resolve the\n * operation type.\n * @package zip.js\n * @package protobufjs\n */\n\nimport {\n BlobReader,\n TextWriter,\n Writer,\n ZipReader,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\n// import '@zip.js/zip.js'\nimport { chromeos_update_engine as update_metadata_pb } from './update_metadata_pb'\nimport { PayloadNonAB } from './payload_nonab'\nimport { ZipFile } from './trim_zip'\n// import { Zip_js } from 'zip.js'\n\nconst /** String */ _MAGIC = 'CrAU'\nconst /** Number */ _VERSION_SIZE = 8\nconst /** Number */ _MANIFEST_LEN_SIZE = 8\nconst /** Number */ _METADATA_SIGNATURE_LEN_SIZE = 4\n\nconst /** Number */ _PAYLOAD_HEADER_SIZE =\n _MAGIC.length +\n _VERSION_SIZE +\n _MANIFEST_LEN_SIZE +\n _METADATA_SIGNATURE_LEN_SIZE\n\nconst /** Number */ _BRILLO_MAJOR_PAYLOAD_VERSION = 2\nexport const /** Array */ MetadataFormat = [\n {\n prefix: 'pre-build',\n key: 'preBuild',\n name: 'Pre-build'\n },\n {\n prefix: 'pre-build-incremental',\n key: 'preBuildVersion',\n name: 'Pre-build version'\n },\n {\n prefix: 'post-build',\n key: 'postBuild',\n name: 'Post-build'\n },\n {\n prefix: 'post-build-incremental',\n key: 'postBuildVersion',\n name: 'Post-build version'\n },\n {\n prefix: 'post-security-patch-level',\n key: 'postSecurityPatchLevel',\n name: 'Post-build SPL'\n },\n {\n prefix: 'post-timestamp',\n key: 'postTimestamp',\n name: 'Post-build timestamp'\n },\n ]\n\nclass StopIteration extends Error {}\n\nclass AbPayloadHeader {\n constructor(\n public magic: string,\n public version: number,\n public manifest_len: number,\n public metadata_signature_len: number\n ) {}\n}\n\n/**\n * Read in an integer from binary bufferArray.\n * @param {Int} size the size of a integer being read in\n * @return {Int} an integer.\n */\nasync function readIntAt(buffer: Blob, position: number, size: number) {\n let /** DataView */ view = new DataView(\n await buffer!.slice(position, position + size).arrayBuffer()\n )\n if (typeof view.getBigUint64 !== 'function') {\n view.getBigUint64 = function(offset) {\n const a = BigInt(view.getUint32(offset))\n const b = BigInt(view.getUint32(offset + 4))\n const bigNumber = a * 4294967296n + b\n return bigNumber\n }\n }\n switch (size) {\n case 2:\n return view.getUint16(0)\n case 4:\n return view.getUint32(0)\n case 8:\n return Number(view.getBigUint64(0))\n default:\n throw 'Cannot read this integer with size ' + size\n }\n}\n\nclass OTAPayloadBlobWriter extends Writer {\n offset: number\n contentType: string\n blob: Blob\n prefixLength: number\n\n header?: AbPayloadHeader\n\n async readHeader(blob: Blob) {\n let cursor = 0\n const readInt = (size: number) => {\n const ret = readIntAt(blob, cursor, size)\n cursor += size\n return ret\n }\n let buffer = await blob.slice(0, _PAYLOAD_HEADER_SIZE).arrayBuffer()\n let /** TextDecoder */ decoder = new TextDecoder()\n let magicBytes = buffer.slice(0, _MAGIC.length)\n const magic = decoder.decode(magicBytes)\n if (magic != _MAGIC) {\n throw new Error(\n `MAGIC is not correct, expected: ${_MAGIC} actual: ${magic}`\n )\n }\n cursor += _MAGIC.length\n const header_version = await readInt(_VERSION_SIZE)\n const manifest_len = await readInt(_MANIFEST_LEN_SIZE)\n if (header_version != _BRILLO_MAJOR_PAYLOAD_VERSION) {\n throw new Error(`Unexpected major version number: ${header_version}`)\n }\n const metadata_signature_len = await readInt(_METADATA_SIGNATURE_LEN_SIZE)\n this.header = new AbPayloadHeader(\n magic,\n header_version,\n manifest_len,\n metadata_signature_len\n )\n }\n /**\n * A zip.Writer that is tailored for OTA payload.bin read-in.\n * Instead of reading in all the contents in payload.bin, this writer will\n * throw an 'StopIteration' error when the header is read in.\n * The header will be stored into the .\n * @param {Payload} payload\n * @param {String} contentType\n */\n constructor(contentType = '') {\n super()\n this.offset = 0\n this.contentType = contentType\n this.blob = new Blob([], { type: contentType })\n this.prefixLength = 0\n }\n\n async writeUint8Array(array: Uint8Array) {\n super.writeUint8Array(array)\n this.blob = new Blob([this.blob, array.buffer], { type: this.contentType })\n this.offset = this.blob.size\n // Once the prefixLength is non-zero, the address of manifest and signature\n // become known and can be read in. Otherwise the header needs to be read\n // in first to determine the prefixLength.\n if (this.offset >= _PAYLOAD_HEADER_SIZE && this.prefixLength == 0) {\n console.log('Parsing header!')\n await this.readHeader(this.blob)\n this.prefixLength =\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n console.log(`Computed metadata length: ${this.prefixLength}`)\n }\n if (this.prefixLength > 0) {\n console.log(`${this.offset}/${this.prefixLength}`)\n if (this.offset >= this.prefixLength) {\n // The prefix has everything we need (header, manifest, signature). Once\n // the offset is beyond the prefix, no need to move on.\n this.blob = this.blob.slice(0, this.prefixLength)\n throw new StopIteration()\n }\n }\n }\n\n getData() {\n return this.blob\n }\n}\n\nexport class Payload {\n zipreader: ZipReader\n buffer: Blob | undefined\n private metadata: any\n manifest: update_metadata_pb.DeltaArchiveManifest | undefined\n metadata_signature!: update_metadata_pb.Signatures\n\n header?: AbPayloadHeader\n\n /**\n * This class parses the metadata of a OTA package.\n * @param {File} file A OTA.zip file read from user's machine.\n */\n constructor(file: File | URL | ZipFile) {\n if (file instanceof File) {\n this.zipreader = new ZipReader(new BlobReader(file))\n } else if (file instanceof URL) {\n this.zipreader = new ZipReader(new HttpReader(file.href))\n } else {\n this.zipreader = file.reader\n }\n }\n\n getMetadataLength(): number {\n return (\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n )\n }\n\n /**\n * Unzip the OTA package, get payload.bin and metadata\n */\n async unzip() {\n let entries = await this.zipreader.getEntries()\n for (let entry of entries) {\n if (entry.filename == 'payload.bin') {\n let writer = new OTAPayloadBlobWriter('')\n try {\n await entry.getData!(writer)\n } catch (e) {\n if (e instanceof StopIteration) {\n // Exception used as a hack to stop reading from zip. NO need to do anything\n // Ideally zip.js would provide an API to partialll read a zip\n // entry, but they don't. So this is what we get\n } else {\n console.log(e)\n throw e\n }\n }\n this.buffer = writer.getData()\n await this.readManifest(this.buffer, writer.header!)\n console.log('AB OTA manifest parsed')\n } else if (entry.filename == 'META-INF/com/android/metadata') {\n this.metadata = await entry.getData!(new TextWriter())\n console.log('OTA Package metadata parsed')\n }\n }\n if (!this.manifest) {\n console.log('Failed to parse AB OTA package, falling back to non-AB')\n try {\n // The temporary variable manifest has to be used here, to prevent the html page\n // being rendered before everything is read in properly\n let manifest = new PayloadNonAB(this.zipreader)\n await manifest.init()\n manifest.nonAB = true\n this.manifest = manifest\n } catch (error) {\n alert('Please select a legit OTA package')\n return\n }\n }\n }\n\n /**\n * Read the header of payload.bin, including the magic, header_version,\n * manifest_len, metadata_signature_len.\n */\n /**\n * Read in the manifest in an OTA.zip file.\n * The structure of the manifest can be found in:\n * aosp/system/update_engine/update_metadata.proto\n */\n async readManifest(buffer: Blob, header: AbPayloadHeader) {\n this.header = header\n let cursor = _PAYLOAD_HEADER_SIZE\n let manifestBlob = await buffer\n .slice(cursor, cursor + header.manifest_len)\n .arrayBuffer()\n cursor += header.manifest_len\n this.manifest = update_metadata_pb.DeltaArchiveManifest.decode(\n new Uint8Array(manifestBlob)\n )\n let signatureBlob = await buffer\n .slice(cursor, cursor + header.metadata_signature_len)\n .arrayBuffer()\n cursor += header.metadata_signature_len\n this.metadata_signature = update_metadata_pb.Signatures.decode(\n new Uint8Array(signatureBlob)\n )\n this.manifest!.nonAB = false\n }\n\n parseMetadata() {\n for (let formatter of MetadataFormat) {\n let regex = new RegExp(formatter.prefix + '.+')\n if (this.metadata.match(regex)) {\n ;(this as any)[formatter.key] = trimEntry(\n this.metadata.match(regex)[0],\n formatter.prefix\n )\n } else {\n ;(this as any)[formatter.key] = ''\n }\n }\n }\n\n async init() {\n await this.unzip()\n this.parseMetadata()\n }\n}\n\nexport class DefaultMap extends Map {\n /** Reload the original get method. Return the original key value if\n * the key does not exist.\n * @param {Any} key\n */\n getWithDefault(key: any) {\n if (!this.has(key)) return key\n return this.get(key)\n }\n}\n\nexport class OpType {\n mapType: DefaultMap\n /**\n * OpType.mapType create a map that could resolve the operation\n * types. The operation types are encoded as numbers in\n * update_metadata.proto and must be decoded before any usage.\n */\n constructor() {\n let types = update_metadata_pb.InstallOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport class MergeOpType {\n mapType: DefaultMap\n /**\n * MergeOpType create a map that could resolve the COW merge operation\n * types. This is very similar to OpType class except that one is for\n * installation operations.\n */\n constructor() {\n let /** Array<{String: Number}>*/ types =\n update_metadata_pb.CowMergeOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport function octToHex(bufferArray: Uint8Array, space = true, maxLine = 16) {\n let hex_table = ''\n for (let i = 0; i < bufferArray.length; i++) {\n const hex /** String **/ = bufferArray[i].toString(16).toUpperCase()\n if (hex.length === 2) {\n hex_table += hex + (space ? ' ' : '')\n } else {\n hex_table += '0' + hex + (space ? ' ' : '')\n }\n if ((i + 1) % maxLine == 0 && space) {\n hex_table += '\\n'\n }\n }\n return hex_table\n}\n\n/**\n * Trim the prefix in an entry. This is required because the lookbehind\n * regular expression is not supported in safari yet.\n * @param {String} entry\n * @param {String} prefix\n * @return String\n */\nfunction trimEntry(entry: string, prefix: string) {\n return entry.slice(prefix.length + 1, entry.length)\n}\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-44174082\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Data offset: \", -1))\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Data length: \", -1))\nconst _hoisted_5 = { key: 2 }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Source: \", -1))\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_8 = { key: 3 }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Destination: \", -1))\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"h5\", null, _toDisplayString(_ctx.mapType.getWithDefault(_ctx.operation.type)), 1),\n (_ctx.operation.hasOwnProperty('dataOffset'))\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_1, [\n _hoisted_2,\n _createTextVNode(\" \" + _toDisplayString(_ctx.operation.dataOffset), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.operation.hasOwnProperty('dataLength'))\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_3, [\n _hoisted_4,\n _createTextVNode(\" \" + _toDisplayString(_ctx.operation.dataLength), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.operation.hasOwnProperty('srcExtents'))\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.operation.srcExtents.length) + \" extents (\" + _toDisplayString(_ctx.srcTotalBlocks) + \" blocks) \", 1),\n _hoisted_7,\n _createTextVNode(\" \" + _toDisplayString(_ctx.srcBlocks), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.operation.hasOwnProperty('dstExtents'))\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_8, [\n _hoisted_9,\n _createTextVNode(\" \" + _toDisplayString(_ctx.operation.dstExtents.length) + \" extents (\" + _toDisplayString(_ctx.dstTotalBlocks) + \" blocks) \", 1),\n _hoisted_10,\n _createTextVNode(\" \" + _toDisplayString(_ctx.dstBlocks), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(_component_v_divider)\n ], 64))\n}","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EChartsOption } from 'echarts'\n\nexport class EchartsData {\n statisticData: Map\n trimmedData: Map\n title: string\n unit: string\n maximumEntries: number\n /**\n * Given a set of [key, value] pairs and title, create an object for further\n * usage in Vue-Echarts.\n * @param {Map} statisticData\n * @param {String} title\n * @param {String} unit\n * @param {Number} maximumEntries\n */\n constructor(\n statisticData: Map,\n title: string,\n unit: string,\n maximumEntries = 15\n ) {\n this.statisticData = statisticData\n this.trimmedData = trimMap(statisticData, maximumEntries)\n this.title = title\n this.unit = unit\n this.maximumEntries = maximumEntries\n }\n\n /**\n * Convert the raw data into a string.\n * @return {String} A list of [key, value].\n */\n listData() {\n let /** String */ table = ''\n for (let [key, value] of this.statisticData) {\n table += key + ' : ' + value.toString() + ' Blocks' + '\\n'\n }\n return table\n }\n\n /**\n * Generate necessary parameters (option) for vue-echarts.\n * Format of the parameters can be found here:\n * https://echarts.apache.org/en/option.html\n * @param {String} unit\n * @return {Object} an ECharts option object.\n */\n getEchartsOption(): EChartsOption {\n let /** Object */ option: EChartsOption = {}\n option.title = {\n text: this.title,\n left: 'center'\n }\n option.tooltip = {\n trigger: 'item',\n formatter: '{a}
{b} : {c} ' + this.unit + ' ({d}%)'\n }\n option.legend = {\n orient: 'horizontal',\n left: 'top',\n top: '10%',\n data: Array.from(this.trimmedData.keys())\n }\n option.series = [\n {\n name: this.title,\n type: 'pie',\n radius: '55%',\n center: ['50%', '60%'],\n data: Array.from(this.trimmedData).map((pair: any) => {\n return { value: pair[1], name: pair[0] }\n }),\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)'\n }\n }\n }\n ]\n return option\n }\n}\n\n/**\n * When there are too many entries in the map, the pie chart can be very\n * crowded. This function will return the entries that have high values.\n * Specifically, the top will be stored and the others\n * will be added into an entry called 'other'.\n * @param {Map} map\n * @param {Number} maximumEntries\n * @return {Map}\n */\nfunction trimMap(map: Map, maximumEntries: number) {\n if (map.size <= maximumEntries) return map\n let /** Map */ new_map = new Map()\n for (let i = 0; i < maximumEntries; i++) {\n let /** Number */ curr = 0\n let /** String */ currKey = ''\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n if (value > curr) {\n curr = value\n currKey = key\n }\n }\n }\n new_map.set(currKey, curr)\n }\n let /** Number */ restTotal = 0\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n restTotal += value\n }\n }\n new_map.set('other', restTotal)\n return new_map\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class MapParser will take in a Android build and construct\n * several file name maps (physical address: file name) according to it.\n * The map of each partitions is added by calling MapParser.add(partitionName).\n * You can query the file name being operated by calling\n * MapParser.query(address, datalength).\n */\n\nimport {\n ZipReader,\n BlobReader,\n TextWriter,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\nimport { chromeos_update_engine } from './update_metadata_pb'\n\nexport class MapParser {\n build: ZipReader\n mapFiles: Map\n maps: Map\n /**\n * This class will take in a .zip Android build and construct a file type map\n * @param {File} targetFile\n */\n constructor(targetFile: File | URL) {\n if (targetFile instanceof File) {\n this.build = new ZipReader(new BlobReader(targetFile))\n } else {\n this.build = new ZipReader(new HttpReader(targetFile.href))\n }\n this.mapFiles = new Map()\n this.maps = new Map()\n }\n\n /**\n * Find the .map entries in the .zip build file. Store them as a map with\n * pairs of (partition name: zip.js entry).\n */\n async init() {\n let /** Array */ entries = await this.build.getEntries()\n const /** RegExp*/ regexPath = /IMAGES\\/[a-z_]*\\.map/g\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.map)/g\n entries.forEach(entry => {\n if (entry.filename.match(regexPath)) {\n this.mapFiles.set(entry.filename.match(regexName)![0], entry)\n }\n })\n }\n\n /**\n * According to the .map in the build, build a map for later query.\n * @param {String} partitionName\n * @param {Number} totalLength\n */\n async add(partitionName: string, totalLength: number) {\n let /** Array */ map = []\n const /** RegExp */ regexNumber = /\\d+/g\n const /** Reg */ regexRange = /\\d+\\-\\d+/g\n for (let i = 0; i < totalLength; i++) map[i] = `<${partitionName}>`\n if (this.mapFiles.get(partitionName)) {\n let /** String */ mapText = await this.mapFiles\n .get(partitionName)\n .getData(new TextWriter())\n let /** Array */ fileEntries = mapText.split('\\n')\n // Each line of the .map file in Android build starts with the filename\n // Followed by the block address, either a number or a range, for example:\n // //system/apex/com.android.adbd.apex 54-66 66 66-2663\n for (let entry of fileEntries) {\n let /** Array */ elements = entry.split(' ')\n for (let j = 1; j < elements.length; j++) {\n let /** Number */ left = 0\n let /** Number */ right = 0\n if (elements[j].match(regexRange)) {\n left = parseInt(elements[j].match(/\\d+/g)[0])\n right = parseInt(elements[j].match(/\\d+/g)[1])\n } else {\n left = parseInt(elements[j].match(regexNumber))\n right = parseInt(elements[j].match(regexNumber))\n }\n InsertMap(map, elements[0], left, right)\n }\n }\n this.maps.set(partitionName, map)\n } else {\n this.maps.set(partitionName, map)\n }\n }\n\n /**\n * Return the filename of given address.\n * @param {String} partitionName\n * @param {Array} extents\n * @return {Array}\n */\n query(partitionName: string, extents: Array) {\n let /** Array */ names = []\n let /** Array */ map = this.maps.get(partitionName)\n for (let ext of extents) {\n names.push(queryMap(map, ext.startBlock, ext.startBlock + ext.numBlocks))\n }\n return names\n }\n}\n\n/**\n * Fill in the hashtable from to using .\n * @param {Array} map\n * @param {String} name\n * @param {Number} left\n * @param {Number} right\n */\nfunction InsertMap(\n map: Array,\n name: string,\n left: number,\n right: number\n) {\n for (let i = left; i <= right; i++) {\n map[i] = name\n }\n}\n\n/**\n * Query the hashtable using index
.\n * @param {Array} map\n * @param {Number} left\n * @param {Number} right\n */\nfunction queryMap(map: Array, left: number, right: number) {\n // Assuming the consecutive blocks belong to the same file\n // Only the start block is queried here.\n if (!map[left]) {\n return 'unknown'\n }\n return map[left]\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Offer functions that can be used to parse the partitionUpdate\n * and then do statistics over it. One can use analysePartitions to specify the\n * partitions been analysed and metrics.\n */\n\nimport { OpType, MergeOpType } from './payload'\nimport { EchartsData } from './echarts_data'\nimport { MapParser } from './map_parser'\nimport { chromeos_update_engine } from './update_metadata_pb'\n\n/**\n * Add a to a element associated to . If the element dose not\n * exists than its value will be initialized to zero.\n * @param {Map} map\n * @param {String} key\n * @param {Number} value\n */\nfunction addNumberToMap(map: Map, key: String, value: number) {\n if (!map.get(key)) {\n map.set(key, 0)\n }\n map.set(key, map.get(key)! + value)\n}\n\n/**\n * Return a statistics over the numbers of blocks (in destination) that are\n * being operated by different installation operation (e.g. REPLACE, BSDIFF).\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedBlockStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n operatedBlocks,\n operationType,\n numBlocks(operation.dstExtents)\n )\n }\n }\n return operatedBlocks\n}\n\nexport function mergeOperationStatistics(\n partitions: Array,\n blockSize: number\n) {\n let /** Map */ mergeOperations = new Map()\n let /** MergeOpType */ opType = new MergeOpType()\n let /** Number */ totalBlocks = 0\n for (let partition of partitions) {\n for (let operation of partition.mergeOperations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n mergeOperations,\n operationType,\n operation.dstExtent!.numBlocks\n )\n }\n // The total blocks number should be rounded up\n if (partition.newPartitionInfo == null) {\n throw new Error(\n `Partition ${partition.partitionName} doesn't have new_partition_info field.`\n )\n }\n totalBlocks += Math.ceil(partition.newPartitionInfo.size / blockSize)\n }\n // The COW merge operation is default to be COW_replace and not shown in\n // the manifest info. We have to mannually add that part of operations,\n // by subtracting the total blocks with other blocks.\n mergeOperations.forEach((value, key) => (totalBlocks -= value))\n mergeOperations.set('COW_REPLACE', totalBlocks)\n return mergeOperations\n}\n\n/**\n * Return a statistics over the disk usage of payload.bin, based on the type of\n * installation operations. Only partitions that are being passed in will be\n * included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedPayloadStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(operatedBlocks, operationType, operation.dataLength)\n }\n }\n return operatedBlocks\n}\n/**\n * Return a statistics over the disk usage of each file types in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFileExtensionsStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let filenameStats = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n const fileExtenstionStats = new Map()\n filenameStats.forEach((size, filename) => {\n addNumberToMap(fileExtenstionStats, name2Extension(filename), size)\n })\n return fileExtenstionStats\n}\n\n/**\n * Return a statistics over the disk usage of each file name in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFilenamesStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let /** Map */ operatedFilenames = new Map()\n if (!targetFile) {\n return operatedFilenames\n }\n let buildMap = new MapParser(targetFile)\n await buildMap.init()\n for (let partition of partitions) {\n await buildMap.add(\n partition.partitionName,\n Math.ceil(partition.newPartitionInfo!.size / blockSize)\n )\n for (let operation of partition.operations!) {\n if (!operation.hasOwnProperty('dataLength')) continue\n let operatedFileNames = buildMap.query(\n partition.partitionName,\n operation.dstExtents!\n )\n let extentDataLength = distributeFilenames(\n operatedFileNames,\n operation.dstExtents!,\n operation.dataLength\n )\n extentDataLength!.forEach((value, key) => {\n addNumberToMap(operatedFilenames, key, value)\n })\n }\n }\n return operatedFilenames\n}\n\n/**\n * Analyse the given partitions using the given metrics.\n * @param {String} metrics\n * @param {Array} partitions\n * @return {EchartsData}\n */\nexport async function analysePartitions(\n metrics: String,\n partitions: Array,\n blockSize = 4096,\n targetFile: File | null | URL = null\n) {\n let /** Map */ statisticsData\n let /** Echartsdata */ echartsData\n switch (metrics) {\n case 'blocks':\n statisticsData = operatedBlockStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Operated blocks in target build',\n 'blocks'\n )\n break\n case 'payload':\n statisticsData = operatedPayloadStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Payload disk usage',\n 'bytes'\n )\n break\n case 'COWmerge':\n statisticsData = mergeOperationStatistics(partitions, blockSize)\n echartsData = new EchartsData(\n statisticsData,\n 'COW merge operations',\n 'blocks'\n )\n break\n case 'filenames':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated filenames',\n 'bytes'\n )\n break\n case 'extensions':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFileExtensionsStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated extensions',\n 'bytes'\n )\n break\n }\n if (echartsData) {\n return echartsData\n } else {\n throw 'Please double check if this is a proper AB OTA package.'\n }\n}\n\n/**\n * Calculate the number of blocks being operated\n * @param {Array} exts\n * @return {number}\n */\nexport function numBlocks(\n exts: Array | null | undefined\n) {\n if (!exts) {\n return 0\n }\n const accumulator = (total: number, ext: chromeos_update_engine.IExtent) =>\n total + ext.numBlocks\n return exts.reduce(accumulator, 0)\n}\n\n/**\n * Return a string that indicates the blocks being operated\n * in the manner of (start_block, block_length)\n * @param {Array} exts\n * @return {string}\n */\nexport function displayBlocks(exts: Array) {\n const accumulator = (total: string, ext: chromeos_update_engine.Extent) =>\n total + '(' + ext.startBlock + ',' + ext.numBlocks + ')'\n return exts.reduce(accumulator, '')\n}\n\n/**\n * Return a map with pairs of (file extension, data length used by this\n * extension). The total data length will be distributed by the blocks ratio\n * of each extent.\n * @param {Array} filenames\n * @param {Array} exts\n * @param {Number} length\n * @return {Map}\n */\nexport function distributeFilenames(\n filenames: Array,\n exts: Array,\n length: number\n): Map {\n let totalBlocks = numBlocks(exts)\n let distributedLengths = new Map()\n for (let i = 0; i < filenames.length; i++) {\n addNumberToMap(\n distributedLengths,\n filenames[i],\n Math.round((length * exts[i].numBlocks) / totalBlocks)\n )\n }\n return distributedLengths\n}\n\n/**\n * convert a filename into extension, for example:\n * '//system/apex/com.android.adbd.apex' => 'apex'\n * @param {String} filename\n * @return {String}\n */\nexport function name2Extension(filename: string) {\n let elements = filename.split('.')\n if (elements.length > 1) {\n return elements[elements.length - 1]\n } else if (elements[0] === 'unknown') {\n return 'unknown'\n } else if (filename[0] == '<' && filename.endsWith('>')) {\n return filename\n } else {\n return 'no-extension'\n }\n}\n","\nimport { numBlocks, displayBlocks } from '../services/payload_composition'\nimport { DefaultMap } from '../services/payload'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n operation: {\n type: Object,\n required: true\n },\n mapType: {\n type: DefaultMap,\n required: true\n }\n },\n data() {\n return {\n srcTotalBlocks: 0,\n srcBlocks: '',\n dstTotalBlocks: 0,\n dstBlocks: ''\n }\n },\n mounted() {\n if (this.operation.srcExtents) {\n this.srcTotalBlocks = numBlocks(this.operation.srcExtents)\n this.srcBlocks = displayBlocks(this.operation.srcExtents)\n }\n if (this.operation.dstExtents) {\n this.dstTotalBlocks = numBlocks(this.operation.dstExtents)\n this.dstBlocks = displayBlocks(this.operation.dstExtents)\n }\n }\n})\n","import { render } from \"./OperationDetail.vue?vue&type=template&id=44174082&scoped=true&ts=true\"\nimport script from \"./OperationDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./OperationDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-44174082\"]])\n\nexport default __exports__","\nimport { chromeos_update_engine } from '@/services/update_metadata_pb'\nimport { defineComponent } from 'vue'\nimport { OpType, octToHex } from '../services/payload'\nimport OperationDetail from './OperationDetail.vue'\n\nexport default defineComponent({\n components: {\n OperationDetail\n },\n props: {\n partition: {\n type: chromeos_update_engine.PartitionUpdate,\n required: true\n },\n dynamicPartitionList: {\n type: Array,\n required: true\n }\n },\n data() {\n return {\n showOPs: false,\n showInfo: false,\n opType: new OpType()\n }\n },\n methods: {\n toggle(key: string) {\n ;(this as any)[key] = !(this as any)[key]\n },\n octToHex: octToHex\n },\n computed: {\n readableTimestamp() {\n const unixTimestamp = parseInt(this.partition.version)\n if (isNaN(unixTimestamp)) {\n return ''\n }\n // Unix timestamp is in seconds, but js want milliseconds. So *1000\n return new Date(unixTimestamp * 1000).toString()\n },\n isDynamicPartition(): boolean {\n return (\n this.dynamicPartitionList.indexOf(this.partition.partitionName) >= 0\n )\n }\n }\n})\n","import { render } from \"./PartitionDetail.vue?vue&type=template&id=6dba348a&scoped=true&ts=true\"\nimport script from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PartitionDetail.vue?vue&type=style&index=0&id=6dba348a&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6dba348a\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, openBlock as _openBlock, createElementBlock as _createElementBlock, mergeProps as _mergeProps, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0514c264\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h3\", null, \"Basic infos\", -1))\nconst _hoisted_2 = { class: \"align\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" File name \", -1))\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" File size \", -1))\nconst _hoisted_5 = { class: \"align\" }\nconst _hoisted_6 = { class: \"wrap\" }\nconst _hoisted_7 = { key: 2 }\nconst _hoisted_8 = { class: \"align\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Incremental \", -1))\nconst _hoisted_10 = { key: 0 }\nconst _hoisted_11 = { key: 1 }\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Partial \", -1))\nconst _hoisted_13 = { key: 0 }\nconst _hoisted_14 = { key: 1 }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" A/B update \", -1))\nconst _hoisted_16 = { key: 0 }\nconst _hoisted_17 = { key: 1 }\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" VAB \", -1))\nconst _hoisted_19 = { key: 0 }\nconst _hoisted_20 = { key: 1 }\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" VABC \", -1))\nconst _hoisted_22 = { key: 0 }\nconst _hoisted_23 = { key: 1 }\nconst _hoisted_24 = { key: 0 }\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Total Dynamic Partition Size \", -1))\nconst _hoisted_26 = { key: 1 }\nconst _hoisted_27 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Total VABC COW Size \", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n (_ctx.zipFile)\n ? (_openBlock(), _createElementBlock(\"div\", _normalizeProps(_mergeProps({ key: 0 }, _ctx.$attrs)), [\n _createElementVNode(\"ul\", _hoisted_2, [\n _createElementVNode(\"li\", null, [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(_ctx.zipFile.getFileName()), 1)\n ]),\n _createElementVNode(\"li\", null, [\n _hoisted_4,\n _createTextVNode(\" \" + _toDisplayString(_ctx.zipFile.getFileSize()) + \" Bytes\", 1)\n ])\n ])\n ], 16))\n : _createCommentVNode(\"\", true),\n (_ctx.payload && _ctx.payload.metadata)\n ? (_openBlock(), _createElementBlock(\"div\", _normalizeProps(_mergeProps({ key: 1 }, _ctx.$attrs)), [\n _createElementVNode(\"ul\", _hoisted_5, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.otaMetadata, (formatter) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: formatter.name\n }, [\n _createElementVNode(\"strong\", null, _toDisplayString(formatter.name.trim() + ' '), 1),\n _createElementVNode(\"p\", _hoisted_6, _toDisplayString(String(_ctx.payload[formatter.key]).trim()), 1)\n ]))\n }), 128))\n ])\n ], 16))\n : _createCommentVNode(\"\", true),\n (_ctx.payload && _ctx.payload.manifest)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createElementVNode(\"ul\", _hoisted_8, [\n _createElementVNode(\"li\", null, [\n _hoisted_9,\n (_ctx.payload.preBuild)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_10, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_11, \" ❌ \"))\n ]),\n _createElementVNode(\"li\", null, [\n _hoisted_12,\n (_ctx.payload.manifest.partialUpdate)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_13, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_14, \" ❌ \"))\n ]),\n _createElementVNode(\"li\", null, [\n _hoisted_15,\n (!_ctx.payload.manifest.nonAB)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_16, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_17, \" ❌ \"))\n ]),\n _createElementVNode(\"li\", null, [\n _hoisted_18,\n (_ctx.payload.manifest.dynamicPartitionMetadata.snapshotEnabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_19, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_20, \" ❌ \"))\n ]),\n _createElementVNode(\"li\", null, [\n _hoisted_21,\n (_ctx.payload.manifest.dynamicPartitionMetadata.vabcEnabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_22, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_23, \" ❌ \"))\n ]),\n (_ctx.totalDynamicPartitionSize)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_24, [\n _hoisted_25,\n _createTextVNode(\" \" + _toDisplayString(_ctx.totalDynamicPartitionSize), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.totalCOWSize)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_26, [\n _hoisted_27,\n _createTextVNode(\" \" + _toDisplayString(_ctx.totalCOWSize), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}","import * as zip from '@zip.js/zip.js/dist/zip.js'\nimport { ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { Payload } from './payload'\n\nexport class ZipFile {\n public reader: ZipReader\n\n constructor(private file: File | URL) {\n this.reader = getZipReader(file)\n }\n getFileName() {\n return getFileName(this.file)\n }\n getFileSize() {\n if (this.file instanceof File) {\n return this.file.size\n } else {\n // TODO(zhangkelvin) Support getting file size from URL\n return 0\n }\n }\n}\n\nexport async function trimZip(\n file: ZipReader,\n p: (entry: zip.Entry) => boolean\n): Promise {\n const reader = file\n const writer = new zip.ZipWriter(new zip.BlobWriter('application/zip'))\n const entries = await reader.getEntries()\n for (const entry of entries.filter(entry => !!entry && p(entry))) {\n const blobWriter = new zip.BlobWriter()\n const data = (await entry.getData!(blobWriter)) as Blob\n console.log(`Adding ${entry.filename}, ${data.size}`)\n writer.add(entry.filename, new zip.BlobReader(blobWriter.getData()), {\n level: 0 // no compression\n })\n }\n return writer\n}\n\nfunction getZipReader(file: File | URL) {\n if (file instanceof File) {\n return new zip.ZipReader(new zip.BlobReader(file))\n } else {\n return new zip.ZipReader(new zip.HttpReader(file.href))\n }\n}\n\nexport function getFileName(file: File | URL) {\n if (file instanceof File) {\n return file.name\n } else {\n return file.pathname\n }\n}\n\nexport async function trimTargetFiles(file: File | URL): Promise {\n const writer = await trimZip(getZipReader(file), entry => {\n return entry.filename.startsWith('META/') || entry.filename.endsWith('.map')\n })\n return await writer.close()\n}\n\nexport async function trimOTAPackage(payload: Payload): Promise {\n const writer = await trimZip(payload.zipreader, entry => {\n return entry.filename != 'payload.bin'\n })\n await writer.add(\n 'payload.bin',\n new zip.BlobReader(payload.buffer!.slice(0, payload.getMetadataLength())),\n // Most toolings assume that payload.bin and other entries are not\n // compressed, so use level 0\n {\n level: 0\n }\n )\n const blob: Blob = await writer.close()\n return blob\n}\n\nexport function downloadFile(\n blob: Blob,\n downloadNode: HTMLAnchorElement,\n filename: string\n) {\n const url = window.URL.createObjectURL(blob)\n downloadNode.href = url\n downloadNode.download = filename\n downloadNode.click()\n window.URL.revokeObjectURL(url)\n}\n\nexport function ensureSuffix(str: string, suffix: string) {\n if (str.endsWith(suffix)) {\n return str\n } else {\n return str + suffix\n }\n}\n","\nimport { Payload, MetadataFormat } from '../services/payload'\nimport { ZipFile } from '@/services/trim_zip'\n\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n zipFile: {\n type: ZipFile,\n required: true\n },\n payload: {\n type: Payload,\n required: true\n }\n },\n data() {\n return {\n MetadataFormat\n }\n },\n computed: {\n otaMetadata(): {\n prefix: string\n key: string\n name: string\n }[] {\n return MetadataFormat.filter(formatter =>\n String((this.payload as any)[formatter.key]).length > 0\n );\n },\n totalCOWSize(): number {\n const cowSizes = this.payload?.manifest?.partitions.map(p => p.estimateCowSize || 0);\n if (!cowSizes) {\n return 0;\n }\n return cowSizes.reduce((a, b) => a + b);\n },\n totalDynamicPartitionSize(): number {\n const groups = this.payload?.manifest?.dynamicPartitionMetadata?.groups\n if (!groups) {\n return 0\n }\n const dynamicPartitionNamess = new Set(\n groups.flatMap(g => g.partitionNames)\n )\n const dynamicPartitions =\n this.payload.manifest?.partitions.filter(p =>\n dynamicPartitionNamess.has(p.partitionName)\n ) || []\n if (dynamicPartitions.length <= 0) {\n return 0\n }\n return dynamicPartitions\n .map(p => p.newPartitionInfo?.size || 0)\n .reduce((acc, cur) => acc + cur)\n }\n }\n})\n","import { render } from \"./BasicInfo.vue?vue&type=template&id=0514c264&scoped=true&ts=true\"\nimport script from \"./BasicInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./BasicInfo.vue?vue&type=script&lang=ts\"\n\nimport \"./BasicInfo.vue?vue&type=style&index=0&id=0514c264&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0514c264\"]])\n\nexport default __exports__","\nimport PartitionDetail from './PartitionDetail.vue'\nimport BasicInfo from './BasicInfo.vue'\nimport { Payload, octToHex } from '../services/payload'\nimport {\n downloadFile,\n ensureSuffix,\n trimOTAPackage,\n ZipFile\n} from '@/services/trim_zip'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n components: {\n PartitionDetail,\n BasicInfo\n },\n props: {\n zipFile: {\n type: ZipFile,\n default: null\n },\n payload: {\n type: Payload,\n default: null\n }\n },\n methods: {\n octToHex: octToHex,\n async exportOTAPackage() {\n const blob = await trimOTAPackage(this.payload as Payload)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(this.zipFile.getFileName(), '.zip')\n )\n }\n },\n computed: {\n dynamicPartitions(): string[] {\n return (\n this.payload.manifest?.dynamicPartitionMetadata?.groups?.flatMap(\n g => g.partitionNames || []\n ) || []\n )\n }\n }\n})\n","import { render } from \"./PayloadDetail.vue?vue&type=template&id=05db67f2&scoped=true&ts=true\"\nimport script from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-05db67f2\"]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createVNode as _createVNode, createElementBlock as _createElementBlock, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-44b569bd\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/_createTextVNode(\"Export Target File Metadata\")\nconst _hoisted_2 = { ref: \"download\" }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\" Analyse Installed Blocks (in target build) \")\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\" Analyse Payload Composition \")\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\" Analyse COW Merge Operations \")\nconst _hoisted_7 = {\n key: 0,\n class: \"tooltiptext\"\n}\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\" Analyse Filenames \")\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\" Analyse File Extensions \")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_btn = _resolveComponent(\"v-btn\")!\n const _component_PartialCheckbox = _resolveComponent(\"PartialCheckbox\")!\n const _component_PieChart = _resolveComponent(\"PieChart\")!\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n const _component_BaseFile = _resolveComponent(\"BaseFile\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (_ctx.targetFile)\n ? (_openBlock(), _createBlock(_component_v_btn, {\n key: 0,\n block: \"\",\n class: \"md-6\",\n onClick: _ctx.exportTargetFileMetadata\n }, {\n default: _withCtx(() => [\n _hoisted_1\n ]),\n _: 1\n }, 8, [\"onClick\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"a\", _hoisted_2, null, 512),\n _createVNode(_component_PartialCheckbox, {\n modelValue: _ctx.partitionInclude,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.partitionInclude) = $event)),\n labels: _ctx.updatePartitions\n }, null, 8, [\"modelValue\", \"labels\"]),\n (_ctx.echartsData)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(_component_PieChart, {\n echartsData: _ctx.echartsData,\n onClick: _ctx.piechartClick\n }, null, 8, [\"echartsData\", \"onClick\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_v_divider),\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n block: \"\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.updateChart('blocks')))\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n block: \"\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.updateChart('payload')))\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\",\n class: \"tooltip\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n disabled: \n _ctx.manifest.nonAB || !_ctx.manifest.dynamicPartitionMetadata.vabcEnabled\n ,\n title: \"Only available for VABC update\",\n block: \"\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.updateChart('COWmerge')))\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n (_ctx.manifest.nonAB)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_7, \" This function is only supported in A/B OTA \"))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n block: \"\",\n disabled: !_ctx.targetFile,\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.updateChart('filenames')))\n }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n block: \"\",\n disabled: !_ctx.targetFile,\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.updateChart('extensions')))\n }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n (!_ctx.demo)\n ? (_openBlock(), _createBlock(_component_BaseFile, {\n key: 0,\n label: \"Drag and drop or Select The target Android build\",\n onFileSelect: _ctx.selectBuild\n }, null, 8, [\"onFileSelect\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ], 64))\n}","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-533f2336\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"value\", \"checked\"]\nconst _hoisted_2 = { key: 0 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_btn = _resolveComponent(\"v-btn\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_v_btn, {\n block: \"\",\n type: \"button\",\n class: \"my-5\",\n onClick: _ctx.revertAllSelection\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.selectAllText[_ctx.selectAll]), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _createVNode(_component_v_row, { class: \"mb-5\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.labels, (label) => {\n return (_openBlock(), _createBlock(_component_v_col, {\n key: label,\n cols: \"12\",\n md: \"4\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n value: label,\n checked: _ctx.modelValue.get(label),\n onChange: _cache[0] || (_cache[0] = ($event: any) => (_ctx.updateSelected($event.target.value)))\n }, null, 40, _hoisted_1),\n label\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_2, _toDisplayString(label), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, 1024))\n }), 128))\n ]),\n _: 1\n })\n ], 64))\n}","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n labels: {\n type: Array,\n default: new Array()\n },\n modelValue: {\n type: Map,\n default: new Map()\n }\n },\n data() {\n return {\n selectAll: 1,\n selectAllText: ['Select All', 'Unselect All']\n }\n },\n mounted() {\n // Set the default value to be true once mounted\n for (let key of this.labels) {\n this.modelValue.set(key, true)\n }\n },\n methods: {\n updateSelected(newSelect: string) {\n this.modelValue.set(newSelect, !this.modelValue.get(newSelect))\n this.$emit('update:modelValue', this.modelValue)\n },\n revertAllSelection() {\n this.selectAll = 1 - this.selectAll\n for (let key of this.modelValue.keys()) {\n this.modelValue.set(key, Boolean(this.selectAll))\n }\n }\n }\n})\n","import { render } from \"./PartialCheckbox.vue?vue&type=template&id=533f2336&scoped=true&ts=true\"\nimport script from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\n\nimport \"./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-533f2336\"]])\n\nexport default __exports__","\n\n\n\n\n\n\n","import { render } from \"./PieChart.vue?vue&type=template&id=5d1cb486&scoped=true\"\nimport script from \"./PieChart.vue?vue&type=script&lang=js\"\nexport * from \"./PieChart.vue?vue&type=script&lang=js\"\n\nimport \"./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5d1cb486\"]])\n\nexport default __exports__","\nimport axios from 'axios'\nimport PartialCheckbox from './PartialCheckbox.vue'\nimport PieChart from './PieChart.vue'\nimport BaseFile from './BaseFile.vue'\nimport { analysePartitions } from '../services/payload_composition'\nimport { chromeos_update_engine as update_metadata_pb } from '../services/update_metadata_pb'\nimport { TooltipComponentPositionCallbackParams } from 'echarts'\nimport { EchartsData } from '@/services/echarts_data'\nimport { defineComponent } from 'vue'\nimport {\n downloadFile,\n ensureSuffix,\n getFileName,\n trimTargetFiles\n} from '@/services/trim_zip'\n\ninterface ComponentState {\n partitionInclude: Map\n echartsData: EchartsData | null\n listData: string\n targetFile: File | URL | null\n}\n\nexport default defineComponent({\n components: {\n PartialCheckbox,\n PieChart,\n BaseFile\n },\n props: {\n manifest: {\n type: update_metadata_pb.DeltaArchiveManifest,\n default: () => []\n },\n demo: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n partitionInclude: new Map(),\n echartsData: null,\n listData: '',\n targetFile: null\n } as ComponentState\n },\n computed: {\n updatePartitions(): string[] {\n return this.manifest.partitions.map(\n (partition: update_metadata_pb.IPartitionUpdate) => {\n return partition.partitionName\n }\n )\n }\n },\n async mounted() {\n if (this.demo) {\n try {\n const download = await axios.get(\n './files/cf_x86_target_file_demo.zip',\n { responseType: 'blob' }\n )\n this.targetFile = new File([download.data], 'target_demo.zip')\n } catch (err) {\n console.log('Please put a proper example target file in /public/files/')\n }\n }\n },\n methods: {\n piechartClick(param: TooltipComponentPositionCallbackParams) {\n console.log(param)\n },\n async updateChart(metrics: string) {\n let partitionSelected = this.manifest.partitions.filter(partition =>\n this.partitionInclude.get(partition.partitionName)\n )\n try {\n this.echartsData = await analysePartitions(\n metrics,\n partitionSelected,\n this.manifest.blockSize,\n this.targetFile\n )\n } catch (err) {\n alert(`Cannot be processed for the following issue: ${err}`)\n }\n },\n selectBuild(file: File | URL) {\n //TODO(lishutong) check the version of target file is same to the OTA target\n this.targetFile = file\n },\n async exportTargetFileMetadata() {\n const blob = await trimTargetFiles(this.targetFile!)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(getFileName(this.targetFile!), '.zip')\n )\n }\n }\n})\n","import { render } from \"./PayloadComposition.vue?vue&type=template&id=44b569bd&scoped=true&ts=true\"\nimport script from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadComposition.vue?vue&type=style&index=0&id=44b569bd&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-44b569bd\"]])\n\nexport default __exports__","\nimport BaseFile from '../components/BaseFile.vue'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n BaseFile,\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return ({\n zipFile: null,\n payload: null\n } as unknown) as {\n zipFile: ZipFile\n payload: Payload\n }\n },\n methods: {\n async unpackOTA(file: File | URL) {\n this.zipFile = new ZipFile(file)\n try {\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n alert(`Please check if this is a correct OTA package (.zip). ${err}`)\n console.log(err)\n }\n }\n }\n})\n","import { render } from \"./PackageAnalysis.vue?vue&type=template&id=0c172053&ts=true\"\nimport script from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nexport * from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createVNode as _createVNode } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_PayloadDetail = _resolveComponent(\"PayloadDetail\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n const _component_PayloadComposition = _resolveComponent(\"PayloadComposition\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n\n return (_openBlock(), _createBlock(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n (_ctx.zipFile && _ctx.payload)\n ? (_openBlock(), _createBlock(_component_PayloadDetail, {\n key: 0,\n zipFile: _ctx.zipFile,\n payload: _ctx.payload\n }, null, 8, [\"zipFile\", \"payload\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_component_v_divider, { vertical: \"\" }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n (_ctx.zipFile && _ctx.payload.manifest)\n ? (_openBlock(), _createBlock(_component_PayloadComposition, {\n key: 0,\n manifest: _ctx.payload.manifest,\n demo: true\n }, null, 8, [\"manifest\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n}","\nimport axios from 'axios'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return {\n zipFile: null,\n payload: null\n } as {\n zipFile: ZipFile | null\n payload: Payload | null\n }\n },\n async created() {\n // put cf_x86_demo.zip and cf_x86_target_file_demo into\n // this directory: /public/files\n try {\n const download = await axios.get('./files/cf_x86_demo.zip', {\n responseType: 'blob'\n })\n this.zipFile = new ZipFile(new File([download.data], 'ota_demo.zip'))\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n console.log('Please put a proper example OTA in /public/files/')\n }\n }\n})\n","import { render } from \"./Demo.vue?vue&type=template&id=1e5d071a&ts=true\"\nimport script from \"./Demo.vue?vue&type=script&lang=ts\"\nexport * from \"./Demo.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./About.vue?vue&type=template&id=67ed0bf6\"\nconst script = {}\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n","import { render } from \"./NotFound.vue?vue&type=template&id=50c6f348&scoped=true\"\nconst script = {}\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-50c6f348\"]])\n\nexport default __exports__","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createRouter, createWebHistory } from 'vue-router'\nimport PackageAnalysis from '@/views/PackageAnalysis.vue'\nimport Demo from'@/views/Demo.vue'\nimport About from '@/views/About.vue'\nimport NotFound from '@/views/NotFound.vue'\n\nconst routes = [\n {\n path: '/',\n name: 'Analysis',\n component: PackageAnalysis,\n meta: {\n title: 'Analyse OTA package - from AOSP'\n }\n },\n {\n path: '/demo',\n name: 'Demo',\n component: Demo\n },\n {\n path: '/about',\n name: 'About',\n component: About\n },\n {\n path: '/:catchAll(.*)',\n name: 'Not Found',\n component: NotFound\n }\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes\n})\n\n// This callback runs before every route change, including on page load.\nrouter.beforeEach((to, from, next) => {\n // This goes through the matched routes from last to first, finding the closest route with a title.\n // e.g., if we have `/some/deep/nested/route` and `/some`, `/deep`, and `/nested` have titles,\n // `/nested`'s will be chosen.\n const nearestWithTitle = to.matched.slice().reverse().find(r => r.meta && r.meta.title);\n\n // Find the nearest route element with meta tags.\n const nearestWithMeta = to.matched.slice().reverse().find(r => r.meta && r.meta.metaTags)!;\n\n const previousNearestWithMeta = from.matched.slice().reverse().find(r => r.meta && r.meta.metaTags);\n\n // If a route with a title was found, set the document (page) title to that value.\n if(nearestWithTitle) {\n document.title = nearestWithTitle.meta.title as string;\n } else if(previousNearestWithMeta) {\n document.title = previousNearestWithMeta.meta.title as string;\n }\n\n // Remove any stale meta tags from the document using the key attribute we set below.\n Array.from(document.querySelectorAll('[data-vue-router-controlled]')).map(el => el.parentNode!.removeChild(el));\n\n next();\n});\n\nexport default router\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createStore } from 'vuex'\n\nexport default createStore({\n state: {},\n mutations: {},\n actions: {},\n modules: {}\n})\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createApp } from 'vue'\nimport vuetify from './plugins/vuetify'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nconst app = createApp(App)\napp.use(router)\napp.use(store)\napp.use(vuetify)\n\napp.mount('#app')","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkota_analyzer\"] = self[\"webpackChunkota_analyzer\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(2848); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["components","directives","theme","defaultTheme","rounded","color","links","link","key","to","class","fluid","data","__exports__","render","_ctx","_cache","$props","$setup","$data","$options","_component_v_alert","_component_v_row","_component_BaseFile","_component_PayloadDetail","_component_v_col","_component_v_divider","_component_PayloadComposition","default","style","_","cols","md","label","onFileSelect","unpackOTA","zipFile","payload","vertical","manifest","_hoisted_2","_hoisted_3","_hoisted_4","onDragover","dragover","onDragleave","dragleave","onDrop","drop","fileName","ref","type","accept","onChange","handleFileChange","parsedURL","url","placeholder","$event","onKeyup","urlKeyup","props","String","emits","computed","URL","this","methods","event","currentTarget","target","files","length","selectedFile","$emit","name","preventDefault","classList","contains","add","remove","dataTransfer","console","log","error","value","n","_hoisted_5","_hoisted_6","_hoisted_7","_component_v_btn","_component_BasicInfo","_component_PartitionDetail","_component_v_card","onClick","exportOTAPackage","partitions","partition","partitionName","elevation","hover","shaped","dynamicPartitionList","dynamicPartitions","metadata_signature","nonAB","octToHex","signatures","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_component_OperationDetail","oldPartitionInfo","isDynamicPartition","estimateCowSize","postinstallPath","toggle","active","showInfo","inactive","size","hash","newPartitionInfo","version","readableTimestamp","showOPs","operations","operation","dataSha256Hash","mapType","opType","$Reader","$protobuf","$Writer","$util","$root","chromeos_update_engine","Extent","properties","keys","Object","i","prototype","startBlock","Long","fromBits","numBlocks","create","encode","message","writer","hasOwnProperty","call","uint32","uint64","encodeDelimited","ldelim","decode","reader","end","undefined","len","pos","tag","skipType","decodeDelimited","verify","isInteger","low","high","fromObject","object","fromValue","unsigned","parseInt","LongBits","toNumber","toObject","options","defaults","long","longs","toString","Number","toJSON","constructor","Signatures","emptyArray","Signature","fork","push","Array","isArray","TypeError","arrays","j","newBuffer","unpaddedSignatureSize","bytes","fixed32","isString","base64","slice","PartitionInfo","ImageInfo","board","channel","buildChannel","buildVersion","string","InstallOperation","srcExtents","dstExtents","dataOffset","dataLength","srcLength","dstLength","srcSha256Hash","int32","ProtocolError","instance","enums","Type","valuesById","values","CowMergeOperation","srcExtent","dstExtent","srcOffset","PartitionUpdate","newPartitionSignature","mergeOperations","runPostinstall","filesystemType","postinstallOptional","hashTreeDataExtent","hashTreeExtent","hashTreeAlgorithm","hashTreeSalt","fecDataExtent","fecExtent","fecRoots","bool","Boolean","DynamicPartitionGroup","partitionNames","DynamicPartitionMetadata","groups","snapshotEnabled","vabcEnabled","vabcCompressionParam","cowVersion","ApexInfo","packageName","isCompressed","decompressedSize","int64","ApexMetadata","apexInfo","DeltaArchiveManifest","installOperations","kernelInstallOperations","blockSize","signaturesOffset","signaturesSize","oldKernelInfo","newKernelInfo","oldRootfsInfo","newRootfsInfo","oldImageInfo","newImageInfo","minorVersion","maxTimestamp","dynamicPartitionMetadata","partialUpdate","PayloadNonAB","packedFile","Blocksize","regexName","getEntries","entries","entry","filename","match","newPartition","getData","rawText","parseTransferList","lines","split","totalBlocks","entryStashed","maxStashed","Uint8Array","sizeNewData","newDataSize","line","op","elements","reduce","parseRange","RegExp","uncompressedSize","extents","rangeset","regexRange","extent","_MAGIC","_VERSION_SIZE","_MANIFEST_LEN_SIZE","_METADATA_SIGNATURE_LEN_SIZE","_PAYLOAD_HEADER_SIZE","_BRILLO_MAJOR_PAYLOAD_VERSION","MetadataFormat","prefix","StopIteration","Error","AbPayloadHeader","magic","manifest_len","metadata_signature_len","readIntAt","buffer","position","DataView","arrayBuffer","view","getBigUint64","offset","a","BigInt","getUint32","b","bigNumber","getUint16","OTAPayloadBlobWriter","contentType","blob","Blob","prefixLength","cursor","readInt","ret","decoder","TextDecoder","magicBytes","header_version","header","array","readHeader","Payload","file","File","zipreader","href","readManifest","metadata","init","alert","manifestBlob","signatureBlob","formatter","regex","trimEntry","unzip","parseMetadata","DefaultMap","has","get","Map","OpType","types","set","MergeOpType","bufferArray","space","maxLine","hex_table","hex","toUpperCase","getWithDefault","srcTotalBlocks","srcBlocks","dstTotalBlocks","dstBlocks","EchartsData","statisticData","title","unit","maximumEntries","trimmedData","trimMap","table","option","text","left","tooltip","trigger","legend","orient","top","from","series","radius","center","map","pair","emphasis","itemStyle","shadowBlur","shadowOffsetX","shadowColor","new_map","curr","currKey","restTotal","MapParser","targetFile","build","mapFiles","maps","regexPath","forEach","totalLength","regexNumber","mapText","fileEntries","right","InsertMap","names","ext","queryMap","addNumberToMap","operatedBlockStatistics","operatedBlocks","operationType","mergeOperationStatistics","Math","ceil","operatedPayloadStatistics","operatedFileExtensionsStatistics","operatedFilenamesStatistics","filenameStats","fileExtenstionStats","name2Extension","operatedFilenames","buildMap","operatedFileNames","query","extentDataLength","distributeFilenames","analysePartitions","metrics","statisticsData","echartsData","exts","accumulator","total","displayBlocks","filenames","distributedLengths","round","endsWith","required","mounted","OperationDetail","unixTimestamp","isNaN","Date","indexOf","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","$attrs","getFileName","getFileSize","otaMetadata","trim","preBuild","totalDynamicPartitionSize","totalCOWSize","ZipFile","getZipReader","trimZip","p","zip","filter","blobWriter","level","pathname","trimTargetFiles","startsWith","close","trimOTAPackage","getMetadataLength","downloadFile","downloadNode","window","createObjectURL","download","click","revokeObjectURL","ensureSuffix","str","suffix","cowSizes","dynamicPartitionNamess","Set","flatMap","g","acc","cur","PartitionDetail","BasicInfo","$refs","_component_PartialCheckbox","_component_PieChart","block","exportTargetFileMetadata","modelValue","partitionInclude","labels","updatePartitions","piechartClick","updateChart","disabled","demo","selectBuild","revertAllSelection","selectAllText","selectAll","checked","updateSelected","newSelect","getEchartsOption","VChart","provide","PartialCheckbox","PieChart","BaseFile","listData","responseType","param","partitionSelected","PayloadDetail","PayloadComposition","created","script","routes","path","component","PackageAnalysis","meta","Demo","About","NotFound","router","history","beforeEach","next","nearestWithTitle","matched","reverse","find","r","previousNearestWithMeta","metaTags","document","querySelectorAll","el","parentNode","removeChild","state","mutations","actions","modules","app","App","use","store","vuetify","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","every","splice","getter","__esModule","d","definition","o","defineProperty","enumerable","globalThis","Function","e","obj","prop","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/analyseOTA/js/app.04210d07.js b/analyseOTA/js/app.04210d07.js new file mode 100644 index 0000000..5267698 --- /dev/null +++ b/analyseOTA/js/app.04210d07.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var r,o,s=t[0],c=t[1],l=t[2],p=0,d=[];p>>3){case 1:r.startBlock=e.uint64();break;case 2:r.numBlocks=e.uint64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null==e.startBlock||!e.hasOwnProperty("startBlock")||se.isInteger(e.startBlock)||e.startBlock&&se.isInteger(e.startBlock.low)&&se.isInteger(e.startBlock.high)?null==e.numBlocks||!e.hasOwnProperty("numBlocks")||se.isInteger(e.numBlocks)||e.numBlocks&&se.isInteger(e.numBlocks.low)&&se.isInteger(e.numBlocks.high)?null:"numBlocks: integer|Long expected":"startBlock: integer|Long expected"},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.Extent)return e;var t=new ce.chromeos_update_engine.Extent;return null!=e.startBlock&&(se.Long?(t.startBlock=se.Long.fromValue(e.startBlock)).unsigned=!0:"string"===typeof e.startBlock?t.startBlock=parseInt(e.startBlock,10):"number"===typeof e.startBlock?t.startBlock=e.startBlock:"object"===Object(re["a"])(e.startBlock)&&(t.startBlock=new se.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0))),null!=e.numBlocks&&(se.Long?(t.numBlocks=se.Long.fromValue(e.numBlocks)).unsigned=!0:"string"===typeof e.numBlocks?t.numBlocks=parseInt(e.numBlocks,10):"number"===typeof e.numBlocks?t.numBlocks=e.numBlocks:"object"===Object(re["a"])(e.numBlocks)&&(t.numBlocks=new se.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(se.Long){var r=new se.Long(0,0,!0);n.startBlock=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.startBlock=t.longs===String?"0":0;if(se.Long){var a=new se.Long(0,0,!0);n.numBlocks=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.numBlocks=t.longs===String?"0":0}return null!=e.startBlock&&e.hasOwnProperty("startBlock")&&("number"===typeof e.startBlock?n.startBlock=t.longs===String?String(e.startBlock):e.startBlock:n.startBlock=t.longs===String?se.Long.prototype.toString.call(e.startBlock):t.longs===Number?new se.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0):e.startBlock),null!=e.numBlocks&&e.hasOwnProperty("numBlocks")&&("number"===typeof e.numBlocks?n.numBlocks=t.longs===String?String(e.numBlocks):e.numBlocks:n.numBlocks=t.longs===String?se.Long.prototype.toString.call(e.numBlocks):t.longs===Number?new se.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0):e.numBlocks),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.Signatures=function(){function e(e){if(this.signatures=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.signatures&&r.signatures.length||(r.signatures=[]),r.signatures.push(ce.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.signatures&&e.hasOwnProperty("signatures")){if(!Array.isArray(e.signatures))return"signatures: array expected";for(var t=0;t>>3){case 1:r.version=e.uint32();break;case 2:r.data=e.bytes();break;case 3:r.unpaddedSignatureSize=e.fixed32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null!=e.version&&e.hasOwnProperty("version")&&!se.isInteger(e.version)?"version: integer expected":null!=e.data&&e.hasOwnProperty("data")&&!(e.data&&"number"===typeof e.data.length||se.isString(e.data))?"data: buffer expected":null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&!se.isInteger(e.unpaddedSignatureSize)?"unpaddedSignatureSize: integer expected":null},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.Signatures.Signature)return e;var t=new ce.chromeos_update_engine.Signatures.Signature;return null!=e.version&&(t.version=e.version>>>0),null!=e.data&&("string"===typeof e.data?se.base64.decode(e.data,t.data=se.newBuffer(se.base64.length(e.data)),0):e.data.length&&(t.data=e.data)),null!=e.unpaddedSignatureSize&&(t.unpaddedSignatureSize=e.unpaddedSignatureSize>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.version=0,t.bytes===String?n.data="":(n.data=[],t.bytes!==Array&&(n.data=se.newBuffer(n.data))),n.unpaddedSignatureSize=0),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.data&&e.hasOwnProperty("data")&&(n.data=t.bytes===String?se.base64.encode(e.data,0,e.data.length):t.bytes===Array?Array.prototype.slice.call(e.data):e.data),null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&(n.unpaddedSignatureSize=e.unpaddedSignatureSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e}(),e.PartitionInfo=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.size=e.uint64();break;case 2:r.hash=e.bytes();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null==e.size||!e.hasOwnProperty("size")||se.isInteger(e.size)||e.size&&se.isInteger(e.size.low)&&se.isInteger(e.size.high)?null!=e.hash&&e.hasOwnProperty("hash")&&!(e.hash&&"number"===typeof e.hash.length||se.isString(e.hash))?"hash: buffer expected":null:"size: integer|Long expected"},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.PartitionInfo)return e;var t=new ce.chromeos_update_engine.PartitionInfo;return null!=e.size&&(se.Long?(t.size=se.Long.fromValue(e.size)).unsigned=!0:"string"===typeof e.size?t.size=parseInt(e.size,10):"number"===typeof e.size?t.size=e.size:"object"===Object(re["a"])(e.size)&&(t.size=new se.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0))),null!=e.hash&&("string"===typeof e.hash?se.base64.decode(e.hash,t.hash=se.newBuffer(se.base64.length(e.hash)),0):e.hash.length&&(t.hash=e.hash)),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(se.Long){var r=new se.Long(0,0,!0);n.size=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.size=t.longs===String?"0":0;t.bytes===String?n.hash="":(n.hash=[],t.bytes!==Array&&(n.hash=se.newBuffer(n.hash)))}return null!=e.size&&e.hasOwnProperty("size")&&("number"===typeof e.size?n.size=t.longs===String?String(e.size):e.size:n.size=t.longs===String?se.Long.prototype.toString.call(e.size):t.longs===Number?new se.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0):e.size),null!=e.hash&&e.hasOwnProperty("hash")&&(n.hash=t.bytes===String?se.base64.encode(e.hash,0,e.hash.length):t.bytes===Array?Array.prototype.slice.call(e.hash):e.hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.InstallOperation=function(){function e(e){if(this.srcExtents=[],this.dstExtents=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.dataOffset=e.uint64();break;case 3:r.dataLength=e.uint64();break;case 4:r.srcExtents&&r.srcExtents.length||(r.srcExtents=[]),r.srcExtents.push(ce.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 5:r.srcLength=e.uint64();break;case 6:r.dstExtents&&r.dstExtents.length||(r.dstExtents=[]),r.dstExtents.push(ce.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 7:r.dstLength=e.uint64();break;case 8:r.dataSha256Hash=e.bytes();break;case 9:r.srcSha256Hash=e.bytes();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("type"))throw se.ProtocolError("missing required 'type'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 8:case 6:case 7:case 10:case 9:case 11:case 12:case 13:break}if(null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&!se.isInteger(e.dataOffset)&&!(e.dataOffset&&se.isInteger(e.dataOffset.low)&&se.isInteger(e.dataOffset.high)))return"dataOffset: integer|Long expected";if(null!=e.dataLength&&e.hasOwnProperty("dataLength")&&!se.isInteger(e.dataLength)&&!(e.dataLength&&se.isInteger(e.dataLength.low)&&se.isInteger(e.dataLength.high)))return"dataLength: integer|Long expected";if(null!=e.srcExtents&&e.hasOwnProperty("srcExtents")){if(!Array.isArray(e.srcExtents))return"srcExtents: array expected";for(var t=0;t>>0,e.dataOffset.high>>>0).toNumber(!0))),null!=e.dataLength&&(se.Long?(t.dataLength=se.Long.fromValue(e.dataLength)).unsigned=!0:"string"===typeof e.dataLength?t.dataLength=parseInt(e.dataLength,10):"number"===typeof e.dataLength?t.dataLength=e.dataLength:"object"===Object(re["a"])(e.dataLength)&&(t.dataLength=new se.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0))),e.srcExtents){if(!Array.isArray(e.srcExtents))throw TypeError(".chromeos_update_engine.InstallOperation.srcExtents: array expected");t.srcExtents=[];for(var n=0;n>>0,e.srcLength.high>>>0).toNumber(!0))),e.dstExtents){if(!Array.isArray(e.dstExtents))throw TypeError(".chromeos_update_engine.InstallOperation.dstExtents: array expected");t.dstExtents=[];for(var r=0;r>>0,e.dstLength.high>>>0).toNumber(!0))),null!=e.dataSha256Hash&&("string"===typeof e.dataSha256Hash?se.base64.decode(e.dataSha256Hash,t.dataSha256Hash=se.newBuffer(se.base64.length(e.dataSha256Hash)),0):e.dataSha256Hash.length&&(t.dataSha256Hash=e.dataSha256Hash)),null!=e.srcSha256Hash&&("string"===typeof e.srcSha256Hash?se.base64.decode(e.srcSha256Hash,t.srcSha256Hash=se.newBuffer(se.base64.length(e.srcSha256Hash)),0):e.srcSha256Hash.length&&(t.srcSha256Hash=e.srcSha256Hash)),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.srcExtents=[],n.dstExtents=[]),t.defaults){if(n.type=t.enums===String?"REPLACE":0,se.Long){var r=new se.Long(0,0,!0);n.dataOffset=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.dataOffset=t.longs===String?"0":0;if(se.Long){var a=new se.Long(0,0,!0);n.dataLength=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.dataLength=t.longs===String?"0":0;if(se.Long){var i=new se.Long(0,0,!0);n.srcLength=t.longs===String?i.toString():t.longs===Number?i.toNumber():i}else n.srcLength=t.longs===String?"0":0;if(se.Long){var o=new se.Long(0,0,!0);n.dstLength=t.longs===String?o.toString():t.longs===Number?o.toNumber():o}else n.dstLength=t.longs===String?"0":0;t.bytes===String?n.dataSha256Hash="":(n.dataSha256Hash=[],t.bytes!==Array&&(n.dataSha256Hash=se.newBuffer(n.dataSha256Hash))),t.bytes===String?n.srcSha256Hash="":(n.srcSha256Hash=[],t.bytes!==Array&&(n.srcSha256Hash=se.newBuffer(n.srcSha256Hash)))}if(null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?ce.chromeos_update_engine.InstallOperation.Type[e.type]:e.type),null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&("number"===typeof e.dataOffset?n.dataOffset=t.longs===String?String(e.dataOffset):e.dataOffset:n.dataOffset=t.longs===String?se.Long.prototype.toString.call(e.dataOffset):t.longs===Number?new se.LongBits(e.dataOffset.low>>>0,e.dataOffset.high>>>0).toNumber(!0):e.dataOffset),null!=e.dataLength&&e.hasOwnProperty("dataLength")&&("number"===typeof e.dataLength?n.dataLength=t.longs===String?String(e.dataLength):e.dataLength:n.dataLength=t.longs===String?se.Long.prototype.toString.call(e.dataLength):t.longs===Number?new se.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0):e.dataLength),e.srcExtents&&e.srcExtents.length){n.srcExtents=[];for(var s=0;s>>0,e.srcLength.high>>>0).toNumber(!0):e.srcLength),e.dstExtents&&e.dstExtents.length){n.dstExtents=[];for(var c=0;c>>0,e.dstLength.high>>>0).toNumber(!0):e.dstLength),null!=e.dataSha256Hash&&e.hasOwnProperty("dataSha256Hash")&&(n.dataSha256Hash=t.bytes===String?se.base64.encode(e.dataSha256Hash,0,e.dataSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.dataSha256Hash):e.dataSha256Hash),null!=e.srcSha256Hash&&e.hasOwnProperty("srcSha256Hash")&&(n.srcSha256Hash=t.bytes===String?se.base64.encode(e.srcSha256Hash,0,e.srcSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.srcSha256Hash):e.srcSha256Hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="REPLACE"]=0,t[e[1]="REPLACE_BZ"]=1,t[e[2]="MOVE"]=2,t[e[3]="BSDIFF"]=3,t[e[4]="SOURCE_COPY"]=4,t[e[5]="SOURCE_BSDIFF"]=5,t[e[8]="REPLACE_XZ"]=8,t[e[6]="ZERO"]=6,t[e[7]="DISCARD"]=7,t[e[10]="BROTLI_BSDIFF"]=10,t[e[9]="PUFFDIFF"]=9,t[e[11]="ZUCCHINI"]=11,t[e[12]="LZ4DIFF_BSDIFF"]=12,t[e[13]="LZ4DIFF_PUFFDIFF"]=13,t}(),e}(),e.CowMergeOperation=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.srcExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 3:r.dstExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 4:r.srcOffset=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:break}if(null!=e.srcExtent&&e.hasOwnProperty("srcExtent")){var t=ce.chromeos_update_engine.Extent.verify(e.srcExtent);if(t)return"srcExtent."+t}if(null!=e.dstExtent&&e.hasOwnProperty("dstExtent")){var n=ce.chromeos_update_engine.Extent.verify(e.dstExtent);if(n)return"dstExtent."+n}return null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&!se.isInteger(e.srcOffset)?"srcOffset: integer expected":null},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.CowMergeOperation)return e;var t=new ce.chromeos_update_engine.CowMergeOperation;switch(e.type){case"COW_COPY":case 0:t.type=0;break;case"COW_XOR":case 1:t.type=1;break;case"COW_REPLACE":case 2:t.type=2;break}if(null!=e.srcExtent){if("object"!==Object(re["a"])(e.srcExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.srcExtent: object expected");t.srcExtent=ce.chromeos_update_engine.Extent.fromObject(e.srcExtent)}if(null!=e.dstExtent){if("object"!==Object(re["a"])(e.dstExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.dstExtent: object expected");t.dstExtent=ce.chromeos_update_engine.Extent.fromObject(e.dstExtent)}return null!=e.srcOffset&&(t.srcOffset=e.srcOffset>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.type=t.enums===String?"COW_COPY":0,n.srcExtent=null,n.dstExtent=null,n.srcOffset=0),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?ce.chromeos_update_engine.CowMergeOperation.Type[e.type]:e.type),null!=e.srcExtent&&e.hasOwnProperty("srcExtent")&&(n.srcExtent=ce.chromeos_update_engine.Extent.toObject(e.srcExtent,t)),null!=e.dstExtent&&e.hasOwnProperty("dstExtent")&&(n.dstExtent=ce.chromeos_update_engine.Extent.toObject(e.dstExtent,t)),null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&(n.srcOffset=e.srcOffset),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="COW_COPY"]=0,t[e[1]="COW_XOR"]=1,t[e[2]="COW_REPLACE"]=2,t}(),e}(),e.PartitionUpdate=function(){function e(e){if(this.newPartitionSignature=[],this.operations=[],this.mergeOperations=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.partitionName=e.string();break;case 2:r.runPostinstall=e.bool();break;case 3:r.postinstallPath=e.string();break;case 4:r.filesystemType=e.string();break;case 5:r.newPartitionSignature&&r.newPartitionSignature.length||(r.newPartitionSignature=[]),r.newPartitionSignature.push(ce.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;case 6:r.oldPartitionInfo=ce.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:r.newPartitionInfo=ce.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:r.operations&&r.operations.length||(r.operations=[]),r.operations.push(ce.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 9:r.postinstallOptional=e.bool();break;case 10:r.hashTreeDataExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 11:r.hashTreeExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 12:r.hashTreeAlgorithm=e.string();break;case 13:r.hashTreeSalt=e.bytes();break;case 14:r.fecDataExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 15:r.fecExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 16:r.fecRoots=e.uint32();break;case 17:r.version=e.string();break;case 18:r.mergeOperations&&r.mergeOperations.length||(r.mergeOperations=[]),r.mergeOperations.push(ce.chromeos_update_engine.CowMergeOperation.decode(e,e.uint32()));break;case 19:r.estimateCowSize=e.uint64();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("partitionName"))throw se.ProtocolError("missing required 'partitionName'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(!se.isString(e.partitionName))return"partitionName: string expected";if(null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&"boolean"!==typeof e.runPostinstall)return"runPostinstall: boolean expected";if(null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&!se.isString(e.postinstallPath))return"postinstallPath: string expected";if(null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&!se.isString(e.filesystemType))return"filesystemType: string expected";if(null!=e.newPartitionSignature&&e.hasOwnProperty("newPartitionSignature")){if(!Array.isArray(e.newPartitionSignature))return"newPartitionSignature: array expected";for(var t=0;t>>0),null!=e.version&&(t.version=String(e.version)),e.mergeOperations){if(!Array.isArray(e.mergeOperations))throw TypeError(".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected");t.mergeOperations=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.newPartitionSignature=[],n.operations=[],n.mergeOperations=[]),t.defaults)if(n.partitionName="",n.runPostinstall=!1,n.postinstallPath="",n.filesystemType="",n.oldPartitionInfo=null,n.newPartitionInfo=null,n.postinstallOptional=!1,n.hashTreeDataExtent=null,n.hashTreeExtent=null,n.hashTreeAlgorithm="",t.bytes===String?n.hashTreeSalt="":(n.hashTreeSalt=[],t.bytes!==Array&&(n.hashTreeSalt=se.newBuffer(n.hashTreeSalt))),n.fecDataExtent=null,n.fecExtent=null,n.fecRoots=2,n.version="",se.Long){var r=new se.Long(0,0,!0);n.estimateCowSize=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.estimateCowSize=t.longs===String?"0":0;if(null!=e.partitionName&&e.hasOwnProperty("partitionName")&&(n.partitionName=e.partitionName),null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&(n.runPostinstall=e.runPostinstall),null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&(n.postinstallPath=e.postinstallPath),null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&(n.filesystemType=e.filesystemType),e.newPartitionSignature&&e.newPartitionSignature.length){n.newPartitionSignature=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0):e.estimateCowSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.DynamicPartitionGroup=function(){function e(e){if(this.partitionNames=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.name=e.string();break;case 2:r.size=e.uint64();break;case 3:r.partitionNames&&r.partitionNames.length||(r.partitionNames=[]),r.partitionNames.push(e.string());break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("name"))throw se.ProtocolError("missing required 'name'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(!se.isString(e.name))return"name: string expected";if(null!=e.size&&e.hasOwnProperty("size")&&!se.isInteger(e.size)&&!(e.size&&se.isInteger(e.size.low)&&se.isInteger(e.size.high)))return"size: integer|Long expected";if(null!=e.partitionNames&&e.hasOwnProperty("partitionNames")){if(!Array.isArray(e.partitionNames))return"partitionNames: array expected";for(var t=0;t>>0,e.size.high>>>0).toNumber(!0))),e.partitionNames){if(!Array.isArray(e.partitionNames))throw TypeError(".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected");t.partitionNames=[];for(var n=0;n>>0,e.size.high>>>0).toNumber(!0):e.size),e.partitionNames&&e.partitionNames.length){n.partitionNames=[];for(var a=0;a>>3){case 1:r.groups&&r.groups.length||(r.groups=[]),r.groups.push(ce.chromeos_update_engine.DynamicPartitionGroup.decode(e,e.uint32()));break;case 2:r.snapshotEnabled=e.bool();break;case 3:r.vabcEnabled=e.bool();break;case 4:r.vabcCompressionParam=e.string();break;case 5:r.cowVersion=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.groups&&e.hasOwnProperty("groups")){if(!Array.isArray(e.groups))return"groups: array expected";for(var t=0;t>>0),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.groups=[]),t.defaults&&(n.snapshotEnabled=!1,n.vabcEnabled=!1,n.vabcCompressionParam="",n.cowVersion=0),e.groups&&e.groups.length){n.groups=[];for(var r=0;r>>3){case 1:r.packageName=e.string();break;case 2:r.version=e.int64();break;case 3:r.isCompressed=e.bool();break;case 4:r.decompressedSize=e.int64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null!=e.packageName&&e.hasOwnProperty("packageName")&&!se.isString(e.packageName)?"packageName: string expected":null==e.version||!e.hasOwnProperty("version")||se.isInteger(e.version)||e.version&&se.isInteger(e.version.low)&&se.isInteger(e.version.high)?null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&"boolean"!==typeof e.isCompressed?"isCompressed: boolean expected":null==e.decompressedSize||!e.hasOwnProperty("decompressedSize")||se.isInteger(e.decompressedSize)||e.decompressedSize&&se.isInteger(e.decompressedSize.low)&&se.isInteger(e.decompressedSize.high)?null:"decompressedSize: integer|Long expected":"version: integer|Long expected"},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.ApexInfo)return e;var t=new ce.chromeos_update_engine.ApexInfo;return null!=e.packageName&&(t.packageName=String(e.packageName)),null!=e.version&&(se.Long?(t.version=se.Long.fromValue(e.version)).unsigned=!1:"string"===typeof e.version?t.version=parseInt(e.version,10):"number"===typeof e.version?t.version=e.version:"object"===Object(re["a"])(e.version)&&(t.version=new se.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber())),null!=e.isCompressed&&(t.isCompressed=Boolean(e.isCompressed)),null!=e.decompressedSize&&(se.Long?(t.decompressedSize=se.Long.fromValue(e.decompressedSize)).unsigned=!1:"string"===typeof e.decompressedSize?t.decompressedSize=parseInt(e.decompressedSize,10):"number"===typeof e.decompressedSize?t.decompressedSize=e.decompressedSize:"object"===Object(re["a"])(e.decompressedSize)&&(t.decompressedSize=new se.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber())),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(n.packageName="",se.Long){var r=new se.Long(0,0,!1);n.version=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.version=t.longs===String?"0":0;if(n.isCompressed=!1,se.Long){var a=new se.Long(0,0,!1);n.decompressedSize=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.decompressedSize=t.longs===String?"0":0}return null!=e.packageName&&e.hasOwnProperty("packageName")&&(n.packageName=e.packageName),null!=e.version&&e.hasOwnProperty("version")&&("number"===typeof e.version?n.version=t.longs===String?String(e.version):e.version:n.version=t.longs===String?se.Long.prototype.toString.call(e.version):t.longs===Number?new se.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber():e.version),null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&(n.isCompressed=e.isCompressed),null!=e.decompressedSize&&e.hasOwnProperty("decompressedSize")&&("number"===typeof e.decompressedSize?n.decompressedSize=t.longs===String?String(e.decompressedSize):e.decompressedSize:n.decompressedSize=t.longs===String?se.Long.prototype.toString.call(e.decompressedSize):t.longs===Number?new se.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber():e.decompressedSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.ApexMetadata=function(){function e(e){if(this.apexInfo=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(ce.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.apexInfo&&e.hasOwnProperty("apexInfo")){if(!Array.isArray(e.apexInfo))return"apexInfo: array expected";for(var t=0;t>>3){case 3:r.blockSize=e.uint32();break;case 4:r.signaturesOffset=e.uint64();break;case 5:r.signaturesSize=e.uint64();break;case 12:r.minorVersion=e.uint32();break;case 13:r.partitions&&r.partitions.length||(r.partitions=[]),r.partitions.push(ce.chromeos_update_engine.PartitionUpdate.decode(e,e.uint32()));break;case 14:r.maxTimestamp=e.int64();break;case 15:r.dynamicPartitionMetadata=ce.chromeos_update_engine.DynamicPartitionMetadata.decode(e,e.uint32());break;case 16:r.partialUpdate=e.bool();break;case 17:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(ce.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;case 18:r.securityPatchLevel=e.string();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.blockSize&&e.hasOwnProperty("blockSize")&&!se.isInteger(e.blockSize))return"blockSize: integer expected";if(null!=e.signaturesOffset&&e.hasOwnProperty("signaturesOffset")&&!se.isInteger(e.signaturesOffset)&&!(e.signaturesOffset&&se.isInteger(e.signaturesOffset.low)&&se.isInteger(e.signaturesOffset.high)))return"signaturesOffset: integer|Long expected";if(null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&!se.isInteger(e.signaturesSize)&&!(e.signaturesSize&&se.isInteger(e.signaturesSize.low)&&se.isInteger(e.signaturesSize.high)))return"signaturesSize: integer|Long expected";if(null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&!se.isInteger(e.minorVersion))return"minorVersion: integer expected";if(null!=e.partitions&&e.hasOwnProperty("partitions")){if(!Array.isArray(e.partitions))return"partitions: array expected";for(var t=0;t>>0),null!=e.signaturesOffset&&(se.Long?(t.signaturesOffset=se.Long.fromValue(e.signaturesOffset)).unsigned=!0:"string"===typeof e.signaturesOffset?t.signaturesOffset=parseInt(e.signaturesOffset,10):"number"===typeof e.signaturesOffset?t.signaturesOffset=e.signaturesOffset:"object"===Object(re["a"])(e.signaturesOffset)&&(t.signaturesOffset=new se.LongBits(e.signaturesOffset.low>>>0,e.signaturesOffset.high>>>0).toNumber(!0))),null!=e.signaturesSize&&(se.Long?(t.signaturesSize=se.Long.fromValue(e.signaturesSize)).unsigned=!0:"string"===typeof e.signaturesSize?t.signaturesSize=parseInt(e.signaturesSize,10):"number"===typeof e.signaturesSize?t.signaturesSize=e.signaturesSize:"object"===Object(re["a"])(e.signaturesSize)&&(t.signaturesSize=new se.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0))),null!=e.minorVersion&&(t.minorVersion=e.minorVersion>>>0),e.partitions){if(!Array.isArray(e.partitions))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected");t.partitions=[];for(var n=0;n>>0,e.maxTimestamp.high>>>0).toNumber())),null!=e.dynamicPartitionMetadata){if("object"!==Object(re["a"])(e.dynamicPartitionMetadata))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected");t.dynamicPartitionMetadata=ce.chromeos_update_engine.DynamicPartitionMetadata.fromObject(e.dynamicPartitionMetadata)}if(null!=e.partialUpdate&&(t.partialUpdate=Boolean(e.partialUpdate)),e.apexInfo){if(!Array.isArray(e.apexInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected");t.apexInfo=[];for(var r=0;r>>0,e.signaturesOffset.high>>>0).toNumber(!0):e.signaturesOffset),null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&("number"===typeof e.signaturesSize?n.signaturesSize=t.longs===String?String(e.signaturesSize):e.signaturesSize:n.signaturesSize=t.longs===String?se.Long.prototype.toString.call(e.signaturesSize):t.longs===Number?new se.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0):e.signaturesSize),null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&(n.minorVersion=e.minorVersion),e.partitions&&e.partitions.length){n.partitions=[];for(var o=0;o>>0,e.maxTimestamp.high>>>0).toNumber():e.maxTimestamp),null!=e.dynamicPartitionMetadata&&e.hasOwnProperty("dynamicPartitionMetadata")&&(n.dynamicPartitionMetadata=ce.chromeos_update_engine.DynamicPartitionMetadata.toObject(e.dynamicPartitionMetadata,t)),null!=e.partialUpdate&&e.hasOwnProperty("partialUpdate")&&(n.partialUpdate=e.partialUpdate),e.apexInfo&&e.apexInfo.length){n.apexInfo=[];for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:"";return Object(he["a"])(this,n),e=t.call(this),e.offset=0,e.contentType=r,e.blob=new Blob([],{type:r}),e.prefixLength=0,e}return Object(fe["a"])(n,[{key:"readHeader",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r,a,i,o,s,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return n=0,r=function(e){var r=Ie(t,n,e);return n+=e,r},e.next=4,t.slice(0,ke).arrayBuffer();case 4:if(a=e.sent,i=new TextDecoder,o=a.slice(0,ve.length),s=i.decode(o),s==ve){e.next=10;break}throw new Error("MAGIC is not correct, expected: ".concat(ve," actual: ").concat(s));case 10:return n+=ve.length,e.next=13,r(we);case 13:return c=e.sent,e.next=16,r(xe);case 16:if(l=e.sent,c==Pe){e.next=19;break}throw new Error("Unexpected major version number: ".concat(c));case 19:return e.next=21,r(Se);case 21:u=e.sent,this.header=new Le(s,c,l,u);case 23:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"writeUint8Array",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(Object(pe["a"])(Object(de["a"])(n.prototype),"writeUint8Array",this).call(this,t),this.blob=new Blob([this.blob,t.buffer],{type:this.contentType}),this.offset=this.blob.size,!(this.offset>=ke&&0==this.prefixLength)){e.next=9;break}return console.log("Parsing header!"),e.next=7,this.readHeader(this.blob);case 7:this.prefixLength=ke+this.header.manifest_len+this.header.metadata_signature_len,console.log("Computed metadata length: ".concat(this.prefixLength));case 9:if(!(this.prefixLength>0)){e.next=14;break}if(console.log("".concat(this.offset,"/").concat(this.prefixLength)),!(this.offset>=this.prefixLength)){e.next=14;break}throw this.blob=this.blob.slice(0,this.prefixLength),new Ee;case 14:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getData",value:function(){return this.blob}}]),n}(Oe["Writer"]),Te=function(){function e(t){Object(he["a"])(this,e),t instanceof File?this.zipreader=new Oe["ZipReader"](new Oe["BlobReader"](t)):t instanceof URL?this.zipreader=new Oe["ZipReader"](new Oe["HttpReader"](t.href)):this.zipreader=t.reader}return Object(fe["a"])(e,[{key:"getMetadataLength",value:function(){return ke+this.header.manifest_len+this.header.metadata_signature_len}},{key:"unzip",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a,i,o;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.zipreader.getEntries();case 2:t=e.sent,n=Object(ue["a"])(t),e.prev=4,n.s();case 6:if((r=n.n()).done){e.next=35;break}if(a=r.value,"payload.bin"!=a.filename){e.next=28;break}return i=new Ae(""),e.prev=10,e.next=13,a.getData(i);case 13:e.next=22;break;case 15:if(e.prev=15,e.t0=e["catch"](10),!(e.t0 instanceof Ee)){e.next=20;break}e.next=22;break;case 20:throw console.log(e.t0),e.t0;case 22:return this.buffer=i.getData(),e.next=25,this.readManifest(this.buffer,i.header);case 25:console.log("AB OTA manifest parsed"),e.next=33;break;case 28:if("META-INF/com/android/metadata"!=a.filename){e.next=33;break}return e.next=31,a.getData(new Oe["TextWriter"]);case 31:this.metadata=e.sent,console.log("OTA Package metadata parsed");case 33:e.next=6;break;case 35:e.next=40;break;case 37:e.prev=37,e.t1=e["catch"](4),n.e(e.t1);case 40:return e.prev=40,n.f(),e.finish(40);case 43:if(this.manifest){e.next=57;break}return console.log("Failed to parse AB OTA package, falling back to non-AB"),e.prev=45,o=new ye(this.zipreader),e.next=49,o.init();case 49:o.nonAB=!0,this.manifest=o,e.next=57;break;case 53:return e.prev=53,e.t2=e["catch"](45),alert("Please select a legit OTA package"),e.abrupt("return");case 57:case"end":return e.stop()}}),e,this,[[4,37,40,43],[10,15],[45,53]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"readManifest",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.header=n,r=ke,e.next=4,t.slice(r,r+n.manifest_len).arrayBuffer();case 4:return a=e.sent,r+=n.manifest_len,this.manifest=le.DeltaArchiveManifest.decode(new Uint8Array(a)),e.next=9,t.slice(r,r+n.metadata_signature_len).arrayBuffer();case 9:i=e.sent,r+=n.metadata_signature_len,this.metadata_signature=le.Signatures.decode(new Uint8Array(i)),this.manifest.nonAB=!1;case 13:case"end":return e.stop()}}),e,this)})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"parseMetadata",value:function(){var e,t=Object(ue["a"])(_e);try{for(t.s();!(e=t.n()).done;){var n=e.value,r=new RegExp(n.prefix+".+");this.metadata.match(r)?this[n.key]=Fe(this.metadata.match(r)[0],n.prefix):this[n.key]=""}}catch(a){t.e(a)}finally{t.f()}}},{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.unzip();case 2:this.parseMetadata();case 3:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}]),e}(),Be=function(e){Object(ge["a"])(n,e);var t=Object(be["a"])(n);function n(){return Object(he["a"])(this,n),t.apply(this,arguments)}return Object(fe["a"])(n,[{key:"getWithDefault",value:function(e){return this.has(e)?this.get(e):e}}]),n}(Object(me["a"])(Map)),Ne=Object(fe["a"])((function e(){Object(he["a"])(this,e);var t=le.InstallOperation.Type;this.mapType=new Be;for(var n=0,r=Object.keys(t);n1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:16,r="",a=0;a3&&void 0!==arguments[3]?arguments[3]:15;Object(he["a"])(this,e),this.statisticData=t,this.trimmedData=Qe(t,a),this.title=n,this.unit=r,this.maximumEntries=a}return Object(fe["a"])(e,[{key:"listData",value:function(){var e,t="",n=Object(ue["a"])(this.statisticData);try{for(n.s();!(e=n.n()).done;){var r=Object(Ye["a"])(e.value,2),a=r[0],i=r[1];t+=a+" : "+i.toString()+" Blocks\n"}}catch(o){n.e(o)}finally{n.f()}return t}},{key:"getEchartsOption",value:function(){var e={};return e.title={text:this.title,left:"center"},e.tooltip={trigger:"item",formatter:"{a}
{b} : {c} "+this.unit+" ({d}%)"},e.legend={orient:"horizontal",left:"top",top:"10%",data:Array.from(this.trimmedData.keys())},e.series=[{name:this.title,type:"pie",radius:"55%",center:["50%","60%"],data:Array.from(this.trimmedData).map((function(e){return{value:e[1],name:e[0]}})),emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],e}}]),e}();function Qe(e,t){if(e.size<=t)return e;for(var n=new Map,r=0;ri&&(i=u,o=l)}}catch(m){s.e(m)}finally{s.f()}n.set(o,i)}var p,d=0,f=Object(ue["a"])(e);try{for(f.s();!(p=f.n()).done;){var h=Object(Ye["a"])(p.value,2),g=h[0],b=h[1];n.get(g)||(d+=b)}}catch(m){f.e(m)}finally{f.f()}return n.set("other",d),n}var et=function(){function e(t){Object(he["a"])(this,e),t instanceof File?this.build=new Oe["ZipReader"](new Oe["BlobReader"](t)):this.build=new Oe["ZipReader"](new Oe["HttpReader"](t.href)),this.mapFiles=new Map,this.maps=new Map}return Object(fe["a"])(e,[{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a=this;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.build.getEntries();case 2:t=e.sent,n=/IMAGES\/[a-z_]*\.map/g,r=/[\w_]+(?=\.map)/g,t.forEach((function(e){e.filename.match(n)&&a.mapFiles.set(e.filename.match(r)[0],e)}));case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"add",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,c,l,u,p,d,f,h,g;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:for(r=[],a=/\d+/g,i=/\d+\-\d+/g,o=0;o");if(!this.mapFiles.get(t)){e.next=14;break}return e.next=7,this.mapFiles.get(t).getData(new Oe["TextWriter"]);case 7:s=e.sent,c=s.split("\n"),l=Object(ue["a"])(c);try{for(l.s();!(u=l.n()).done;)for(p=u.value,d=p.split(" "),f=1;f2&&void 0!==s[2]?s[2]:4096,a=s.length>3&&void 0!==s[3]?s[3]:null,e.t0=t,e.next="blocks"===e.t0?5:"payload"===e.t0?8:"COWmerge"===e.t0?11:"filenames"===e.t0?14:"extensions"===e.t0?21:"partitions"===e.t0?28:31;break;case 5:return i=at(n),o=new Ke(i,"Operated blocks in target build","blocks"),e.abrupt("break",31);case 8:return i=ct(n),o=new Ke(i,"Payload disk usage","bytes"),e.abrupt("break",31);case 11:return i=st(n,r),o=new Ke(i,"COW merge operations","blocks"),e.abrupt("break",31);case 14:if(null!=a){e.next=16;break}throw new Error("Target file is required for filenames analysis");case 16:return e.next=18,pt(n,r,a);case 18:return i=e.sent,o=new Ke(i,"Size of operated filenames","bytes"),e.abrupt("break",31);case 21:if(null!=a){e.next=23;break}throw new Error("Target file is required for filenames analysis");case 23:return e.next=25,lt(n,r,a);case 25:return i=e.sent,o=new Ke(i,"Size of operated extensions","bytes"),e.abrupt("break",31);case 28:return i=ot(n),o=new Ke(i,"Partition payload size","bytes"),e.abrupt("break",31);case 31:if(!o){e.next=35;break}return e.abrupt("return",o);case 35:throw"Please double check if this is a proper AB OTA package.";case 36:case"end":return e.stop()}}),e)}))),ht.apply(this,arguments)}function gt(e){if(!e)return 0;var t=function(e,t){return e+t.numBlocks};return e.reduce(t,0)}function bt(e){var t=function(e,t){return e+"("+t.startBlock+","+t.numBlocks+")"};return e.reduce(t,"")}function mt(e,t,n){for(var r=gt(t),a=new Map,i=0;i1?t[t.length-1]:"unknown"===t[0]?"unknown":"<"==e[0]&&e.endsWith(">")?e:"no-extension"}var yt=Object(r["m"])({props:{operation:{type:Object,required:!0},mapType:{type:Be,required:!0}},data:function(){return{srcTotalBlocks:0,srcBlocks:"",dstTotalBlocks:0,dstBlocks:""}},mounted:function(){this.operation.srcExtents&&(this.srcTotalBlocks=gt(this.operation.srcExtents),this.srcBlocks=bt(this.operation.srcExtents)),this.operation.dstExtents&&(this.dstTotalBlocks=gt(this.operation.dstExtents),this.dstBlocks=bt(this.operation.dstExtents))}});n("8edb");yt.render=$e,yt.__scopeId="data-v-44174082";var jt=yt,vt=Object(r["m"])({components:{OperationDetail:jt},props:{partition:{type:le.PartitionUpdate,required:!0},dynamicPartitionList:{type:Array,required:!0}},data:function(){return{showOPs:!1,showInfo:!1,opType:new Ne}},methods:{toggle:function(e){this[e]=!this[e]},octToHex:De},computed:{readableTimestamp:function(){var e=parseInt(this.partition.version);return isNaN(e)?"":new Date(1e3*e).toString()},isDynamicPartition:function(){return this.dynamicPartitionList.indexOf(this.partition.partitionName)>=0}}});n("edc2");vt.render=ne,vt.__scopeId="data-v-6dba348a";var wt=vt,xt=(n("498a"),Object(r["Z"])("data-v-24adde54"));Object(r["D"])("data-v-24adde54");var St=Object(r["l"])("h3",null,"Basic infos",-1),kt={class:"align"},Pt=Object(r["l"])("strong",null," File name ",-1),_t=Object(r["l"])("strong",null," File size ",-1),Et={class:"align"},Lt={class:"wrap"},It={key:2},zt={class:"align"},At=Object(r["l"])("strong",null," Incremental ",-1),Tt={key:0},Bt={key:1},Nt=Object(r["l"])("strong",null," Partial ",-1),Ct={key:0},Dt={key:1},Ft=Object(r["l"])("strong",null," A/B update ",-1),Rt={key:0},Mt={key:1},Ut=Object(r["l"])("strong",null," VAB ",-1),Ht={key:0},Vt={key:1},Wt=Object(r["l"])("strong",null," VABC ",-1),Zt={key:0},Jt={key:1},Xt={key:0},qt=Object(r["l"])("strong",null," Total Dynamic Partition Size ",-1),Gt={key:1},$t=Object(r["l"])("strong",null," Total VABC COW Size ",-1),Yt={key:2},Kt=Object(r["l"])("strong",null," VABC Compression Param ",-1),Qt={key:3},en=Object(r["l"])("strong",null," Security Patch Level ",-1);Object(r["B"])();var tn=xt((function(e,t,n,a,i,o){return Object(r["A"])(),Object(r["i"])(r["a"],null,[St,e.zipFile?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:0},e.$attrs),[Object(r["l"])("ul",kt,[Object(r["l"])("li",null,[Pt,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileName()),1)]),Object(r["l"])("li",null,[_t,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileSize())+" Bytes",1)])])],16)):Object(r["j"])("",!0),e.payload&&e.payload.metadata?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:1},e.$attrs),[Object(r["l"])("ul",Et,[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.otaMetadata,(function(t){return Object(r["A"])(),Object(r["i"])("li",{key:t.name},[Object(r["l"])("strong",null,Object(r["N"])(t.name.trim()+" "),1),Object(r["l"])("p",Lt,Object(r["N"])(String(e.payload[t.key]).trim()),1)])})),128))])],16)):Object(r["j"])("",!0),e.payload&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])("div",It,[Object(r["l"])("ul",zt,[Object(r["l"])("li",null,[At,e.payload.preBuild?(Object(r["A"])(),Object(r["i"])("span",Tt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Bt," ❌ "))]),Object(r["l"])("li",null,[Nt,e.payload.manifest.partialUpdate?(Object(r["A"])(),Object(r["i"])("span",Ct," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Dt," ❌ "))]),Object(r["l"])("li",null,[Ft,e.payload.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",Mt," ❌ ")):(Object(r["A"])(),Object(r["i"])("span",Rt," ✅ "))]),Object(r["l"])("li",null,[Ut,e.payload.manifest.dynamicPartitionMetadata.snapshotEnabled?(Object(r["A"])(),Object(r["i"])("span",Ht," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Vt," ❌ "))]),Object(r["l"])("li",null,[Wt,e.payload.manifest.dynamicPartitionMetadata.vabcEnabled?(Object(r["A"])(),Object(r["i"])("span",Zt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Jt," ❌ "))]),e.totalDynamicPartitionSize?(Object(r["A"])(),Object(r["i"])("li",Xt,[qt,Object(r["k"])(" "+Object(r["N"])(e.totalDynamicPartitionSize),1)])):Object(r["j"])("",!0),e.totalCOWSize?(Object(r["A"])(),Object(r["i"])("li",Gt,[$t,Object(r["k"])(" "+Object(r["N"])(e.totalCOWSize),1)])):Object(r["j"])("",!0),e.vabcCompressionParam?(Object(r["A"])(),Object(r["i"])("li",Yt,[Kt,Object(r["k"])(" "+Object(r["N"])(e.vabcCompressionParam),1)])):Object(r["j"])("",!0),e.securityPatchLevel?(Object(r["A"])(),Object(r["i"])("li",Qt,[en,Object(r["k"])(" "+Object(r["N"])(e.securityPatchLevel),1)])):Object(r["j"])("",!0)])])):Object(r["j"])("",!0)],64)})),nn=(n("4de4"),n("6062"),n("2ca0"),function(){function e(t){Object(he["a"])(this,e),this.file=t,this.reader=on(t)}return Object(fe["a"])(e,[{key:"getFileName",value:function(){return sn(this.file)}},{key:"getFileSize",value:function(){return this.file instanceof File?this.file.size:0}}]),e}());function rn(e,t){return an.apply(this,arguments)}function an(){return an=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return r=t,a=new Oe["ZipWriter"](new Oe["BlobWriter"]("application/zip")),e.next=4,r.getEntries();case 4:i=e.sent,o=Object(ue["a"])(i.filter((function(e){return!!e&&n(e)}))),e.prev=6,o.s();case 8:if((s=o.n()).done){e.next=18;break}return c=s.value,l=new Oe["BlobWriter"],e.next=13,c.getData(l);case 13:u=e.sent,console.log("Adding ".concat(c.filename,", ").concat(u.size)),a.add(c.filename,new Oe["BlobReader"](l.getData()),{level:0});case 16:e.next=8;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e["catch"](6),o.e(e.t0);case 23:return e.prev=23,o.f(),e.finish(23);case 26:return e.abrupt("return",a);case 27:case"end":return e.stop()}}),e,null,[[6,20,23,26]])}))),an.apply(this,arguments)}function on(e){return e instanceof File?new Oe["ZipReader"](new Oe["BlobReader"](e)):new Oe["ZipReader"](new Oe["HttpReader"](e.href))}function sn(e){return e instanceof File?e.name:e.pathname}function cn(e){return ln.apply(this,arguments)}function ln(){return ln=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,rn(on(t),(function(e){return e.filename.startsWith("META/")||e.filename.endsWith(".map")||e.filename.endsWith(".prop")||"prop.default"==e.filename}));case 2:return n=e.sent,e.next=5,n.close();case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)}))),ln.apply(this,arguments)}function un(e){return pn.apply(this,arguments)}function pn(){return pn=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,rn(t.zipreader,(function(e){return"payload.bin"!=e.filename}));case 2:return n=e.sent,e.next=5,n.add("payload.bin",new Oe["BlobReader"](t.buffer.slice(0,t.getMetadataLength())),{level:0});case 5:return e.next=7,n.close();case 7:return r=e.sent,e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)}))),pn.apply(this,arguments)}function dn(e,t,n){var r=window.URL.createObjectURL(e);t.href=r,t.download=n,t.click(),window.URL.revokeObjectURL(r)}function fn(e,t){return e.endsWith(t)?e:e+t}var hn=Object(r["m"])({props:{zipFile:{type:nn,required:!0},payload:{type:Te,required:!0}},data:function(){return{MetadataFormat:_e}},computed:{otaMetadata:function(){var e=this;return _e.filter((function(t){return String(e.payload[t.key]).length>0}))},totalCOWSize:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.partitions.map((function(e){return e.estimateCowSize||0}));return n?n.reduce((function(e,t){return e+t})):0},vabcCompressionParam:function(){var e,t,n;return(null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.vabcCompressionParam)||""},securityPatchLevel:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.securityPatchLevel;return n||""},totalDynamicPartitionSize:function(){var e,t,n,r,a=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.groups;if(!a)return 0;var i=new Set(a.flatMap((function(e){return e.partitionNames}))),o=(null===(r=this.payload.manifest)||void 0===r?void 0:r.partitions.filter((function(e){return i.has(e.partitionName)})))||[];return o.length<=0?0:o.map((function(e){var t;return(null===(t=e.newPartitionInfo)||void 0===t?void 0:t.size)||0})).reduce((function(e,t){return e+t}))}}});n("2b88");hn.render=tn,hn.__scopeId="data-v-24adde54";var gn=hn,bn=Object(r["m"])({components:{PartitionDetail:wt,BasicInfo:gn},props:{zipFile:{type:nn,default:null},payload:{type:Te,default:null}},methods:{octToHex:De,exportOTAPackage:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,un(e.payload);case 2:n=t.sent,r=e.$refs["download"],dn(n,r,"trimmed_"+fn(e.zipFile.getFileName(),".zip"));case 5:case"end":return t.stop()}}),t)})))()}},computed:{dynamicPartitions:function(){var e,t,n;return(null===(e=this.payload.manifest)||void 0===e||null===(t=e.dynamicPartitionMetadata)||void 0===t||null===(n=t.groups)||void 0===n?void 0:n.flatMap((function(e){return e.partitionNames||[]})))||[]}}});n("dc41");bn.render=A,bn.__scopeId="data-v-05db67f2";var mn=bn,On=Object(r["Z"])("data-v-b6f71732");Object(r["D"])("data-v-b6f71732");var yn=Object(r["k"])("Export Target File Metadata"),jn={ref:"download"},vn={key:1},wn=Object(r["k"])(" Analyse Installed Blocks (in target build) "),xn=Object(r["k"])(" Analyse Payload Composition "),Sn=Object(r["k"])(" Analyse Partition Payload Composition "),kn=Object(r["k"])(" Analyse COW Merge Operations "),Pn={key:0,class:"tooltiptext"},_n=Object(r["k"])(" Analyse Filenames "),En=Object(r["k"])(" Analyse File Extensions ");Object(r["B"])();var Ln=On((function(e,t,n,a,i,o){var s=Object(r["I"])("v-btn"),c=Object(r["I"])("PartialCheckbox"),l=Object(r["I"])("PieChart"),u=Object(r["I"])("v-divider"),p=Object(r["I"])("v-col"),d=Object(r["I"])("v-row"),f=Object(r["I"])("BaseFile");return Object(r["A"])(),Object(r["i"])(r["a"],null,[e.targetFile?(Object(r["A"])(),Object(r["i"])(s,{key:0,block:"",class:"md-6",onClick:e.exportTargetFileMetadata},{default:On((function(){return[yn]})),_:1},8,["onClick"])):Object(r["j"])("",!0),Object(r["l"])("a",jn,null,512),Object(r["l"])(c,{modelValue:e.partitionInclude,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.partitionInclude=t}),labels:e.updatePartitions},null,8,["modelValue","labels"]),e.echartsData?(Object(r["A"])(),Object(r["i"])("div",vn,[Object(r["l"])(l,{echartsData:e.echartsData,onClick:e.piechartClick},null,8,["echartsData","onClick"])])):Object(r["j"])("",!0),Object(r["l"])(u),Object(r["l"])(d,null,{default:On((function(){return[Object(r["l"])(p,{cols:"12",md:"4"},{default:On((function(){return[Object(r["l"])(s,{block:"",onClick:t[2]||(t[2]=function(t){return e.updateChart("blocks")})},{default:On((function(){return[wn]})),_:1})]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:On((function(){return[Object(r["l"])(s,{block:"",onClick:t[3]||(t[3]=function(t){return e.updateChart("payload")})},{default:On((function(){return[xn]})),_:1})]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:On((function(){return[Object(r["l"])(s,{block:"",onClick:t[4]||(t[4]=function(t){return e.updateChart("partitions")})},{default:On((function(){return[Sn]})),_:1})]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:On((function(){return[Object(r["l"])(p,{cols:"12",md:"4",class:"tooltip"},{default:On((function(){return[Object(r["l"])(s,{disabled:e.manifest.nonAB||!e.manifest.dynamicPartitionMetadata.vabcEnabled,title:"Only available for VABC update",block:"",onClick:t[5]||(t[5]=function(t){return e.updateChart("COWmerge")})},{default:On((function(){return[kn]})),_:1},8,["disabled"]),e.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",Pn," This function is only supported in A/B OTA ")):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:On((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[6]||(t[6]=function(t){return e.updateChart("filenames")})},{default:On((function(){return[_n]})),_:1},8,["disabled"])]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:On((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[7]||(t[7]=function(t){return e.updateChart("extensions")})},{default:On((function(){return[En]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:On((function(){return[Object(r["l"])(p,{cols:"12",md:"6"}),Object(r["l"])(p,{cols:"12",md:"6"},{default:On((function(){return[e.demo?Object(r["j"])("",!0):(Object(r["A"])(),Object(r["i"])(f,{key:0,label:"Drag and drop or Select The target Android build",onFileSelect:e.selectBuild},null,8,["onFileSelect"]))]})),_:1})]})),_:1})],64)})),In=n("bc3a"),zn=n.n(In),An=Object(r["Z"])("data-v-533f2336");Object(r["D"])("data-v-533f2336");var Tn={key:0};Object(r["B"])();var Bn=An((function(e,t,n,a,i,o){var s=Object(r["I"])("v-btn"),c=Object(r["I"])("v-col"),l=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(r["a"],null,[Object(r["l"])(s,{block:"",type:"button",class:"my-5",onClick:e.revertAllSelection},{default:An((function(){return[Object(r["k"])(Object(r["N"])(e.selectAllText[e.selectAll]),1)]})),_:1},8,["onClick"]),Object(r["l"])(l,{class:"mb-5"},{default:An((function(){return[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.labels,(function(n){return Object(r["A"])(),Object(r["i"])(c,{key:n,cols:"12",md:"4"},{default:An((function(){return[Object(r["l"])("input",{type:"checkbox",value:n,checked:e.modelValue.get(n),onChange:t[1]||(t[1]=function(t){return e.updateSelected(t.target.value)})},null,40,["value","checked"]),n?(Object(r["A"])(),Object(r["i"])("label",Tn,Object(r["N"])(n),1)):Object(r["j"])("",!0)]})),_:2},1024)})),128))]})),_:1})],64)})),Nn=Object(r["m"])({props:{labels:{type:Array,default:new Array},modelValue:{type:Map,default:new Map}},data:function(){return{selectAll:1,selectAllText:["Select All","Unselect All"]}},mounted:function(){var e,t=Object(ue["a"])(this.labels);try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,!0)}}catch(r){t.e(r)}finally{t.f()}},methods:{updateSelected:function(e){this.modelValue.set(e,!this.modelValue.get(e)),this.$emit("update:modelValue",this.modelValue)},revertAllSelection:function(){this.selectAll=1-this.selectAll;var e,t=Object(ue["a"])(this.modelValue.keys());try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,Boolean(this.selectAll))}}catch(r){t.e(r)}finally{t.f()}}}});n("a75a");Nn.render=Bn,Nn.__scopeId="data-v-533f2336";var Cn=Nn,Dn=n("2909"),Fn="undefined"===typeof arguments?void 0:arguments,Rn=Object(r["Z"])("data-v-5d1cb486"),Mn=Rn((function(e,t,n,a,i,o){var s=Object(r["I"])("v-chart");return Object(r["A"])(),Object(r["i"])(s,{class:"chart",option:o.getEchartsOption,onClick:t[1]||(t[1]=function(t){return e.$emit.apply(e,["click"].concat(Object(Dn["a"])(Fn)))})},null,8,["option"])})),Un=n("ade3"),Hn=n("22b4"),Vn=n("f95e"),Wn=n("49bb"),Zn=n("9394"),Jn=n("2da7"),Xn=n("ff32"),qn=n("5c7f");Object(Hn["a"])([Vn["a"],Wn["a"],Zn["a"],Jn["a"],Xn["a"]]);var Gn={components:{VChart:qn["b"]},provide:Object(Un["a"])({},qn["a"],"dark"),props:{echartsData:{type:Ke,required:!0}},computed:{getEchartsOption:function(){return this.echartsData.getEchartsOption()}}};n("47e0");Gn.render=Mn,Gn.__scopeId="data-v-5d1cb486";var $n=Gn,Yn=Object(r["m"])({components:{PartialCheckbox:Cn,PieChart:$n,BaseFile:x},props:{manifest:{type:le.DeltaArchiveManifest,default:function(){return[]}},demo:{type:Boolean,default:!1}},data:function(){return{partitionInclude:new Map,echartsData:null,listData:"",targetFile:null}},computed:{updatePartitions:function(){return this.manifest.partitions.map((function(e){return e.partitionName}))}},mounted:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(!e.demo){t.next=11;break}return t.prev=1,t.next=4,zn.a.get("./files/cf_x86_target_file_demo.zip",{responseType:"blob"});case 4:n=t.sent,e.targetFile=new File([n.data],"target_demo.zip"),t.next=11;break;case 8:t.prev=8,t.t0=t["catch"](1),console.log("Please put a proper example target file in /public/files/");case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))()},methods:{piechartClick:function(e){console.log(e)},updateChart:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return r=t.manifest.partitions.filter((function(e){return t.partitionInclude.get(e.partitionName)})),n.prev=1,n.next=4,ft(e,r,t.manifest.blockSize,t.targetFile);case 4:t.echartsData=n.sent,n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Cannot be processed for the following issue: ".concat(n.t0));case 10:case"end":return n.stop()}}),n,null,[[1,7]])})))()},selectBuild:function(e){this.targetFile=e},exportTargetFileMetadata:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,cn(e.targetFile);case 2:n=t.sent,r=e.$refs["download"],dn(n,r,"trimmed_"+fn(sn(e.targetFile),".zip"));case 5:case"end":return t.stop()}}),t)})))()}}});n("9120");Yn.render=Ln,Yn.__scopeId="data-v-b6f71732";var Kn=Yn,Qn=Object(r["m"])({components:{BaseFile:x,PayloadDetail:mn,PayloadComposition:Kn},data:function(){return{zipFile:null,payload:null}},methods:{unpackOTA:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return t.zipFile=new nn(e),n.prev=1,t.payload=new Te(t.zipFile),n.next=5,t.payload.init();case 5:n.next=11;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Please check if this is a correct OTA package (.zip). ".concat(n.t0)),console.log(n.t0);case 11:case"end":return n.stop()}}),n,null,[[1,7]])})))()}}});Qn.render=h;var er=Qn;function tr(e,t,n,a,i,o){var s=Object(r["I"])("PayloadDetail"),c=Object(r["I"])("v-col"),l=Object(r["I"])("v-divider"),u=Object(r["I"])("PayloadComposition"),p=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(p,null,{default:Object(r["X"])((function(){return[Object(r["l"])(c,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload?(Object(r["A"])(),Object(r["i"])(s,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(l,{vertical:""}),Object(r["l"])(c,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])(u,{key:0,manifest:e.payload.manifest,demo:!0},null,8,["manifest"])):Object(r["j"])("",!0)]})),_:1})]})),_:1})}var nr=Object(r["m"])({components:{PayloadDetail:mn,PayloadComposition:Kn},data:function(){return{zipFile:null,payload:null}},created:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,zn.a.get("./files/cf_x86_demo.zip",{responseType:"blob"});case 3:return n=t.sent,e.zipFile=new nn(new File([n.data],"ota_demo.zip")),e.payload=new Te(e.zipFile),t.next=8,e.payload.init();case 8:t.next=13;break;case 10:t.prev=10,t.t0=t["catch"](0),console.log("Please put a proper example OTA in /public/files/");case 13:case"end":return t.stop()}}),t,null,[[0,10]])})))()}});nr.render=tr;var rr=nr,ar={class:"about"},ir=Object(r["l"])("p",null,"A web based tool to inspect Android OTA packages.",-1);function or(e,t){return Object(r["A"])(),Object(r["i"])("div",ar,[ir])}const sr={};sr.render=or;var cr=sr,lr=Object(r["Z"])("data-v-50c6f348");Object(r["D"])("data-v-50c6f348");var ur=Object(r["l"])("h1",null,"Not Found!",-1),pr=Object(r["l"])("p",null,[Object(r["l"])("a",{href:"/"},"Go home?")],-1);Object(r["B"])();var dr=lr((function(e,t){var n=Object(r["I"])("center");return Object(r["A"])(),Object(r["i"])(n,null,{default:lr((function(){return[ur,pr]})),_:1})}));n("8e71");const fr={};fr.render=dr,fr.__scopeId="data-v-50c6f348";var hr=fr,gr=[{path:"/",name:"Analysis",component:er,meta:{title:"Analyse OTA package - from AOSP"}},{path:"/demo",name:"Demo",component:rr},{path:"/about",name:"About",component:cr},{path:"/:catchAll(.*)",name:"Not Found",component:hr}],br=Object(d["a"])({history:Object(d["b"])("/analyseOTA/"),routes:gr});br.beforeEach((function(e,t,n){var r=e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.title})),a=(e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})),t.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})));r?document.title=r.meta.title:a&&(document.title=a.meta.title),Array.from(document.querySelectorAll("[data-vue-router-controlled]")).map((function(e){return e.parentNode.removeChild(e)})),n()}));var mr=br,Or=n("5502"),yr=Object(Or["a"])({state:{},mutations:{},actions:{},modules:{}}),jr=Object(r["h"])(p);jr.use(mr),jr.use(yr),jr.use(s),jr.mount("#app")},d978:function(e,t,n){},dc41:function(e,t,n){"use strict";n("027d")},edc2:function(e,t,n){"use strict";n("c021")}}); +//# sourceMappingURL=app.04210d07.js.map \ No newline at end of file diff --git a/analyseOTA/js/app.04210d07.js.map b/analyseOTA/js/app.04210d07.js.map new file mode 100644 index 0000000..168853c --- /dev/null +++ b/analyseOTA/js/app.04210d07.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?1825","webpack:///./src/components/BasicInfo.vue?0f75","webpack:///./src/components/PieChart.vue?3f25","webpack:///./src/components/BaseFile.vue?5b74","webpack:///./src/views/NotFound.vue?18b8","webpack:///./src/components/OperationDetail.vue?7823","webpack:///./src/components/PayloadComposition.vue?be7e","webpack:///./src/components/PartialCheckbox.vue?cce7","webpack:///./src/plugins/vuetify.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?6697","webpack:///./src/views/PackageAnalysis.vue","webpack:///./src/components/BaseFile.vue","webpack:///./src/components/BaseFile.vue?5af0","webpack:///./src/components/BaseFile.vue?408d","webpack:///./src/components/PayloadDetail.vue","webpack:///./src/components/PartitionDetail.vue","webpack:///./src/services/update_metadata_pb.js","webpack:///./src/services/payload_nonab.ts","webpack:///./src/services/payload.ts","webpack:///./src/components/OperationDetail.vue","webpack:///./src/services/echarts_data.ts","webpack:///./src/services/map_parser.ts","webpack:///./src/services/payload_composition.ts","webpack:///./src/components/OperationDetail.vue?0239","webpack:///./src/components/OperationDetail.vue?19cd","webpack:///./src/components/PartitionDetail.vue?7d27","webpack:///./src/components/PartitionDetail.vue?b40d","webpack:///./src/components/BasicInfo.vue","webpack:///./src/services/trim_zip.ts","webpack:///./src/components/BasicInfo.vue?bb39","webpack:///./src/components/BasicInfo.vue?e053","webpack:///./src/components/PayloadDetail.vue?cdd8","webpack:///./src/components/PayloadDetail.vue?a20c","webpack:///./src/components/PayloadComposition.vue","webpack:///./src/components/PartialCheckbox.vue","webpack:///./src/components/PartialCheckbox.vue?fbe3","webpack:///./src/components/PartialCheckbox.vue?59db","webpack:///./src/components/PieChart.vue","webpack:///./src/components/PieChart.vue?1278","webpack:///./src/components/PayloadComposition.vue?3e04","webpack:///./src/components/PayloadComposition.vue?d59c","webpack:///./src/views/PackageAnalysis.vue?3fdf","webpack:///./src/views/PackageAnalysis.vue?2d24","webpack:///./src/views/Demo.vue","webpack:///./src/views/Demo.vue?9616","webpack:///./src/views/Demo.vue?e633","webpack:///./src/views/About.vue","webpack:///./src/views/About.vue?aa81","webpack:///./src/views/NotFound.vue","webpack:///./src/views/NotFound.vue?2812","webpack:///./src/router/index.ts","webpack:///./src/store/index.ts","webpack:///./src/main.ts","webpack:///./src/components/PayloadDetail.vue?0b74","webpack:///./src/components/PartitionDetail.vue?3d89"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","components","directives","theme","defaultTheme","rounded","color","links","link","to","class","fluid","render","style","cols","md","label","unpackOTA","zipFile","payload","vertical","manifest","dragover","dragleave","drop","fileName","ref","type","accept","handleFileChange","placeholder","url","urlKeyup","props","String","default","emits","computed","parsedURL","URL","this","methods","event","currentTarget","target","files","selectedFile","$emit","preventDefault","classList","contains","add","remove","dataTransfer","console","log","error","__scopeId","exportOTAPackage","partitions","partition","partitionName","elevation","hover","shaped","dynamicPartitionList","dynamicPartitions","metadata_signature","nonAB","octToHex","signatures","oldPartitionInfo","isDynamicPartition","estimateCowSize","postinstallPath","toggle","showInfo","size","hash","newPartitionInfo","version","readableTimestamp","showOPs","operations","operation","dataSha256Hash","mapType","opType","$Reader","$protobuf","$Writer","$util","$root","chromeos_update_engine","Extent","properties","keys","startBlock","Long","fromBits","numBlocks","encode","message","writer","uint32","uint64","encodeDelimited","ldelim","decode","reader","end","undefined","len","pos","tag","skipType","decodeDelimited","verify","isInteger","low","high","fromObject","fromValue","unsigned","parseInt","LongBits","toNumber","toObject","options","defaults","long","longs","toString","Number","toJSON","constructor","toJSONOptions","Signatures","emptyArray","Signature","fork","Array","isArray","TypeError","arrays","newBuffer","unpaddedSignatureSize","bytes","fixed32","isString","base64","PartitionInfo","InstallOperation","srcExtents","dstExtents","dataOffset","dataLength","srcLength","dstLength","srcSha256Hash","int32","ProtocolError","instance","enums","Type","valuesById","values","CowMergeOperation","srcExtent","dstExtent","srcOffset","PartitionUpdate","newPartitionSignature","mergeOperations","runPostinstall","filesystemType","postinstallOptional","hashTreeDataExtent","hashTreeExtent","hashTreeAlgorithm","hashTreeSalt","fecDataExtent","fecExtent","fecRoots","string","bool","Boolean","DynamicPartitionGroup","partitionNames","DynamicPartitionMetadata","groups","snapshotEnabled","vabcEnabled","vabcCompressionParam","cowVersion","ApexInfo","packageName","isCompressed","decompressedSize","int64","ApexMetadata","apexInfo","DeltaArchiveManifest","blockSize","signaturesOffset","signaturesSize","minorVersion","maxTimestamp","dynamicPartitionMetadata","partialUpdate","securityPatchLevel","packedFile","Blocksize","regexName","getEntries","entries","entry","filename","match","newPartition","getData","rawText","parseTransferList","lines","split","totalBlocks","entryStashed","maxStashed","Uint8Array","sizeNewData","newDataSize","line","op","elements","reduce","parseRange","RegExp","uncompressedSize","extents","rangeset","regexRange","extent","_MAGIC","_VERSION_SIZE","_MANIFEST_LEN_SIZE","_METADATA_SIGNATURE_LEN_SIZE","_PAYLOAD_HEADER_SIZE","_BRILLO_MAJOR_PAYLOAD_VERSION","MetadataFormat","prefix","Error","magic","manifest_len","metadata_signature_len","readIntAt","buffer","position","DataView","arrayBuffer","view","getBigUint64","offset","a","BigInt","getUint32","b","bigNumber","getUint16","contentType","blob","Blob","prefixLength","cursor","readInt","ret","decoder","TextDecoder","magicBytes","header_version","header","array","readHeader","file","File","zipreader","href","readManifest","metadata","init","alert","manifestBlob","signatureBlob","formatter","regex","trimEntry","unzip","parseMetadata","has","Map","types","set","bufferArray","space","maxLine","hex_table","hex","toUpperCase","getWithDefault","srcTotalBlocks","srcBlocks","dstTotalBlocks","dstBlocks","statisticData","title","unit","maximumEntries","trimmedData","trimMap","table","option","text","left","tooltip","trigger","legend","orient","top","from","series","radius","center","map","pair","emphasis","itemStyle","shadowBlur","shadowOffsetX","shadowColor","new_map","curr","currKey","restTotal","targetFile","build","mapFiles","maps","regexPath","forEach","totalLength","regexNumber","mapText","fileEntries","right","InsertMap","names","ext","queryMap","addNumberToMap","operatedBlockStatistics","operatedBlocks","operationType","partitionPayloadSize","partitionPayloadSizeStatistics","partitionStats","mergeOperationStatistics","Math","ceil","operatedPayloadStatistics","operatedFileExtensionsStatistics","operatedFilenamesStatistics","filenameStats","fileExtenstionStats","name2Extension","operatedFilenames","buildMap","operatedFileNames","query","extentDataLength","distributeFilenames","analysePartitions","metrics","statisticsData","echartsData","exts","accumulator","total","displayBlocks","filenames","distributedLengths","round","endsWith","required","mounted","OperationDetail","unixTimestamp","isNaN","Date","indexOf","$attrs","getFileName","getFileSize","otaMetadata","trim","preBuild","totalDynamicPartitionSize","totalCOWSize","getZipReader","trimZip","zip","filter","blobWriter","level","pathname","trimTargetFiles","startsWith","close","trimOTAPackage","getMetadataLength","downloadFile","downloadNode","createObjectURL","download","click","revokeObjectURL","ensureSuffix","str","suffix","cowSizes","spl","dynamicPartitionNamess","Set","flatMap","g","acc","cur","PartitionDetail","BasicInfo","$refs","block","exportTargetFileMetadata","partitionInclude","labels","updatePartitions","piechartClick","updateChart","disabled","demo","selectBuild","revertAllSelection","selectAllText","selectAll","checked","modelValue","updateSelected","$event","newSelect","getEchartsOption","VChart","provide","PartialCheckbox","PieChart","BaseFile","listData","responseType","param","partitionSelected","PayloadDetail","PayloadComposition","created","script","routes","path","component","PackageAnalysis","meta","Demo","About","NotFound","router","history","beforeEach","next","nearestWithTitle","matched","reverse","find","previousNearestWithMeta","metaTags","document","querySelectorAll","el","parentNode","removeChild","state","mutations","actions","app","App","use","store","vuetify","mount"],"mappings":"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","file":"js/app.04210d07.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/analyseOTA/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BasicInfo.vue?vue&type=style&index=0&id=24adde54&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadComposition.vue?vue&type=style&index=0&id=b6f71732&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport 'vuetify/lib/styles/main.sass'\nimport { createVuetify } from 'vuetify'\nimport * as components from 'vuetify/lib/components'\nimport * as directives from 'vuetify/lib/directives'\n\nexport default createVuetify({\n components,\n directives,\n theme: {\n defaultTheme: 'dark'\n }\n})\n","\n\n\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=ee415730\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n label: {\n type: String,\n default: ''\n }\n },\n emits: {\n 'file-select': null\n },\n data() {\n return {\n fileName: '',\n url: ''\n }\n },\n computed: {\n parsedURL(): URL | null {\n try {\n return new URL(this.url)\n } catch {\n return null\n }\n }\n },\n\n methods: {\n handleFileChange(event: any) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (target.files == null || target.files.length < 1) {\n return\n }\n const selectedFile = target.files![0]\n this.$emit('file-select', selectedFile)\n // If user selects a file, clear the URL component\n this.url = ''\n this.fileName = target.files![0].name\n },\n dragover(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!target.classList.contains('file-hover')) {\n target.classList.add('file-hover')\n }\n },\n dragleave(event: DragEvent) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n target.classList.remove('file-hover')\n },\n drop(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!event.dataTransfer || event.dataTransfer.files.length == 0) {\n return\n }\n target.files = event.dataTransfer.files\n this.handleFileChange(event)\n target.classList.remove('file-hover')\n },\n urlKeyup(event: KeyboardEvent) {\n console.log(this.url)\n if (event.key == 'Enter') {\n const target = event.target as HTMLInputElement\n if (this.parsedURL == null) {\n console.error(`${target.value} is an invalid URL`)\n return\n }\n this.$emit('file-select', this.parsedURL)\n }\n }\n }\n})\n","import { render } from \"./BaseFile.vue?vue&type=template&id=0630c5ec&scoped=true\"\nimport script from \"./BaseFile.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseFile.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-0630c5ec\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\nimport * as $protobuf from \"protobufjs/minimal\";\n\n// Common aliases\nconst $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nconst $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\nexport const chromeos_update_engine = $root.chromeos_update_engine = (() => {\n\n /**\n * Namespace chromeos_update_engine.\n * @exports chromeos_update_engine\n * @namespace\n */\n const chromeos_update_engine = {};\n\n chromeos_update_engine.Extent = (function() {\n\n /**\n * Properties of an Extent.\n * @memberof chromeos_update_engine\n * @interface IExtent\n * @property {number|Long|null} [startBlock] Extent startBlock\n * @property {number|Long|null} [numBlocks] Extent numBlocks\n */\n\n /**\n * Constructs a new Extent.\n * @memberof chromeos_update_engine\n * @classdesc Represents an Extent.\n * @implements IExtent\n * @constructor\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n */\n function Extent(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Extent startBlock.\n * @member {number|Long} startBlock\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.startBlock = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Extent numBlocks.\n * @member {number|Long} numBlocks\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.numBlocks = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new Extent instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n * @returns {chromeos_update_engine.Extent} Extent instance\n */\n Extent.create = function create(properties) {\n return new Extent(properties);\n };\n\n /**\n * Encodes the specified Extent message. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startBlock != null && Object.hasOwnProperty.call(message, \"startBlock\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.startBlock);\n if (message.numBlocks != null && Object.hasOwnProperty.call(message, \"numBlocks\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.numBlocks);\n return writer;\n };\n\n /**\n * Encodes the specified Extent message, length delimited. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Extent();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.startBlock = reader.uint64();\n break;\n case 2:\n message.numBlocks = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an Extent message.\n * @function verify\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Extent.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (!$util.isInteger(message.startBlock) && !(message.startBlock && $util.isInteger(message.startBlock.low) && $util.isInteger(message.startBlock.high)))\n return \"startBlock: integer|Long expected\";\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (!$util.isInteger(message.numBlocks) && !(message.numBlocks && $util.isInteger(message.numBlocks.low) && $util.isInteger(message.numBlocks.high)))\n return \"numBlocks: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an Extent message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Extent} Extent\n */\n Extent.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Extent)\n return object;\n let message = new $root.chromeos_update_engine.Extent();\n if (object.startBlock != null)\n if ($util.Long)\n (message.startBlock = $util.Long.fromValue(object.startBlock)).unsigned = true;\n else if (typeof object.startBlock === \"string\")\n message.startBlock = parseInt(object.startBlock, 10);\n else if (typeof object.startBlock === \"number\")\n message.startBlock = object.startBlock;\n else if (typeof object.startBlock === \"object\")\n message.startBlock = new $util.LongBits(object.startBlock.low >>> 0, object.startBlock.high >>> 0).toNumber(true);\n if (object.numBlocks != null)\n if ($util.Long)\n (message.numBlocks = $util.Long.fromValue(object.numBlocks)).unsigned = true;\n else if (typeof object.numBlocks === \"string\")\n message.numBlocks = parseInt(object.numBlocks, 10);\n else if (typeof object.numBlocks === \"number\")\n message.numBlocks = object.numBlocks;\n else if (typeof object.numBlocks === \"object\")\n message.numBlocks = new $util.LongBits(object.numBlocks.low >>> 0, object.numBlocks.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from an Extent message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.Extent} message Extent\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Extent.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.startBlock = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.startBlock = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.numBlocks = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.numBlocks = options.longs === String ? \"0\" : 0;\n }\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (typeof message.startBlock === \"number\")\n object.startBlock = options.longs === String ? String(message.startBlock) : message.startBlock;\n else\n object.startBlock = options.longs === String ? $util.Long.prototype.toString.call(message.startBlock) : options.longs === Number ? new $util.LongBits(message.startBlock.low >>> 0, message.startBlock.high >>> 0).toNumber(true) : message.startBlock;\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (typeof message.numBlocks === \"number\")\n object.numBlocks = options.longs === String ? String(message.numBlocks) : message.numBlocks;\n else\n object.numBlocks = options.longs === String ? $util.Long.prototype.toString.call(message.numBlocks) : options.longs === Number ? new $util.LongBits(message.numBlocks.low >>> 0, message.numBlocks.high >>> 0).toNumber(true) : message.numBlocks;\n return object;\n };\n\n /**\n * Converts this Extent to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Extent\n * @instance\n * @returns {Object.} JSON object\n */\n Extent.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Extent;\n })();\n\n chromeos_update_engine.Signatures = (function() {\n\n /**\n * Properties of a Signatures.\n * @memberof chromeos_update_engine\n * @interface ISignatures\n * @property {Array.|null} [signatures] Signatures signatures\n */\n\n /**\n * Constructs a new Signatures.\n * @memberof chromeos_update_engine\n * @classdesc Represents a Signatures.\n * @implements ISignatures\n * @constructor\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n */\n function Signatures(properties) {\n this.signatures = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signatures signatures.\n * @member {Array.} signatures\n * @memberof chromeos_update_engine.Signatures\n * @instance\n */\n Signatures.prototype.signatures = $util.emptyArray;\n\n /**\n * Creates a new Signatures instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures} Signatures instance\n */\n Signatures.create = function create(properties) {\n return new Signatures(properties);\n };\n\n /**\n * Encodes the specified Signatures message. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.signatures != null && message.signatures.length)\n for (let i = 0; i < message.signatures.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.signatures[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Signatures message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.signatures && message.signatures.length))\n message.signatures = [];\n message.signatures.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signatures message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signatures.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.signatures != null && message.hasOwnProperty(\"signatures\")) {\n if (!Array.isArray(message.signatures))\n return \"signatures: array expected\";\n for (let i = 0; i < message.signatures.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.signatures[i]);\n if (error)\n return \"signatures.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a Signatures message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures} Signatures\n */\n Signatures.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures)\n return object;\n let message = new $root.chromeos_update_engine.Signatures();\n if (object.signatures) {\n if (!Array.isArray(object.signatures))\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: array expected\");\n message.signatures = [];\n for (let i = 0; i < object.signatures.length; ++i) {\n if (typeof object.signatures[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: object expected\");\n message.signatures[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.signatures[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Signatures message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.Signatures} message Signatures\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signatures.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.signatures = [];\n if (message.signatures && message.signatures.length) {\n object.signatures = [];\n for (let j = 0; j < message.signatures.length; ++j)\n object.signatures[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.signatures[j], options);\n }\n return object;\n };\n\n /**\n * Converts this Signatures to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures\n * @instance\n * @returns {Object.} JSON object\n */\n Signatures.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n Signatures.Signature = (function() {\n\n /**\n * Properties of a Signature.\n * @memberof chromeos_update_engine.Signatures\n * @interface ISignature\n * @property {number|null} [version] Signature version\n * @property {Uint8Array|null} [data] Signature data\n * @property {number|null} [unpaddedSignatureSize] Signature unpaddedSignatureSize\n */\n\n /**\n * Constructs a new Signature.\n * @memberof chromeos_update_engine.Signatures\n * @classdesc Represents a Signature.\n * @implements ISignature\n * @constructor\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n */\n function Signature(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signature version.\n * @member {number} version\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.version = 0;\n\n /**\n * Signature data.\n * @member {Uint8Array} data\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.data = $util.newBuffer([]);\n\n /**\n * Signature unpaddedSignatureSize.\n * @member {number} unpaddedSignatureSize\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.unpaddedSignatureSize = 0;\n\n /**\n * Creates a new Signature instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures.Signature} Signature instance\n */\n Signature.create = function create(properties) {\n return new Signature(properties);\n };\n\n /**\n * Encodes the specified Signature message. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.version);\n if (message.data != null && Object.hasOwnProperty.call(message, \"data\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.data);\n if (message.unpaddedSignatureSize != null && Object.hasOwnProperty.call(message, \"unpaddedSignatureSize\"))\n writer.uint32(/* id 3, wireType 5 =*/29).fixed32(message.unpaddedSignatureSize);\n return writer;\n };\n\n /**\n * Encodes the specified Signature message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures.Signature();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.version = reader.uint32();\n break;\n case 2:\n message.data = reader.bytes();\n break;\n case 3:\n message.unpaddedSignatureSize = reader.fixed32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signature message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signature.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version))\n return \"version: integer expected\";\n if (message.data != null && message.hasOwnProperty(\"data\"))\n if (!(message.data && typeof message.data.length === \"number\" || $util.isString(message.data)))\n return \"data: buffer expected\";\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n if (!$util.isInteger(message.unpaddedSignatureSize))\n return \"unpaddedSignatureSize: integer expected\";\n return null;\n };\n\n /**\n * Creates a Signature message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n */\n Signature.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures.Signature)\n return object;\n let message = new $root.chromeos_update_engine.Signatures.Signature();\n if (object.version != null)\n message.version = object.version >>> 0;\n if (object.data != null)\n if (typeof object.data === \"string\")\n $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);\n else if (object.data.length)\n message.data = object.data;\n if (object.unpaddedSignatureSize != null)\n message.unpaddedSignatureSize = object.unpaddedSignatureSize >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a Signature message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.Signature} message Signature\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signature.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.version = 0;\n if (options.bytes === String)\n object.data = \"\";\n else {\n object.data = [];\n if (options.bytes !== Array)\n object.data = $util.newBuffer(object.data);\n }\n object.unpaddedSignatureSize = 0;\n }\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.data != null && message.hasOwnProperty(\"data\"))\n object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n object.unpaddedSignatureSize = message.unpaddedSignatureSize;\n return object;\n };\n\n /**\n * Converts this Signature to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n * @returns {Object.} JSON object\n */\n Signature.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Signature;\n })();\n\n return Signatures;\n })();\n\n chromeos_update_engine.PartitionInfo = (function() {\n\n /**\n * Properties of a PartitionInfo.\n * @memberof chromeos_update_engine\n * @interface IPartitionInfo\n * @property {number|Long|null} [size] PartitionInfo size\n * @property {Uint8Array|null} [hash] PartitionInfo hash\n */\n\n /**\n * Constructs a new PartitionInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionInfo.\n * @implements IPartitionInfo\n * @constructor\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n */\n function PartitionInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionInfo size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * PartitionInfo hash.\n * @member {Uint8Array} hash\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.hash = $util.newBuffer([]);\n\n /**\n * Creates a new PartitionInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo instance\n */\n PartitionInfo.create = function create(properties) {\n return new PartitionInfo(properties);\n };\n\n /**\n * Encodes the specified PartitionInfo message. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.size);\n if (message.hash != null && Object.hasOwnProperty.call(message, \"hash\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.hash);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.size = reader.uint64();\n break;\n case 2:\n message.hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionInfo message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n if (!(message.hash && typeof message.hash.length === \"number\" || $util.isString(message.hash)))\n return \"hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates a PartitionInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n */\n PartitionInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionInfo)\n return object;\n let message = new $root.chromeos_update_engine.PartitionInfo();\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.hash != null)\n if (typeof object.hash === \"string\")\n $util.base64.decode(object.hash, message.hash = $util.newBuffer($util.base64.length(object.hash)), 0);\n else if (object.hash.length)\n message.hash = object.hash;\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.PartitionInfo} message PartitionInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.hash = \"\";\n else {\n object.hash = [];\n if (options.bytes !== Array)\n object.hash = $util.newBuffer(object.hash);\n }\n }\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n object.hash = options.bytes === String ? $util.base64.encode(message.hash, 0, message.hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.hash) : message.hash;\n return object;\n };\n\n /**\n * Converts this PartitionInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionInfo;\n })();\n\n chromeos_update_engine.InstallOperation = (function() {\n\n /**\n * Properties of an InstallOperation.\n * @memberof chromeos_update_engine\n * @interface IInstallOperation\n * @property {chromeos_update_engine.InstallOperation.Type} type InstallOperation type\n * @property {number|Long|null} [dataOffset] InstallOperation dataOffset\n * @property {number|Long|null} [dataLength] InstallOperation dataLength\n * @property {Array.|null} [srcExtents] InstallOperation srcExtents\n * @property {number|Long|null} [srcLength] InstallOperation srcLength\n * @property {Array.|null} [dstExtents] InstallOperation dstExtents\n * @property {number|Long|null} [dstLength] InstallOperation dstLength\n * @property {Uint8Array|null} [dataSha256Hash] InstallOperation dataSha256Hash\n * @property {Uint8Array|null} [srcSha256Hash] InstallOperation srcSha256Hash\n */\n\n /**\n * Constructs a new InstallOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents an InstallOperation.\n * @implements IInstallOperation\n * @constructor\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n */\n function InstallOperation(properties) {\n this.srcExtents = [];\n this.dstExtents = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * InstallOperation type.\n * @member {chromeos_update_engine.InstallOperation.Type} type\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.type = 0;\n\n /**\n * InstallOperation dataOffset.\n * @member {number|Long} dataOffset\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataLength.\n * @member {number|Long} dataLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation srcExtents.\n * @member {Array.} srcExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcExtents = $util.emptyArray;\n\n /**\n * InstallOperation srcLength.\n * @member {number|Long} srcLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dstExtents.\n * @member {Array.} dstExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstExtents = $util.emptyArray;\n\n /**\n * InstallOperation dstLength.\n * @member {number|Long} dstLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataSha256Hash.\n * @member {Uint8Array} dataSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataSha256Hash = $util.newBuffer([]);\n\n /**\n * InstallOperation srcSha256Hash.\n * @member {Uint8Array} srcSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcSha256Hash = $util.newBuffer([]);\n\n /**\n * Creates a new InstallOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation instance\n */\n InstallOperation.create = function create(properties) {\n return new InstallOperation(properties);\n };\n\n /**\n * Encodes the specified InstallOperation message. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.dataOffset != null && Object.hasOwnProperty.call(message, \"dataOffset\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.dataOffset);\n if (message.dataLength != null && Object.hasOwnProperty.call(message, \"dataLength\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.dataLength);\n if (message.srcExtents != null && message.srcExtents.length)\n for (let i = 0; i < message.srcExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.srcExtents[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.srcLength != null && Object.hasOwnProperty.call(message, \"srcLength\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.srcLength);\n if (message.dstExtents != null && message.dstExtents.length)\n for (let i = 0; i < message.dstExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.dstExtents[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.dstLength != null && Object.hasOwnProperty.call(message, \"dstLength\"))\n writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.dstLength);\n if (message.dataSha256Hash != null && Object.hasOwnProperty.call(message, \"dataSha256Hash\"))\n writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.dataSha256Hash);\n if (message.srcSha256Hash != null && Object.hasOwnProperty.call(message, \"srcSha256Hash\"))\n writer.uint32(/* id 9, wireType 2 =*/74).bytes(message.srcSha256Hash);\n return writer;\n };\n\n /**\n * Encodes the specified InstallOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.InstallOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.dataOffset = reader.uint64();\n break;\n case 3:\n message.dataLength = reader.uint64();\n break;\n case 4:\n if (!(message.srcExtents && message.srcExtents.length))\n message.srcExtents = [];\n message.srcExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 5:\n message.srcLength = reader.uint64();\n break;\n case 6:\n if (!(message.dstExtents && message.dstExtents.length))\n message.dstExtents = [];\n message.dstExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 7:\n message.dstLength = reader.uint64();\n break;\n case 8:\n message.dataSha256Hash = reader.bytes();\n break;\n case 9:\n message.srcSha256Hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"type\"))\n throw $util.ProtocolError(\"missing required 'type'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an InstallOperation message.\n * @function verify\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n InstallOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 8:\n case 6:\n case 7:\n case 10:\n case 9:\n case 11:\n case 12:\n case 13:\n break;\n }\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (!$util.isInteger(message.dataOffset) && !(message.dataOffset && $util.isInteger(message.dataOffset.low) && $util.isInteger(message.dataOffset.high)))\n return \"dataOffset: integer|Long expected\";\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (!$util.isInteger(message.dataLength) && !(message.dataLength && $util.isInteger(message.dataLength.low) && $util.isInteger(message.dataLength.high)))\n return \"dataLength: integer|Long expected\";\n if (message.srcExtents != null && message.hasOwnProperty(\"srcExtents\")) {\n if (!Array.isArray(message.srcExtents))\n return \"srcExtents: array expected\";\n for (let i = 0; i < message.srcExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtents[i]);\n if (error)\n return \"srcExtents.\" + error;\n }\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (!$util.isInteger(message.srcLength) && !(message.srcLength && $util.isInteger(message.srcLength.low) && $util.isInteger(message.srcLength.high)))\n return \"srcLength: integer|Long expected\";\n if (message.dstExtents != null && message.hasOwnProperty(\"dstExtents\")) {\n if (!Array.isArray(message.dstExtents))\n return \"dstExtents: array expected\";\n for (let i = 0; i < message.dstExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtents[i]);\n if (error)\n return \"dstExtents.\" + error;\n }\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (!$util.isInteger(message.dstLength) && !(message.dstLength && $util.isInteger(message.dstLength.low) && $util.isInteger(message.dstLength.high)))\n return \"dstLength: integer|Long expected\";\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n if (!(message.dataSha256Hash && typeof message.dataSha256Hash.length === \"number\" || $util.isString(message.dataSha256Hash)))\n return \"dataSha256Hash: buffer expected\";\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n if (!(message.srcSha256Hash && typeof message.srcSha256Hash.length === \"number\" || $util.isString(message.srcSha256Hash)))\n return \"srcSha256Hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates an InstallOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n */\n InstallOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.InstallOperation)\n return object;\n let message = new $root.chromeos_update_engine.InstallOperation();\n switch (object.type) {\n case \"REPLACE\":\n case 0:\n message.type = 0;\n break;\n case \"REPLACE_BZ\":\n case 1:\n message.type = 1;\n break;\n case \"MOVE\":\n case 2:\n message.type = 2;\n break;\n case \"BSDIFF\":\n case 3:\n message.type = 3;\n break;\n case \"SOURCE_COPY\":\n case 4:\n message.type = 4;\n break;\n case \"SOURCE_BSDIFF\":\n case 5:\n message.type = 5;\n break;\n case \"REPLACE_XZ\":\n case 8:\n message.type = 8;\n break;\n case \"ZERO\":\n case 6:\n message.type = 6;\n break;\n case \"DISCARD\":\n case 7:\n message.type = 7;\n break;\n case \"BROTLI_BSDIFF\":\n case 10:\n message.type = 10;\n break;\n case \"PUFFDIFF\":\n case 9:\n message.type = 9;\n break;\n case \"ZUCCHINI\":\n case 11:\n message.type = 11;\n break;\n case \"LZ4DIFF_BSDIFF\":\n case 12:\n message.type = 12;\n break;\n case \"LZ4DIFF_PUFFDIFF\":\n case 13:\n message.type = 13;\n break;\n }\n if (object.dataOffset != null)\n if ($util.Long)\n (message.dataOffset = $util.Long.fromValue(object.dataOffset)).unsigned = true;\n else if (typeof object.dataOffset === \"string\")\n message.dataOffset = parseInt(object.dataOffset, 10);\n else if (typeof object.dataOffset === \"number\")\n message.dataOffset = object.dataOffset;\n else if (typeof object.dataOffset === \"object\")\n message.dataOffset = new $util.LongBits(object.dataOffset.low >>> 0, object.dataOffset.high >>> 0).toNumber(true);\n if (object.dataLength != null)\n if ($util.Long)\n (message.dataLength = $util.Long.fromValue(object.dataLength)).unsigned = true;\n else if (typeof object.dataLength === \"string\")\n message.dataLength = parseInt(object.dataLength, 10);\n else if (typeof object.dataLength === \"number\")\n message.dataLength = object.dataLength;\n else if (typeof object.dataLength === \"object\")\n message.dataLength = new $util.LongBits(object.dataLength.low >>> 0, object.dataLength.high >>> 0).toNumber(true);\n if (object.srcExtents) {\n if (!Array.isArray(object.srcExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: array expected\");\n message.srcExtents = [];\n for (let i = 0; i < object.srcExtents.length; ++i) {\n if (typeof object.srcExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: object expected\");\n message.srcExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.srcExtents[i]);\n }\n }\n if (object.srcLength != null)\n if ($util.Long)\n (message.srcLength = $util.Long.fromValue(object.srcLength)).unsigned = true;\n else if (typeof object.srcLength === \"string\")\n message.srcLength = parseInt(object.srcLength, 10);\n else if (typeof object.srcLength === \"number\")\n message.srcLength = object.srcLength;\n else if (typeof object.srcLength === \"object\")\n message.srcLength = new $util.LongBits(object.srcLength.low >>> 0, object.srcLength.high >>> 0).toNumber(true);\n if (object.dstExtents) {\n if (!Array.isArray(object.dstExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: array expected\");\n message.dstExtents = [];\n for (let i = 0; i < object.dstExtents.length; ++i) {\n if (typeof object.dstExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: object expected\");\n message.dstExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.dstExtents[i]);\n }\n }\n if (object.dstLength != null)\n if ($util.Long)\n (message.dstLength = $util.Long.fromValue(object.dstLength)).unsigned = true;\n else if (typeof object.dstLength === \"string\")\n message.dstLength = parseInt(object.dstLength, 10);\n else if (typeof object.dstLength === \"number\")\n message.dstLength = object.dstLength;\n else if (typeof object.dstLength === \"object\")\n message.dstLength = new $util.LongBits(object.dstLength.low >>> 0, object.dstLength.high >>> 0).toNumber(true);\n if (object.dataSha256Hash != null)\n if (typeof object.dataSha256Hash === \"string\")\n $util.base64.decode(object.dataSha256Hash, message.dataSha256Hash = $util.newBuffer($util.base64.length(object.dataSha256Hash)), 0);\n else if (object.dataSha256Hash.length)\n message.dataSha256Hash = object.dataSha256Hash;\n if (object.srcSha256Hash != null)\n if (typeof object.srcSha256Hash === \"string\")\n $util.base64.decode(object.srcSha256Hash, message.srcSha256Hash = $util.newBuffer($util.base64.length(object.srcSha256Hash)), 0);\n else if (object.srcSha256Hash.length)\n message.srcSha256Hash = object.srcSha256Hash;\n return message;\n };\n\n /**\n * Creates a plain object from an InstallOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.InstallOperation} message InstallOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n InstallOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.srcExtents = [];\n object.dstExtents = [];\n }\n if (options.defaults) {\n object.type = options.enums === String ? \"REPLACE\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.srcLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.srcLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dstLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dstLength = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.dataSha256Hash = \"\";\n else {\n object.dataSha256Hash = [];\n if (options.bytes !== Array)\n object.dataSha256Hash = $util.newBuffer(object.dataSha256Hash);\n }\n if (options.bytes === String)\n object.srcSha256Hash = \"\";\n else {\n object.srcSha256Hash = [];\n if (options.bytes !== Array)\n object.srcSha256Hash = $util.newBuffer(object.srcSha256Hash);\n }\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.InstallOperation.Type[message.type] : message.type;\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (typeof message.dataOffset === \"number\")\n object.dataOffset = options.longs === String ? String(message.dataOffset) : message.dataOffset;\n else\n object.dataOffset = options.longs === String ? $util.Long.prototype.toString.call(message.dataOffset) : options.longs === Number ? new $util.LongBits(message.dataOffset.low >>> 0, message.dataOffset.high >>> 0).toNumber(true) : message.dataOffset;\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (typeof message.dataLength === \"number\")\n object.dataLength = options.longs === String ? String(message.dataLength) : message.dataLength;\n else\n object.dataLength = options.longs === String ? $util.Long.prototype.toString.call(message.dataLength) : options.longs === Number ? new $util.LongBits(message.dataLength.low >>> 0, message.dataLength.high >>> 0).toNumber(true) : message.dataLength;\n if (message.srcExtents && message.srcExtents.length) {\n object.srcExtents = [];\n for (let j = 0; j < message.srcExtents.length; ++j)\n object.srcExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.srcExtents[j], options);\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (typeof message.srcLength === \"number\")\n object.srcLength = options.longs === String ? String(message.srcLength) : message.srcLength;\n else\n object.srcLength = options.longs === String ? $util.Long.prototype.toString.call(message.srcLength) : options.longs === Number ? new $util.LongBits(message.srcLength.low >>> 0, message.srcLength.high >>> 0).toNumber(true) : message.srcLength;\n if (message.dstExtents && message.dstExtents.length) {\n object.dstExtents = [];\n for (let j = 0; j < message.dstExtents.length; ++j)\n object.dstExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.dstExtents[j], options);\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (typeof message.dstLength === \"number\")\n object.dstLength = options.longs === String ? String(message.dstLength) : message.dstLength;\n else\n object.dstLength = options.longs === String ? $util.Long.prototype.toString.call(message.dstLength) : options.longs === Number ? new $util.LongBits(message.dstLength.low >>> 0, message.dstLength.high >>> 0).toNumber(true) : message.dstLength;\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n object.dataSha256Hash = options.bytes === String ? $util.base64.encode(message.dataSha256Hash, 0, message.dataSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.dataSha256Hash) : message.dataSha256Hash;\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n object.srcSha256Hash = options.bytes === String ? $util.base64.encode(message.srcSha256Hash, 0, message.srcSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.srcSha256Hash) : message.srcSha256Hash;\n return object;\n };\n\n /**\n * Converts this InstallOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n * @returns {Object.} JSON object\n */\n InstallOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.InstallOperation.Type\n * @enum {number}\n * @property {number} REPLACE=0 REPLACE value\n * @property {number} REPLACE_BZ=1 REPLACE_BZ value\n * @property {number} MOVE=2 MOVE value\n * @property {number} BSDIFF=3 BSDIFF value\n * @property {number} SOURCE_COPY=4 SOURCE_COPY value\n * @property {number} SOURCE_BSDIFF=5 SOURCE_BSDIFF value\n * @property {number} REPLACE_XZ=8 REPLACE_XZ value\n * @property {number} ZERO=6 ZERO value\n * @property {number} DISCARD=7 DISCARD value\n * @property {number} BROTLI_BSDIFF=10 BROTLI_BSDIFF value\n * @property {number} PUFFDIFF=9 PUFFDIFF value\n * @property {number} ZUCCHINI=11 ZUCCHINI value\n * @property {number} LZ4DIFF_BSDIFF=12 LZ4DIFF_BSDIFF value\n * @property {number} LZ4DIFF_PUFFDIFF=13 LZ4DIFF_PUFFDIFF value\n */\n InstallOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"REPLACE\"] = 0;\n values[valuesById[1] = \"REPLACE_BZ\"] = 1;\n values[valuesById[2] = \"MOVE\"] = 2;\n values[valuesById[3] = \"BSDIFF\"] = 3;\n values[valuesById[4] = \"SOURCE_COPY\"] = 4;\n values[valuesById[5] = \"SOURCE_BSDIFF\"] = 5;\n values[valuesById[8] = \"REPLACE_XZ\"] = 8;\n values[valuesById[6] = \"ZERO\"] = 6;\n values[valuesById[7] = \"DISCARD\"] = 7;\n values[valuesById[10] = \"BROTLI_BSDIFF\"] = 10;\n values[valuesById[9] = \"PUFFDIFF\"] = 9;\n values[valuesById[11] = \"ZUCCHINI\"] = 11;\n values[valuesById[12] = \"LZ4DIFF_BSDIFF\"] = 12;\n values[valuesById[13] = \"LZ4DIFF_PUFFDIFF\"] = 13;\n return values;\n })();\n\n return InstallOperation;\n })();\n\n chromeos_update_engine.CowMergeOperation = (function() {\n\n /**\n * Properties of a CowMergeOperation.\n * @memberof chromeos_update_engine\n * @interface ICowMergeOperation\n * @property {chromeos_update_engine.CowMergeOperation.Type|null} [type] CowMergeOperation type\n * @property {chromeos_update_engine.IExtent|null} [srcExtent] CowMergeOperation srcExtent\n * @property {chromeos_update_engine.IExtent|null} [dstExtent] CowMergeOperation dstExtent\n * @property {number|null} [srcOffset] CowMergeOperation srcOffset\n */\n\n /**\n * Constructs a new CowMergeOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents a CowMergeOperation.\n * @implements ICowMergeOperation\n * @constructor\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n */\n function CowMergeOperation(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * CowMergeOperation type.\n * @member {chromeos_update_engine.CowMergeOperation.Type} type\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.type = 0;\n\n /**\n * CowMergeOperation srcExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} srcExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcExtent = null;\n\n /**\n * CowMergeOperation dstExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} dstExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.dstExtent = null;\n\n /**\n * CowMergeOperation srcOffset.\n * @member {number} srcOffset\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcOffset = 0;\n\n /**\n * Creates a new CowMergeOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation instance\n */\n CowMergeOperation.create = function create(properties) {\n return new CowMergeOperation(properties);\n };\n\n /**\n * Encodes the specified CowMergeOperation message. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.srcExtent != null && Object.hasOwnProperty.call(message, \"srcExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.srcExtent, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.dstExtent != null && Object.hasOwnProperty.call(message, \"dstExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.dstExtent, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.srcOffset != null && Object.hasOwnProperty.call(message, \"srcOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.srcOffset);\n return writer;\n };\n\n /**\n * Encodes the specified CowMergeOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.CowMergeOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.srcExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 3:\n message.dstExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 4:\n message.srcOffset = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a CowMergeOperation message.\n * @function verify\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n CowMergeOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtent);\n if (error)\n return \"srcExtent.\" + error;\n }\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtent);\n if (error)\n return \"dstExtent.\" + error;\n }\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n if (!$util.isInteger(message.srcOffset))\n return \"srcOffset: integer expected\";\n return null;\n };\n\n /**\n * Creates a CowMergeOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n */\n CowMergeOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.CowMergeOperation)\n return object;\n let message = new $root.chromeos_update_engine.CowMergeOperation();\n switch (object.type) {\n case \"COW_COPY\":\n case 0:\n message.type = 0;\n break;\n case \"COW_XOR\":\n case 1:\n message.type = 1;\n break;\n case \"COW_REPLACE\":\n case 2:\n message.type = 2;\n break;\n }\n if (object.srcExtent != null) {\n if (typeof object.srcExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.srcExtent: object expected\");\n message.srcExtent = $root.chromeos_update_engine.Extent.fromObject(object.srcExtent);\n }\n if (object.dstExtent != null) {\n if (typeof object.dstExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.dstExtent: object expected\");\n message.dstExtent = $root.chromeos_update_engine.Extent.fromObject(object.dstExtent);\n }\n if (object.srcOffset != null)\n message.srcOffset = object.srcOffset >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a CowMergeOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.CowMergeOperation} message CowMergeOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n CowMergeOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"COW_COPY\" : 0;\n object.srcExtent = null;\n object.dstExtent = null;\n object.srcOffset = 0;\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.CowMergeOperation.Type[message.type] : message.type;\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\"))\n object.srcExtent = $root.chromeos_update_engine.Extent.toObject(message.srcExtent, options);\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\"))\n object.dstExtent = $root.chromeos_update_engine.Extent.toObject(message.dstExtent, options);\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n object.srcOffset = message.srcOffset;\n return object;\n };\n\n /**\n * Converts this CowMergeOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n * @returns {Object.} JSON object\n */\n CowMergeOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.CowMergeOperation.Type\n * @enum {number}\n * @property {number} COW_COPY=0 COW_COPY value\n * @property {number} COW_XOR=1 COW_XOR value\n * @property {number} COW_REPLACE=2 COW_REPLACE value\n */\n CowMergeOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"COW_COPY\"] = 0;\n values[valuesById[1] = \"COW_XOR\"] = 1;\n values[valuesById[2] = \"COW_REPLACE\"] = 2;\n return values;\n })();\n\n return CowMergeOperation;\n })();\n\n chromeos_update_engine.PartitionUpdate = (function() {\n\n /**\n * Properties of a PartitionUpdate.\n * @memberof chromeos_update_engine\n * @interface IPartitionUpdate\n * @property {string} partitionName PartitionUpdate partitionName\n * @property {boolean|null} [runPostinstall] PartitionUpdate runPostinstall\n * @property {string|null} [postinstallPath] PartitionUpdate postinstallPath\n * @property {string|null} [filesystemType] PartitionUpdate filesystemType\n * @property {Array.|null} [newPartitionSignature] PartitionUpdate newPartitionSignature\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldPartitionInfo] PartitionUpdate oldPartitionInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newPartitionInfo] PartitionUpdate newPartitionInfo\n * @property {Array.|null} [operations] PartitionUpdate operations\n * @property {boolean|null} [postinstallOptional] PartitionUpdate postinstallOptional\n * @property {chromeos_update_engine.IExtent|null} [hashTreeDataExtent] PartitionUpdate hashTreeDataExtent\n * @property {chromeos_update_engine.IExtent|null} [hashTreeExtent] PartitionUpdate hashTreeExtent\n * @property {string|null} [hashTreeAlgorithm] PartitionUpdate hashTreeAlgorithm\n * @property {Uint8Array|null} [hashTreeSalt] PartitionUpdate hashTreeSalt\n * @property {chromeos_update_engine.IExtent|null} [fecDataExtent] PartitionUpdate fecDataExtent\n * @property {chromeos_update_engine.IExtent|null} [fecExtent] PartitionUpdate fecExtent\n * @property {number|null} [fecRoots] PartitionUpdate fecRoots\n * @property {string|null} [version] PartitionUpdate version\n * @property {Array.|null} [mergeOperations] PartitionUpdate mergeOperations\n * @property {number|Long|null} [estimateCowSize] PartitionUpdate estimateCowSize\n */\n\n /**\n * Constructs a new PartitionUpdate.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionUpdate.\n * @implements IPartitionUpdate\n * @constructor\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n */\n function PartitionUpdate(properties) {\n this.newPartitionSignature = [];\n this.operations = [];\n this.mergeOperations = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionUpdate partitionName.\n * @member {string} partitionName\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.partitionName = \"\";\n\n /**\n * PartitionUpdate runPostinstall.\n * @member {boolean} runPostinstall\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.runPostinstall = false;\n\n /**\n * PartitionUpdate postinstallPath.\n * @member {string} postinstallPath\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallPath = \"\";\n\n /**\n * PartitionUpdate filesystemType.\n * @member {string} filesystemType\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.filesystemType = \"\";\n\n /**\n * PartitionUpdate newPartitionSignature.\n * @member {Array.} newPartitionSignature\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionSignature = $util.emptyArray;\n\n /**\n * PartitionUpdate oldPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.oldPartitionInfo = null;\n\n /**\n * PartitionUpdate newPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionInfo = null;\n\n /**\n * PartitionUpdate operations.\n * @member {Array.} operations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.operations = $util.emptyArray;\n\n /**\n * PartitionUpdate postinstallOptional.\n * @member {boolean} postinstallOptional\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallOptional = false;\n\n /**\n * PartitionUpdate hashTreeDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeDataExtent = null;\n\n /**\n * PartitionUpdate hashTreeExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeExtent = null;\n\n /**\n * PartitionUpdate hashTreeAlgorithm.\n * @member {string} hashTreeAlgorithm\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeAlgorithm = \"\";\n\n /**\n * PartitionUpdate hashTreeSalt.\n * @member {Uint8Array} hashTreeSalt\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeSalt = $util.newBuffer([]);\n\n /**\n * PartitionUpdate fecDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecDataExtent = null;\n\n /**\n * PartitionUpdate fecExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecExtent = null;\n\n /**\n * PartitionUpdate fecRoots.\n * @member {number} fecRoots\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecRoots = 2;\n\n /**\n * PartitionUpdate version.\n * @member {string} version\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.version = \"\";\n\n /**\n * PartitionUpdate mergeOperations.\n * @member {Array.} mergeOperations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.mergeOperations = $util.emptyArray;\n\n /**\n * PartitionUpdate estimateCowSize.\n * @member {number|Long} estimateCowSize\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.estimateCowSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new PartitionUpdate instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate instance\n */\n PartitionUpdate.create = function create(properties) {\n return new PartitionUpdate(properties);\n };\n\n /**\n * Encodes the specified PartitionUpdate message. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.partitionName);\n if (message.runPostinstall != null && Object.hasOwnProperty.call(message, \"runPostinstall\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.runPostinstall);\n if (message.postinstallPath != null && Object.hasOwnProperty.call(message, \"postinstallPath\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.postinstallPath);\n if (message.filesystemType != null && Object.hasOwnProperty.call(message, \"filesystemType\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.filesystemType);\n if (message.newPartitionSignature != null && message.newPartitionSignature.length)\n for (let i = 0; i < message.newPartitionSignature.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.newPartitionSignature[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.oldPartitionInfo != null && Object.hasOwnProperty.call(message, \"oldPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldPartitionInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newPartitionInfo != null && Object.hasOwnProperty.call(message, \"newPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newPartitionInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.operations != null && message.operations.length)\n for (let i = 0; i < message.operations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.operations[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.postinstallOptional != null && Object.hasOwnProperty.call(message, \"postinstallOptional\"))\n writer.uint32(/* id 9, wireType 0 =*/72).bool(message.postinstallOptional);\n if (message.hashTreeDataExtent != null && Object.hasOwnProperty.call(message, \"hashTreeDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeDataExtent, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.hashTreeExtent != null && Object.hasOwnProperty.call(message, \"hashTreeExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeExtent, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.hashTreeAlgorithm != null && Object.hasOwnProperty.call(message, \"hashTreeAlgorithm\"))\n writer.uint32(/* id 12, wireType 2 =*/98).string(message.hashTreeAlgorithm);\n if (message.hashTreeSalt != null && Object.hasOwnProperty.call(message, \"hashTreeSalt\"))\n writer.uint32(/* id 13, wireType 2 =*/106).bytes(message.hashTreeSalt);\n if (message.fecDataExtent != null && Object.hasOwnProperty.call(message, \"fecDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecDataExtent, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.fecExtent != null && Object.hasOwnProperty.call(message, \"fecExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecExtent, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.fecRoots != null && Object.hasOwnProperty.call(message, \"fecRoots\"))\n writer.uint32(/* id 16, wireType 0 =*/128).uint32(message.fecRoots);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 17, wireType 2 =*/138).string(message.version);\n if (message.mergeOperations != null && message.mergeOperations.length)\n for (let i = 0; i < message.mergeOperations.length; ++i)\n $root.chromeos_update_engine.CowMergeOperation.encode(message.mergeOperations[i], writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n if (message.estimateCowSize != null && Object.hasOwnProperty.call(message, \"estimateCowSize\"))\n writer.uint32(/* id 19, wireType 0 =*/152).uint64(message.estimateCowSize);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionUpdate message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionUpdate();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.partitionName = reader.string();\n break;\n case 2:\n message.runPostinstall = reader.bool();\n break;\n case 3:\n message.postinstallPath = reader.string();\n break;\n case 4:\n message.filesystemType = reader.string();\n break;\n case 5:\n if (!(message.newPartitionSignature && message.newPartitionSignature.length))\n message.newPartitionSignature = [];\n message.newPartitionSignature.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n case 6:\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n if (!(message.operations && message.operations.length))\n message.operations = [];\n message.operations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 9:\n message.postinstallOptional = reader.bool();\n break;\n case 10:\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 11:\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 12:\n message.hashTreeAlgorithm = reader.string();\n break;\n case 13:\n message.hashTreeSalt = reader.bytes();\n break;\n case 14:\n message.fecDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 15:\n message.fecExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 16:\n message.fecRoots = reader.uint32();\n break;\n case 17:\n message.version = reader.string();\n break;\n case 18:\n if (!(message.mergeOperations && message.mergeOperations.length))\n message.mergeOperations = [];\n message.mergeOperations.push($root.chromeos_update_engine.CowMergeOperation.decode(reader, reader.uint32()));\n break;\n case 19:\n message.estimateCowSize = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"partitionName\"))\n throw $util.ProtocolError(\"missing required 'partitionName'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionUpdate message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionUpdate.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.partitionName))\n return \"partitionName: string expected\";\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n if (typeof message.runPostinstall !== \"boolean\")\n return \"runPostinstall: boolean expected\";\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n if (!$util.isString(message.postinstallPath))\n return \"postinstallPath: string expected\";\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n if (!$util.isString(message.filesystemType))\n return \"filesystemType: string expected\";\n if (message.newPartitionSignature != null && message.hasOwnProperty(\"newPartitionSignature\")) {\n if (!Array.isArray(message.newPartitionSignature))\n return \"newPartitionSignature: array expected\";\n for (let i = 0; i < message.newPartitionSignature.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.newPartitionSignature[i]);\n if (error)\n return \"newPartitionSignature.\" + error;\n }\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldPartitionInfo);\n if (error)\n return \"oldPartitionInfo.\" + error;\n }\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newPartitionInfo);\n if (error)\n return \"newPartitionInfo.\" + error;\n }\n if (message.operations != null && message.hasOwnProperty(\"operations\")) {\n if (!Array.isArray(message.operations))\n return \"operations: array expected\";\n for (let i = 0; i < message.operations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.operations[i]);\n if (error)\n return \"operations.\" + error;\n }\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n if (typeof message.postinstallOptional !== \"boolean\")\n return \"postinstallOptional: boolean expected\";\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeDataExtent);\n if (error)\n return \"hashTreeDataExtent.\" + error;\n }\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeExtent);\n if (error)\n return \"hashTreeExtent.\" + error;\n }\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n if (!$util.isString(message.hashTreeAlgorithm))\n return \"hashTreeAlgorithm: string expected\";\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n if (!(message.hashTreeSalt && typeof message.hashTreeSalt.length === \"number\" || $util.isString(message.hashTreeSalt)))\n return \"hashTreeSalt: buffer expected\";\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecDataExtent);\n if (error)\n return \"fecDataExtent.\" + error;\n }\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecExtent);\n if (error)\n return \"fecExtent.\" + error;\n }\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n if (!$util.isInteger(message.fecRoots))\n return \"fecRoots: integer expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.mergeOperations != null && message.hasOwnProperty(\"mergeOperations\")) {\n if (!Array.isArray(message.mergeOperations))\n return \"mergeOperations: array expected\";\n for (let i = 0; i < message.mergeOperations.length; ++i) {\n let error = $root.chromeos_update_engine.CowMergeOperation.verify(message.mergeOperations[i]);\n if (error)\n return \"mergeOperations.\" + error;\n }\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (!$util.isInteger(message.estimateCowSize) && !(message.estimateCowSize && $util.isInteger(message.estimateCowSize.low) && $util.isInteger(message.estimateCowSize.high)))\n return \"estimateCowSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a PartitionUpdate message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n */\n PartitionUpdate.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionUpdate)\n return object;\n let message = new $root.chromeos_update_engine.PartitionUpdate();\n if (object.partitionName != null)\n message.partitionName = String(object.partitionName);\n if (object.runPostinstall != null)\n message.runPostinstall = Boolean(object.runPostinstall);\n if (object.postinstallPath != null)\n message.postinstallPath = String(object.postinstallPath);\n if (object.filesystemType != null)\n message.filesystemType = String(object.filesystemType);\n if (object.newPartitionSignature) {\n if (!Array.isArray(object.newPartitionSignature))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: array expected\");\n message.newPartitionSignature = [];\n for (let i = 0; i < object.newPartitionSignature.length; ++i) {\n if (typeof object.newPartitionSignature[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: object expected\");\n message.newPartitionSignature[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.newPartitionSignature[i]);\n }\n }\n if (object.oldPartitionInfo != null) {\n if (typeof object.oldPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.oldPartitionInfo: object expected\");\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldPartitionInfo);\n }\n if (object.newPartitionInfo != null) {\n if (typeof object.newPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionInfo: object expected\");\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newPartitionInfo);\n }\n if (object.operations) {\n if (!Array.isArray(object.operations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: array expected\");\n message.operations = [];\n for (let i = 0; i < object.operations.length; ++i) {\n if (typeof object.operations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: object expected\");\n message.operations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.operations[i]);\n }\n }\n if (object.postinstallOptional != null)\n message.postinstallOptional = Boolean(object.postinstallOptional);\n if (object.hashTreeDataExtent != null) {\n if (typeof object.hashTreeDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeDataExtent: object expected\");\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeDataExtent);\n }\n if (object.hashTreeExtent != null) {\n if (typeof object.hashTreeExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeExtent: object expected\");\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeExtent);\n }\n if (object.hashTreeAlgorithm != null)\n message.hashTreeAlgorithm = String(object.hashTreeAlgorithm);\n if (object.hashTreeSalt != null)\n if (typeof object.hashTreeSalt === \"string\")\n $util.base64.decode(object.hashTreeSalt, message.hashTreeSalt = $util.newBuffer($util.base64.length(object.hashTreeSalt)), 0);\n else if (object.hashTreeSalt.length)\n message.hashTreeSalt = object.hashTreeSalt;\n if (object.fecDataExtent != null) {\n if (typeof object.fecDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecDataExtent: object expected\");\n message.fecDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecDataExtent);\n }\n if (object.fecExtent != null) {\n if (typeof object.fecExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecExtent: object expected\");\n message.fecExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecExtent);\n }\n if (object.fecRoots != null)\n message.fecRoots = object.fecRoots >>> 0;\n if (object.version != null)\n message.version = String(object.version);\n if (object.mergeOperations) {\n if (!Array.isArray(object.mergeOperations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected\");\n message.mergeOperations = [];\n for (let i = 0; i < object.mergeOperations.length; ++i) {\n if (typeof object.mergeOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: object expected\");\n message.mergeOperations[i] = $root.chromeos_update_engine.CowMergeOperation.fromObject(object.mergeOperations[i]);\n }\n }\n if (object.estimateCowSize != null)\n if ($util.Long)\n (message.estimateCowSize = $util.Long.fromValue(object.estimateCowSize)).unsigned = true;\n else if (typeof object.estimateCowSize === \"string\")\n message.estimateCowSize = parseInt(object.estimateCowSize, 10);\n else if (typeof object.estimateCowSize === \"number\")\n message.estimateCowSize = object.estimateCowSize;\n else if (typeof object.estimateCowSize === \"object\")\n message.estimateCowSize = new $util.LongBits(object.estimateCowSize.low >>> 0, object.estimateCowSize.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionUpdate message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.PartitionUpdate} message PartitionUpdate\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionUpdate.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.newPartitionSignature = [];\n object.operations = [];\n object.mergeOperations = [];\n }\n if (options.defaults) {\n object.partitionName = \"\";\n object.runPostinstall = false;\n object.postinstallPath = \"\";\n object.filesystemType = \"\";\n object.oldPartitionInfo = null;\n object.newPartitionInfo = null;\n object.postinstallOptional = false;\n object.hashTreeDataExtent = null;\n object.hashTreeExtent = null;\n object.hashTreeAlgorithm = \"\";\n if (options.bytes === String)\n object.hashTreeSalt = \"\";\n else {\n object.hashTreeSalt = [];\n if (options.bytes !== Array)\n object.hashTreeSalt = $util.newBuffer(object.hashTreeSalt);\n }\n object.fecDataExtent = null;\n object.fecExtent = null;\n object.fecRoots = 2;\n object.version = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.estimateCowSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.estimateCowSize = options.longs === String ? \"0\" : 0;\n }\n if (message.partitionName != null && message.hasOwnProperty(\"partitionName\"))\n object.partitionName = message.partitionName;\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n object.runPostinstall = message.runPostinstall;\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n object.postinstallPath = message.postinstallPath;\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n object.filesystemType = message.filesystemType;\n if (message.newPartitionSignature && message.newPartitionSignature.length) {\n object.newPartitionSignature = [];\n for (let j = 0; j < message.newPartitionSignature.length; ++j)\n object.newPartitionSignature[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.newPartitionSignature[j], options);\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\"))\n object.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldPartitionInfo, options);\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\"))\n object.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newPartitionInfo, options);\n if (message.operations && message.operations.length) {\n object.operations = [];\n for (let j = 0; j < message.operations.length; ++j)\n object.operations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.operations[j], options);\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n object.postinstallOptional = message.postinstallOptional;\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\"))\n object.hashTreeDataExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeDataExtent, options);\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\"))\n object.hashTreeExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeExtent, options);\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n object.hashTreeAlgorithm = message.hashTreeAlgorithm;\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n object.hashTreeSalt = options.bytes === String ? $util.base64.encode(message.hashTreeSalt, 0, message.hashTreeSalt.length) : options.bytes === Array ? Array.prototype.slice.call(message.hashTreeSalt) : message.hashTreeSalt;\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\"))\n object.fecDataExtent = $root.chromeos_update_engine.Extent.toObject(message.fecDataExtent, options);\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\"))\n object.fecExtent = $root.chromeos_update_engine.Extent.toObject(message.fecExtent, options);\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n object.fecRoots = message.fecRoots;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.mergeOperations && message.mergeOperations.length) {\n object.mergeOperations = [];\n for (let j = 0; j < message.mergeOperations.length; ++j)\n object.mergeOperations[j] = $root.chromeos_update_engine.CowMergeOperation.toObject(message.mergeOperations[j], options);\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (typeof message.estimateCowSize === \"number\")\n object.estimateCowSize = options.longs === String ? String(message.estimateCowSize) : message.estimateCowSize;\n else\n object.estimateCowSize = options.longs === String ? $util.Long.prototype.toString.call(message.estimateCowSize) : options.longs === Number ? new $util.LongBits(message.estimateCowSize.low >>> 0, message.estimateCowSize.high >>> 0).toNumber(true) : message.estimateCowSize;\n return object;\n };\n\n /**\n * Converts this PartitionUpdate to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionUpdate.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionUpdate;\n })();\n\n chromeos_update_engine.DynamicPartitionGroup = (function() {\n\n /**\n * Properties of a DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionGroup\n * @property {string} name DynamicPartitionGroup name\n * @property {number|Long|null} [size] DynamicPartitionGroup size\n * @property {Array.|null} [partitionNames] DynamicPartitionGroup partitionNames\n */\n\n /**\n * Constructs a new DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionGroup.\n * @implements IDynamicPartitionGroup\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n */\n function DynamicPartitionGroup(properties) {\n this.partitionNames = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionGroup name.\n * @member {string} name\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.name = \"\";\n\n /**\n * DynamicPartitionGroup size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DynamicPartitionGroup partitionNames.\n * @member {Array.} partitionNames\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.partitionNames = $util.emptyArray;\n\n /**\n * Creates a new DynamicPartitionGroup instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup instance\n */\n DynamicPartitionGroup.create = function create(properties) {\n return new DynamicPartitionGroup(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.size);\n if (message.partitionNames != null && message.partitionNames.length)\n for (let i = 0; i < message.partitionNames.length; ++i)\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.partitionNames[i]);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.name = reader.string();\n break;\n case 2:\n message.size = reader.uint64();\n break;\n case 3:\n if (!(message.partitionNames && message.partitionNames.length))\n message.partitionNames = [];\n message.partitionNames.push(reader.string());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"name\"))\n throw $util.ProtocolError(\"missing required 'name'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionGroup message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionGroup.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.partitionNames != null && message.hasOwnProperty(\"partitionNames\")) {\n if (!Array.isArray(message.partitionNames))\n return \"partitionNames: array expected\";\n for (let i = 0; i < message.partitionNames.length; ++i)\n if (!$util.isString(message.partitionNames[i]))\n return \"partitionNames: string[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a DynamicPartitionGroup message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n */\n DynamicPartitionGroup.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionGroup)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n if (object.name != null)\n message.name = String(object.name);\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.partitionNames) {\n if (!Array.isArray(object.partitionNames))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected\");\n message.partitionNames = [];\n for (let i = 0; i < object.partitionNames.length; ++i)\n message.partitionNames[i] = String(object.partitionNames[i]);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionGroup message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.DynamicPartitionGroup} message DynamicPartitionGroup\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionGroup.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.partitionNames = [];\n if (options.defaults) {\n object.name = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.partitionNames && message.partitionNames.length) {\n object.partitionNames = [];\n for (let j = 0; j < message.partitionNames.length; ++j)\n object.partitionNames[j] = message.partitionNames[j];\n }\n return object;\n };\n\n /**\n * Converts this DynamicPartitionGroup to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionGroup.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionGroup;\n })();\n\n chromeos_update_engine.DynamicPartitionMetadata = (function() {\n\n /**\n * Properties of a DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionMetadata\n * @property {Array.|null} [groups] DynamicPartitionMetadata groups\n * @property {boolean|null} [snapshotEnabled] DynamicPartitionMetadata snapshotEnabled\n * @property {boolean|null} [vabcEnabled] DynamicPartitionMetadata vabcEnabled\n * @property {string|null} [vabcCompressionParam] DynamicPartitionMetadata vabcCompressionParam\n * @property {number|null} [cowVersion] DynamicPartitionMetadata cowVersion\n */\n\n /**\n * Constructs a new DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionMetadata.\n * @implements IDynamicPartitionMetadata\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n */\n function DynamicPartitionMetadata(properties) {\n this.groups = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionMetadata groups.\n * @member {Array.} groups\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.groups = $util.emptyArray;\n\n /**\n * DynamicPartitionMetadata snapshotEnabled.\n * @member {boolean} snapshotEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.snapshotEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcEnabled.\n * @member {boolean} vabcEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcCompressionParam.\n * @member {string} vabcCompressionParam\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcCompressionParam = \"\";\n\n /**\n * DynamicPartitionMetadata cowVersion.\n * @member {number} cowVersion\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.cowVersion = 0;\n\n /**\n * Creates a new DynamicPartitionMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata instance\n */\n DynamicPartitionMetadata.create = function create(properties) {\n return new DynamicPartitionMetadata(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.groups != null && message.groups.length)\n for (let i = 0; i < message.groups.length; ++i)\n $root.chromeos_update_engine.DynamicPartitionGroup.encode(message.groups[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.snapshotEnabled != null && Object.hasOwnProperty.call(message, \"snapshotEnabled\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.snapshotEnabled);\n if (message.vabcEnabled != null && Object.hasOwnProperty.call(message, \"vabcEnabled\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.vabcEnabled);\n if (message.vabcCompressionParam != null && Object.hasOwnProperty.call(message, \"vabcCompressionParam\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.vabcCompressionParam);\n if (message.cowVersion != null && Object.hasOwnProperty.call(message, \"cowVersion\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.cowVersion);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.groups && message.groups.length))\n message.groups = [];\n message.groups.push($root.chromeos_update_engine.DynamicPartitionGroup.decode(reader, reader.uint32()));\n break;\n case 2:\n message.snapshotEnabled = reader.bool();\n break;\n case 3:\n message.vabcEnabled = reader.bool();\n break;\n case 4:\n message.vabcCompressionParam = reader.string();\n break;\n case 5:\n message.cowVersion = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.groups != null && message.hasOwnProperty(\"groups\")) {\n if (!Array.isArray(message.groups))\n return \"groups: array expected\";\n for (let i = 0; i < message.groups.length; ++i) {\n let error = $root.chromeos_update_engine.DynamicPartitionGroup.verify(message.groups[i]);\n if (error)\n return \"groups.\" + error;\n }\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n if (typeof message.snapshotEnabled !== \"boolean\")\n return \"snapshotEnabled: boolean expected\";\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n if (typeof message.vabcEnabled !== \"boolean\")\n return \"vabcEnabled: boolean expected\";\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n if (!$util.isString(message.vabcCompressionParam))\n return \"vabcCompressionParam: string expected\";\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n if (!$util.isInteger(message.cowVersion))\n return \"cowVersion: integer expected\";\n return null;\n };\n\n /**\n * Creates a DynamicPartitionMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n */\n DynamicPartitionMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionMetadata)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n if (object.groups) {\n if (!Array.isArray(object.groups))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: array expected\");\n message.groups = [];\n for (let i = 0; i < object.groups.length; ++i) {\n if (typeof object.groups[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: object expected\");\n message.groups[i] = $root.chromeos_update_engine.DynamicPartitionGroup.fromObject(object.groups[i]);\n }\n }\n if (object.snapshotEnabled != null)\n message.snapshotEnabled = Boolean(object.snapshotEnabled);\n if (object.vabcEnabled != null)\n message.vabcEnabled = Boolean(object.vabcEnabled);\n if (object.vabcCompressionParam != null)\n message.vabcCompressionParam = String(object.vabcCompressionParam);\n if (object.cowVersion != null)\n message.cowVersion = object.cowVersion >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.DynamicPartitionMetadata} message DynamicPartitionMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.groups = [];\n if (options.defaults) {\n object.snapshotEnabled = false;\n object.vabcEnabled = false;\n object.vabcCompressionParam = \"\";\n object.cowVersion = 0;\n }\n if (message.groups && message.groups.length) {\n object.groups = [];\n for (let j = 0; j < message.groups.length; ++j)\n object.groups[j] = $root.chromeos_update_engine.DynamicPartitionGroup.toObject(message.groups[j], options);\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n object.snapshotEnabled = message.snapshotEnabled;\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n object.vabcEnabled = message.vabcEnabled;\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n object.vabcCompressionParam = message.vabcCompressionParam;\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n object.cowVersion = message.cowVersion;\n return object;\n };\n\n /**\n * Converts this DynamicPartitionMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionMetadata;\n })();\n\n chromeos_update_engine.ApexInfo = (function() {\n\n /**\n * Properties of an ApexInfo.\n * @memberof chromeos_update_engine\n * @interface IApexInfo\n * @property {string|null} [packageName] ApexInfo packageName\n * @property {number|Long|null} [version] ApexInfo version\n * @property {boolean|null} [isCompressed] ApexInfo isCompressed\n * @property {number|Long|null} [decompressedSize] ApexInfo decompressedSize\n */\n\n /**\n * Constructs a new ApexInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexInfo.\n * @implements IApexInfo\n * @constructor\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n */\n function ApexInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexInfo packageName.\n * @member {string} packageName\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.packageName = \"\";\n\n /**\n * ApexInfo version.\n * @member {number|Long} version\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * ApexInfo isCompressed.\n * @member {boolean} isCompressed\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.isCompressed = false;\n\n /**\n * ApexInfo decompressedSize.\n * @member {number|Long} decompressedSize\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.decompressedSize = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * Creates a new ApexInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo instance\n */\n ApexInfo.create = function create(properties) {\n return new ApexInfo(properties);\n };\n\n /**\n * Encodes the specified ApexInfo message. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.packageName != null && Object.hasOwnProperty.call(message, \"packageName\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.packageName);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.version);\n if (message.isCompressed != null && Object.hasOwnProperty.call(message, \"isCompressed\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isCompressed);\n if (message.decompressedSize != null && Object.hasOwnProperty.call(message, \"decompressedSize\"))\n writer.uint32(/* id 4, wireType 0 =*/32).int64(message.decompressedSize);\n return writer;\n };\n\n /**\n * Encodes the specified ApexInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.packageName = reader.string();\n break;\n case 2:\n message.version = reader.int64();\n break;\n case 3:\n message.isCompressed = reader.bool();\n break;\n case 4:\n message.decompressedSize = reader.int64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n if (!$util.isString(message.packageName))\n return \"packageName: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high)))\n return \"version: integer|Long expected\";\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n if (typeof message.isCompressed !== \"boolean\")\n return \"isCompressed: boolean expected\";\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (!$util.isInteger(message.decompressedSize) && !(message.decompressedSize && $util.isInteger(message.decompressedSize.low) && $util.isInteger(message.decompressedSize.high)))\n return \"decompressedSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an ApexInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n */\n ApexInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexInfo)\n return object;\n let message = new $root.chromeos_update_engine.ApexInfo();\n if (object.packageName != null)\n message.packageName = String(object.packageName);\n if (object.version != null)\n if ($util.Long)\n (message.version = $util.Long.fromValue(object.version)).unsigned = false;\n else if (typeof object.version === \"string\")\n message.version = parseInt(object.version, 10);\n else if (typeof object.version === \"number\")\n message.version = object.version;\n else if (typeof object.version === \"object\")\n message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber();\n if (object.isCompressed != null)\n message.isCompressed = Boolean(object.isCompressed);\n if (object.decompressedSize != null)\n if ($util.Long)\n (message.decompressedSize = $util.Long.fromValue(object.decompressedSize)).unsigned = false;\n else if (typeof object.decompressedSize === \"string\")\n message.decompressedSize = parseInt(object.decompressedSize, 10);\n else if (typeof object.decompressedSize === \"number\")\n message.decompressedSize = object.decompressedSize;\n else if (typeof object.decompressedSize === \"object\")\n message.decompressedSize = new $util.LongBits(object.decompressedSize.low >>> 0, object.decompressedSize.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from an ApexInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.ApexInfo} message ApexInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.packageName = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.version = options.longs === String ? \"0\" : 0;\n object.isCompressed = false;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.decompressedSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.decompressedSize = options.longs === String ? \"0\" : 0;\n }\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n object.packageName = message.packageName;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (typeof message.version === \"number\")\n object.version = options.longs === String ? String(message.version) : message.version;\n else\n object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version;\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n object.isCompressed = message.isCompressed;\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (typeof message.decompressedSize === \"number\")\n object.decompressedSize = options.longs === String ? String(message.decompressedSize) : message.decompressedSize;\n else\n object.decompressedSize = options.longs === String ? $util.Long.prototype.toString.call(message.decompressedSize) : options.longs === Number ? new $util.LongBits(message.decompressedSize.low >>> 0, message.decompressedSize.high >>> 0).toNumber() : message.decompressedSize;\n return object;\n };\n\n /**\n * Converts this ApexInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ApexInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexInfo;\n })();\n\n chromeos_update_engine.ApexMetadata = (function() {\n\n /**\n * Properties of an ApexMetadata.\n * @memberof chromeos_update_engine\n * @interface IApexMetadata\n * @property {Array.|null} [apexInfo] ApexMetadata apexInfo\n */\n\n /**\n * Constructs a new ApexMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexMetadata.\n * @implements IApexMetadata\n * @constructor\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n */\n function ApexMetadata(properties) {\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexMetadata apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n */\n ApexMetadata.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new ApexMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata instance\n */\n ApexMetadata.create = function create(properties) {\n return new ApexMetadata(properties);\n };\n\n /**\n * Encodes the specified ApexMetadata message. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified ApexMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates an ApexMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n */\n ApexMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexMetadata)\n return object;\n let message = new $root.chromeos_update_engine.ApexMetadata();\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from an ApexMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.ApexMetadata} message ApexMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.apexInfo = [];\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this ApexMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n ApexMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexMetadata;\n })();\n\n chromeos_update_engine.DeltaArchiveManifest = (function() {\n\n /**\n * Properties of a DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @interface IDeltaArchiveManifest\n * @property {number|null} [blockSize] DeltaArchiveManifest blockSize\n * @property {number|Long|null} [signaturesOffset] DeltaArchiveManifest signaturesOffset\n * @property {number|Long|null} [signaturesSize] DeltaArchiveManifest signaturesSize\n * @property {number|null} [minorVersion] DeltaArchiveManifest minorVersion\n * @property {Array.|null} [partitions] DeltaArchiveManifest partitions\n * @property {number|Long|null} [maxTimestamp] DeltaArchiveManifest maxTimestamp\n * @property {chromeos_update_engine.IDynamicPartitionMetadata|null} [dynamicPartitionMetadata] DeltaArchiveManifest dynamicPartitionMetadata\n * @property {boolean|null} [partialUpdate] DeltaArchiveManifest partialUpdate\n * @property {Array.|null} [apexInfo] DeltaArchiveManifest apexInfo\n * @property {string|null} [securityPatchLevel] DeltaArchiveManifest securityPatchLevel\n */\n\n /**\n * Constructs a new DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DeltaArchiveManifest.\n * @implements IDeltaArchiveManifest\n * @constructor\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n */\n function DeltaArchiveManifest(properties) {\n this.partitions = [];\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DeltaArchiveManifest blockSize.\n * @member {number} blockSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.blockSize = 4096;\n\n /**\n * DeltaArchiveManifest signaturesOffset.\n * @member {number|Long} signaturesOffset\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest signaturesSize.\n * @member {number|Long} signaturesSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest minorVersion.\n * @member {number} minorVersion\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.minorVersion = 0;\n\n /**\n * DeltaArchiveManifest partitions.\n * @member {Array.} partitions\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partitions = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest maxTimestamp.\n * @member {number|Long} maxTimestamp\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.maxTimestamp = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * DeltaArchiveManifest dynamicPartitionMetadata.\n * @member {chromeos_update_engine.IDynamicPartitionMetadata|null|undefined} dynamicPartitionMetadata\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.dynamicPartitionMetadata = null;\n\n /**\n * DeltaArchiveManifest partialUpdate.\n * @member {boolean} partialUpdate\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partialUpdate = false;\n\n /**\n * DeltaArchiveManifest apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.apexInfo = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest securityPatchLevel.\n * @member {string} securityPatchLevel\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.securityPatchLevel = \"\";\n\n /**\n * Creates a new DeltaArchiveManifest instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest instance\n */\n DeltaArchiveManifest.create = function create(properties) {\n return new DeltaArchiveManifest(properties);\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.blockSize != null && Object.hasOwnProperty.call(message, \"blockSize\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.blockSize);\n if (message.signaturesOffset != null && Object.hasOwnProperty.call(message, \"signaturesOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.signaturesOffset);\n if (message.signaturesSize != null && Object.hasOwnProperty.call(message, \"signaturesSize\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.signaturesSize);\n if (message.minorVersion != null && Object.hasOwnProperty.call(message, \"minorVersion\"))\n writer.uint32(/* id 12, wireType 0 =*/96).uint32(message.minorVersion);\n if (message.partitions != null && message.partitions.length)\n for (let i = 0; i < message.partitions.length; ++i)\n $root.chromeos_update_engine.PartitionUpdate.encode(message.partitions[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();\n if (message.maxTimestamp != null && Object.hasOwnProperty.call(message, \"maxTimestamp\"))\n writer.uint32(/* id 14, wireType 0 =*/112).int64(message.maxTimestamp);\n if (message.dynamicPartitionMetadata != null && Object.hasOwnProperty.call(message, \"dynamicPartitionMetadata\"))\n $root.chromeos_update_engine.DynamicPartitionMetadata.encode(message.dynamicPartitionMetadata, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.partialUpdate != null && Object.hasOwnProperty.call(message, \"partialUpdate\"))\n writer.uint32(/* id 16, wireType 0 =*/128).bool(message.partialUpdate);\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();\n if (message.securityPatchLevel != null && Object.hasOwnProperty.call(message, \"securityPatchLevel\"))\n writer.uint32(/* id 18, wireType 2 =*/146).string(message.securityPatchLevel);\n return writer;\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message, length delimited. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 3:\n message.blockSize = reader.uint32();\n break;\n case 4:\n message.signaturesOffset = reader.uint64();\n break;\n case 5:\n message.signaturesSize = reader.uint64();\n break;\n case 12:\n message.minorVersion = reader.uint32();\n break;\n case 13:\n if (!(message.partitions && message.partitions.length))\n message.partitions = [];\n message.partitions.push($root.chromeos_update_engine.PartitionUpdate.decode(reader, reader.uint32()));\n break;\n case 14:\n message.maxTimestamp = reader.int64();\n break;\n case 15:\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.decode(reader, reader.uint32());\n break;\n case 16:\n message.partialUpdate = reader.bool();\n break;\n case 17:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n case 18:\n message.securityPatchLevel = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DeltaArchiveManifest message.\n * @function verify\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DeltaArchiveManifest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n if (!$util.isInteger(message.blockSize))\n return \"blockSize: integer expected\";\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (!$util.isInteger(message.signaturesOffset) && !(message.signaturesOffset && $util.isInteger(message.signaturesOffset.low) && $util.isInteger(message.signaturesOffset.high)))\n return \"signaturesOffset: integer|Long expected\";\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (!$util.isInteger(message.signaturesSize) && !(message.signaturesSize && $util.isInteger(message.signaturesSize.low) && $util.isInteger(message.signaturesSize.high)))\n return \"signaturesSize: integer|Long expected\";\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n if (!$util.isInteger(message.minorVersion))\n return \"minorVersion: integer expected\";\n if (message.partitions != null && message.hasOwnProperty(\"partitions\")) {\n if (!Array.isArray(message.partitions))\n return \"partitions: array expected\";\n for (let i = 0; i < message.partitions.length; ++i) {\n let error = $root.chromeos_update_engine.PartitionUpdate.verify(message.partitions[i]);\n if (error)\n return \"partitions.\" + error;\n }\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (!$util.isInteger(message.maxTimestamp) && !(message.maxTimestamp && $util.isInteger(message.maxTimestamp.low) && $util.isInteger(message.maxTimestamp.high)))\n return \"maxTimestamp: integer|Long expected\";\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\")) {\n let error = $root.chromeos_update_engine.DynamicPartitionMetadata.verify(message.dynamicPartitionMetadata);\n if (error)\n return \"dynamicPartitionMetadata.\" + error;\n }\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n if (typeof message.partialUpdate !== \"boolean\")\n return \"partialUpdate: boolean expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n if (!$util.isString(message.securityPatchLevel))\n return \"securityPatchLevel: string expected\";\n return null;\n };\n\n /**\n * Creates a DeltaArchiveManifest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n */\n DeltaArchiveManifest.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DeltaArchiveManifest)\n return object;\n let message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n if (object.blockSize != null)\n message.blockSize = object.blockSize >>> 0;\n if (object.signaturesOffset != null)\n if ($util.Long)\n (message.signaturesOffset = $util.Long.fromValue(object.signaturesOffset)).unsigned = true;\n else if (typeof object.signaturesOffset === \"string\")\n message.signaturesOffset = parseInt(object.signaturesOffset, 10);\n else if (typeof object.signaturesOffset === \"number\")\n message.signaturesOffset = object.signaturesOffset;\n else if (typeof object.signaturesOffset === \"object\")\n message.signaturesOffset = new $util.LongBits(object.signaturesOffset.low >>> 0, object.signaturesOffset.high >>> 0).toNumber(true);\n if (object.signaturesSize != null)\n if ($util.Long)\n (message.signaturesSize = $util.Long.fromValue(object.signaturesSize)).unsigned = true;\n else if (typeof object.signaturesSize === \"string\")\n message.signaturesSize = parseInt(object.signaturesSize, 10);\n else if (typeof object.signaturesSize === \"number\")\n message.signaturesSize = object.signaturesSize;\n else if (typeof object.signaturesSize === \"object\")\n message.signaturesSize = new $util.LongBits(object.signaturesSize.low >>> 0, object.signaturesSize.high >>> 0).toNumber(true);\n if (object.minorVersion != null)\n message.minorVersion = object.minorVersion >>> 0;\n if (object.partitions) {\n if (!Array.isArray(object.partitions))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected\");\n message.partitions = [];\n for (let i = 0; i < object.partitions.length; ++i) {\n if (typeof object.partitions[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: object expected\");\n message.partitions[i] = $root.chromeos_update_engine.PartitionUpdate.fromObject(object.partitions[i]);\n }\n }\n if (object.maxTimestamp != null)\n if ($util.Long)\n (message.maxTimestamp = $util.Long.fromValue(object.maxTimestamp)).unsigned = false;\n else if (typeof object.maxTimestamp === \"string\")\n message.maxTimestamp = parseInt(object.maxTimestamp, 10);\n else if (typeof object.maxTimestamp === \"number\")\n message.maxTimestamp = object.maxTimestamp;\n else if (typeof object.maxTimestamp === \"object\")\n message.maxTimestamp = new $util.LongBits(object.maxTimestamp.low >>> 0, object.maxTimestamp.high >>> 0).toNumber();\n if (object.dynamicPartitionMetadata != null) {\n if (typeof object.dynamicPartitionMetadata !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected\");\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.fromObject(object.dynamicPartitionMetadata);\n }\n if (object.partialUpdate != null)\n message.partialUpdate = Boolean(object.partialUpdate);\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n if (object.securityPatchLevel != null)\n message.securityPatchLevel = String(object.securityPatchLevel);\n return message;\n };\n\n /**\n * Creates a plain object from a DeltaArchiveManifest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.DeltaArchiveManifest} message DeltaArchiveManifest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DeltaArchiveManifest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.partitions = [];\n object.apexInfo = [];\n }\n if (options.defaults) {\n object.blockSize = 4096;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesSize = options.longs === String ? \"0\" : 0;\n object.minorVersion = 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.maxTimestamp = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.maxTimestamp = options.longs === String ? \"0\" : 0;\n object.dynamicPartitionMetadata = null;\n object.partialUpdate = false;\n object.securityPatchLevel = \"\";\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n object.blockSize = message.blockSize;\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (typeof message.signaturesOffset === \"number\")\n object.signaturesOffset = options.longs === String ? String(message.signaturesOffset) : message.signaturesOffset;\n else\n object.signaturesOffset = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesOffset) : options.longs === Number ? new $util.LongBits(message.signaturesOffset.low >>> 0, message.signaturesOffset.high >>> 0).toNumber(true) : message.signaturesOffset;\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (typeof message.signaturesSize === \"number\")\n object.signaturesSize = options.longs === String ? String(message.signaturesSize) : message.signaturesSize;\n else\n object.signaturesSize = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesSize) : options.longs === Number ? new $util.LongBits(message.signaturesSize.low >>> 0, message.signaturesSize.high >>> 0).toNumber(true) : message.signaturesSize;\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n object.minorVersion = message.minorVersion;\n if (message.partitions && message.partitions.length) {\n object.partitions = [];\n for (let j = 0; j < message.partitions.length; ++j)\n object.partitions[j] = $root.chromeos_update_engine.PartitionUpdate.toObject(message.partitions[j], options);\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (typeof message.maxTimestamp === \"number\")\n object.maxTimestamp = options.longs === String ? String(message.maxTimestamp) : message.maxTimestamp;\n else\n object.maxTimestamp = options.longs === String ? $util.Long.prototype.toString.call(message.maxTimestamp) : options.longs === Number ? new $util.LongBits(message.maxTimestamp.low >>> 0, message.maxTimestamp.high >>> 0).toNumber() : message.maxTimestamp;\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\"))\n object.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.toObject(message.dynamicPartitionMetadata, options);\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n object.partialUpdate = message.partialUpdate;\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n object.securityPatchLevel = message.securityPatchLevel;\n return object;\n };\n\n /**\n * Converts this DeltaArchiveManifest to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n * @returns {Object.} JSON object\n */\n DeltaArchiveManifest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DeltaArchiveManifest;\n })();\n\n return chromeos_update_engine;\n})();\n\nexport { $root as default };\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TextWriter, ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { chromeos_update_engine } from './update_metadata_pb.js'\n\n/**\n * Parse the non-A/B OTA package and return it as a DeltaArchiveManifest\n * @param {ZipReader} packedFile\n */\nexport class PayloadNonAB extends chromeos_update_engine.DeltaArchiveManifest {\n nonAB: boolean = true\n Blocksize: number = 4096\n packedFile: ZipReader\n constructor(packedFile: ZipReader) {\n super()\n this.packedFile = packedFile\n }\n\n async init() {\n this.Blocksize = 4096\n this.partialUpdate = false\n this.dynamicPartitionMetadata = new chromeos_update_engine.DynamicPartitionMetadata(\n { snapshotEnabled: false, vabcEnabled: false }\n )\n this.partitions = []\n\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.transfer.list)/g\n const /** Array */ entries = await this.packedFile.getEntries()\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n const match = entry.filename.match(regexName)![0]\n let newPartition: any = new chromeos_update_engine.PartitionUpdate({\n partitionName: match\n })\n newPartition.rawText = await entry.getData!(new TextWriter())\n await this.parseTransferList(newPartition)\n this.partitions.push(newPartition)\n }\n }\n }\n\n async parseTransferList(partition: chromeos_update_engine.PartitionUpdate | any) {\n let lines = (partition as any).rawText.split('\\n')\n // First four line in header: version, total blocks,\n // number of stashed entries, maximum used memory for stash\n if (lines.length < 4) {\n throw 'At least 4 lines in header should be provided.'\n }\n partition.version = lines[0]\n partition.totalBlocks = parseInt(lines[1])\n partition.entryStashed = parseInt(lines[2])\n partition.maxStashed = parseInt(lines[3])\n partition.newPartitionInfo = new chromeos_update_engine.PartitionInfo()\n partition.newPartitionInfo.hash = new Uint8Array()\n partition.newPartitionInfo.size = 'unknown'\n /**\n * The main body have 8 different ops:\n * zero [rangeset] : fill zeros\n * new [rangeset] : fill with new data from \n * erase [rangeset] : mark given blocks as empty\n * move <...>\n * bsdiff <...>\n * imgdiff <...> :\n * Read the source blocks and apply (not for move op) to the target blocks\n * stash : load the given source range to memory\n * free : free the given \n * format:\n * [rangeset]: <# of pairs>, , , ...\n * : a hex number with length of 40\n * <...>: We expect to parse the remainder of the parameter tokens as one of:\n * (loads data from source image only)\n * - <[stash_id:stash_range] ...> (loads data from stashes only)\n * <[stash_id:stash_range] ...>\n * (loads data from both source image and stashes)\n */\n partition.operations = new Array()\n let newDataSize = await this.sizeNewData(partition.partitionName)\n for (const line of lines.slice(4)) {\n let op = new chromeos_update_engine.InstallOperation()\n let elements = line.split(' ')\n op.type = elements[0]\n switch ((op.type as unknown) as string) {\n case 'zero':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'new':\n // unlike an A/B OTA, the payload only exists in the payload.bin,\n // in an non-A/B OTA, the payload exists in both .new.data and .patch.data.\n // The new ops do not have any information about data length.\n // what we do here is: read in the size of .new.data, assume the first new\n // op have the data length of the size of .new.data.\n op.dataLength = newDataSize\n newDataSize = 0\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'erase':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'move':\n op.dstExtents = parseRange([], elements[2])\n break\n case 'bsdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'imgdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'stash':\n break\n case 'free':\n break\n }\n partition.operations.push(op)\n }\n }\n\n /**\n * Return the size of .new.data.*\n * @param {String} partitionName\n * @return {Number}\n */\n async sizeNewData(partitionName: string) {\n const /** Array */ entries = await this.packedFile.getEntries()\n const /** RegExp */ regexName = new RegExp(partitionName + '.new.dat.*')\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n return entry.uncompressedSize\n }\n }\n }\n}\n\n/**\n * Parse the range string and return it as an array of extents\n * @param {extents} Array\n * @param {String} rangeset\n * @return Array\n */\nfunction parseRange(extents: Object[], rangeset: string) {\n const regexRange = new RegExp('[d,]+')\n if (rangeset.match(regexRange)) {\n let elements = rangeset.split(',')\n for (let i = 1; i < elements.length; i = i + 2) {\n let extent = new Object({\n startBlock: parseInt(elements[i]),\n numBlocks: parseInt(elements[i + 1]) - parseInt(elements[i])\n })\n extents.push(extent)\n }\n }\n return extents\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class paypload is used to read in and\n * parse the payload.bin file from a OTA.zip file.\n * Class OpType creates a Map that can resolve the\n * operation type.\n * @package zip.js\n * @package protobufjs\n */\n\nimport {\n BlobReader,\n TextWriter,\n Writer,\n ZipReader,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\n// import '@zip.js/zip.js'\nimport { chromeos_update_engine as update_metadata_pb } from './update_metadata_pb'\nimport { PayloadNonAB } from './payload_nonab'\nimport { ZipFile } from './trim_zip'\n// import { Zip_js } from 'zip.js'\n\nconst /** String */ _MAGIC = 'CrAU'\nconst /** Number */ _VERSION_SIZE = 8\nconst /** Number */ _MANIFEST_LEN_SIZE = 8\nconst /** Number */ _METADATA_SIGNATURE_LEN_SIZE = 4\n\nconst /** Number */ _PAYLOAD_HEADER_SIZE =\n _MAGIC.length +\n _VERSION_SIZE +\n _MANIFEST_LEN_SIZE +\n _METADATA_SIGNATURE_LEN_SIZE\n\nconst /** Number */ _BRILLO_MAJOR_PAYLOAD_VERSION = 2\nexport const /** Array */ MetadataFormat = [\n {\n prefix: 'pre-build',\n key: 'preBuild',\n name: 'Pre-build'\n },\n {\n prefix: 'pre-build-incremental',\n key: 'preBuildVersion',\n name: 'Pre-build version'\n },\n {\n prefix: 'post-build',\n key: 'postBuild',\n name: 'Post-build'\n },\n {\n prefix: 'post-build-incremental',\n key: 'postBuildVersion',\n name: 'Post-build version'\n },\n {\n prefix: 'post-security-patch-level',\n key: 'postSecurityPatchLevel',\n name: 'Post-build SPL'\n },\n {\n prefix: 'post-timestamp',\n key: 'postTimestamp',\n name: 'Post-build timestamp'\n },\n ]\n\nclass StopIteration extends Error {}\n\nclass AbPayloadHeader {\n constructor(\n public magic: string,\n public version: number,\n public manifest_len: number,\n public metadata_signature_len: number\n ) {}\n}\n\n/**\n * Read in an integer from binary bufferArray.\n * @param {Int} size the size of a integer being read in\n * @return {Int} an integer.\n */\nasync function readIntAt(buffer: Blob, position: number, size: number) {\n let /** DataView */ view = new DataView(\n await buffer!.slice(position, position + size).arrayBuffer()\n )\n if (typeof view.getBigUint64 !== 'function') {\n view.getBigUint64 = function(offset) {\n const a = BigInt(view.getUint32(offset))\n const b = BigInt(view.getUint32(offset + 4))\n const bigNumber = a * 4294967296n + b\n return bigNumber\n }\n }\n switch (size) {\n case 2:\n return view.getUint16(0)\n case 4:\n return view.getUint32(0)\n case 8:\n return Number(view.getBigUint64(0))\n default:\n throw 'Cannot read this integer with size ' + size\n }\n}\n\nclass OTAPayloadBlobWriter extends Writer {\n offset: number\n contentType: string\n blob: Blob\n prefixLength: number\n\n header?: AbPayloadHeader\n\n async readHeader(blob: Blob) {\n let cursor = 0\n const readInt = (size: number) => {\n const ret = readIntAt(blob, cursor, size)\n cursor += size\n return ret\n }\n let buffer = await blob.slice(0, _PAYLOAD_HEADER_SIZE).arrayBuffer()\n let /** TextDecoder */ decoder = new TextDecoder()\n let magicBytes = buffer.slice(0, _MAGIC.length)\n const magic = decoder.decode(magicBytes)\n if (magic != _MAGIC) {\n throw new Error(\n `MAGIC is not correct, expected: ${_MAGIC} actual: ${magic}`\n )\n }\n cursor += _MAGIC.length\n const header_version = await readInt(_VERSION_SIZE)\n const manifest_len = await readInt(_MANIFEST_LEN_SIZE)\n if (header_version != _BRILLO_MAJOR_PAYLOAD_VERSION) {\n throw new Error(`Unexpected major version number: ${header_version}`)\n }\n const metadata_signature_len = await readInt(_METADATA_SIGNATURE_LEN_SIZE)\n this.header = new AbPayloadHeader(\n magic,\n header_version,\n manifest_len,\n metadata_signature_len\n )\n }\n /**\n * A zip.Writer that is tailored for OTA payload.bin read-in.\n * Instead of reading in all the contents in payload.bin, this writer will\n * throw an 'StopIteration' error when the header is read in.\n * The header will be stored into the .\n * @param {Payload} payload\n * @param {String} contentType\n */\n constructor(contentType = '') {\n super()\n this.offset = 0\n this.contentType = contentType\n this.blob = new Blob([], { type: contentType })\n this.prefixLength = 0\n }\n\n async writeUint8Array(array: Uint8Array) {\n super.writeUint8Array(array)\n this.blob = new Blob([this.blob, array.buffer], { type: this.contentType })\n this.offset = this.blob.size\n // Once the prefixLength is non-zero, the address of manifest and signature\n // become known and can be read in. Otherwise the header needs to be read\n // in first to determine the prefixLength.\n if (this.offset >= _PAYLOAD_HEADER_SIZE && this.prefixLength == 0) {\n console.log('Parsing header!')\n await this.readHeader(this.blob)\n this.prefixLength =\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n console.log(`Computed metadata length: ${this.prefixLength}`)\n }\n if (this.prefixLength > 0) {\n console.log(`${this.offset}/${this.prefixLength}`)\n if (this.offset >= this.prefixLength) {\n // The prefix has everything we need (header, manifest, signature). Once\n // the offset is beyond the prefix, no need to move on.\n this.blob = this.blob.slice(0, this.prefixLength)\n throw new StopIteration()\n }\n }\n }\n\n getData() {\n return this.blob\n }\n}\n\nexport class Payload {\n zipreader: ZipReader\n buffer: Blob | undefined\n private metadata: any\n manifest: update_metadata_pb.DeltaArchiveManifest | undefined\n metadata_signature!: update_metadata_pb.Signatures\n\n header?: AbPayloadHeader\n\n /**\n * This class parses the metadata of a OTA package.\n * @param {File} file A OTA.zip file read from user's machine.\n */\n constructor(file: File | URL | ZipFile) {\n if (file instanceof File) {\n this.zipreader = new ZipReader(new BlobReader(file))\n } else if (file instanceof URL) {\n this.zipreader = new ZipReader(new HttpReader(file.href))\n } else {\n this.zipreader = file.reader\n }\n }\n\n getMetadataLength(): number {\n return (\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n )\n }\n\n /**\n * Unzip the OTA package, get payload.bin and metadata\n */\n async unzip() {\n let entries = await this.zipreader.getEntries()\n for (let entry of entries) {\n if (entry.filename == 'payload.bin') {\n let writer = new OTAPayloadBlobWriter('')\n try {\n await entry.getData!(writer)\n } catch (e) {\n if (e instanceof StopIteration) {\n // Exception used as a hack to stop reading from zip. NO need to do anything\n // Ideally zip.js would provide an API to partialll read a zip\n // entry, but they don't. So this is what we get\n } else {\n console.log(e)\n throw e\n }\n }\n this.buffer = writer.getData()\n await this.readManifest(this.buffer, writer.header!)\n console.log('AB OTA manifest parsed')\n } else if (entry.filename == 'META-INF/com/android/metadata') {\n this.metadata = await entry.getData!(new TextWriter())\n console.log('OTA Package metadata parsed')\n }\n }\n if (!this.manifest) {\n console.log('Failed to parse AB OTA package, falling back to non-AB')\n try {\n // The temporary variable manifest has to be used here, to prevent the html page\n // being rendered before everything is read in properly\n let manifest = new PayloadNonAB(this.zipreader)\n await manifest.init()\n manifest.nonAB = true\n this.manifest = manifest\n } catch (error) {\n alert('Please select a legit OTA package')\n return\n }\n }\n }\n\n /**\n * Read the header of payload.bin, including the magic, header_version,\n * manifest_len, metadata_signature_len.\n */\n /**\n * Read in the manifest in an OTA.zip file.\n * The structure of the manifest can be found in:\n * aosp/system/update_engine/update_metadata.proto\n */\n async readManifest(buffer: Blob, header: AbPayloadHeader) {\n this.header = header\n let cursor = _PAYLOAD_HEADER_SIZE\n let manifestBlob = await buffer\n .slice(cursor, cursor + header.manifest_len)\n .arrayBuffer()\n cursor += header.manifest_len\n this.manifest = update_metadata_pb.DeltaArchiveManifest.decode(\n new Uint8Array(manifestBlob)\n )\n let signatureBlob = await buffer\n .slice(cursor, cursor + header.metadata_signature_len)\n .arrayBuffer()\n cursor += header.metadata_signature_len\n this.metadata_signature = update_metadata_pb.Signatures.decode(\n new Uint8Array(signatureBlob)\n );\n (this.manifest! as any).nonAB = false\n }\n\n parseMetadata() {\n for (let formatter of MetadataFormat) {\n let regex = new RegExp(formatter.prefix + '.+')\n if (this.metadata.match(regex)) {\n ;(this as any)[formatter.key] = trimEntry(\n this.metadata.match(regex)[0],\n formatter.prefix\n )\n } else {\n ;(this as any)[formatter.key] = ''\n }\n }\n }\n\n async init() {\n await this.unzip()\n this.parseMetadata()\n }\n}\n\nexport class DefaultMap extends Map {\n /** Reload the original get method. Return the original key value if\n * the key does not exist.\n * @param {Any} key\n */\n getWithDefault(key: any) {\n if (!this.has(key)) return key\n return this.get(key)\n }\n}\n\nexport class OpType {\n mapType: DefaultMap\n /**\n * OpType.mapType create a map that could resolve the operation\n * types. The operation types are encoded as numbers in\n * update_metadata.proto and must be decoded before any usage.\n */\n constructor() {\n let types = update_metadata_pb.InstallOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport class MergeOpType {\n mapType: DefaultMap\n /**\n * MergeOpType create a map that could resolve the COW merge operation\n * types. This is very similar to OpType class except that one is for\n * installation operations.\n */\n constructor() {\n let /** Array<{String: Number}>*/ types =\n update_metadata_pb.CowMergeOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport function octToHex(bufferArray: Uint8Array, space = true, maxLine = 16) {\n let hex_table = ''\n for (let i = 0; i < bufferArray.length; i++) {\n const hex /** String **/ = bufferArray[i].toString(16).toUpperCase()\n if (hex.length === 2) {\n hex_table += hex + (space ? ' ' : '')\n } else {\n hex_table += '0' + hex + (space ? ' ' : '')\n }\n if ((i + 1) % maxLine == 0 && space) {\n hex_table += '\\n'\n }\n }\n return hex_table\n}\n\n/**\n * Trim the prefix in an entry. This is required because the lookbehind\n * regular expression is not supported in safari yet.\n * @param {String} entry\n * @param {String} prefix\n * @return String\n */\nfunction trimEntry(entry: string, prefix: string) {\n return entry.slice(prefix.length + 1, entry.length)\n}\n","\n\n\n\n\n\n\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EChartsOption } from 'echarts'\n\nexport class EchartsData {\n statisticData: Map\n trimmedData: Map\n title: string\n unit: string\n maximumEntries: number\n /**\n * Given a set of [key, value] pairs and title, create an object for further\n * usage in Vue-Echarts.\n * @param {Map} statisticData\n * @param {String} title\n * @param {String} unit\n * @param {Number} maximumEntries\n */\n constructor(\n statisticData: Map,\n title: string,\n unit: string,\n maximumEntries = 15\n ) {\n this.statisticData = statisticData\n this.trimmedData = trimMap(statisticData, maximumEntries)\n this.title = title\n this.unit = unit\n this.maximumEntries = maximumEntries\n }\n\n /**\n * Convert the raw data into a string.\n * @return {String} A list of [key, value].\n */\n listData() {\n let /** String */ table = ''\n for (let [key, value] of this.statisticData) {\n table += key + ' : ' + value.toString() + ' Blocks' + '\\n'\n }\n return table\n }\n\n /**\n * Generate necessary parameters (option) for vue-echarts.\n * Format of the parameters can be found here:\n * https://echarts.apache.org/en/option.html\n * @param {String} unit\n * @return {Object} an ECharts option object.\n */\n getEchartsOption(): EChartsOption {\n let /** Object */ option: EChartsOption = {}\n option.title = {\n text: this.title,\n left: 'center'\n }\n option.tooltip = {\n trigger: 'item',\n formatter: '{a}
{b} : {c} ' + this.unit + ' ({d}%)'\n }\n option.legend = {\n orient: 'horizontal',\n left: 'top',\n top: '10%',\n data: Array.from(this.trimmedData.keys())\n }\n option.series = [\n {\n name: this.title,\n type: 'pie',\n radius: '55%',\n center: ['50%', '60%'],\n data: Array.from(this.trimmedData).map((pair: any) => {\n return { value: pair[1], name: pair[0] }\n }),\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)'\n }\n }\n }\n ]\n return option\n }\n}\n\n/**\n * When there are too many entries in the map, the pie chart can be very\n * crowded. This function will return the entries that have high values.\n * Specifically, the top will be stored and the others\n * will be added into an entry called 'other'.\n * @param {Map} map\n * @param {Number} maximumEntries\n * @return {Map}\n */\nfunction trimMap(map: Map, maximumEntries: number) {\n if (map.size <= maximumEntries) return map\n let /** Map */ new_map = new Map()\n for (let i = 0; i < maximumEntries; i++) {\n let /** Number */ curr = 0\n let /** String */ currKey = ''\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n if (value > curr) {\n curr = value\n currKey = key\n }\n }\n }\n new_map.set(currKey, curr)\n }\n let /** Number */ restTotal = 0\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n restTotal += value\n }\n }\n new_map.set('other', restTotal)\n return new_map\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class MapParser will take in a Android build and construct\n * several file name maps (physical address: file name) according to it.\n * The map of each partitions is added by calling MapParser.add(partitionName).\n * You can query the file name being operated by calling\n * MapParser.query(address, datalength).\n */\n\nimport {\n ZipReader,\n BlobReader,\n TextWriter,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\nimport { chromeos_update_engine } from './update_metadata_pb'\n\nexport class MapParser {\n build: ZipReader\n mapFiles: Map\n maps: Map\n /**\n * This class will take in a .zip Android build and construct a file type map\n * @param {File} targetFile\n */\n constructor(targetFile: File | URL) {\n if (targetFile instanceof File) {\n this.build = new ZipReader(new BlobReader(targetFile))\n } else {\n this.build = new ZipReader(new HttpReader(targetFile.href))\n }\n this.mapFiles = new Map()\n this.maps = new Map()\n }\n\n /**\n * Find the .map entries in the .zip build file. Store them as a map with\n * pairs of (partition name: zip.js entry).\n */\n async init() {\n let /** Array */ entries = await this.build.getEntries()\n const /** RegExp*/ regexPath = /IMAGES\\/[a-z_]*\\.map/g\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.map)/g\n entries.forEach(entry => {\n if (entry.filename.match(regexPath)) {\n this.mapFiles.set(entry.filename.match(regexName)![0], entry)\n }\n })\n }\n\n /**\n * According to the .map in the build, build a map for later query.\n * @param {String} partitionName\n * @param {Number} totalLength\n */\n async add(partitionName: string, totalLength: number) {\n let /** Array */ map = []\n const /** RegExp */ regexNumber = /\\d+/g\n const /** Reg */ regexRange = /\\d+\\-\\d+/g\n for (let i = 0; i < totalLength; i++) map[i] = `<${partitionName}>`\n if (this.mapFiles.get(partitionName)) {\n let /** String */ mapText = await this.mapFiles\n .get(partitionName)\n .getData(new TextWriter())\n let /** Array */ fileEntries = mapText.split('\\n')\n // Each line of the .map file in Android build starts with the filename\n // Followed by the block address, either a number or a range, for example:\n // //system/apex/com.android.adbd.apex 54-66 66 66-2663\n for (let entry of fileEntries) {\n let /** Array */ elements = entry.split(' ')\n for (let j = 1; j < elements.length; j++) {\n let /** Number */ left = 0\n let /** Number */ right = 0\n if (elements[j].match(regexRange)) {\n left = parseInt(elements[j].match(/\\d+/g)[0])\n right = parseInt(elements[j].match(/\\d+/g)[1])\n } else {\n left = parseInt(elements[j].match(regexNumber))\n right = parseInt(elements[j].match(regexNumber))\n }\n InsertMap(map, elements[0], left, right)\n }\n }\n this.maps.set(partitionName, map)\n } else {\n this.maps.set(partitionName, map)\n }\n }\n\n /**\n * Return the filename of given address.\n * @param {String} partitionName\n * @param {Array} extents\n * @return {Array}\n */\n query(partitionName: string, extents: Array) {\n let /** Array */ names = []\n let /** Array */ map = this.maps.get(partitionName)\n for (let ext of extents) {\n names.push(queryMap(map, ext.startBlock, ext.startBlock + ext.numBlocks))\n }\n return names\n }\n}\n\n/**\n * Fill in the hashtable from to using .\n * @param {Array} map\n * @param {String} name\n * @param {Number} left\n * @param {Number} right\n */\nfunction InsertMap(\n map: Array,\n name: string,\n left: number,\n right: number\n) {\n for (let i = left; i <= right; i++) {\n map[i] = name\n }\n}\n\n/**\n * Query the hashtable using index
.\n * @param {Array} map\n * @param {Number} left\n * @param {Number} right\n */\nfunction queryMap(map: Array, left: number, right: number) {\n // Assuming the consecutive blocks belong to the same file\n // Only the start block is queried here.\n if (!map[left]) {\n return 'unknown'\n }\n return map[left]\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Offer functions that can be used to parse the partitionUpdate\n * and then do statistics over it. One can use analysePartitions to specify the\n * partitions been analysed and metrics.\n */\n\nimport { OpType, MergeOpType } from './payload'\nimport { EchartsData } from './echarts_data'\nimport { MapParser } from './map_parser'\nimport { chromeos_update_engine } from './update_metadata_pb'\n\n/**\n * Add a to a element associated to . If the element dose not\n * exists than its value will be initialized to zero.\n * @param {Map} map\n * @param {String} key\n * @param {Number} value\n */\nfunction addNumberToMap(map: Map, key: String, value: number) {\n if (!map.get(key)) {\n map.set(key, 0)\n }\n map.set(key, map.get(key)! + value)\n}\n\n/**\n * Return a statistics over the numbers of blocks (in destination) that are\n * being operated by different installation operation (e.g. REPLACE, BSDIFF).\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedBlockStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n operatedBlocks,\n operationType,\n numBlocks(operation.dstExtents)\n )\n }\n }\n return operatedBlocks\n}\n\nfunction partitionPayloadSize(\n partition: chromeos_update_engine.IPartitionUpdate\n) {\n if (!partition.operations) {\n return 0\n }\n let size = 0\n for (let op of partition.operations!) {\n size += op.dataLength\n }\n return size\n}\n\nexport function partitionPayloadSizeStatistics(\n partitions: Array\n) {\n let partitionStats = new Map()\n for (let partition of partitions) {\n addNumberToMap(\n partitionStats,\n partition.partitionName,\n partitionPayloadSize(partition)\n )\n }\n return partitionStats\n}\n\nexport function mergeOperationStatistics(\n partitions: Array,\n blockSize: number\n) {\n let /** Map */ mergeOperations = new Map()\n let /** MergeOpType */ opType = new MergeOpType()\n let /** Number */ totalBlocks = 0\n for (let partition of partitions) {\n for (let operation of partition.mergeOperations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n mergeOperations,\n operationType,\n operation.dstExtent!.numBlocks\n )\n }\n // The total blocks number should be rounded up\n if (partition.newPartitionInfo == null) {\n throw new Error(\n `Partition ${partition.partitionName} doesn't have new_partition_info field.`\n )\n }\n totalBlocks += Math.ceil(partition.newPartitionInfo.size / blockSize)\n }\n // The COW merge operation is default to be COW_replace and not shown in\n // the manifest info. We have to mannually add that part of operations,\n // by subtracting the total blocks with other blocks.\n mergeOperations.forEach((value, key) => (totalBlocks -= value))\n mergeOperations.set('COW_REPLACE', totalBlocks)\n return mergeOperations\n}\n\n/**\n * Return a statistics over the disk usage of payload.bin, based on the type of\n * installation operations. Only partitions that are being passed in will be\n * included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedPayloadStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(operatedBlocks, operationType, operation.dataLength)\n }\n }\n return operatedBlocks\n}\n/**\n * Return a statistics over the disk usage of each file types in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFileExtensionsStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let filenameStats = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n const fileExtenstionStats = new Map()\n filenameStats.forEach((size, filename) => {\n addNumberToMap(fileExtenstionStats, name2Extension(filename), size)\n })\n return fileExtenstionStats\n}\n\n/**\n * Return a statistics over the disk usage of each file name in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFilenamesStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let /** Map */ operatedFilenames = new Map()\n if (!targetFile) {\n return operatedFilenames\n }\n let buildMap = new MapParser(targetFile)\n await buildMap.init()\n for (let partition of partitions) {\n await buildMap.add(\n partition.partitionName,\n Math.ceil(partition.newPartitionInfo!.size / blockSize)\n )\n for (let operation of partition.operations!) {\n if (!operation.hasOwnProperty('dataLength')) continue\n let operatedFileNames = buildMap.query(\n partition.partitionName,\n operation.dstExtents!\n )\n let extentDataLength = distributeFilenames(\n operatedFileNames,\n operation.dstExtents!,\n operation.dataLength\n )\n extentDataLength!.forEach((value, key) => {\n addNumberToMap(operatedFilenames, key, value)\n })\n }\n }\n return operatedFilenames\n}\n\n/**\n * Analyse the given partitions using the given metrics.\n * @param {String} metrics\n * @param {Array} partitions\n * @return {EchartsData}\n */\nexport async function analysePartitions(\n metrics: String,\n partitions: Array,\n blockSize = 4096,\n targetFile: File | null | URL = null\n) {\n let /** Map */ statisticsData\n let /** Echartsdata */ echartsData\n switch (metrics) {\n case 'blocks':\n statisticsData = operatedBlockStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Operated blocks in target build',\n 'blocks'\n )\n break\n case 'payload':\n statisticsData = operatedPayloadStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Payload disk usage',\n 'bytes'\n )\n break\n case 'COWmerge':\n statisticsData = mergeOperationStatistics(partitions, blockSize)\n echartsData = new EchartsData(\n statisticsData,\n 'COW merge operations',\n 'blocks'\n )\n break\n case 'filenames':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated filenames',\n 'bytes'\n )\n break\n case 'extensions':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFileExtensionsStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated extensions',\n 'bytes'\n )\n break\n case 'partitions':\n statisticsData = partitionPayloadSizeStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Partition payload size',\n 'bytes'\n )\n break\n }\n if (echartsData) {\n return echartsData\n } else {\n throw 'Please double check if this is a proper AB OTA package.'\n }\n}\n\n/**\n * Calculate the number of blocks being operated\n * @param {Array} exts\n * @return {number}\n */\nexport function numBlocks(\n exts: Array | null | undefined\n) {\n if (!exts) {\n return 0\n }\n const accumulator = (total: number, ext: chromeos_update_engine.IExtent) =>\n total + ext.numBlocks\n return exts.reduce(accumulator, 0)\n}\n\n/**\n * Return a string that indicates the blocks being operated\n * in the manner of (start_block, block_length)\n * @param {Array} exts\n * @return {string}\n */\nexport function displayBlocks(exts: Array) {\n const accumulator = (total: string, ext: chromeos_update_engine.Extent) =>\n total + '(' + ext.startBlock + ',' + ext.numBlocks + ')'\n return exts.reduce(accumulator, '')\n}\n\n/**\n * Return a map with pairs of (file extension, data length used by this\n * extension). The total data length will be distributed by the blocks ratio\n * of each extent.\n * @param {Array} filenames\n * @param {Array} exts\n * @param {Number} length\n * @return {Map}\n */\nexport function distributeFilenames(\n filenames: Array,\n exts: Array,\n length: number\n): Map {\n let totalBlocks = numBlocks(exts)\n let distributedLengths = new Map()\n for (let i = 0; i < filenames.length; i++) {\n addNumberToMap(\n distributedLengths,\n filenames[i],\n Math.round((length * exts[i].numBlocks) / totalBlocks)\n )\n }\n return distributedLengths\n}\n\n/**\n * convert a filename into extension, for example:\n * '//system/apex/com.android.adbd.apex' => 'apex'\n * @param {String} filename\n * @return {String}\n */\nexport function name2Extension(filename: string) {\n let elements = filename.split('.')\n if (elements.length > 1) {\n return elements[elements.length - 1]\n } else if (elements[0] === 'unknown') {\n return 'unknown'\n } else if (filename[0] == '<' && filename.endsWith('>')) {\n return filename\n } else {\n return 'no-extension'\n }\n}\n","\nimport { numBlocks, displayBlocks } from '../services/payload_composition'\nimport { DefaultMap } from '../services/payload'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n operation: {\n type: Object,\n required: true\n },\n mapType: {\n type: DefaultMap,\n required: true\n }\n },\n data() {\n return {\n srcTotalBlocks: 0,\n srcBlocks: '',\n dstTotalBlocks: 0,\n dstBlocks: ''\n }\n },\n mounted() {\n if (this.operation.srcExtents) {\n this.srcTotalBlocks = numBlocks(this.operation.srcExtents)\n this.srcBlocks = displayBlocks(this.operation.srcExtents)\n }\n if (this.operation.dstExtents) {\n this.dstTotalBlocks = numBlocks(this.operation.dstExtents)\n this.dstBlocks = displayBlocks(this.operation.dstExtents)\n }\n }\n})\n","import { render } from \"./OperationDetail.vue?vue&type=template&id=44174082&scoped=true\"\nimport script from \"./OperationDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./OperationDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-44174082\"\n\nexport default script","\nimport { chromeos_update_engine } from '@/services/update_metadata_pb'\nimport { defineComponent } from 'vue'\nimport { OpType, octToHex } from '../services/payload'\nimport OperationDetail from './OperationDetail.vue'\n\nexport default defineComponent({\n components: {\n OperationDetail\n },\n props: {\n partition: {\n type: chromeos_update_engine.PartitionUpdate,\n required: true\n },\n dynamicPartitionList: {\n type: Array,\n required: true\n }\n },\n data() {\n return {\n showOPs: false,\n showInfo: false,\n opType: new OpType()\n }\n },\n methods: {\n toggle(key: string) {\n ;(this as any)[key] = !(this as any)[key]\n },\n octToHex: octToHex\n },\n computed: {\n readableTimestamp() {\n const unixTimestamp = parseInt(this.partition.version)\n if (isNaN(unixTimestamp)) {\n return ''\n }\n // Unix timestamp is in seconds, but js want milliseconds. So *1000\n return new Date(unixTimestamp * 1000).toString()\n },\n isDynamicPartition(): boolean {\n return (\n this.dynamicPartitionList.indexOf(this.partition.partitionName) >= 0\n )\n }\n }\n})\n","import { render } from \"./PartitionDetail.vue?vue&type=template&id=6dba348a&scoped=true\"\nimport script from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PartitionDetail.vue?vue&type=style&index=0&id=6dba348a&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-6dba348a\"\n\nexport default script","\n\n\n\n\n\n\n","import * as zip from '@zip.js/zip.js/dist/zip.js'\nimport { ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { Payload } from './payload'\n\nexport class ZipFile {\n public reader: ZipReader\n\n constructor(private file: File | URL) {\n this.reader = getZipReader(file)\n }\n getFileName() {\n return getFileName(this.file)\n }\n getFileSize() {\n if (this.file instanceof File) {\n return this.file.size\n } else {\n // TODO(zhangkelvin) Support getting file size from URL\n return 0\n }\n }\n}\n\nexport async function trimZip(\n file: ZipReader,\n p: (entry: zip.Entry) => boolean\n): Promise {\n const reader = file\n const writer = new zip.ZipWriter(new zip.BlobWriter('application/zip'))\n const entries = await reader.getEntries()\n for (const entry of entries.filter(entry => !!entry && p(entry))) {\n const blobWriter = new zip.BlobWriter()\n const data = (await entry.getData!(blobWriter)) as Blob\n console.log(`Adding ${entry.filename}, ${data.size}`)\n writer.add(entry.filename, new zip.BlobReader(blobWriter.getData()), {\n level: 0 // no compression\n })\n }\n return writer\n}\n\nfunction getZipReader(file: File | URL) {\n if (file instanceof File) {\n return new zip.ZipReader(new zip.BlobReader(file))\n } else {\n return new zip.ZipReader(new zip.HttpReader(file.href))\n }\n}\n\nexport function getFileName(file: File | URL) {\n if (file instanceof File) {\n return file.name\n } else {\n return file.pathname\n }\n}\n\nexport async function trimTargetFiles(file: File | URL): Promise {\n const writer = await trimZip(getZipReader(file), entry => {\n return entry.filename.startsWith('META/') || entry.filename.endsWith('.map') || entry.filename.endsWith(\".prop\") || entry.filename == \"prop.default\"\n })\n return await writer.close()\n}\n\nexport async function trimOTAPackage(payload: Payload): Promise {\n const writer = await trimZip(payload.zipreader, entry => {\n return entry.filename != 'payload.bin'\n })\n await writer.add(\n 'payload.bin',\n new zip.BlobReader(payload.buffer!.slice(0, payload.getMetadataLength())),\n // Most toolings assume that payload.bin and other entries are not\n // compressed, so use level 0\n {\n level: 0\n }\n )\n const blob: Blob = await writer.close()\n return blob\n}\n\nexport function downloadFile(\n blob: Blob,\n downloadNode: HTMLAnchorElement,\n filename: string\n) {\n const url = window.URL.createObjectURL(blob)\n downloadNode.href = url\n downloadNode.download = filename\n downloadNode.click()\n window.URL.revokeObjectURL(url)\n}\n\nexport function ensureSuffix(str: string, suffix: string) {\n if (str.endsWith(suffix)) {\n return str\n } else {\n return str + suffix\n }\n}\n","\nimport { Payload, MetadataFormat } from '../services/payload'\nimport { ZipFile } from '@/services/trim_zip'\n\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n zipFile: {\n type: ZipFile,\n required: true\n },\n payload: {\n type: Payload,\n required: true\n }\n },\n data() {\n return {\n MetadataFormat\n }\n },\n computed: {\n otaMetadata(): {\n prefix: string\n key: string\n name: string\n }[] {\n return MetadataFormat.filter(formatter =>\n String((this.payload as any)[formatter.key]).length > 0\n );\n },\n totalCOWSize(): number {\n const cowSizes = this.payload?.manifest?.partitions.map(p => p.estimateCowSize || 0);\n if (!cowSizes) {\n return 0;\n }\n return cowSizes.reduce((a, b) => a + b);\n },\n vabcCompressionParam(): string {\n return this.payload?.manifest?.dynamicPartitionMetadata?.vabcCompressionParam || \"\";\n },\n securityPatchLevel(): string {\n const spl = this.payload?.manifest?.securityPatchLevel;\n if (!spl) {\n return \"\";\n }\n return spl;\n },\n totalDynamicPartitionSize(): number {\n const groups = this.payload?.manifest?.dynamicPartitionMetadata?.groups\n if (!groups) {\n return 0\n }\n const dynamicPartitionNamess = new Set(\n groups.flatMap(g => g.partitionNames)\n )\n const dynamicPartitions =\n this.payload.manifest?.partitions.filter(p =>\n dynamicPartitionNamess.has(p.partitionName)\n ) || []\n if (dynamicPartitions.length <= 0) {\n return 0\n }\n return dynamicPartitions\n .map(p => p.newPartitionInfo?.size || 0)\n .reduce((acc, cur) => acc + cur)\n }\n }\n})\n","import { render } from \"./BasicInfo.vue?vue&type=template&id=24adde54&scoped=true\"\nimport script from \"./BasicInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./BasicInfo.vue?vue&type=script&lang=ts\"\n\nimport \"./BasicInfo.vue?vue&type=style&index=0&id=24adde54&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-24adde54\"\n\nexport default script","\nimport PartitionDetail from './PartitionDetail.vue'\nimport BasicInfo from './BasicInfo.vue'\nimport { Payload, octToHex } from '../services/payload'\nimport {\n downloadFile,\n ensureSuffix,\n trimOTAPackage,\n ZipFile\n} from '@/services/trim_zip'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n components: {\n PartitionDetail,\n BasicInfo\n },\n props: {\n zipFile: {\n type: ZipFile,\n default: null\n },\n payload: {\n type: Payload,\n default: null\n }\n },\n methods: {\n octToHex: octToHex,\n async exportOTAPackage() {\n const blob = await trimOTAPackage(this.payload as Payload)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(this.zipFile.getFileName(), '.zip')\n )\n }\n },\n computed: {\n dynamicPartitions(): string[] {\n return (\n this.payload.manifest?.dynamicPartitionMetadata?.groups?.flatMap(\n g => g.partitionNames || []\n ) || []\n )\n }\n }\n})\n","import { render } from \"./PayloadDetail.vue?vue&type=template&id=05db67f2&scoped=true\"\nimport script from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-05db67f2\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n labels: {\n type: Array,\n default: new Array()\n },\n modelValue: {\n type: Map,\n default: new Map()\n }\n },\n data() {\n return {\n selectAll: 1,\n selectAllText: ['Select All', 'Unselect All']\n }\n },\n mounted() {\n // Set the default value to be true once mounted\n for (let key of this.labels) {\n this.modelValue.set(key, true)\n }\n },\n methods: {\n updateSelected(newSelect: string) {\n this.modelValue.set(newSelect, !this.modelValue.get(newSelect))\n this.$emit('update:modelValue', this.modelValue)\n },\n revertAllSelection() {\n this.selectAll = 1 - this.selectAll\n for (let key of this.modelValue.keys()) {\n this.modelValue.set(key, Boolean(this.selectAll))\n }\n }\n }\n})\n","import { render } from \"./PartialCheckbox.vue?vue&type=template&id=533f2336&scoped=true\"\nimport script from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\n\nimport \"./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-533f2336\"\n\nexport default script","\n\n\n\n\n\n\n","import { render } from \"./PieChart.vue?vue&type=template&id=5d1cb486&scoped=true\"\nimport script from \"./PieChart.vue?vue&type=script&lang=js\"\nexport * from \"./PieChart.vue?vue&type=script&lang=js\"\n\nimport \"./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-5d1cb486\"\n\nexport default script","\nimport axios from 'axios'\nimport PartialCheckbox from './PartialCheckbox.vue'\nimport PieChart from './PieChart.vue'\nimport BaseFile from './BaseFile.vue'\nimport { analysePartitions } from '../services/payload_composition'\nimport { chromeos_update_engine as update_metadata_pb } from '../services/update_metadata_pb'\nimport { TooltipComponentPositionCallbackParams } from 'echarts'\nimport { EchartsData } from '@/services/echarts_data'\nimport { defineComponent } from 'vue'\nimport {\n downloadFile,\n ensureSuffix,\n getFileName,\n trimTargetFiles\n} from '@/services/trim_zip'\n\ninterface ComponentState {\n partitionInclude: Map\n echartsData: EchartsData | null\n listData: string\n targetFile: File | URL | null\n}\n\nexport default defineComponent({\n components: {\n PartialCheckbox,\n PieChart,\n BaseFile\n },\n props: {\n manifest: {\n type: update_metadata_pb.DeltaArchiveManifest,\n default: () => []\n },\n demo: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n partitionInclude: new Map(),\n echartsData: null,\n listData: '',\n targetFile: null\n } as ComponentState\n },\n computed: {\n updatePartitions(): string[] {\n return this.manifest.partitions.map(\n (partition: update_metadata_pb.IPartitionUpdate) => {\n return partition.partitionName\n }\n )\n }\n },\n async mounted() {\n if (this.demo) {\n try {\n const download = await axios.get(\n './files/cf_x86_target_file_demo.zip',\n { responseType: 'blob' }\n )\n this.targetFile = new File([download.data], 'target_demo.zip')\n } catch (err) {\n console.log('Please put a proper example target file in /public/files/')\n }\n }\n },\n methods: {\n piechartClick(param: TooltipComponentPositionCallbackParams) {\n console.log(param)\n },\n async updateChart(metrics: string) {\n let partitionSelected = this.manifest.partitions.filter(partition =>\n this.partitionInclude.get(partition.partitionName)\n )\n try {\n this.echartsData = await analysePartitions(\n metrics,\n partitionSelected,\n this.manifest.blockSize,\n this.targetFile\n )\n } catch (err) {\n alert(`Cannot be processed for the following issue: ${err}`)\n }\n },\n selectBuild(file: File | URL) {\n //TODO(lishutong) check the version of target file is same to the OTA target\n this.targetFile = file\n },\n async exportTargetFileMetadata() {\n const blob = await trimTargetFiles(this.targetFile!)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(getFileName(this.targetFile!), '.zip')\n )\n }\n }\n})\n","import { render } from \"./PayloadComposition.vue?vue&type=template&id=b6f71732&scoped=true\"\nimport script from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadComposition.vue?vue&type=style&index=0&id=b6f71732&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-b6f71732\"\n\nexport default script","\nimport BaseFile from '../components/BaseFile.vue'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n BaseFile,\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return ({\n zipFile: null,\n payload: null\n } as unknown) as {\n zipFile: ZipFile\n payload: Payload\n }\n },\n methods: {\n async unpackOTA(file: File | URL) {\n this.zipFile = new ZipFile(file)\n try {\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n alert(`Please check if this is a correct OTA package (.zip). ${err}`)\n console.log(err)\n }\n }\n }\n})\n","import { render } from \"./PackageAnalysis.vue?vue&type=template&id=4cbf2b67\"\nimport script from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nexport * from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\nimport axios from 'axios'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return {\n zipFile: null,\n payload: null\n } as {\n zipFile: ZipFile | null\n payload: Payload | null\n }\n },\n async created() {\n // put cf_x86_demo.zip and cf_x86_target_file_demo into\n // this directory: /public/files\n try {\n const download = await axios.get('./files/cf_x86_demo.zip', {\n responseType: 'blob'\n })\n this.zipFile = new ZipFile(new File([download.data], 'ota_demo.zip'))\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n console.log('Please put a proper example OTA in /public/files/')\n }\n }\n})\n","import { render } from \"./Demo.vue?vue&type=template&id=1e5d071a\"\nimport script from \"./Demo.vue?vue&type=script&lang=ts\"\nexport * from \"./Demo.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n","import { render } from \"./About.vue?vue&type=template&id=67ed0bf6\"\nconst script = {}\nscript.render = render\n\nexport default script","\n\n\n\n","import { render } from \"./NotFound.vue?vue&type=template&id=50c6f348&scoped=true\"\nconst script = {}\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-50c6f348\"\n\nexport default script","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createRouter, createWebHistory } from 'vue-router'\nimport PackageAnalysis from '@/views/PackageAnalysis.vue'\nimport Demo from'@/views/Demo.vue'\nimport About from '@/views/About.vue'\nimport NotFound from '@/views/NotFound.vue'\n\nconst routes = [\n {\n path: '/',\n name: 'Analysis',\n component: PackageAnalysis,\n meta: {\n title: 'Analyse OTA package - from AOSP'\n }\n },\n {\n path: '/demo',\n name: 'Demo',\n component: Demo\n },\n {\n path: '/about',\n name: 'About',\n component: About\n },\n {\n path: '/:catchAll(.*)',\n name: 'Not Found',\n component: NotFound\n }\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes\n})\n\n// This callback runs before every route change, including on page load.\nrouter.beforeEach((to, from, next) => {\n // This goes through the matched routes from last to first, finding the closest route with a title.\n // e.g., if we have `/some/deep/nested/route` and `/some`, `/deep`, and `/nested` have titles,\n // `/nested`'s will be chosen.\n const nearestWithTitle = to.matched.slice().reverse().find(r => r.meta && r.meta.title);\n\n // Find the nearest route element with meta tags.\n const nearestWithMeta = to.matched.slice().reverse().find(r => r.meta && r.meta.metaTags)!;\n\n const previousNearestWithMeta = from.matched.slice().reverse().find(r => r.meta && r.meta.metaTags);\n\n // If a route with a title was found, set the document (page) title to that value.\n if(nearestWithTitle) {\n document.title = nearestWithTitle.meta.title as string;\n } else if(previousNearestWithMeta) {\n document.title = previousNearestWithMeta.meta.title as string;\n }\n\n // Remove any stale meta tags from the document using the key attribute we set below.\n Array.from(document.querySelectorAll('[data-vue-router-controlled]')).map(el => el.parentNode!.removeChild(el));\n\n next();\n});\n\nexport default router\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createStore } from 'vuex'\n\nexport default createStore({\n state: {},\n mutations: {},\n actions: {},\n modules: {}\n})\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createApp } from 'vue'\nimport vuetify from './plugins/vuetify'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nconst app = createApp(App)\napp.use(router)\napp.use(store)\napp.use(vuetify)\n\napp.mount('#app')","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartitionDetail.vue?vue&type=style&index=0&id=6dba348a&scoped=true&lang=css\""],"sourceRoot":""} \ No newline at end of file diff --git a/analyseOTA/js/app.1544ce76.js b/analyseOTA/js/app.1544ce76.js new file mode 100644 index 0000000..af96417 --- /dev/null +++ b/analyseOTA/js/app.1544ce76.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var r,o,s=t[0],c=t[1],l=t[2],p=0,d=[];p>>3){case 1:r.startBlock=e.uint64();break;case 2:r.numBlocks=e.uint64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(ce["a"])(e)||null===e?"object expected":null==e.startBlock||!e.hasOwnProperty("startBlock")||de.isInteger(e.startBlock)||e.startBlock&&de.isInteger(e.startBlock.low)&&de.isInteger(e.startBlock.high)?null==e.numBlocks||!e.hasOwnProperty("numBlocks")||de.isInteger(e.numBlocks)||e.numBlocks&&de.isInteger(e.numBlocks.low)&&de.isInteger(e.numBlocks.high)?null:"numBlocks: integer|Long expected":"startBlock: integer|Long expected"},e.fromObject=function(e){if(e instanceof fe.chromeos_update_engine.Extent)return e;var t=new fe.chromeos_update_engine.Extent;return null!=e.startBlock&&(de.Long?(t.startBlock=de.Long.fromValue(e.startBlock)).unsigned=!0:"string"===typeof e.startBlock?t.startBlock=parseInt(e.startBlock,10):"number"===typeof e.startBlock?t.startBlock=e.startBlock:"object"===Object(ce["a"])(e.startBlock)&&(t.startBlock=new de.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0))),null!=e.numBlocks&&(de.Long?(t.numBlocks=de.Long.fromValue(e.numBlocks)).unsigned=!0:"string"===typeof e.numBlocks?t.numBlocks=parseInt(e.numBlocks,10):"number"===typeof e.numBlocks?t.numBlocks=e.numBlocks:"object"===Object(ce["a"])(e.numBlocks)&&(t.numBlocks=new de.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(de.Long){var r=new de.Long(0,0,!0);n.startBlock=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.startBlock=t.longs===String?"0":0;if(de.Long){var a=new de.Long(0,0,!0);n.numBlocks=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.numBlocks=t.longs===String?"0":0}return null!=e.startBlock&&e.hasOwnProperty("startBlock")&&("number"===typeof e.startBlock?n.startBlock=t.longs===String?String(e.startBlock):e.startBlock:n.startBlock=t.longs===String?de.Long.prototype.toString.call(e.startBlock):t.longs===Number?new de.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0):e.startBlock),null!=e.numBlocks&&e.hasOwnProperty("numBlocks")&&("number"===typeof e.numBlocks?n.numBlocks=t.longs===String?String(e.numBlocks):e.numBlocks:n.numBlocks=t.longs===String?de.Long.prototype.toString.call(e.numBlocks):t.longs===Number?new de.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0):e.numBlocks),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,le["util"].toJSONOptions)},e}(),e.Signatures=function(){function e(e){if(this.signatures=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.signatures&&r.signatures.length||(r.signatures=[]),r.signatures.push(fe.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ce["a"])(e)||null===e)return"object expected";if(null!=e.signatures&&e.hasOwnProperty("signatures")){if(!Array.isArray(e.signatures))return"signatures: array expected";for(var t=0;t>>3){case 1:r.version=e.uint32();break;case 2:r.data=e.bytes();break;case 3:r.unpaddedSignatureSize=e.fixed32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(ce["a"])(e)||null===e?"object expected":null!=e.version&&e.hasOwnProperty("version")&&!de.isInteger(e.version)?"version: integer expected":null!=e.data&&e.hasOwnProperty("data")&&!(e.data&&"number"===typeof e.data.length||de.isString(e.data))?"data: buffer expected":null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&!de.isInteger(e.unpaddedSignatureSize)?"unpaddedSignatureSize: integer expected":null},e.fromObject=function(e){if(e instanceof fe.chromeos_update_engine.Signatures.Signature)return e;var t=new fe.chromeos_update_engine.Signatures.Signature;return null!=e.version&&(t.version=e.version>>>0),null!=e.data&&("string"===typeof e.data?de.base64.decode(e.data,t.data=de.newBuffer(de.base64.length(e.data)),0):e.data.length&&(t.data=e.data)),null!=e.unpaddedSignatureSize&&(t.unpaddedSignatureSize=e.unpaddedSignatureSize>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.version=0,t.bytes===String?n.data="":(n.data=[],t.bytes!==Array&&(n.data=de.newBuffer(n.data))),n.unpaddedSignatureSize=0),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.data&&e.hasOwnProperty("data")&&(n.data=t.bytes===String?de.base64.encode(e.data,0,e.data.length):t.bytes===Array?Array.prototype.slice.call(e.data):e.data),null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&(n.unpaddedSignatureSize=e.unpaddedSignatureSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,le["util"].toJSONOptions)},e}(),e}(),e.PartitionInfo=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.size=e.uint64();break;case 2:r.hash=e.bytes();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(ce["a"])(e)||null===e?"object expected":null==e.size||!e.hasOwnProperty("size")||de.isInteger(e.size)||e.size&&de.isInteger(e.size.low)&&de.isInteger(e.size.high)?null!=e.hash&&e.hasOwnProperty("hash")&&!(e.hash&&"number"===typeof e.hash.length||de.isString(e.hash))?"hash: buffer expected":null:"size: integer|Long expected"},e.fromObject=function(e){if(e instanceof fe.chromeos_update_engine.PartitionInfo)return e;var t=new fe.chromeos_update_engine.PartitionInfo;return null!=e.size&&(de.Long?(t.size=de.Long.fromValue(e.size)).unsigned=!0:"string"===typeof e.size?t.size=parseInt(e.size,10):"number"===typeof e.size?t.size=e.size:"object"===Object(ce["a"])(e.size)&&(t.size=new de.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0))),null!=e.hash&&("string"===typeof e.hash?de.base64.decode(e.hash,t.hash=de.newBuffer(de.base64.length(e.hash)),0):e.hash.length&&(t.hash=e.hash)),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(de.Long){var r=new de.Long(0,0,!0);n.size=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.size=t.longs===String?"0":0;t.bytes===String?n.hash="":(n.hash=[],t.bytes!==Array&&(n.hash=de.newBuffer(n.hash)))}return null!=e.size&&e.hasOwnProperty("size")&&("number"===typeof e.size?n.size=t.longs===String?String(e.size):e.size:n.size=t.longs===String?de.Long.prototype.toString.call(e.size):t.longs===Number?new de.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0):e.size),null!=e.hash&&e.hasOwnProperty("hash")&&(n.hash=t.bytes===String?de.base64.encode(e.hash,0,e.hash.length):t.bytes===Array?Array.prototype.slice.call(e.hash):e.hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,le["util"].toJSONOptions)},e}(),e.InstallOperation=function(){function e(e){if(this.srcExtents=[],this.dstExtents=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.dataOffset=e.uint64();break;case 3:r.dataLength=e.uint64();break;case 4:r.srcExtents&&r.srcExtents.length||(r.srcExtents=[]),r.srcExtents.push(fe.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 5:r.srcLength=e.uint64();break;case 6:r.dstExtents&&r.dstExtents.length||(r.dstExtents=[]),r.dstExtents.push(fe.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 7:r.dstLength=e.uint64();break;case 8:r.dataSha256Hash=e.bytes();break;case 9:r.srcSha256Hash=e.bytes();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("type"))throw de.ProtocolError("missing required 'type'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ce["a"])(e)||null===e)return"object expected";switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 8:case 6:case 7:case 10:case 9:case 11:case 12:case 13:break}if(null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&!de.isInteger(e.dataOffset)&&!(e.dataOffset&&de.isInteger(e.dataOffset.low)&&de.isInteger(e.dataOffset.high)))return"dataOffset: integer|Long expected";if(null!=e.dataLength&&e.hasOwnProperty("dataLength")&&!de.isInteger(e.dataLength)&&!(e.dataLength&&de.isInteger(e.dataLength.low)&&de.isInteger(e.dataLength.high)))return"dataLength: integer|Long expected";if(null!=e.srcExtents&&e.hasOwnProperty("srcExtents")){if(!Array.isArray(e.srcExtents))return"srcExtents: array expected";for(var t=0;t>>0,e.dataOffset.high>>>0).toNumber(!0))),null!=e.dataLength&&(de.Long?(t.dataLength=de.Long.fromValue(e.dataLength)).unsigned=!0:"string"===typeof e.dataLength?t.dataLength=parseInt(e.dataLength,10):"number"===typeof e.dataLength?t.dataLength=e.dataLength:"object"===Object(ce["a"])(e.dataLength)&&(t.dataLength=new de.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0))),e.srcExtents){if(!Array.isArray(e.srcExtents))throw TypeError(".chromeos_update_engine.InstallOperation.srcExtents: array expected");t.srcExtents=[];for(var n=0;n>>0,e.srcLength.high>>>0).toNumber(!0))),e.dstExtents){if(!Array.isArray(e.dstExtents))throw TypeError(".chromeos_update_engine.InstallOperation.dstExtents: array expected");t.dstExtents=[];for(var r=0;r>>0,e.dstLength.high>>>0).toNumber(!0))),null!=e.dataSha256Hash&&("string"===typeof e.dataSha256Hash?de.base64.decode(e.dataSha256Hash,t.dataSha256Hash=de.newBuffer(de.base64.length(e.dataSha256Hash)),0):e.dataSha256Hash.length&&(t.dataSha256Hash=e.dataSha256Hash)),null!=e.srcSha256Hash&&("string"===typeof e.srcSha256Hash?de.base64.decode(e.srcSha256Hash,t.srcSha256Hash=de.newBuffer(de.base64.length(e.srcSha256Hash)),0):e.srcSha256Hash.length&&(t.srcSha256Hash=e.srcSha256Hash)),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.srcExtents=[],n.dstExtents=[]),t.defaults){if(n.type=t.enums===String?"REPLACE":0,de.Long){var r=new de.Long(0,0,!0);n.dataOffset=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.dataOffset=t.longs===String?"0":0;if(de.Long){var a=new de.Long(0,0,!0);n.dataLength=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.dataLength=t.longs===String?"0":0;if(de.Long){var i=new de.Long(0,0,!0);n.srcLength=t.longs===String?i.toString():t.longs===Number?i.toNumber():i}else n.srcLength=t.longs===String?"0":0;if(de.Long){var o=new de.Long(0,0,!0);n.dstLength=t.longs===String?o.toString():t.longs===Number?o.toNumber():o}else n.dstLength=t.longs===String?"0":0;t.bytes===String?n.dataSha256Hash="":(n.dataSha256Hash=[],t.bytes!==Array&&(n.dataSha256Hash=de.newBuffer(n.dataSha256Hash))),t.bytes===String?n.srcSha256Hash="":(n.srcSha256Hash=[],t.bytes!==Array&&(n.srcSha256Hash=de.newBuffer(n.srcSha256Hash)))}if(null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?fe.chromeos_update_engine.InstallOperation.Type[e.type]:e.type),null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&("number"===typeof e.dataOffset?n.dataOffset=t.longs===String?String(e.dataOffset):e.dataOffset:n.dataOffset=t.longs===String?de.Long.prototype.toString.call(e.dataOffset):t.longs===Number?new de.LongBits(e.dataOffset.low>>>0,e.dataOffset.high>>>0).toNumber(!0):e.dataOffset),null!=e.dataLength&&e.hasOwnProperty("dataLength")&&("number"===typeof e.dataLength?n.dataLength=t.longs===String?String(e.dataLength):e.dataLength:n.dataLength=t.longs===String?de.Long.prototype.toString.call(e.dataLength):t.longs===Number?new de.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0):e.dataLength),e.srcExtents&&e.srcExtents.length){n.srcExtents=[];for(var s=0;s>>0,e.srcLength.high>>>0).toNumber(!0):e.srcLength),e.dstExtents&&e.dstExtents.length){n.dstExtents=[];for(var c=0;c>>0,e.dstLength.high>>>0).toNumber(!0):e.dstLength),null!=e.dataSha256Hash&&e.hasOwnProperty("dataSha256Hash")&&(n.dataSha256Hash=t.bytes===String?de.base64.encode(e.dataSha256Hash,0,e.dataSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.dataSha256Hash):e.dataSha256Hash),null!=e.srcSha256Hash&&e.hasOwnProperty("srcSha256Hash")&&(n.srcSha256Hash=t.bytes===String?de.base64.encode(e.srcSha256Hash,0,e.srcSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.srcSha256Hash):e.srcSha256Hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,le["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="REPLACE"]=0,t[e[1]="REPLACE_BZ"]=1,t[e[2]="MOVE"]=2,t[e[3]="BSDIFF"]=3,t[e[4]="SOURCE_COPY"]=4,t[e[5]="SOURCE_BSDIFF"]=5,t[e[8]="REPLACE_XZ"]=8,t[e[6]="ZERO"]=6,t[e[7]="DISCARD"]=7,t[e[10]="BROTLI_BSDIFF"]=10,t[e[9]="PUFFDIFF"]=9,t[e[11]="ZUCCHINI"]=11,t[e[12]="LZ4DIFF_BSDIFF"]=12,t[e[13]="LZ4DIFF_PUFFDIFF"]=13,t}(),e}(),e.CowMergeOperation=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.srcExtent=fe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 3:r.dstExtent=fe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 4:r.srcOffset=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ce["a"])(e)||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:break}if(null!=e.srcExtent&&e.hasOwnProperty("srcExtent")){var t=fe.chromeos_update_engine.Extent.verify(e.srcExtent);if(t)return"srcExtent."+t}if(null!=e.dstExtent&&e.hasOwnProperty("dstExtent")){var n=fe.chromeos_update_engine.Extent.verify(e.dstExtent);if(n)return"dstExtent."+n}return null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&!de.isInteger(e.srcOffset)?"srcOffset: integer expected":null},e.fromObject=function(e){if(e instanceof fe.chromeos_update_engine.CowMergeOperation)return e;var t=new fe.chromeos_update_engine.CowMergeOperation;switch(e.type){case"COW_COPY":case 0:t.type=0;break;case"COW_XOR":case 1:t.type=1;break;case"COW_REPLACE":case 2:t.type=2;break}if(null!=e.srcExtent){if("object"!==Object(ce["a"])(e.srcExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.srcExtent: object expected");t.srcExtent=fe.chromeos_update_engine.Extent.fromObject(e.srcExtent)}if(null!=e.dstExtent){if("object"!==Object(ce["a"])(e.dstExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.dstExtent: object expected");t.dstExtent=fe.chromeos_update_engine.Extent.fromObject(e.dstExtent)}return null!=e.srcOffset&&(t.srcOffset=e.srcOffset>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.type=t.enums===String?"COW_COPY":0,n.srcExtent=null,n.dstExtent=null,n.srcOffset=0),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?fe.chromeos_update_engine.CowMergeOperation.Type[e.type]:e.type),null!=e.srcExtent&&e.hasOwnProperty("srcExtent")&&(n.srcExtent=fe.chromeos_update_engine.Extent.toObject(e.srcExtent,t)),null!=e.dstExtent&&e.hasOwnProperty("dstExtent")&&(n.dstExtent=fe.chromeos_update_engine.Extent.toObject(e.dstExtent,t)),null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&(n.srcOffset=e.srcOffset),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,le["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="COW_COPY"]=0,t[e[1]="COW_XOR"]=1,t[e[2]="COW_REPLACE"]=2,t}(),e}(),e.PartitionUpdate=function(){function e(e){if(this.newPartitionSignature=[],this.operations=[],this.mergeOperations=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.partitionName=e.string();break;case 2:r.runPostinstall=e.bool();break;case 3:r.postinstallPath=e.string();break;case 4:r.filesystemType=e.string();break;case 5:r.newPartitionSignature&&r.newPartitionSignature.length||(r.newPartitionSignature=[]),r.newPartitionSignature.push(fe.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;case 6:r.oldPartitionInfo=fe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:r.newPartitionInfo=fe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:r.operations&&r.operations.length||(r.operations=[]),r.operations.push(fe.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 9:r.postinstallOptional=e.bool();break;case 10:r.hashTreeDataExtent=fe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 11:r.hashTreeExtent=fe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 12:r.hashTreeAlgorithm=e.string();break;case 13:r.hashTreeSalt=e.bytes();break;case 14:r.fecDataExtent=fe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 15:r.fecExtent=fe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 16:r.fecRoots=e.uint32();break;case 17:r.version=e.string();break;case 18:r.mergeOperations&&r.mergeOperations.length||(r.mergeOperations=[]),r.mergeOperations.push(fe.chromeos_update_engine.CowMergeOperation.decode(e,e.uint32()));break;case 19:r.estimateCowSize=e.uint64();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("partitionName"))throw de.ProtocolError("missing required 'partitionName'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ce["a"])(e)||null===e)return"object expected";if(!de.isString(e.partitionName))return"partitionName: string expected";if(null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&"boolean"!==typeof e.runPostinstall)return"runPostinstall: boolean expected";if(null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&!de.isString(e.postinstallPath))return"postinstallPath: string expected";if(null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&!de.isString(e.filesystemType))return"filesystemType: string expected";if(null!=e.newPartitionSignature&&e.hasOwnProperty("newPartitionSignature")){if(!Array.isArray(e.newPartitionSignature))return"newPartitionSignature: array expected";for(var t=0;t>>0),null!=e.version&&(t.version=String(e.version)),e.mergeOperations){if(!Array.isArray(e.mergeOperations))throw TypeError(".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected");t.mergeOperations=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.newPartitionSignature=[],n.operations=[],n.mergeOperations=[]),t.defaults)if(n.partitionName="",n.runPostinstall=!1,n.postinstallPath="",n.filesystemType="",n.oldPartitionInfo=null,n.newPartitionInfo=null,n.postinstallOptional=!1,n.hashTreeDataExtent=null,n.hashTreeExtent=null,n.hashTreeAlgorithm="",t.bytes===String?n.hashTreeSalt="":(n.hashTreeSalt=[],t.bytes!==Array&&(n.hashTreeSalt=de.newBuffer(n.hashTreeSalt))),n.fecDataExtent=null,n.fecExtent=null,n.fecRoots=2,n.version="",de.Long){var r=new de.Long(0,0,!0);n.estimateCowSize=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.estimateCowSize=t.longs===String?"0":0;if(null!=e.partitionName&&e.hasOwnProperty("partitionName")&&(n.partitionName=e.partitionName),null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&(n.runPostinstall=e.runPostinstall),null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&(n.postinstallPath=e.postinstallPath),null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&(n.filesystemType=e.filesystemType),e.newPartitionSignature&&e.newPartitionSignature.length){n.newPartitionSignature=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0):e.estimateCowSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,le["util"].toJSONOptions)},e}(),e.DynamicPartitionGroup=function(){function e(e){if(this.partitionNames=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.name=e.string();break;case 2:r.size=e.uint64();break;case 3:r.partitionNames&&r.partitionNames.length||(r.partitionNames=[]),r.partitionNames.push(e.string());break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("name"))throw de.ProtocolError("missing required 'name'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ce["a"])(e)||null===e)return"object expected";if(!de.isString(e.name))return"name: string expected";if(null!=e.size&&e.hasOwnProperty("size")&&!de.isInteger(e.size)&&!(e.size&&de.isInteger(e.size.low)&&de.isInteger(e.size.high)))return"size: integer|Long expected";if(null!=e.partitionNames&&e.hasOwnProperty("partitionNames")){if(!Array.isArray(e.partitionNames))return"partitionNames: array expected";for(var t=0;t>>0,e.size.high>>>0).toNumber(!0))),e.partitionNames){if(!Array.isArray(e.partitionNames))throw TypeError(".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected");t.partitionNames=[];for(var n=0;n>>0,e.size.high>>>0).toNumber(!0):e.size),e.partitionNames&&e.partitionNames.length){n.partitionNames=[];for(var a=0;a>>3){case 1:r.groups&&r.groups.length||(r.groups=[]),r.groups.push(fe.chromeos_update_engine.DynamicPartitionGroup.decode(e,e.uint32()));break;case 2:r.snapshotEnabled=e.bool();break;case 3:r.vabcEnabled=e.bool();break;case 4:r.vabcCompressionParam=e.string();break;case 5:r.cowVersion=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ce["a"])(e)||null===e)return"object expected";if(null!=e.groups&&e.hasOwnProperty("groups")){if(!Array.isArray(e.groups))return"groups: array expected";for(var t=0;t>>0),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.groups=[]),t.defaults&&(n.snapshotEnabled=!1,n.vabcEnabled=!1,n.vabcCompressionParam="",n.cowVersion=0),e.groups&&e.groups.length){n.groups=[];for(var r=0;r>>3){case 1:r.packageName=e.string();break;case 2:r.version=e.int64();break;case 3:r.isCompressed=e.bool();break;case 4:r.decompressedSize=e.int64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(ce["a"])(e)||null===e?"object expected":null!=e.packageName&&e.hasOwnProperty("packageName")&&!de.isString(e.packageName)?"packageName: string expected":null==e.version||!e.hasOwnProperty("version")||de.isInteger(e.version)||e.version&&de.isInteger(e.version.low)&&de.isInteger(e.version.high)?null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&"boolean"!==typeof e.isCompressed?"isCompressed: boolean expected":null==e.decompressedSize||!e.hasOwnProperty("decompressedSize")||de.isInteger(e.decompressedSize)||e.decompressedSize&&de.isInteger(e.decompressedSize.low)&&de.isInteger(e.decompressedSize.high)?null:"decompressedSize: integer|Long expected":"version: integer|Long expected"},e.fromObject=function(e){if(e instanceof fe.chromeos_update_engine.ApexInfo)return e;var t=new fe.chromeos_update_engine.ApexInfo;return null!=e.packageName&&(t.packageName=String(e.packageName)),null!=e.version&&(de.Long?(t.version=de.Long.fromValue(e.version)).unsigned=!1:"string"===typeof e.version?t.version=parseInt(e.version,10):"number"===typeof e.version?t.version=e.version:"object"===Object(ce["a"])(e.version)&&(t.version=new de.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber())),null!=e.isCompressed&&(t.isCompressed=Boolean(e.isCompressed)),null!=e.decompressedSize&&(de.Long?(t.decompressedSize=de.Long.fromValue(e.decompressedSize)).unsigned=!1:"string"===typeof e.decompressedSize?t.decompressedSize=parseInt(e.decompressedSize,10):"number"===typeof e.decompressedSize?t.decompressedSize=e.decompressedSize:"object"===Object(ce["a"])(e.decompressedSize)&&(t.decompressedSize=new de.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber())),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(n.packageName="",de.Long){var r=new de.Long(0,0,!1);n.version=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.version=t.longs===String?"0":0;if(n.isCompressed=!1,de.Long){var a=new de.Long(0,0,!1);n.decompressedSize=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.decompressedSize=t.longs===String?"0":0}return null!=e.packageName&&e.hasOwnProperty("packageName")&&(n.packageName=e.packageName),null!=e.version&&e.hasOwnProperty("version")&&("number"===typeof e.version?n.version=t.longs===String?String(e.version):e.version:n.version=t.longs===String?de.Long.prototype.toString.call(e.version):t.longs===Number?new de.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber():e.version),null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&(n.isCompressed=e.isCompressed),null!=e.decompressedSize&&e.hasOwnProperty("decompressedSize")&&("number"===typeof e.decompressedSize?n.decompressedSize=t.longs===String?String(e.decompressedSize):e.decompressedSize:n.decompressedSize=t.longs===String?de.Long.prototype.toString.call(e.decompressedSize):t.longs===Number?new de.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber():e.decompressedSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,le["util"].toJSONOptions)},e}(),e.ApexMetadata=function(){function e(e){if(this.apexInfo=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(fe.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ce["a"])(e)||null===e)return"object expected";if(null!=e.apexInfo&&e.hasOwnProperty("apexInfo")){if(!Array.isArray(e.apexInfo))return"apexInfo: array expected";for(var t=0;t>>3){case 3:r.blockSize=e.uint32();break;case 4:r.signaturesOffset=e.uint64();break;case 5:r.signaturesSize=e.uint64();break;case 12:r.minorVersion=e.uint32();break;case 13:r.partitions&&r.partitions.length||(r.partitions=[]),r.partitions.push(fe.chromeos_update_engine.PartitionUpdate.decode(e,e.uint32()));break;case 14:r.maxTimestamp=e.int64();break;case 15:r.dynamicPartitionMetadata=fe.chromeos_update_engine.DynamicPartitionMetadata.decode(e,e.uint32());break;case 16:r.partialUpdate=e.bool();break;case 17:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(fe.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;case 18:r.securityPatchLevel=e.string();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ue||(e=new ue(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ce["a"])(e)||null===e)return"object expected";if(null!=e.blockSize&&e.hasOwnProperty("blockSize")&&!de.isInteger(e.blockSize))return"blockSize: integer expected";if(null!=e.signaturesOffset&&e.hasOwnProperty("signaturesOffset")&&!de.isInteger(e.signaturesOffset)&&!(e.signaturesOffset&&de.isInteger(e.signaturesOffset.low)&&de.isInteger(e.signaturesOffset.high)))return"signaturesOffset: integer|Long expected";if(null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&!de.isInteger(e.signaturesSize)&&!(e.signaturesSize&&de.isInteger(e.signaturesSize.low)&&de.isInteger(e.signaturesSize.high)))return"signaturesSize: integer|Long expected";if(null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&!de.isInteger(e.minorVersion))return"minorVersion: integer expected";if(null!=e.partitions&&e.hasOwnProperty("partitions")){if(!Array.isArray(e.partitions))return"partitions: array expected";for(var t=0;t>>0),null!=e.signaturesOffset&&(de.Long?(t.signaturesOffset=de.Long.fromValue(e.signaturesOffset)).unsigned=!0:"string"===typeof e.signaturesOffset?t.signaturesOffset=parseInt(e.signaturesOffset,10):"number"===typeof e.signaturesOffset?t.signaturesOffset=e.signaturesOffset:"object"===Object(ce["a"])(e.signaturesOffset)&&(t.signaturesOffset=new de.LongBits(e.signaturesOffset.low>>>0,e.signaturesOffset.high>>>0).toNumber(!0))),null!=e.signaturesSize&&(de.Long?(t.signaturesSize=de.Long.fromValue(e.signaturesSize)).unsigned=!0:"string"===typeof e.signaturesSize?t.signaturesSize=parseInt(e.signaturesSize,10):"number"===typeof e.signaturesSize?t.signaturesSize=e.signaturesSize:"object"===Object(ce["a"])(e.signaturesSize)&&(t.signaturesSize=new de.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0))),null!=e.minorVersion&&(t.minorVersion=e.minorVersion>>>0),e.partitions){if(!Array.isArray(e.partitions))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected");t.partitions=[];for(var n=0;n>>0,e.maxTimestamp.high>>>0).toNumber())),null!=e.dynamicPartitionMetadata){if("object"!==Object(ce["a"])(e.dynamicPartitionMetadata))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected");t.dynamicPartitionMetadata=fe.chromeos_update_engine.DynamicPartitionMetadata.fromObject(e.dynamicPartitionMetadata)}if(null!=e.partialUpdate&&(t.partialUpdate=Boolean(e.partialUpdate)),e.apexInfo){if(!Array.isArray(e.apexInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected");t.apexInfo=[];for(var r=0;r>>0,e.signaturesOffset.high>>>0).toNumber(!0):e.signaturesOffset),null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&("number"===typeof e.signaturesSize?n.signaturesSize=t.longs===String?String(e.signaturesSize):e.signaturesSize:n.signaturesSize=t.longs===String?de.Long.prototype.toString.call(e.signaturesSize):t.longs===Number?new de.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0):e.signaturesSize),null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&(n.minorVersion=e.minorVersion),e.partitions&&e.partitions.length){n.partitions=[];for(var o=0;o>>0,e.maxTimestamp.high>>>0).toNumber():e.maxTimestamp),null!=e.dynamicPartitionMetadata&&e.hasOwnProperty("dynamicPartitionMetadata")&&(n.dynamicPartitionMetadata=fe.chromeos_update_engine.DynamicPartitionMetadata.toObject(e.dynamicPartitionMetadata,t)),null!=e.partialUpdate&&e.hasOwnProperty("partialUpdate")&&(n.partialUpdate=e.partialUpdate),e.apexInfo&&e.apexInfo.length){n.apexInfo=[];for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:"";return Object(ye["a"])(this,n),e=t.call(this),e.offset=0,e.contentType=r,e.blob=new Blob([],{type:r}),e.prefixLength=0,e}return Object(Oe["a"])(n,[{key:"readHeader",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r,a,i,o,s,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return n=0,r=function(e){var r=Ne(t,n,e);return n+=e,r},e.next=4,t.slice(0,Ie).arrayBuffer();case 4:if(a=e.sent,i=new TextDecoder,o=a.slice(0,Pe.length),s=i.decode(o),s==Pe){e.next=10;break}throw new Error("MAGIC is not correct, expected: ".concat(Pe," actual: ").concat(s));case 10:return n+=Pe.length,e.next=13,r(_e);case 13:return c=e.sent,e.next=16,r(Ee);case 16:if(l=e.sent,c==ze){e.next=19;break}throw new Error("Unexpected major version number: ".concat(c));case 19:return e.next=21,r(Le);case 21:u=e.sent,this.header=new Be(s,c,l,u);case 23:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"writeUint8Array",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(Object(be["a"])(Object(me["a"])(n.prototype),"writeUint8Array",this).call(this,t),this.blob=new Blob([this.blob,t.buffer],{type:this.contentType}),this.offset=this.blob.size,!(this.offset>=Ie&&0==this.prefixLength)){e.next=9;break}return console.log("Parsing header!"),e.next=7,this.readHeader(this.blob);case 7:this.prefixLength=Ie+this.header.manifest_len+this.header.metadata_signature_len,console.log("Computed metadata length: ".concat(this.prefixLength));case 9:if(!(this.prefixLength>0)){e.next=14;break}if(console.log("".concat(this.offset,"/").concat(this.prefixLength)),!(this.offset>=this.prefixLength)){e.next=14;break}throw this.blob=this.blob.slice(0,this.prefixLength),new Te;case 14:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getData",value:function(){return this.blob}}]),n}(xe["Writer"]),Fe=function(){function e(t){Object(ye["a"])(this,e),t instanceof File?this.zipreader=new xe["ZipReader"](new xe["BlobReader"](t)):t instanceof URL?this.zipreader=new xe["ZipReader"](new xe["HttpReader"](t.href)):this.zipreader=t.reader}return Object(Oe["a"])(e,[{key:"getMetadataLength",value:function(){return Ie+this.header.manifest_len+this.header.metadata_signature_len}},{key:"unzip",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a,i,o;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.zipreader.getEntries();case 2:t=e.sent,n=Object(ge["a"])(t),e.prev=4,n.s();case 6:if((r=n.n()).done){e.next=42;break}if(a=r.value,"payload.bin"!=a.filename){e.next=28;break}return i=new De(""),e.prev=10,e.next=13,a.getData(i);case 13:e.next=22;break;case 15:if(e.prev=15,e.t0=e["catch"](10),!(e.t0 instanceof Te)){e.next=20;break}e.next=22;break;case 20:throw console.log(e.t0),e.t0;case 22:return this.buffer=i.getData(),e.next=25,this.readManifest(this.buffer,i.header);case 25:console.log("AB OTA manifest parsed"),e.next=40;break;case 28:if("META-INF/com/android/metadata"!=a.filename){e.next=35;break}return e.next=31,a.getData(new xe["TextWriter"]);case 31:this.metadata=e.sent,console.log("OTA Package metadata parsed"),e.next=40;break;case 35:if("payload_properties.txt"!=a.filename){e.next=40;break}return e.next=38,a.getData(new xe["TextWriter"]);case 38:this.payload_properties=e.sent,console.log("OTA payload_properties.txt parsed");case 40:e.next=6;break;case 42:e.next=47;break;case 44:e.prev=44,e.t1=e["catch"](4),n.e(e.t1);case 47:return e.prev=47,n.f(),e.finish(47);case 50:if(this.manifest){e.next=64;break}return console.log("Failed to parse AB OTA package, falling back to non-AB"),e.prev=52,o=new ke(this.zipreader),e.next=56,o.init();case 56:o.nonAB=!0,this.manifest=o,e.next=64;break;case 60:return e.prev=60,e.t2=e["catch"](52),alert("Please select a legit OTA package"),e.abrupt("return");case 64:case"end":return e.stop()}}),e,this,[[4,44,47,50],[10,15],[52,60]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"readManifest",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.header=n,r=Ie,e.next=4,t.slice(r,r+n.manifest_len).arrayBuffer();case 4:return a=e.sent,r+=n.manifest_len,this.manifest=he.DeltaArchiveManifest.decode(new Uint8Array(a)),e.next=9,t.slice(r,r+n.metadata_signature_len).arrayBuffer();case 9:i=e.sent,r+=n.metadata_signature_len,this.metadata_signature=he.Signatures.decode(new Uint8Array(i)),this.manifest.nonAB=!1;case 13:case"end":return e.stop()}}),e,this)})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"parseMetadata",value:function(){var e,t=Object(ge["a"])(Ae);try{for(t.s();!(e=t.n()).done;){var n=e.value,r=new RegExp(n.prefix+".+");this.metadata.match(r)?this[n.key]=Ve(this.metadata.match(r)[0],n.prefix):this[n.key]=""}}catch(a){t.e(a)}finally{t.f()}}},{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.unzip();case 2:this.parseMetadata();case 3:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}]),e}(),Re=function(e){Object(je["a"])(n,e);var t=Object(ve["a"])(n);function n(){return Object(ye["a"])(this,n),t.apply(this,arguments)}return Object(Oe["a"])(n,[{key:"getWithDefault",value:function(e){return this.has(e)?this.get(e):e}}]),n}(Object(we["a"])(Map)),Me=Object(Oe["a"])((function e(){Object(ye["a"])(this,e);var t=he.InstallOperation.Type;this.mapType=new Re;for(var n=0,r=Object.keys(t);n1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:16,r="",a=0;a3&&void 0!==arguments[3]?arguments[3]:15;Object(ye["a"])(this,e),this.statisticData=t,this.trimmedData=at(t,a),this.title=n,this.unit=r,this.maximumEntries=a}return Object(Oe["a"])(e,[{key:"listData",value:function(){var e,t="",n=Object(ge["a"])(this.statisticData);try{for(n.s();!(e=n.n()).done;){var r=Object(nt["a"])(e.value,2),a=r[0],i=r[1];t+=a+" : "+i.toString()+" Blocks\n"}}catch(o){n.e(o)}finally{n.f()}return t}},{key:"getEchartsOption",value:function(){var e={};return e.title={text:this.title,left:"center"},e.tooltip={trigger:"item",formatter:"{a}
{b} : {c} "+this.unit+" ({d}%)"},e.legend={orient:"horizontal",left:"top",top:"10%",data:Array.from(this.trimmedData.keys())},e.series=[{name:this.title,type:"pie",radius:"55%",center:["50%","60%"],data:Array.from(this.trimmedData).map((function(e){return{value:e[1],name:e[0]}})),emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],e}}]),e}();function at(e,t){if(e.size<=t)return e;for(var n=new Map,r=0;ri&&(i=u,o=l)}}catch(m){s.e(m)}finally{s.f()}n.set(o,i)}var p,d=0,f=Object(ge["a"])(e);try{for(f.s();!(p=f.n()).done;){var h=Object(nt["a"])(p.value,2),g=h[0],b=h[1];n.get(g)||(d+=b)}}catch(m){f.e(m)}finally{f.f()}return n.set("other",d),n}var it=function(){function e(t){Object(ye["a"])(this,e),t instanceof File?this.build=new xe["ZipReader"](new xe["BlobReader"](t)):this.build=new xe["ZipReader"](new xe["HttpReader"](t.href)),this.mapFiles=new Map,this.maps=new Map}return Object(Oe["a"])(e,[{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a=this;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.build.getEntries();case 2:t=e.sent,n=/IMAGES\/[a-z_]*\.map/g,r=/[\w_]+(?=\.map)/g,t.forEach((function(e){e.filename.match(n)&&a.mapFiles.set(e.filename.match(r)[0],e)}));case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"add",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,c,l,u,p,d,f,h,g;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:for(r=[],a=/\d+/g,i=/\d+\-\d+/g,o=0;o");if(!this.mapFiles.get(t)){e.next=14;break}return e.next=7,this.mapFiles.get(t).getData(new xe["TextWriter"]);case 7:s=e.sent,c=s.split("\n"),l=Object(ge["a"])(c);try{for(l.s();!(u=l.n()).done;)for(p=u.value,d=p.split(" "),f=1;f2&&void 0!==s[2]?s[2]:4096,a=s.length>3&&void 0!==s[3]?s[3]:null,e.t0=t,e.next="blocks"===e.t0?5:"payload"===e.t0?8:"COWmerge"===e.t0?11:"filenames"===e.t0?14:"extensions"===e.t0?21:"partitions"===e.t0?28:31;break;case 5:return i=lt(n),o=new rt(i,"Operated blocks in target build","blocks"),e.abrupt("break",31);case 8:return i=ft(n),o=new rt(i,"Payload disk usage","bytes"),e.abrupt("break",31);case 11:return i=dt(n,r),o=new rt(i,"COW merge operations","blocks"),e.abrupt("break",31);case 14:if(null!=a){e.next=16;break}throw new Error("Target file is required for filenames analysis");case 16:return e.next=18,bt(n,r,a);case 18:return i=e.sent,o=new rt(i,"Size of operated filenames","bytes"),e.abrupt("break",31);case 21:if(null!=a){e.next=23;break}throw new Error("Target file is required for filenames analysis");case 23:return e.next=25,ht(n,r,a);case 25:return i=e.sent,o=new rt(i,"Size of operated extensions","bytes"),e.abrupt("break",31);case 28:return i=pt(n),o=new rt(i,"Partition payload size","bytes"),e.abrupt("break",31);case 31:if(!o){e.next=35;break}return e.abrupt("return",o);case 35:throw"Please double check if this is a proper AB OTA package.";case 36:case"end":return e.stop()}}),e)}))),yt.apply(this,arguments)}function jt(e){if(!e)return 0;var t=function(e,t){return e+t.numBlocks};return e.reduce(t,0)}function vt(e){var t=function(e,t){return e+"("+t.startBlock+","+t.numBlocks+")"};return e.reduce(t,"")}function wt(e,t,n){for(var r=jt(t),a=new Map,i=0;i1?t[t.length-1]:"unknown"===t[0]?"unknown":"<"==e[0]&&e.endsWith(">")?e:"no-extension"}var kt=Object(r["m"])({props:{operation:{type:Object,required:!0},mapType:{type:Re,required:!0}},data:function(){return{srcTotalBlocks:0,srcBlocks:"",dstTotalBlocks:0,dstBlocks:""}},mounted:function(){this.operation.srcExtents&&(this.srcTotalBlocks=jt(this.operation.srcExtents),this.srcBlocks=vt(this.operation.srcExtents)),this.operation.dstExtents&&(this.dstTotalBlocks=jt(this.operation.dstExtents),this.dstBlocks=vt(this.operation.dstExtents))}});n("8edb");kt.render=tt,kt.__scopeId="data-v-44174082";var St=kt,Pt=Object(r["m"])({components:{OperationDetail:St},props:{partition:{type:he.PartitionUpdate,required:!0},dynamicPartitionList:{type:Array,required:!0}},data:function(){return{showOPs:!1,showInfo:!1,opType:new Me}},methods:{toggle:function(e){this[e]=!this[e]},octToHex:Ue},computed:{readableTimestamp:function(){var e=parseInt(this.partition.version);return isNaN(e)?"":new Date(1e3*e).toString()},isDynamicPartition:function(){return this.dynamicPartitionList.indexOf(this.partition.partitionName)>=0},isFECEnabled:function(){var e;return(null===(e=this.partition.fecExtent)||void 0===e?void 0:e.numBlocks)>0},isHashtreeEnabled:function(){var e;return(null===(e=this.partition.hashTreeExtent)||void 0===e?void 0:e.numBlocks)>0}}});n("c622");Pt.render=se,Pt.__scopeId="data-v-21e569e9";var _t=Pt,Et=(n("498a"),Object(r["Z"])("data-v-4b9027e2"));Object(r["D"])("data-v-4b9027e2");var Lt=Object(r["l"])("h3",null,"Basic infos",-1),It={class:"align"},zt=Object(r["l"])("strong",null," File name ",-1),At=Object(r["l"])("strong",null," File size ",-1),Tt={class:"align"},Bt={class:"wrap"},Nt={key:2},Ct={class:"align"},Dt=Object(r["l"])("strong",null," Incremental ",-1),Ft={key:0},Rt={key:1},Mt=Object(r["l"])("strong",null," Partial ",-1),Ht={key:0},Ut={key:1},Vt=Object(r["l"])("strong",null," A/B update ",-1),Wt={key:0},Zt={key:1},Jt=Object(r["l"])("strong",null," VAB ",-1),Xt={key:0},qt={key:1},Gt=Object(r["l"])("strong",null," VABC ",-1),$t={key:0},Yt={key:1},Kt=Object(r["l"])("strong",null," Wipes Data ",-1),Qt={key:0},en={key:1},tn={key:0},nn=Object(r["l"])("strong",null," Total Dynamic Partition Size ",-1),rn={key:1},an=Object(r["l"])("strong",null," Total VABC COW Size ",-1),on={key:2},sn=Object(r["l"])("strong",null," VABC Compression Param ",-1),cn={key:3},ln=Object(r["l"])("strong",null," Security Patch Level ",-1);Object(r["B"])();var un=Et((function(e,t,n,a,i,o){return Object(r["A"])(),Object(r["i"])(r["a"],null,[Lt,e.zipFile?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:0},e.$attrs),[Object(r["l"])("ul",It,[Object(r["l"])("li",null,[zt,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileName()),1)]),Object(r["l"])("li",null,[At,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileSize())+" Bytes",1)])])],16)):Object(r["j"])("",!0),e.payload&&e.payload.metadata?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:1},e.$attrs),[Object(r["l"])("ul",Tt,[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.otaMetadata,(function(t){return Object(r["A"])(),Object(r["i"])("li",{key:t.name},[Object(r["l"])("strong",null,Object(r["N"])(t.name.trim()+" "),1),Object(r["l"])("p",Bt,Object(r["N"])(String(e.payload[t.key]).trim()),1)])})),128))])],16)):Object(r["j"])("",!0),e.payload&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])("div",Nt,[Object(r["l"])("ul",Ct,[Object(r["l"])("li",null,[Dt,e.payload.preBuild?(Object(r["A"])(),Object(r["i"])("span",Ft," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Rt," ❌ "))]),Object(r["l"])("li",null,[Mt,e.payload.manifest.partialUpdate?(Object(r["A"])(),Object(r["i"])("span",Ht," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Ut," ❌ "))]),Object(r["l"])("li",null,[Vt,e.payload.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",Zt," ❌ ")):(Object(r["A"])(),Object(r["i"])("span",Wt," ✅ "))]),Object(r["l"])("li",null,[Jt,e.payload.manifest.dynamicPartitionMetadata.snapshotEnabled?(Object(r["A"])(),Object(r["i"])("span",Xt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",qt," ❌ "))]),Object(r["l"])("li",null,[Gt,e.payload.manifest.dynamicPartitionMetadata.vabcEnabled?(Object(r["A"])(),Object(r["i"])("span",$t," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Yt," ❌ "))]),Object(r["l"])("li",null,[Kt,e.isDataWipePackage?(Object(r["A"])(),Object(r["i"])("span",Qt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",en," ❌ "))]),e.totalDynamicPartitionSize?(Object(r["A"])(),Object(r["i"])("li",tn,[nn,Object(r["k"])(" "+Object(r["N"])(e.totalDynamicPartitionSize),1)])):Object(r["j"])("",!0),e.totalCOWSize?(Object(r["A"])(),Object(r["i"])("li",rn,[an,Object(r["k"])(" "+Object(r["N"])(e.totalCOWSize),1)])):Object(r["j"])("",!0),e.vabcCompressionParam?(Object(r["A"])(),Object(r["i"])("li",on,[sn,Object(r["k"])(" "+Object(r["N"])(e.vabcCompressionParam),1)])):Object(r["j"])("",!0),e.securityPatchLevel?(Object(r["A"])(),Object(r["i"])("li",cn,[ln,Object(r["k"])(" "+Object(r["N"])(e.securityPatchLevel),1)])):Object(r["j"])("",!0)])])):Object(r["j"])("",!0)],64)})),pn=(n("caad"),n("2532"),n("4de4"),n("6062"),n("2ca0"),function(){function e(t){Object(ye["a"])(this,e),this.file=t,this.reader=hn(t)}return Object(Oe["a"])(e,[{key:"getFileName",value:function(){return gn(this.file)}},{key:"getFileSize",value:function(){return this.file instanceof File?this.file.size:0}}]),e}());function dn(e,t){return fn.apply(this,arguments)}function fn(){return fn=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return r=t,a=new xe["ZipWriter"](new xe["BlobWriter"]("application/zip")),e.next=4,r.getEntries();case 4:i=e.sent,o=Object(ge["a"])(i.filter((function(e){return!!e&&n(e)}))),e.prev=6,o.s();case 8:if((s=o.n()).done){e.next=18;break}return c=s.value,l=new xe["BlobWriter"],e.next=13,c.getData(l);case 13:u=e.sent,console.log("Adding ".concat(c.filename,", ").concat(u.size)),a.add(c.filename,new xe["BlobReader"](l.getData()),{level:0});case 16:e.next=8;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e["catch"](6),o.e(e.t0);case 23:return e.prev=23,o.f(),e.finish(23);case 26:return e.abrupt("return",a);case 27:case"end":return e.stop()}}),e,null,[[6,20,23,26]])}))),fn.apply(this,arguments)}function hn(e){return e instanceof File?new xe["ZipReader"](new xe["BlobReader"](e)):new xe["ZipReader"](new xe["HttpReader"](e.href))}function gn(e){return e instanceof File?e.name:e.pathname}function bn(e){return mn.apply(this,arguments)}function mn(){return mn=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,dn(hn(t),(function(e){return e.filename.startsWith("META/")||e.filename.endsWith(".map")||e.filename.endsWith(".prop")||"prop.default"==e.filename}));case 2:return n=e.sent,e.next=5,n.close();case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)}))),mn.apply(this,arguments)}function On(e){return yn.apply(this,arguments)}function yn(){return yn=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,dn(t.zipreader,(function(e){return"payload.bin"!=e.filename}));case 2:return n=e.sent,e.next=5,n.add("payload.bin",new xe["BlobReader"](t.buffer.slice(0,t.getMetadataLength())),{level:0});case 5:return e.next=7,n.close();case 7:return r=e.sent,e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)}))),yn.apply(this,arguments)}function jn(e,t,n){var r=window.URL.createObjectURL(e);t.href=r,t.download=n,t.click(),window.URL.revokeObjectURL(r)}function vn(e,t){return e.endsWith(t)?e:e+t}var wn=Object(r["m"])({props:{zipFile:{type:pn,required:!0},payload:{type:Fe,required:!0}},data:function(){return{MetadataFormat:Ae}},computed:{isDataWipePackage:function(){return this.payload.payload_properties.includes("POWERWASH=1")},otaMetadata:function(){var e=this;return Ae.filter((function(t){return String(e.payload[t.key]).length>0}))},totalCOWSize:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.partitions.map((function(e){return e.estimateCowSize||0}));return n?n.reduce((function(e,t){return e+t})):0},vabcCompressionParam:function(){var e,t,n;return(null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.vabcCompressionParam)||""},securityPatchLevel:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.securityPatchLevel;return n||""},totalDynamicPartitionSize:function(){var e,t,n,r,a=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.groups;if(!a)return 0;var i=new Set(a.flatMap((function(e){return e.partitionNames}))),o=(null===(r=this.payload.manifest)||void 0===r?void 0:r.partitions.filter((function(e){return i.has(e.partitionName)})))||[];return o.length<=0?0:o.map((function(e){var t;return(null===(t=e.newPartitionInfo)||void 0===t?void 0:t.size)||0})).reduce((function(e,t){return e+t}))}}});n("828c");wn.render=un,wn.__scopeId="data-v-4b9027e2";var xn=wn,kn=Object(r["m"])({components:{PartitionDetail:_t,BasicInfo:xn},props:{zipFile:{type:pn,default:null},payload:{type:Fe,default:null}},methods:{octToHex:Ue,exportOTAPackage:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,On(e.payload);case 2:n=t.sent,r=e.$refs["download"],jn(n,r,"trimmed_"+vn(e.zipFile.getFileName(),".zip"));case 5:case"end":return t.stop()}}),t)})))()}},computed:{dynamicPartitions:function(){var e,t,n;return(null===(e=this.payload.manifest)||void 0===e||null===(t=e.dynamicPartitionMetadata)||void 0===t||null===(n=t.groups)||void 0===n?void 0:n.flatMap((function(e){return e.partitionNames||[]})))||[]}}});n("dc41");kn.render=A,kn.__scopeId="data-v-05db67f2";var Sn=kn,Pn=Object(r["Z"])("data-v-b6f71732");Object(r["D"])("data-v-b6f71732");var _n=Object(r["k"])("Export Target File Metadata"),En={ref:"download"},Ln={key:1},In=Object(r["k"])(" Analyse Installed Blocks (in target build) "),zn=Object(r["k"])(" Analyse Payload Composition "),An=Object(r["k"])(" Analyse Partition Payload Composition "),Tn=Object(r["k"])(" Analyse COW Merge Operations "),Bn={key:0,class:"tooltiptext"},Nn=Object(r["k"])(" Analyse Filenames "),Cn=Object(r["k"])(" Analyse File Extensions ");Object(r["B"])();var Dn=Pn((function(e,t,n,a,i,o){var s=Object(r["I"])("v-btn"),c=Object(r["I"])("PartialCheckbox"),l=Object(r["I"])("PieChart"),u=Object(r["I"])("v-divider"),p=Object(r["I"])("v-col"),d=Object(r["I"])("v-row"),f=Object(r["I"])("BaseFile");return Object(r["A"])(),Object(r["i"])(r["a"],null,[e.targetFile?(Object(r["A"])(),Object(r["i"])(s,{key:0,block:"",class:"md-6",onClick:e.exportTargetFileMetadata},{default:Pn((function(){return[_n]})),_:1},8,["onClick"])):Object(r["j"])("",!0),Object(r["l"])("a",En,null,512),Object(r["l"])(c,{modelValue:e.partitionInclude,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.partitionInclude=t}),labels:e.updatePartitions},null,8,["modelValue","labels"]),e.echartsData?(Object(r["A"])(),Object(r["i"])("div",Ln,[Object(r["l"])(l,{echartsData:e.echartsData,onClick:e.piechartClick},null,8,["echartsData","onClick"])])):Object(r["j"])("",!0),Object(r["l"])(u),Object(r["l"])(d,null,{default:Pn((function(){return[Object(r["l"])(p,{cols:"12",md:"4"},{default:Pn((function(){return[Object(r["l"])(s,{block:"",onClick:t[2]||(t[2]=function(t){return e.updateChart("blocks")})},{default:Pn((function(){return[In]})),_:1})]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:Pn((function(){return[Object(r["l"])(s,{block:"",onClick:t[3]||(t[3]=function(t){return e.updateChart("payload")})},{default:Pn((function(){return[zn]})),_:1})]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:Pn((function(){return[Object(r["l"])(s,{block:"",onClick:t[4]||(t[4]=function(t){return e.updateChart("partitions")})},{default:Pn((function(){return[An]})),_:1})]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:Pn((function(){return[Object(r["l"])(p,{cols:"12",md:"4",class:"tooltip"},{default:Pn((function(){return[Object(r["l"])(s,{disabled:e.manifest.nonAB||!e.manifest.dynamicPartitionMetadata.vabcEnabled,title:"Only available for VABC update",block:"",onClick:t[5]||(t[5]=function(t){return e.updateChart("COWmerge")})},{default:Pn((function(){return[Tn]})),_:1},8,["disabled"]),e.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",Bn," This function is only supported in A/B OTA ")):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:Pn((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[6]||(t[6]=function(t){return e.updateChart("filenames")})},{default:Pn((function(){return[Nn]})),_:1},8,["disabled"])]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:Pn((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[7]||(t[7]=function(t){return e.updateChart("extensions")})},{default:Pn((function(){return[Cn]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:Pn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"}),Object(r["l"])(p,{cols:"12",md:"6"},{default:Pn((function(){return[e.demo?Object(r["j"])("",!0):(Object(r["A"])(),Object(r["i"])(f,{key:0,label:"Drag and drop or Select The target Android build",onFileSelect:e.selectBuild},null,8,["onFileSelect"]))]})),_:1})]})),_:1})],64)})),Fn=n("bc3a"),Rn=n.n(Fn),Mn=Object(r["Z"])("data-v-533f2336");Object(r["D"])("data-v-533f2336");var Hn={key:0};Object(r["B"])();var Un=Mn((function(e,t,n,a,i,o){var s=Object(r["I"])("v-btn"),c=Object(r["I"])("v-col"),l=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(r["a"],null,[Object(r["l"])(s,{block:"",type:"button",class:"my-5",onClick:e.revertAllSelection},{default:Mn((function(){return[Object(r["k"])(Object(r["N"])(e.selectAllText[e.selectAll]),1)]})),_:1},8,["onClick"]),Object(r["l"])(l,{class:"mb-5"},{default:Mn((function(){return[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.labels,(function(n){return Object(r["A"])(),Object(r["i"])(c,{key:n,cols:"12",md:"4"},{default:Mn((function(){return[Object(r["l"])("input",{type:"checkbox",value:n,checked:e.modelValue.get(n),onChange:t[1]||(t[1]=function(t){return e.updateSelected(t.target.value)})},null,40,["value","checked"]),n?(Object(r["A"])(),Object(r["i"])("label",Hn,Object(r["N"])(n),1)):Object(r["j"])("",!0)]})),_:2},1024)})),128))]})),_:1})],64)})),Vn=Object(r["m"])({props:{labels:{type:Array,default:new Array},modelValue:{type:Map,default:new Map}},data:function(){return{selectAll:1,selectAllText:["Select All","Unselect All"]}},mounted:function(){var e,t=Object(ge["a"])(this.labels);try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,!0)}}catch(r){t.e(r)}finally{t.f()}},methods:{updateSelected:function(e){this.modelValue.set(e,!this.modelValue.get(e)),this.$emit("update:modelValue",this.modelValue)},revertAllSelection:function(){this.selectAll=1-this.selectAll;var e,t=Object(ge["a"])(this.modelValue.keys());try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,Boolean(this.selectAll))}}catch(r){t.e(r)}finally{t.f()}}}});n("a75a");Vn.render=Un,Vn.__scopeId="data-v-533f2336";var Wn=Vn,Zn=n("2909"),Jn="undefined"===typeof arguments?void 0:arguments,Xn=Object(r["Z"])("data-v-5d1cb486"),qn=Xn((function(e,t,n,a,i,o){var s=Object(r["I"])("v-chart");return Object(r["A"])(),Object(r["i"])(s,{class:"chart",option:o.getEchartsOption,onClick:t[1]||(t[1]=function(t){return e.$emit.apply(e,["click"].concat(Object(Zn["a"])(Jn)))})},null,8,["option"])})),Gn=n("ade3"),$n=n("22b4"),Yn=n("f95e"),Kn=n("49bb"),Qn=n("9394"),er=n("2da7"),tr=n("ff32"),nr=n("5c7f");Object($n["a"])([Yn["a"],Kn["a"],Qn["a"],er["a"],tr["a"]]);var rr={components:{VChart:nr["b"]},provide:Object(Gn["a"])({},nr["a"],"dark"),props:{echartsData:{type:rt,required:!0}},computed:{getEchartsOption:function(){return this.echartsData.getEchartsOption()}}};n("47e0");rr.render=qn,rr.__scopeId="data-v-5d1cb486";var ar=rr,ir=Object(r["m"])({components:{PartialCheckbox:Wn,PieChart:ar,BaseFile:x},props:{manifest:{type:he.DeltaArchiveManifest,default:function(){return[]}},demo:{type:Boolean,default:!1}},data:function(){return{partitionInclude:new Map,echartsData:null,listData:"",targetFile:null}},computed:{updatePartitions:function(){return this.manifest.partitions.map((function(e){return e.partitionName}))}},mounted:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(!e.demo){t.next=11;break}return t.prev=1,t.next=4,Rn.a.get("./files/cf_x86_target_file_demo.zip",{responseType:"blob"});case 4:n=t.sent,e.targetFile=new File([n.data],"target_demo.zip"),t.next=11;break;case 8:t.prev=8,t.t0=t["catch"](1),console.log("Please put a proper example target file in /public/files/");case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))()},methods:{piechartClick:function(e){console.log(e)},updateChart:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return r=t.manifest.partitions.filter((function(e){return t.partitionInclude.get(e.partitionName)})),n.prev=1,n.next=4,Ot(e,r,t.manifest.blockSize,t.targetFile);case 4:t.echartsData=n.sent,n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Cannot be processed for the following issue: ".concat(n.t0));case 10:case"end":return n.stop()}}),n,null,[[1,7]])})))()},selectBuild:function(e){this.targetFile=e},exportTargetFileMetadata:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,bn(e.targetFile);case 2:n=t.sent,r=e.$refs["download"],jn(n,r,"trimmed_"+vn(gn(e.targetFile),".zip"));case 5:case"end":return t.stop()}}),t)})))()}}});n("9120");ir.render=Dn,ir.__scopeId="data-v-b6f71732";var or=ir,sr=Object(r["m"])({components:{BaseFile:x,PayloadDetail:Sn,PayloadComposition:or},data:function(){return{zipFile:null,payload:null}},methods:{unpackOTA:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return t.zipFile=new pn(e),n.prev=1,r=new Fe(t.zipFile),n.next=5,r.init();case 5:t.payload=r,n.next=12;break;case 8:n.prev=8,n.t0=n["catch"](1),alert("Please check if this is a correct OTA package (.zip). ".concat(n.t0)),console.log(n.t0);case 12:case"end":return n.stop()}}),n,null,[[1,8]])})))()}}});sr.render=h;var cr=sr;function lr(e,t,n,a,i,o){var s=Object(r["I"])("PayloadDetail"),c=Object(r["I"])("v-col"),l=Object(r["I"])("v-divider"),u=Object(r["I"])("PayloadComposition"),p=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(p,null,{default:Object(r["X"])((function(){return[Object(r["l"])(c,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload?(Object(r["A"])(),Object(r["i"])(s,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(l,{vertical:""}),Object(r["l"])(c,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])(u,{key:0,manifest:e.payload.manifest,demo:!0},null,8,["manifest"])):Object(r["j"])("",!0)]})),_:1})]})),_:1})}var ur=Object(r["m"])({components:{PayloadDetail:Sn,PayloadComposition:or},data:function(){return{zipFile:null,payload:null}},created:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,Rn.a.get("./files/cf_x86_demo.zip",{responseType:"blob"});case 3:return n=t.sent,e.zipFile=new pn(new File([n.data],"ota_demo.zip")),e.payload=new Fe(e.zipFile),t.next=8,e.payload.init();case 8:t.next=13;break;case 10:t.prev=10,t.t0=t["catch"](0),console.log("Please put a proper example OTA in /public/files/");case 13:case"end":return t.stop()}}),t,null,[[0,10]])})))()}});ur.render=lr;var pr=ur,dr={class:"about"},fr=Object(r["l"])("p",null,"A web based tool to inspect Android OTA packages.",-1);function hr(e,t){return Object(r["A"])(),Object(r["i"])("div",dr,[fr])}const gr={};gr.render=hr;var br=gr,mr=Object(r["Z"])("data-v-50c6f348");Object(r["D"])("data-v-50c6f348");var Or=Object(r["l"])("h1",null,"Not Found!",-1),yr=Object(r["l"])("p",null,[Object(r["l"])("a",{href:"/"},"Go home?")],-1);Object(r["B"])();var jr=mr((function(e,t){var n=Object(r["I"])("center");return Object(r["A"])(),Object(r["i"])(n,null,{default:mr((function(){return[Or,yr]})),_:1})}));n("8e71");const vr={};vr.render=jr,vr.__scopeId="data-v-50c6f348";var wr=vr,xr=[{path:"/",name:"Analysis",component:cr,meta:{title:"Analyse OTA package - from AOSP"}},{path:"/demo",name:"Demo",component:pr},{path:"/about",name:"About",component:br},{path:"/:catchAll(.*)",name:"Not Found",component:wr}],kr=Object(d["a"])({history:Object(d["b"])("/analyseOTA/"),routes:xr});kr.beforeEach((function(e,t,n){var r=e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.title})),a=(e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})),t.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})));r?document.title=r.meta.title:a&&(document.title=a.meta.title),Array.from(document.querySelectorAll("[data-vue-router-controlled]")).map((function(e){return e.parentNode.removeChild(e)})),n()}));var Sr=kr,Pr=n("5502"),_r=Object(Pr["a"])({state:{},mutations:{},actions:{},modules:{}}),Er=Object(r["h"])(p);Er.use(Sr),Er.use(_r),Er.use(s),Er.mount("#app")},d978:function(e,t,n){},dc41:function(e,t,n){"use strict";n("027d")}}); +//# sourceMappingURL=app.1544ce76.js.map \ No newline at end of file diff --git a/analyseOTA/js/app.1544ce76.js.map b/analyseOTA/js/app.1544ce76.js.map new file mode 100644 index 0000000..bbe4cbd --- /dev/null +++ b/analyseOTA/js/app.1544ce76.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?1825","webpack:///./src/components/PieChart.vue?3f25","webpack:///./src/components/BaseFile.vue?5b74","webpack:///./src/components/BasicInfo.vue?c9d8","webpack:///./src/views/NotFound.vue?18b8","webpack:///./src/components/OperationDetail.vue?7823","webpack:///./src/components/PayloadComposition.vue?be7e","webpack:///./src/components/PartialCheckbox.vue?cce7","webpack:///./src/components/PartitionDetail.vue?e22f","webpack:///./src/plugins/vuetify.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?6697","webpack:///./src/views/PackageAnalysis.vue","webpack:///./src/components/BaseFile.vue","webpack:///./src/components/BaseFile.vue?5af0","webpack:///./src/components/BaseFile.vue?408d","webpack:///./src/components/PayloadDetail.vue","webpack:///./src/components/PartitionDetail.vue","webpack:///./src/services/update_metadata_pb.js","webpack:///./src/services/payload_nonab.ts","webpack:///./src/services/payload.ts","webpack:///./src/components/OperationDetail.vue","webpack:///./src/services/echarts_data.ts","webpack:///./src/services/map_parser.ts","webpack:///./src/services/payload_composition.ts","webpack:///./src/components/OperationDetail.vue?0239","webpack:///./src/components/OperationDetail.vue?19cd","webpack:///./src/components/PartitionDetail.vue?7d27","webpack:///./src/components/PartitionDetail.vue?b40d","webpack:///./src/components/BasicInfo.vue","webpack:///./src/services/trim_zip.ts","webpack:///./src/components/BasicInfo.vue?bb39","webpack:///./src/components/BasicInfo.vue?e053","webpack:///./src/components/PayloadDetail.vue?cdd8","webpack:///./src/components/PayloadDetail.vue?a20c","webpack:///./src/components/PayloadComposition.vue","webpack:///./src/components/PartialCheckbox.vue","webpack:///./src/components/PartialCheckbox.vue?fbe3","webpack:///./src/components/PartialCheckbox.vue?59db","webpack:///./src/components/PieChart.vue","webpack:///./src/components/PieChart.vue?1278","webpack:///./src/components/PayloadComposition.vue?3e04","webpack:///./src/components/PayloadComposition.vue?d59c","webpack:///./src/views/PackageAnalysis.vue?3fdf","webpack:///./src/views/PackageAnalysis.vue?2d24","webpack:///./src/views/Demo.vue","webpack:///./src/views/Demo.vue?9616","webpack:///./src/views/Demo.vue?e633","webpack:///./src/views/About.vue","webpack:///./src/views/About.vue?aa81","webpack:///./src/views/NotFound.vue","webpack:///./src/views/NotFound.vue?2812","webpack:///./src/router/index.ts","webpack:///./src/store/index.ts","webpack:///./src/main.ts","webpack:///./src/components/PayloadDetail.vue?0b74"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","components","directives","theme","defaultTheme","rounded","color","links","link","to","class","fluid","render","style","cols","md","label","unpackOTA","zipFile","payload","vertical","manifest","dragover","dragleave","drop","fileName","ref","type","accept","handleFileChange","placeholder","url","urlKeyup","props","String","default","emits","computed","parsedURL","URL","this","methods","event","currentTarget","target","files","selectedFile","$emit","preventDefault","classList","contains","add","remove","dataTransfer","console","log","error","__scopeId","exportOTAPackage","partitions","partition","partitionName","elevation","hover","shaped","dynamicPartitionList","dynamicPartitions","metadata_signature","nonAB","octToHex","signatures","oldPartitionInfo","isDynamicPartition","isFECEnabled","isHashtreeEnabled","estimateCowSize","postinstallPath","toggle","showInfo","size","hash","newPartitionInfo","version","readableTimestamp","showOPs","operations","operation","dataSha256Hash","mapType","opType","$Reader","$protobuf","$Writer","$util","$root","chromeos_update_engine","Extent","properties","keys","startBlock","Long","fromBits","numBlocks","encode","message","writer","uint32","uint64","encodeDelimited","ldelim","decode","reader","end","undefined","len","pos","tag","skipType","decodeDelimited","verify","isInteger","low","high","fromObject","fromValue","unsigned","parseInt","LongBits","toNumber","toObject","options","defaults","long","longs","toString","Number","toJSON","constructor","toJSONOptions","Signatures","emptyArray","Signature","fork","Array","isArray","TypeError","arrays","newBuffer","unpaddedSignatureSize","bytes","fixed32","isString","base64","PartitionInfo","InstallOperation","srcExtents","dstExtents","dataOffset","dataLength","srcLength","dstLength","srcSha256Hash","int32","ProtocolError","instance","enums","Type","valuesById","values","CowMergeOperation","srcExtent","dstExtent","srcOffset","PartitionUpdate","newPartitionSignature","mergeOperations","runPostinstall","filesystemType","postinstallOptional","hashTreeDataExtent","hashTreeExtent","hashTreeAlgorithm","hashTreeSalt","fecDataExtent","fecExtent","fecRoots","string","bool","Boolean","DynamicPartitionGroup","partitionNames","DynamicPartitionMetadata","groups","snapshotEnabled","vabcEnabled","vabcCompressionParam","cowVersion","ApexInfo","packageName","isCompressed","decompressedSize","int64","ApexMetadata","apexInfo","DeltaArchiveManifest","blockSize","signaturesOffset","signaturesSize","minorVersion","maxTimestamp","dynamicPartitionMetadata","partialUpdate","securityPatchLevel","packedFile","Blocksize","regexName","getEntries","entries","entry","filename","match","newPartition","getData","rawText","parseTransferList","lines","split","totalBlocks","entryStashed","maxStashed","Uint8Array","sizeNewData","newDataSize","line","op","elements","reduce","parseRange","RegExp","uncompressedSize","extents","rangeset","regexRange","extent","_MAGIC","_VERSION_SIZE","_MANIFEST_LEN_SIZE","_METADATA_SIGNATURE_LEN_SIZE","_PAYLOAD_HEADER_SIZE","_BRILLO_MAJOR_PAYLOAD_VERSION","MetadataFormat","prefix","Error","magic","manifest_len","metadata_signature_len","readIntAt","buffer","position","DataView","arrayBuffer","view","getBigUint64","offset","a","BigInt","getUint32","b","bigNumber","getUint16","contentType","blob","Blob","prefixLength","cursor","readInt","ret","decoder","TextDecoder","magicBytes","header_version","header","array","readHeader","file","File","zipreader","href","readManifest","metadata","payload_properties","init","alert","manifestBlob","signatureBlob","formatter","regex","trimEntry","unzip","parseMetadata","has","Map","types","set","bufferArray","space","maxLine","hex_table","hex","toUpperCase","getWithDefault","srcTotalBlocks","srcBlocks","dstTotalBlocks","dstBlocks","statisticData","title","unit","maximumEntries","trimmedData","trimMap","table","option","text","left","tooltip","trigger","legend","orient","top","from","series","radius","center","map","pair","emphasis","itemStyle","shadowBlur","shadowOffsetX","shadowColor","new_map","curr","currKey","restTotal","targetFile","build","mapFiles","maps","regexPath","forEach","totalLength","regexNumber","mapText","fileEntries","right","InsertMap","names","ext","queryMap","addNumberToMap","operatedBlockStatistics","operatedBlocks","operationType","partitionPayloadSize","partitionPayloadSizeStatistics","partitionStats","mergeOperationStatistics","Math","ceil","operatedPayloadStatistics","operatedFileExtensionsStatistics","operatedFilenamesStatistics","filenameStats","fileExtenstionStats","name2Extension","operatedFilenames","buildMap","operatedFileNames","query","extentDataLength","distributeFilenames","analysePartitions","metrics","statisticsData","echartsData","exts","accumulator","total","displayBlocks","filenames","distributedLengths","round","endsWith","required","mounted","OperationDetail","unixTimestamp","isNaN","Date","indexOf","$attrs","getFileName","getFileSize","otaMetadata","trim","preBuild","isDataWipePackage","totalDynamicPartitionSize","totalCOWSize","getZipReader","trimZip","zip","filter","blobWriter","level","pathname","trimTargetFiles","startsWith","close","trimOTAPackage","getMetadataLength","downloadFile","downloadNode","createObjectURL","download","click","revokeObjectURL","ensureSuffix","str","suffix","includes","cowSizes","spl","dynamicPartitionNamess","Set","flatMap","g","acc","cur","PartitionDetail","BasicInfo","$refs","block","exportTargetFileMetadata","partitionInclude","labels","updatePartitions","piechartClick","updateChart","disabled","demo","selectBuild","revertAllSelection","selectAllText","selectAll","checked","modelValue","updateSelected","$event","newSelect","getEchartsOption","VChart","provide","PartialCheckbox","PieChart","BaseFile","listData","responseType","param","partitionSelected","PayloadDetail","PayloadComposition","created","script","routes","path","component","PackageAnalysis","meta","Demo","About","NotFound","router","history","beforeEach","next","nearestWithTitle","matched","reverse","find","previousNearestWithMeta","metaTags","document","querySelectorAll","el","parentNode","removeChild","state","mutations","actions","app","App","use","store","vuetify","mount"],"mappings":"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","file":"js/app.1544ce76.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/analyseOTA/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BasicInfo.vue?vue&type=style&index=0&id=4b9027e2&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadComposition.vue?vue&type=style&index=0&id=b6f71732&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartitionDetail.vue?vue&type=style&index=0&id=21e569e9&scoped=true&lang=css\"","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport 'vuetify/lib/styles/main.sass'\nimport { createVuetify } from 'vuetify'\nimport * as components from 'vuetify/lib/components'\nimport * as directives from 'vuetify/lib/directives'\n\nexport default createVuetify({\n components,\n directives,\n theme: {\n defaultTheme: 'dark'\n }\n})\n","\n\n\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=ee415730\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n label: {\n type: String,\n default: ''\n }\n },\n emits: {\n 'file-select': null\n },\n data() {\n return {\n fileName: '',\n url: ''\n }\n },\n computed: {\n parsedURL(): URL | null {\n try {\n return new URL(this.url)\n } catch {\n return null\n }\n }\n },\n\n methods: {\n handleFileChange(event: any) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (target.files == null || target.files.length < 1) {\n return\n }\n const selectedFile = target.files![0]\n this.$emit('file-select', selectedFile)\n // If user selects a file, clear the URL component\n this.url = ''\n this.fileName = target.files![0].name\n },\n dragover(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!target.classList.contains('file-hover')) {\n target.classList.add('file-hover')\n }\n },\n dragleave(event: DragEvent) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n target.classList.remove('file-hover')\n },\n drop(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!event.dataTransfer || event.dataTransfer.files.length == 0) {\n return\n }\n target.files = event.dataTransfer.files\n this.handleFileChange(event)\n target.classList.remove('file-hover')\n },\n urlKeyup(event: KeyboardEvent) {\n console.log(this.url)\n if (event.key == 'Enter') {\n const target = event.target as HTMLInputElement\n if (this.parsedURL == null) {\n console.error(`${target.value} is an invalid URL`)\n return\n }\n this.$emit('file-select', this.parsedURL)\n }\n }\n }\n})\n","import { render } from \"./BaseFile.vue?vue&type=template&id=0630c5ec&scoped=true\"\nimport script from \"./BaseFile.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseFile.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-0630c5ec\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\nimport * as $protobuf from \"protobufjs/minimal\";\n\n// Common aliases\nconst $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nconst $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\nexport const chromeos_update_engine = $root.chromeos_update_engine = (() => {\n\n /**\n * Namespace chromeos_update_engine.\n * @exports chromeos_update_engine\n * @namespace\n */\n const chromeos_update_engine = {};\n\n chromeos_update_engine.Extent = (function() {\n\n /**\n * Properties of an Extent.\n * @memberof chromeos_update_engine\n * @interface IExtent\n * @property {number|Long|null} [startBlock] Extent startBlock\n * @property {number|Long|null} [numBlocks] Extent numBlocks\n */\n\n /**\n * Constructs a new Extent.\n * @memberof chromeos_update_engine\n * @classdesc Represents an Extent.\n * @implements IExtent\n * @constructor\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n */\n function Extent(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Extent startBlock.\n * @member {number|Long} startBlock\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.startBlock = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Extent numBlocks.\n * @member {number|Long} numBlocks\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.numBlocks = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new Extent instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n * @returns {chromeos_update_engine.Extent} Extent instance\n */\n Extent.create = function create(properties) {\n return new Extent(properties);\n };\n\n /**\n * Encodes the specified Extent message. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startBlock != null && Object.hasOwnProperty.call(message, \"startBlock\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.startBlock);\n if (message.numBlocks != null && Object.hasOwnProperty.call(message, \"numBlocks\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.numBlocks);\n return writer;\n };\n\n /**\n * Encodes the specified Extent message, length delimited. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Extent();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.startBlock = reader.uint64();\n break;\n case 2:\n message.numBlocks = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an Extent message.\n * @function verify\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Extent.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (!$util.isInteger(message.startBlock) && !(message.startBlock && $util.isInteger(message.startBlock.low) && $util.isInteger(message.startBlock.high)))\n return \"startBlock: integer|Long expected\";\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (!$util.isInteger(message.numBlocks) && !(message.numBlocks && $util.isInteger(message.numBlocks.low) && $util.isInteger(message.numBlocks.high)))\n return \"numBlocks: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an Extent message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Extent} Extent\n */\n Extent.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Extent)\n return object;\n let message = new $root.chromeos_update_engine.Extent();\n if (object.startBlock != null)\n if ($util.Long)\n (message.startBlock = $util.Long.fromValue(object.startBlock)).unsigned = true;\n else if (typeof object.startBlock === \"string\")\n message.startBlock = parseInt(object.startBlock, 10);\n else if (typeof object.startBlock === \"number\")\n message.startBlock = object.startBlock;\n else if (typeof object.startBlock === \"object\")\n message.startBlock = new $util.LongBits(object.startBlock.low >>> 0, object.startBlock.high >>> 0).toNumber(true);\n if (object.numBlocks != null)\n if ($util.Long)\n (message.numBlocks = $util.Long.fromValue(object.numBlocks)).unsigned = true;\n else if (typeof object.numBlocks === \"string\")\n message.numBlocks = parseInt(object.numBlocks, 10);\n else if (typeof object.numBlocks === \"number\")\n message.numBlocks = object.numBlocks;\n else if (typeof object.numBlocks === \"object\")\n message.numBlocks = new $util.LongBits(object.numBlocks.low >>> 0, object.numBlocks.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from an Extent message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.Extent} message Extent\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Extent.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.startBlock = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.startBlock = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.numBlocks = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.numBlocks = options.longs === String ? \"0\" : 0;\n }\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (typeof message.startBlock === \"number\")\n object.startBlock = options.longs === String ? String(message.startBlock) : message.startBlock;\n else\n object.startBlock = options.longs === String ? $util.Long.prototype.toString.call(message.startBlock) : options.longs === Number ? new $util.LongBits(message.startBlock.low >>> 0, message.startBlock.high >>> 0).toNumber(true) : message.startBlock;\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (typeof message.numBlocks === \"number\")\n object.numBlocks = options.longs === String ? String(message.numBlocks) : message.numBlocks;\n else\n object.numBlocks = options.longs === String ? $util.Long.prototype.toString.call(message.numBlocks) : options.longs === Number ? new $util.LongBits(message.numBlocks.low >>> 0, message.numBlocks.high >>> 0).toNumber(true) : message.numBlocks;\n return object;\n };\n\n /**\n * Converts this Extent to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Extent\n * @instance\n * @returns {Object.} JSON object\n */\n Extent.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Extent;\n })();\n\n chromeos_update_engine.Signatures = (function() {\n\n /**\n * Properties of a Signatures.\n * @memberof chromeos_update_engine\n * @interface ISignatures\n * @property {Array.|null} [signatures] Signatures signatures\n */\n\n /**\n * Constructs a new Signatures.\n * @memberof chromeos_update_engine\n * @classdesc Represents a Signatures.\n * @implements ISignatures\n * @constructor\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n */\n function Signatures(properties) {\n this.signatures = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signatures signatures.\n * @member {Array.} signatures\n * @memberof chromeos_update_engine.Signatures\n * @instance\n */\n Signatures.prototype.signatures = $util.emptyArray;\n\n /**\n * Creates a new Signatures instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures} Signatures instance\n */\n Signatures.create = function create(properties) {\n return new Signatures(properties);\n };\n\n /**\n * Encodes the specified Signatures message. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.signatures != null && message.signatures.length)\n for (let i = 0; i < message.signatures.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.signatures[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Signatures message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.signatures && message.signatures.length))\n message.signatures = [];\n message.signatures.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signatures message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signatures.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.signatures != null && message.hasOwnProperty(\"signatures\")) {\n if (!Array.isArray(message.signatures))\n return \"signatures: array expected\";\n for (let i = 0; i < message.signatures.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.signatures[i]);\n if (error)\n return \"signatures.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a Signatures message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures} Signatures\n */\n Signatures.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures)\n return object;\n let message = new $root.chromeos_update_engine.Signatures();\n if (object.signatures) {\n if (!Array.isArray(object.signatures))\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: array expected\");\n message.signatures = [];\n for (let i = 0; i < object.signatures.length; ++i) {\n if (typeof object.signatures[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: object expected\");\n message.signatures[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.signatures[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Signatures message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.Signatures} message Signatures\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signatures.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.signatures = [];\n if (message.signatures && message.signatures.length) {\n object.signatures = [];\n for (let j = 0; j < message.signatures.length; ++j)\n object.signatures[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.signatures[j], options);\n }\n return object;\n };\n\n /**\n * Converts this Signatures to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures\n * @instance\n * @returns {Object.} JSON object\n */\n Signatures.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n Signatures.Signature = (function() {\n\n /**\n * Properties of a Signature.\n * @memberof chromeos_update_engine.Signatures\n * @interface ISignature\n * @property {number|null} [version] Signature version\n * @property {Uint8Array|null} [data] Signature data\n * @property {number|null} [unpaddedSignatureSize] Signature unpaddedSignatureSize\n */\n\n /**\n * Constructs a new Signature.\n * @memberof chromeos_update_engine.Signatures\n * @classdesc Represents a Signature.\n * @implements ISignature\n * @constructor\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n */\n function Signature(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signature version.\n * @member {number} version\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.version = 0;\n\n /**\n * Signature data.\n * @member {Uint8Array} data\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.data = $util.newBuffer([]);\n\n /**\n * Signature unpaddedSignatureSize.\n * @member {number} unpaddedSignatureSize\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.unpaddedSignatureSize = 0;\n\n /**\n * Creates a new Signature instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures.Signature} Signature instance\n */\n Signature.create = function create(properties) {\n return new Signature(properties);\n };\n\n /**\n * Encodes the specified Signature message. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.version);\n if (message.data != null && Object.hasOwnProperty.call(message, \"data\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.data);\n if (message.unpaddedSignatureSize != null && Object.hasOwnProperty.call(message, \"unpaddedSignatureSize\"))\n writer.uint32(/* id 3, wireType 5 =*/29).fixed32(message.unpaddedSignatureSize);\n return writer;\n };\n\n /**\n * Encodes the specified Signature message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures.Signature();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.version = reader.uint32();\n break;\n case 2:\n message.data = reader.bytes();\n break;\n case 3:\n message.unpaddedSignatureSize = reader.fixed32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signature message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signature.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version))\n return \"version: integer expected\";\n if (message.data != null && message.hasOwnProperty(\"data\"))\n if (!(message.data && typeof message.data.length === \"number\" || $util.isString(message.data)))\n return \"data: buffer expected\";\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n if (!$util.isInteger(message.unpaddedSignatureSize))\n return \"unpaddedSignatureSize: integer expected\";\n return null;\n };\n\n /**\n * Creates a Signature message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n */\n Signature.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures.Signature)\n return object;\n let message = new $root.chromeos_update_engine.Signatures.Signature();\n if (object.version != null)\n message.version = object.version >>> 0;\n if (object.data != null)\n if (typeof object.data === \"string\")\n $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);\n else if (object.data.length)\n message.data = object.data;\n if (object.unpaddedSignatureSize != null)\n message.unpaddedSignatureSize = object.unpaddedSignatureSize >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a Signature message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.Signature} message Signature\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signature.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.version = 0;\n if (options.bytes === String)\n object.data = \"\";\n else {\n object.data = [];\n if (options.bytes !== Array)\n object.data = $util.newBuffer(object.data);\n }\n object.unpaddedSignatureSize = 0;\n }\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.data != null && message.hasOwnProperty(\"data\"))\n object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n object.unpaddedSignatureSize = message.unpaddedSignatureSize;\n return object;\n };\n\n /**\n * Converts this Signature to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n * @returns {Object.} JSON object\n */\n Signature.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Signature;\n })();\n\n return Signatures;\n })();\n\n chromeos_update_engine.PartitionInfo = (function() {\n\n /**\n * Properties of a PartitionInfo.\n * @memberof chromeos_update_engine\n * @interface IPartitionInfo\n * @property {number|Long|null} [size] PartitionInfo size\n * @property {Uint8Array|null} [hash] PartitionInfo hash\n */\n\n /**\n * Constructs a new PartitionInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionInfo.\n * @implements IPartitionInfo\n * @constructor\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n */\n function PartitionInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionInfo size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * PartitionInfo hash.\n * @member {Uint8Array} hash\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.hash = $util.newBuffer([]);\n\n /**\n * Creates a new PartitionInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo instance\n */\n PartitionInfo.create = function create(properties) {\n return new PartitionInfo(properties);\n };\n\n /**\n * Encodes the specified PartitionInfo message. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.size);\n if (message.hash != null && Object.hasOwnProperty.call(message, \"hash\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.hash);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.size = reader.uint64();\n break;\n case 2:\n message.hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionInfo message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n if (!(message.hash && typeof message.hash.length === \"number\" || $util.isString(message.hash)))\n return \"hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates a PartitionInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n */\n PartitionInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionInfo)\n return object;\n let message = new $root.chromeos_update_engine.PartitionInfo();\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.hash != null)\n if (typeof object.hash === \"string\")\n $util.base64.decode(object.hash, message.hash = $util.newBuffer($util.base64.length(object.hash)), 0);\n else if (object.hash.length)\n message.hash = object.hash;\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.PartitionInfo} message PartitionInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.hash = \"\";\n else {\n object.hash = [];\n if (options.bytes !== Array)\n object.hash = $util.newBuffer(object.hash);\n }\n }\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n object.hash = options.bytes === String ? $util.base64.encode(message.hash, 0, message.hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.hash) : message.hash;\n return object;\n };\n\n /**\n * Converts this PartitionInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionInfo;\n })();\n\n chromeos_update_engine.InstallOperation = (function() {\n\n /**\n * Properties of an InstallOperation.\n * @memberof chromeos_update_engine\n * @interface IInstallOperation\n * @property {chromeos_update_engine.InstallOperation.Type} type InstallOperation type\n * @property {number|Long|null} [dataOffset] InstallOperation dataOffset\n * @property {number|Long|null} [dataLength] InstallOperation dataLength\n * @property {Array.|null} [srcExtents] InstallOperation srcExtents\n * @property {number|Long|null} [srcLength] InstallOperation srcLength\n * @property {Array.|null} [dstExtents] InstallOperation dstExtents\n * @property {number|Long|null} [dstLength] InstallOperation dstLength\n * @property {Uint8Array|null} [dataSha256Hash] InstallOperation dataSha256Hash\n * @property {Uint8Array|null} [srcSha256Hash] InstallOperation srcSha256Hash\n */\n\n /**\n * Constructs a new InstallOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents an InstallOperation.\n * @implements IInstallOperation\n * @constructor\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n */\n function InstallOperation(properties) {\n this.srcExtents = [];\n this.dstExtents = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * InstallOperation type.\n * @member {chromeos_update_engine.InstallOperation.Type} type\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.type = 0;\n\n /**\n * InstallOperation dataOffset.\n * @member {number|Long} dataOffset\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataLength.\n * @member {number|Long} dataLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation srcExtents.\n * @member {Array.} srcExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcExtents = $util.emptyArray;\n\n /**\n * InstallOperation srcLength.\n * @member {number|Long} srcLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dstExtents.\n * @member {Array.} dstExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstExtents = $util.emptyArray;\n\n /**\n * InstallOperation dstLength.\n * @member {number|Long} dstLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataSha256Hash.\n * @member {Uint8Array} dataSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataSha256Hash = $util.newBuffer([]);\n\n /**\n * InstallOperation srcSha256Hash.\n * @member {Uint8Array} srcSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcSha256Hash = $util.newBuffer([]);\n\n /**\n * Creates a new InstallOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation instance\n */\n InstallOperation.create = function create(properties) {\n return new InstallOperation(properties);\n };\n\n /**\n * Encodes the specified InstallOperation message. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.dataOffset != null && Object.hasOwnProperty.call(message, \"dataOffset\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.dataOffset);\n if (message.dataLength != null && Object.hasOwnProperty.call(message, \"dataLength\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.dataLength);\n if (message.srcExtents != null && message.srcExtents.length)\n for (let i = 0; i < message.srcExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.srcExtents[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.srcLength != null && Object.hasOwnProperty.call(message, \"srcLength\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.srcLength);\n if (message.dstExtents != null && message.dstExtents.length)\n for (let i = 0; i < message.dstExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.dstExtents[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.dstLength != null && Object.hasOwnProperty.call(message, \"dstLength\"))\n writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.dstLength);\n if (message.dataSha256Hash != null && Object.hasOwnProperty.call(message, \"dataSha256Hash\"))\n writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.dataSha256Hash);\n if (message.srcSha256Hash != null && Object.hasOwnProperty.call(message, \"srcSha256Hash\"))\n writer.uint32(/* id 9, wireType 2 =*/74).bytes(message.srcSha256Hash);\n return writer;\n };\n\n /**\n * Encodes the specified InstallOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.InstallOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.dataOffset = reader.uint64();\n break;\n case 3:\n message.dataLength = reader.uint64();\n break;\n case 4:\n if (!(message.srcExtents && message.srcExtents.length))\n message.srcExtents = [];\n message.srcExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 5:\n message.srcLength = reader.uint64();\n break;\n case 6:\n if (!(message.dstExtents && message.dstExtents.length))\n message.dstExtents = [];\n message.dstExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 7:\n message.dstLength = reader.uint64();\n break;\n case 8:\n message.dataSha256Hash = reader.bytes();\n break;\n case 9:\n message.srcSha256Hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"type\"))\n throw $util.ProtocolError(\"missing required 'type'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an InstallOperation message.\n * @function verify\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n InstallOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 8:\n case 6:\n case 7:\n case 10:\n case 9:\n case 11:\n case 12:\n case 13:\n break;\n }\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (!$util.isInteger(message.dataOffset) && !(message.dataOffset && $util.isInteger(message.dataOffset.low) && $util.isInteger(message.dataOffset.high)))\n return \"dataOffset: integer|Long expected\";\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (!$util.isInteger(message.dataLength) && !(message.dataLength && $util.isInteger(message.dataLength.low) && $util.isInteger(message.dataLength.high)))\n return \"dataLength: integer|Long expected\";\n if (message.srcExtents != null && message.hasOwnProperty(\"srcExtents\")) {\n if (!Array.isArray(message.srcExtents))\n return \"srcExtents: array expected\";\n for (let i = 0; i < message.srcExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtents[i]);\n if (error)\n return \"srcExtents.\" + error;\n }\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (!$util.isInteger(message.srcLength) && !(message.srcLength && $util.isInteger(message.srcLength.low) && $util.isInteger(message.srcLength.high)))\n return \"srcLength: integer|Long expected\";\n if (message.dstExtents != null && message.hasOwnProperty(\"dstExtents\")) {\n if (!Array.isArray(message.dstExtents))\n return \"dstExtents: array expected\";\n for (let i = 0; i < message.dstExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtents[i]);\n if (error)\n return \"dstExtents.\" + error;\n }\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (!$util.isInteger(message.dstLength) && !(message.dstLength && $util.isInteger(message.dstLength.low) && $util.isInteger(message.dstLength.high)))\n return \"dstLength: integer|Long expected\";\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n if (!(message.dataSha256Hash && typeof message.dataSha256Hash.length === \"number\" || $util.isString(message.dataSha256Hash)))\n return \"dataSha256Hash: buffer expected\";\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n if (!(message.srcSha256Hash && typeof message.srcSha256Hash.length === \"number\" || $util.isString(message.srcSha256Hash)))\n return \"srcSha256Hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates an InstallOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n */\n InstallOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.InstallOperation)\n return object;\n let message = new $root.chromeos_update_engine.InstallOperation();\n switch (object.type) {\n case \"REPLACE\":\n case 0:\n message.type = 0;\n break;\n case \"REPLACE_BZ\":\n case 1:\n message.type = 1;\n break;\n case \"MOVE\":\n case 2:\n message.type = 2;\n break;\n case \"BSDIFF\":\n case 3:\n message.type = 3;\n break;\n case \"SOURCE_COPY\":\n case 4:\n message.type = 4;\n break;\n case \"SOURCE_BSDIFF\":\n case 5:\n message.type = 5;\n break;\n case \"REPLACE_XZ\":\n case 8:\n message.type = 8;\n break;\n case \"ZERO\":\n case 6:\n message.type = 6;\n break;\n case \"DISCARD\":\n case 7:\n message.type = 7;\n break;\n case \"BROTLI_BSDIFF\":\n case 10:\n message.type = 10;\n break;\n case \"PUFFDIFF\":\n case 9:\n message.type = 9;\n break;\n case \"ZUCCHINI\":\n case 11:\n message.type = 11;\n break;\n case \"LZ4DIFF_BSDIFF\":\n case 12:\n message.type = 12;\n break;\n case \"LZ4DIFF_PUFFDIFF\":\n case 13:\n message.type = 13;\n break;\n }\n if (object.dataOffset != null)\n if ($util.Long)\n (message.dataOffset = $util.Long.fromValue(object.dataOffset)).unsigned = true;\n else if (typeof object.dataOffset === \"string\")\n message.dataOffset = parseInt(object.dataOffset, 10);\n else if (typeof object.dataOffset === \"number\")\n message.dataOffset = object.dataOffset;\n else if (typeof object.dataOffset === \"object\")\n message.dataOffset = new $util.LongBits(object.dataOffset.low >>> 0, object.dataOffset.high >>> 0).toNumber(true);\n if (object.dataLength != null)\n if ($util.Long)\n (message.dataLength = $util.Long.fromValue(object.dataLength)).unsigned = true;\n else if (typeof object.dataLength === \"string\")\n message.dataLength = parseInt(object.dataLength, 10);\n else if (typeof object.dataLength === \"number\")\n message.dataLength = object.dataLength;\n else if (typeof object.dataLength === \"object\")\n message.dataLength = new $util.LongBits(object.dataLength.low >>> 0, object.dataLength.high >>> 0).toNumber(true);\n if (object.srcExtents) {\n if (!Array.isArray(object.srcExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: array expected\");\n message.srcExtents = [];\n for (let i = 0; i < object.srcExtents.length; ++i) {\n if (typeof object.srcExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: object expected\");\n message.srcExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.srcExtents[i]);\n }\n }\n if (object.srcLength != null)\n if ($util.Long)\n (message.srcLength = $util.Long.fromValue(object.srcLength)).unsigned = true;\n else if (typeof object.srcLength === \"string\")\n message.srcLength = parseInt(object.srcLength, 10);\n else if (typeof object.srcLength === \"number\")\n message.srcLength = object.srcLength;\n else if (typeof object.srcLength === \"object\")\n message.srcLength = new $util.LongBits(object.srcLength.low >>> 0, object.srcLength.high >>> 0).toNumber(true);\n if (object.dstExtents) {\n if (!Array.isArray(object.dstExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: array expected\");\n message.dstExtents = [];\n for (let i = 0; i < object.dstExtents.length; ++i) {\n if (typeof object.dstExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: object expected\");\n message.dstExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.dstExtents[i]);\n }\n }\n if (object.dstLength != null)\n if ($util.Long)\n (message.dstLength = $util.Long.fromValue(object.dstLength)).unsigned = true;\n else if (typeof object.dstLength === \"string\")\n message.dstLength = parseInt(object.dstLength, 10);\n else if (typeof object.dstLength === \"number\")\n message.dstLength = object.dstLength;\n else if (typeof object.dstLength === \"object\")\n message.dstLength = new $util.LongBits(object.dstLength.low >>> 0, object.dstLength.high >>> 0).toNumber(true);\n if (object.dataSha256Hash != null)\n if (typeof object.dataSha256Hash === \"string\")\n $util.base64.decode(object.dataSha256Hash, message.dataSha256Hash = $util.newBuffer($util.base64.length(object.dataSha256Hash)), 0);\n else if (object.dataSha256Hash.length)\n message.dataSha256Hash = object.dataSha256Hash;\n if (object.srcSha256Hash != null)\n if (typeof object.srcSha256Hash === \"string\")\n $util.base64.decode(object.srcSha256Hash, message.srcSha256Hash = $util.newBuffer($util.base64.length(object.srcSha256Hash)), 0);\n else if (object.srcSha256Hash.length)\n message.srcSha256Hash = object.srcSha256Hash;\n return message;\n };\n\n /**\n * Creates a plain object from an InstallOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.InstallOperation} message InstallOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n InstallOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.srcExtents = [];\n object.dstExtents = [];\n }\n if (options.defaults) {\n object.type = options.enums === String ? \"REPLACE\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.srcLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.srcLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dstLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dstLength = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.dataSha256Hash = \"\";\n else {\n object.dataSha256Hash = [];\n if (options.bytes !== Array)\n object.dataSha256Hash = $util.newBuffer(object.dataSha256Hash);\n }\n if (options.bytes === String)\n object.srcSha256Hash = \"\";\n else {\n object.srcSha256Hash = [];\n if (options.bytes !== Array)\n object.srcSha256Hash = $util.newBuffer(object.srcSha256Hash);\n }\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.InstallOperation.Type[message.type] : message.type;\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (typeof message.dataOffset === \"number\")\n object.dataOffset = options.longs === String ? String(message.dataOffset) : message.dataOffset;\n else\n object.dataOffset = options.longs === String ? $util.Long.prototype.toString.call(message.dataOffset) : options.longs === Number ? new $util.LongBits(message.dataOffset.low >>> 0, message.dataOffset.high >>> 0).toNumber(true) : message.dataOffset;\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (typeof message.dataLength === \"number\")\n object.dataLength = options.longs === String ? String(message.dataLength) : message.dataLength;\n else\n object.dataLength = options.longs === String ? $util.Long.prototype.toString.call(message.dataLength) : options.longs === Number ? new $util.LongBits(message.dataLength.low >>> 0, message.dataLength.high >>> 0).toNumber(true) : message.dataLength;\n if (message.srcExtents && message.srcExtents.length) {\n object.srcExtents = [];\n for (let j = 0; j < message.srcExtents.length; ++j)\n object.srcExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.srcExtents[j], options);\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (typeof message.srcLength === \"number\")\n object.srcLength = options.longs === String ? String(message.srcLength) : message.srcLength;\n else\n object.srcLength = options.longs === String ? $util.Long.prototype.toString.call(message.srcLength) : options.longs === Number ? new $util.LongBits(message.srcLength.low >>> 0, message.srcLength.high >>> 0).toNumber(true) : message.srcLength;\n if (message.dstExtents && message.dstExtents.length) {\n object.dstExtents = [];\n for (let j = 0; j < message.dstExtents.length; ++j)\n object.dstExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.dstExtents[j], options);\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (typeof message.dstLength === \"number\")\n object.dstLength = options.longs === String ? String(message.dstLength) : message.dstLength;\n else\n object.dstLength = options.longs === String ? $util.Long.prototype.toString.call(message.dstLength) : options.longs === Number ? new $util.LongBits(message.dstLength.low >>> 0, message.dstLength.high >>> 0).toNumber(true) : message.dstLength;\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n object.dataSha256Hash = options.bytes === String ? $util.base64.encode(message.dataSha256Hash, 0, message.dataSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.dataSha256Hash) : message.dataSha256Hash;\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n object.srcSha256Hash = options.bytes === String ? $util.base64.encode(message.srcSha256Hash, 0, message.srcSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.srcSha256Hash) : message.srcSha256Hash;\n return object;\n };\n\n /**\n * Converts this InstallOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n * @returns {Object.} JSON object\n */\n InstallOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.InstallOperation.Type\n * @enum {number}\n * @property {number} REPLACE=0 REPLACE value\n * @property {number} REPLACE_BZ=1 REPLACE_BZ value\n * @property {number} MOVE=2 MOVE value\n * @property {number} BSDIFF=3 BSDIFF value\n * @property {number} SOURCE_COPY=4 SOURCE_COPY value\n * @property {number} SOURCE_BSDIFF=5 SOURCE_BSDIFF value\n * @property {number} REPLACE_XZ=8 REPLACE_XZ value\n * @property {number} ZERO=6 ZERO value\n * @property {number} DISCARD=7 DISCARD value\n * @property {number} BROTLI_BSDIFF=10 BROTLI_BSDIFF value\n * @property {number} PUFFDIFF=9 PUFFDIFF value\n * @property {number} ZUCCHINI=11 ZUCCHINI value\n * @property {number} LZ4DIFF_BSDIFF=12 LZ4DIFF_BSDIFF value\n * @property {number} LZ4DIFF_PUFFDIFF=13 LZ4DIFF_PUFFDIFF value\n */\n InstallOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"REPLACE\"] = 0;\n values[valuesById[1] = \"REPLACE_BZ\"] = 1;\n values[valuesById[2] = \"MOVE\"] = 2;\n values[valuesById[3] = \"BSDIFF\"] = 3;\n values[valuesById[4] = \"SOURCE_COPY\"] = 4;\n values[valuesById[5] = \"SOURCE_BSDIFF\"] = 5;\n values[valuesById[8] = \"REPLACE_XZ\"] = 8;\n values[valuesById[6] = \"ZERO\"] = 6;\n values[valuesById[7] = \"DISCARD\"] = 7;\n values[valuesById[10] = \"BROTLI_BSDIFF\"] = 10;\n values[valuesById[9] = \"PUFFDIFF\"] = 9;\n values[valuesById[11] = \"ZUCCHINI\"] = 11;\n values[valuesById[12] = \"LZ4DIFF_BSDIFF\"] = 12;\n values[valuesById[13] = \"LZ4DIFF_PUFFDIFF\"] = 13;\n return values;\n })();\n\n return InstallOperation;\n })();\n\n chromeos_update_engine.CowMergeOperation = (function() {\n\n /**\n * Properties of a CowMergeOperation.\n * @memberof chromeos_update_engine\n * @interface ICowMergeOperation\n * @property {chromeos_update_engine.CowMergeOperation.Type|null} [type] CowMergeOperation type\n * @property {chromeos_update_engine.IExtent|null} [srcExtent] CowMergeOperation srcExtent\n * @property {chromeos_update_engine.IExtent|null} [dstExtent] CowMergeOperation dstExtent\n * @property {number|null} [srcOffset] CowMergeOperation srcOffset\n */\n\n /**\n * Constructs a new CowMergeOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents a CowMergeOperation.\n * @implements ICowMergeOperation\n * @constructor\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n */\n function CowMergeOperation(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * CowMergeOperation type.\n * @member {chromeos_update_engine.CowMergeOperation.Type} type\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.type = 0;\n\n /**\n * CowMergeOperation srcExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} srcExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcExtent = null;\n\n /**\n * CowMergeOperation dstExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} dstExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.dstExtent = null;\n\n /**\n * CowMergeOperation srcOffset.\n * @member {number} srcOffset\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcOffset = 0;\n\n /**\n * Creates a new CowMergeOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation instance\n */\n CowMergeOperation.create = function create(properties) {\n return new CowMergeOperation(properties);\n };\n\n /**\n * Encodes the specified CowMergeOperation message. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.srcExtent != null && Object.hasOwnProperty.call(message, \"srcExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.srcExtent, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.dstExtent != null && Object.hasOwnProperty.call(message, \"dstExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.dstExtent, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.srcOffset != null && Object.hasOwnProperty.call(message, \"srcOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.srcOffset);\n return writer;\n };\n\n /**\n * Encodes the specified CowMergeOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.CowMergeOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.srcExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 3:\n message.dstExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 4:\n message.srcOffset = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a CowMergeOperation message.\n * @function verify\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n CowMergeOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtent);\n if (error)\n return \"srcExtent.\" + error;\n }\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtent);\n if (error)\n return \"dstExtent.\" + error;\n }\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n if (!$util.isInteger(message.srcOffset))\n return \"srcOffset: integer expected\";\n return null;\n };\n\n /**\n * Creates a CowMergeOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n */\n CowMergeOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.CowMergeOperation)\n return object;\n let message = new $root.chromeos_update_engine.CowMergeOperation();\n switch (object.type) {\n case \"COW_COPY\":\n case 0:\n message.type = 0;\n break;\n case \"COW_XOR\":\n case 1:\n message.type = 1;\n break;\n case \"COW_REPLACE\":\n case 2:\n message.type = 2;\n break;\n }\n if (object.srcExtent != null) {\n if (typeof object.srcExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.srcExtent: object expected\");\n message.srcExtent = $root.chromeos_update_engine.Extent.fromObject(object.srcExtent);\n }\n if (object.dstExtent != null) {\n if (typeof object.dstExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.dstExtent: object expected\");\n message.dstExtent = $root.chromeos_update_engine.Extent.fromObject(object.dstExtent);\n }\n if (object.srcOffset != null)\n message.srcOffset = object.srcOffset >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a CowMergeOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.CowMergeOperation} message CowMergeOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n CowMergeOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"COW_COPY\" : 0;\n object.srcExtent = null;\n object.dstExtent = null;\n object.srcOffset = 0;\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.CowMergeOperation.Type[message.type] : message.type;\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\"))\n object.srcExtent = $root.chromeos_update_engine.Extent.toObject(message.srcExtent, options);\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\"))\n object.dstExtent = $root.chromeos_update_engine.Extent.toObject(message.dstExtent, options);\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n object.srcOffset = message.srcOffset;\n return object;\n };\n\n /**\n * Converts this CowMergeOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n * @returns {Object.} JSON object\n */\n CowMergeOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.CowMergeOperation.Type\n * @enum {number}\n * @property {number} COW_COPY=0 COW_COPY value\n * @property {number} COW_XOR=1 COW_XOR value\n * @property {number} COW_REPLACE=2 COW_REPLACE value\n */\n CowMergeOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"COW_COPY\"] = 0;\n values[valuesById[1] = \"COW_XOR\"] = 1;\n values[valuesById[2] = \"COW_REPLACE\"] = 2;\n return values;\n })();\n\n return CowMergeOperation;\n })();\n\n chromeos_update_engine.PartitionUpdate = (function() {\n\n /**\n * Properties of a PartitionUpdate.\n * @memberof chromeos_update_engine\n * @interface IPartitionUpdate\n * @property {string} partitionName PartitionUpdate partitionName\n * @property {boolean|null} [runPostinstall] PartitionUpdate runPostinstall\n * @property {string|null} [postinstallPath] PartitionUpdate postinstallPath\n * @property {string|null} [filesystemType] PartitionUpdate filesystemType\n * @property {Array.|null} [newPartitionSignature] PartitionUpdate newPartitionSignature\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldPartitionInfo] PartitionUpdate oldPartitionInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newPartitionInfo] PartitionUpdate newPartitionInfo\n * @property {Array.|null} [operations] PartitionUpdate operations\n * @property {boolean|null} [postinstallOptional] PartitionUpdate postinstallOptional\n * @property {chromeos_update_engine.IExtent|null} [hashTreeDataExtent] PartitionUpdate hashTreeDataExtent\n * @property {chromeos_update_engine.IExtent|null} [hashTreeExtent] PartitionUpdate hashTreeExtent\n * @property {string|null} [hashTreeAlgorithm] PartitionUpdate hashTreeAlgorithm\n * @property {Uint8Array|null} [hashTreeSalt] PartitionUpdate hashTreeSalt\n * @property {chromeos_update_engine.IExtent|null} [fecDataExtent] PartitionUpdate fecDataExtent\n * @property {chromeos_update_engine.IExtent|null} [fecExtent] PartitionUpdate fecExtent\n * @property {number|null} [fecRoots] PartitionUpdate fecRoots\n * @property {string|null} [version] PartitionUpdate version\n * @property {Array.|null} [mergeOperations] PartitionUpdate mergeOperations\n * @property {number|Long|null} [estimateCowSize] PartitionUpdate estimateCowSize\n */\n\n /**\n * Constructs a new PartitionUpdate.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionUpdate.\n * @implements IPartitionUpdate\n * @constructor\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n */\n function PartitionUpdate(properties) {\n this.newPartitionSignature = [];\n this.operations = [];\n this.mergeOperations = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionUpdate partitionName.\n * @member {string} partitionName\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.partitionName = \"\";\n\n /**\n * PartitionUpdate runPostinstall.\n * @member {boolean} runPostinstall\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.runPostinstall = false;\n\n /**\n * PartitionUpdate postinstallPath.\n * @member {string} postinstallPath\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallPath = \"\";\n\n /**\n * PartitionUpdate filesystemType.\n * @member {string} filesystemType\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.filesystemType = \"\";\n\n /**\n * PartitionUpdate newPartitionSignature.\n * @member {Array.} newPartitionSignature\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionSignature = $util.emptyArray;\n\n /**\n * PartitionUpdate oldPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.oldPartitionInfo = null;\n\n /**\n * PartitionUpdate newPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionInfo = null;\n\n /**\n * PartitionUpdate operations.\n * @member {Array.} operations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.operations = $util.emptyArray;\n\n /**\n * PartitionUpdate postinstallOptional.\n * @member {boolean} postinstallOptional\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallOptional = false;\n\n /**\n * PartitionUpdate hashTreeDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeDataExtent = null;\n\n /**\n * PartitionUpdate hashTreeExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeExtent = null;\n\n /**\n * PartitionUpdate hashTreeAlgorithm.\n * @member {string} hashTreeAlgorithm\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeAlgorithm = \"\";\n\n /**\n * PartitionUpdate hashTreeSalt.\n * @member {Uint8Array} hashTreeSalt\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeSalt = $util.newBuffer([]);\n\n /**\n * PartitionUpdate fecDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecDataExtent = null;\n\n /**\n * PartitionUpdate fecExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecExtent = null;\n\n /**\n * PartitionUpdate fecRoots.\n * @member {number} fecRoots\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecRoots = 2;\n\n /**\n * PartitionUpdate version.\n * @member {string} version\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.version = \"\";\n\n /**\n * PartitionUpdate mergeOperations.\n * @member {Array.} mergeOperations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.mergeOperations = $util.emptyArray;\n\n /**\n * PartitionUpdate estimateCowSize.\n * @member {number|Long} estimateCowSize\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.estimateCowSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new PartitionUpdate instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate instance\n */\n PartitionUpdate.create = function create(properties) {\n return new PartitionUpdate(properties);\n };\n\n /**\n * Encodes the specified PartitionUpdate message. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.partitionName);\n if (message.runPostinstall != null && Object.hasOwnProperty.call(message, \"runPostinstall\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.runPostinstall);\n if (message.postinstallPath != null && Object.hasOwnProperty.call(message, \"postinstallPath\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.postinstallPath);\n if (message.filesystemType != null && Object.hasOwnProperty.call(message, \"filesystemType\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.filesystemType);\n if (message.newPartitionSignature != null && message.newPartitionSignature.length)\n for (let i = 0; i < message.newPartitionSignature.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.newPartitionSignature[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.oldPartitionInfo != null && Object.hasOwnProperty.call(message, \"oldPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldPartitionInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newPartitionInfo != null && Object.hasOwnProperty.call(message, \"newPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newPartitionInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.operations != null && message.operations.length)\n for (let i = 0; i < message.operations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.operations[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.postinstallOptional != null && Object.hasOwnProperty.call(message, \"postinstallOptional\"))\n writer.uint32(/* id 9, wireType 0 =*/72).bool(message.postinstallOptional);\n if (message.hashTreeDataExtent != null && Object.hasOwnProperty.call(message, \"hashTreeDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeDataExtent, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.hashTreeExtent != null && Object.hasOwnProperty.call(message, \"hashTreeExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeExtent, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.hashTreeAlgorithm != null && Object.hasOwnProperty.call(message, \"hashTreeAlgorithm\"))\n writer.uint32(/* id 12, wireType 2 =*/98).string(message.hashTreeAlgorithm);\n if (message.hashTreeSalt != null && Object.hasOwnProperty.call(message, \"hashTreeSalt\"))\n writer.uint32(/* id 13, wireType 2 =*/106).bytes(message.hashTreeSalt);\n if (message.fecDataExtent != null && Object.hasOwnProperty.call(message, \"fecDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecDataExtent, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.fecExtent != null && Object.hasOwnProperty.call(message, \"fecExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecExtent, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.fecRoots != null && Object.hasOwnProperty.call(message, \"fecRoots\"))\n writer.uint32(/* id 16, wireType 0 =*/128).uint32(message.fecRoots);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 17, wireType 2 =*/138).string(message.version);\n if (message.mergeOperations != null && message.mergeOperations.length)\n for (let i = 0; i < message.mergeOperations.length; ++i)\n $root.chromeos_update_engine.CowMergeOperation.encode(message.mergeOperations[i], writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n if (message.estimateCowSize != null && Object.hasOwnProperty.call(message, \"estimateCowSize\"))\n writer.uint32(/* id 19, wireType 0 =*/152).uint64(message.estimateCowSize);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionUpdate message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionUpdate();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.partitionName = reader.string();\n break;\n case 2:\n message.runPostinstall = reader.bool();\n break;\n case 3:\n message.postinstallPath = reader.string();\n break;\n case 4:\n message.filesystemType = reader.string();\n break;\n case 5:\n if (!(message.newPartitionSignature && message.newPartitionSignature.length))\n message.newPartitionSignature = [];\n message.newPartitionSignature.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n case 6:\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n if (!(message.operations && message.operations.length))\n message.operations = [];\n message.operations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 9:\n message.postinstallOptional = reader.bool();\n break;\n case 10:\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 11:\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 12:\n message.hashTreeAlgorithm = reader.string();\n break;\n case 13:\n message.hashTreeSalt = reader.bytes();\n break;\n case 14:\n message.fecDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 15:\n message.fecExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 16:\n message.fecRoots = reader.uint32();\n break;\n case 17:\n message.version = reader.string();\n break;\n case 18:\n if (!(message.mergeOperations && message.mergeOperations.length))\n message.mergeOperations = [];\n message.mergeOperations.push($root.chromeos_update_engine.CowMergeOperation.decode(reader, reader.uint32()));\n break;\n case 19:\n message.estimateCowSize = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"partitionName\"))\n throw $util.ProtocolError(\"missing required 'partitionName'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionUpdate message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionUpdate.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.partitionName))\n return \"partitionName: string expected\";\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n if (typeof message.runPostinstall !== \"boolean\")\n return \"runPostinstall: boolean expected\";\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n if (!$util.isString(message.postinstallPath))\n return \"postinstallPath: string expected\";\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n if (!$util.isString(message.filesystemType))\n return \"filesystemType: string expected\";\n if (message.newPartitionSignature != null && message.hasOwnProperty(\"newPartitionSignature\")) {\n if (!Array.isArray(message.newPartitionSignature))\n return \"newPartitionSignature: array expected\";\n for (let i = 0; i < message.newPartitionSignature.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.newPartitionSignature[i]);\n if (error)\n return \"newPartitionSignature.\" + error;\n }\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldPartitionInfo);\n if (error)\n return \"oldPartitionInfo.\" + error;\n }\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newPartitionInfo);\n if (error)\n return \"newPartitionInfo.\" + error;\n }\n if (message.operations != null && message.hasOwnProperty(\"operations\")) {\n if (!Array.isArray(message.operations))\n return \"operations: array expected\";\n for (let i = 0; i < message.operations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.operations[i]);\n if (error)\n return \"operations.\" + error;\n }\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n if (typeof message.postinstallOptional !== \"boolean\")\n return \"postinstallOptional: boolean expected\";\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeDataExtent);\n if (error)\n return \"hashTreeDataExtent.\" + error;\n }\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeExtent);\n if (error)\n return \"hashTreeExtent.\" + error;\n }\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n if (!$util.isString(message.hashTreeAlgorithm))\n return \"hashTreeAlgorithm: string expected\";\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n if (!(message.hashTreeSalt && typeof message.hashTreeSalt.length === \"number\" || $util.isString(message.hashTreeSalt)))\n return \"hashTreeSalt: buffer expected\";\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecDataExtent);\n if (error)\n return \"fecDataExtent.\" + error;\n }\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecExtent);\n if (error)\n return \"fecExtent.\" + error;\n }\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n if (!$util.isInteger(message.fecRoots))\n return \"fecRoots: integer expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.mergeOperations != null && message.hasOwnProperty(\"mergeOperations\")) {\n if (!Array.isArray(message.mergeOperations))\n return \"mergeOperations: array expected\";\n for (let i = 0; i < message.mergeOperations.length; ++i) {\n let error = $root.chromeos_update_engine.CowMergeOperation.verify(message.mergeOperations[i]);\n if (error)\n return \"mergeOperations.\" + error;\n }\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (!$util.isInteger(message.estimateCowSize) && !(message.estimateCowSize && $util.isInteger(message.estimateCowSize.low) && $util.isInteger(message.estimateCowSize.high)))\n return \"estimateCowSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a PartitionUpdate message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n */\n PartitionUpdate.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionUpdate)\n return object;\n let message = new $root.chromeos_update_engine.PartitionUpdate();\n if (object.partitionName != null)\n message.partitionName = String(object.partitionName);\n if (object.runPostinstall != null)\n message.runPostinstall = Boolean(object.runPostinstall);\n if (object.postinstallPath != null)\n message.postinstallPath = String(object.postinstallPath);\n if (object.filesystemType != null)\n message.filesystemType = String(object.filesystemType);\n if (object.newPartitionSignature) {\n if (!Array.isArray(object.newPartitionSignature))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: array expected\");\n message.newPartitionSignature = [];\n for (let i = 0; i < object.newPartitionSignature.length; ++i) {\n if (typeof object.newPartitionSignature[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: object expected\");\n message.newPartitionSignature[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.newPartitionSignature[i]);\n }\n }\n if (object.oldPartitionInfo != null) {\n if (typeof object.oldPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.oldPartitionInfo: object expected\");\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldPartitionInfo);\n }\n if (object.newPartitionInfo != null) {\n if (typeof object.newPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionInfo: object expected\");\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newPartitionInfo);\n }\n if (object.operations) {\n if (!Array.isArray(object.operations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: array expected\");\n message.operations = [];\n for (let i = 0; i < object.operations.length; ++i) {\n if (typeof object.operations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: object expected\");\n message.operations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.operations[i]);\n }\n }\n if (object.postinstallOptional != null)\n message.postinstallOptional = Boolean(object.postinstallOptional);\n if (object.hashTreeDataExtent != null) {\n if (typeof object.hashTreeDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeDataExtent: object expected\");\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeDataExtent);\n }\n if (object.hashTreeExtent != null) {\n if (typeof object.hashTreeExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeExtent: object expected\");\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeExtent);\n }\n if (object.hashTreeAlgorithm != null)\n message.hashTreeAlgorithm = String(object.hashTreeAlgorithm);\n if (object.hashTreeSalt != null)\n if (typeof object.hashTreeSalt === \"string\")\n $util.base64.decode(object.hashTreeSalt, message.hashTreeSalt = $util.newBuffer($util.base64.length(object.hashTreeSalt)), 0);\n else if (object.hashTreeSalt.length)\n message.hashTreeSalt = object.hashTreeSalt;\n if (object.fecDataExtent != null) {\n if (typeof object.fecDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecDataExtent: object expected\");\n message.fecDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecDataExtent);\n }\n if (object.fecExtent != null) {\n if (typeof object.fecExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecExtent: object expected\");\n message.fecExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecExtent);\n }\n if (object.fecRoots != null)\n message.fecRoots = object.fecRoots >>> 0;\n if (object.version != null)\n message.version = String(object.version);\n if (object.mergeOperations) {\n if (!Array.isArray(object.mergeOperations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected\");\n message.mergeOperations = [];\n for (let i = 0; i < object.mergeOperations.length; ++i) {\n if (typeof object.mergeOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: object expected\");\n message.mergeOperations[i] = $root.chromeos_update_engine.CowMergeOperation.fromObject(object.mergeOperations[i]);\n }\n }\n if (object.estimateCowSize != null)\n if ($util.Long)\n (message.estimateCowSize = $util.Long.fromValue(object.estimateCowSize)).unsigned = true;\n else if (typeof object.estimateCowSize === \"string\")\n message.estimateCowSize = parseInt(object.estimateCowSize, 10);\n else if (typeof object.estimateCowSize === \"number\")\n message.estimateCowSize = object.estimateCowSize;\n else if (typeof object.estimateCowSize === \"object\")\n message.estimateCowSize = new $util.LongBits(object.estimateCowSize.low >>> 0, object.estimateCowSize.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionUpdate message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.PartitionUpdate} message PartitionUpdate\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionUpdate.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.newPartitionSignature = [];\n object.operations = [];\n object.mergeOperations = [];\n }\n if (options.defaults) {\n object.partitionName = \"\";\n object.runPostinstall = false;\n object.postinstallPath = \"\";\n object.filesystemType = \"\";\n object.oldPartitionInfo = null;\n object.newPartitionInfo = null;\n object.postinstallOptional = false;\n object.hashTreeDataExtent = null;\n object.hashTreeExtent = null;\n object.hashTreeAlgorithm = \"\";\n if (options.bytes === String)\n object.hashTreeSalt = \"\";\n else {\n object.hashTreeSalt = [];\n if (options.bytes !== Array)\n object.hashTreeSalt = $util.newBuffer(object.hashTreeSalt);\n }\n object.fecDataExtent = null;\n object.fecExtent = null;\n object.fecRoots = 2;\n object.version = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.estimateCowSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.estimateCowSize = options.longs === String ? \"0\" : 0;\n }\n if (message.partitionName != null && message.hasOwnProperty(\"partitionName\"))\n object.partitionName = message.partitionName;\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n object.runPostinstall = message.runPostinstall;\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n object.postinstallPath = message.postinstallPath;\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n object.filesystemType = message.filesystemType;\n if (message.newPartitionSignature && message.newPartitionSignature.length) {\n object.newPartitionSignature = [];\n for (let j = 0; j < message.newPartitionSignature.length; ++j)\n object.newPartitionSignature[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.newPartitionSignature[j], options);\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\"))\n object.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldPartitionInfo, options);\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\"))\n object.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newPartitionInfo, options);\n if (message.operations && message.operations.length) {\n object.operations = [];\n for (let j = 0; j < message.operations.length; ++j)\n object.operations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.operations[j], options);\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n object.postinstallOptional = message.postinstallOptional;\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\"))\n object.hashTreeDataExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeDataExtent, options);\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\"))\n object.hashTreeExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeExtent, options);\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n object.hashTreeAlgorithm = message.hashTreeAlgorithm;\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n object.hashTreeSalt = options.bytes === String ? $util.base64.encode(message.hashTreeSalt, 0, message.hashTreeSalt.length) : options.bytes === Array ? Array.prototype.slice.call(message.hashTreeSalt) : message.hashTreeSalt;\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\"))\n object.fecDataExtent = $root.chromeos_update_engine.Extent.toObject(message.fecDataExtent, options);\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\"))\n object.fecExtent = $root.chromeos_update_engine.Extent.toObject(message.fecExtent, options);\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n object.fecRoots = message.fecRoots;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.mergeOperations && message.mergeOperations.length) {\n object.mergeOperations = [];\n for (let j = 0; j < message.mergeOperations.length; ++j)\n object.mergeOperations[j] = $root.chromeos_update_engine.CowMergeOperation.toObject(message.mergeOperations[j], options);\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (typeof message.estimateCowSize === \"number\")\n object.estimateCowSize = options.longs === String ? String(message.estimateCowSize) : message.estimateCowSize;\n else\n object.estimateCowSize = options.longs === String ? $util.Long.prototype.toString.call(message.estimateCowSize) : options.longs === Number ? new $util.LongBits(message.estimateCowSize.low >>> 0, message.estimateCowSize.high >>> 0).toNumber(true) : message.estimateCowSize;\n return object;\n };\n\n /**\n * Converts this PartitionUpdate to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionUpdate.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionUpdate;\n })();\n\n chromeos_update_engine.DynamicPartitionGroup = (function() {\n\n /**\n * Properties of a DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionGroup\n * @property {string} name DynamicPartitionGroup name\n * @property {number|Long|null} [size] DynamicPartitionGroup size\n * @property {Array.|null} [partitionNames] DynamicPartitionGroup partitionNames\n */\n\n /**\n * Constructs a new DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionGroup.\n * @implements IDynamicPartitionGroup\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n */\n function DynamicPartitionGroup(properties) {\n this.partitionNames = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionGroup name.\n * @member {string} name\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.name = \"\";\n\n /**\n * DynamicPartitionGroup size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DynamicPartitionGroup partitionNames.\n * @member {Array.} partitionNames\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.partitionNames = $util.emptyArray;\n\n /**\n * Creates a new DynamicPartitionGroup instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup instance\n */\n DynamicPartitionGroup.create = function create(properties) {\n return new DynamicPartitionGroup(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.size);\n if (message.partitionNames != null && message.partitionNames.length)\n for (let i = 0; i < message.partitionNames.length; ++i)\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.partitionNames[i]);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.name = reader.string();\n break;\n case 2:\n message.size = reader.uint64();\n break;\n case 3:\n if (!(message.partitionNames && message.partitionNames.length))\n message.partitionNames = [];\n message.partitionNames.push(reader.string());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"name\"))\n throw $util.ProtocolError(\"missing required 'name'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionGroup message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionGroup.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.partitionNames != null && message.hasOwnProperty(\"partitionNames\")) {\n if (!Array.isArray(message.partitionNames))\n return \"partitionNames: array expected\";\n for (let i = 0; i < message.partitionNames.length; ++i)\n if (!$util.isString(message.partitionNames[i]))\n return \"partitionNames: string[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a DynamicPartitionGroup message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n */\n DynamicPartitionGroup.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionGroup)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n if (object.name != null)\n message.name = String(object.name);\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.partitionNames) {\n if (!Array.isArray(object.partitionNames))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected\");\n message.partitionNames = [];\n for (let i = 0; i < object.partitionNames.length; ++i)\n message.partitionNames[i] = String(object.partitionNames[i]);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionGroup message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.DynamicPartitionGroup} message DynamicPartitionGroup\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionGroup.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.partitionNames = [];\n if (options.defaults) {\n object.name = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.partitionNames && message.partitionNames.length) {\n object.partitionNames = [];\n for (let j = 0; j < message.partitionNames.length; ++j)\n object.partitionNames[j] = message.partitionNames[j];\n }\n return object;\n };\n\n /**\n * Converts this DynamicPartitionGroup to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionGroup.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionGroup;\n })();\n\n chromeos_update_engine.DynamicPartitionMetadata = (function() {\n\n /**\n * Properties of a DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionMetadata\n * @property {Array.|null} [groups] DynamicPartitionMetadata groups\n * @property {boolean|null} [snapshotEnabled] DynamicPartitionMetadata snapshotEnabled\n * @property {boolean|null} [vabcEnabled] DynamicPartitionMetadata vabcEnabled\n * @property {string|null} [vabcCompressionParam] DynamicPartitionMetadata vabcCompressionParam\n * @property {number|null} [cowVersion] DynamicPartitionMetadata cowVersion\n */\n\n /**\n * Constructs a new DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionMetadata.\n * @implements IDynamicPartitionMetadata\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n */\n function DynamicPartitionMetadata(properties) {\n this.groups = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionMetadata groups.\n * @member {Array.} groups\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.groups = $util.emptyArray;\n\n /**\n * DynamicPartitionMetadata snapshotEnabled.\n * @member {boolean} snapshotEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.snapshotEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcEnabled.\n * @member {boolean} vabcEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcCompressionParam.\n * @member {string} vabcCompressionParam\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcCompressionParam = \"\";\n\n /**\n * DynamicPartitionMetadata cowVersion.\n * @member {number} cowVersion\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.cowVersion = 0;\n\n /**\n * Creates a new DynamicPartitionMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata instance\n */\n DynamicPartitionMetadata.create = function create(properties) {\n return new DynamicPartitionMetadata(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.groups != null && message.groups.length)\n for (let i = 0; i < message.groups.length; ++i)\n $root.chromeos_update_engine.DynamicPartitionGroup.encode(message.groups[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.snapshotEnabled != null && Object.hasOwnProperty.call(message, \"snapshotEnabled\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.snapshotEnabled);\n if (message.vabcEnabled != null && Object.hasOwnProperty.call(message, \"vabcEnabled\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.vabcEnabled);\n if (message.vabcCompressionParam != null && Object.hasOwnProperty.call(message, \"vabcCompressionParam\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.vabcCompressionParam);\n if (message.cowVersion != null && Object.hasOwnProperty.call(message, \"cowVersion\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.cowVersion);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.groups && message.groups.length))\n message.groups = [];\n message.groups.push($root.chromeos_update_engine.DynamicPartitionGroup.decode(reader, reader.uint32()));\n break;\n case 2:\n message.snapshotEnabled = reader.bool();\n break;\n case 3:\n message.vabcEnabled = reader.bool();\n break;\n case 4:\n message.vabcCompressionParam = reader.string();\n break;\n case 5:\n message.cowVersion = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.groups != null && message.hasOwnProperty(\"groups\")) {\n if (!Array.isArray(message.groups))\n return \"groups: array expected\";\n for (let i = 0; i < message.groups.length; ++i) {\n let error = $root.chromeos_update_engine.DynamicPartitionGroup.verify(message.groups[i]);\n if (error)\n return \"groups.\" + error;\n }\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n if (typeof message.snapshotEnabled !== \"boolean\")\n return \"snapshotEnabled: boolean expected\";\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n if (typeof message.vabcEnabled !== \"boolean\")\n return \"vabcEnabled: boolean expected\";\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n if (!$util.isString(message.vabcCompressionParam))\n return \"vabcCompressionParam: string expected\";\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n if (!$util.isInteger(message.cowVersion))\n return \"cowVersion: integer expected\";\n return null;\n };\n\n /**\n * Creates a DynamicPartitionMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n */\n DynamicPartitionMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionMetadata)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n if (object.groups) {\n if (!Array.isArray(object.groups))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: array expected\");\n message.groups = [];\n for (let i = 0; i < object.groups.length; ++i) {\n if (typeof object.groups[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: object expected\");\n message.groups[i] = $root.chromeos_update_engine.DynamicPartitionGroup.fromObject(object.groups[i]);\n }\n }\n if (object.snapshotEnabled != null)\n message.snapshotEnabled = Boolean(object.snapshotEnabled);\n if (object.vabcEnabled != null)\n message.vabcEnabled = Boolean(object.vabcEnabled);\n if (object.vabcCompressionParam != null)\n message.vabcCompressionParam = String(object.vabcCompressionParam);\n if (object.cowVersion != null)\n message.cowVersion = object.cowVersion >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.DynamicPartitionMetadata} message DynamicPartitionMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.groups = [];\n if (options.defaults) {\n object.snapshotEnabled = false;\n object.vabcEnabled = false;\n object.vabcCompressionParam = \"\";\n object.cowVersion = 0;\n }\n if (message.groups && message.groups.length) {\n object.groups = [];\n for (let j = 0; j < message.groups.length; ++j)\n object.groups[j] = $root.chromeos_update_engine.DynamicPartitionGroup.toObject(message.groups[j], options);\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n object.snapshotEnabled = message.snapshotEnabled;\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n object.vabcEnabled = message.vabcEnabled;\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n object.vabcCompressionParam = message.vabcCompressionParam;\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n object.cowVersion = message.cowVersion;\n return object;\n };\n\n /**\n * Converts this DynamicPartitionMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionMetadata;\n })();\n\n chromeos_update_engine.ApexInfo = (function() {\n\n /**\n * Properties of an ApexInfo.\n * @memberof chromeos_update_engine\n * @interface IApexInfo\n * @property {string|null} [packageName] ApexInfo packageName\n * @property {number|Long|null} [version] ApexInfo version\n * @property {boolean|null} [isCompressed] ApexInfo isCompressed\n * @property {number|Long|null} [decompressedSize] ApexInfo decompressedSize\n */\n\n /**\n * Constructs a new ApexInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexInfo.\n * @implements IApexInfo\n * @constructor\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n */\n function ApexInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexInfo packageName.\n * @member {string} packageName\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.packageName = \"\";\n\n /**\n * ApexInfo version.\n * @member {number|Long} version\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * ApexInfo isCompressed.\n * @member {boolean} isCompressed\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.isCompressed = false;\n\n /**\n * ApexInfo decompressedSize.\n * @member {number|Long} decompressedSize\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.decompressedSize = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * Creates a new ApexInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo instance\n */\n ApexInfo.create = function create(properties) {\n return new ApexInfo(properties);\n };\n\n /**\n * Encodes the specified ApexInfo message. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.packageName != null && Object.hasOwnProperty.call(message, \"packageName\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.packageName);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.version);\n if (message.isCompressed != null && Object.hasOwnProperty.call(message, \"isCompressed\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isCompressed);\n if (message.decompressedSize != null && Object.hasOwnProperty.call(message, \"decompressedSize\"))\n writer.uint32(/* id 4, wireType 0 =*/32).int64(message.decompressedSize);\n return writer;\n };\n\n /**\n * Encodes the specified ApexInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.packageName = reader.string();\n break;\n case 2:\n message.version = reader.int64();\n break;\n case 3:\n message.isCompressed = reader.bool();\n break;\n case 4:\n message.decompressedSize = reader.int64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n if (!$util.isString(message.packageName))\n return \"packageName: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high)))\n return \"version: integer|Long expected\";\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n if (typeof message.isCompressed !== \"boolean\")\n return \"isCompressed: boolean expected\";\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (!$util.isInteger(message.decompressedSize) && !(message.decompressedSize && $util.isInteger(message.decompressedSize.low) && $util.isInteger(message.decompressedSize.high)))\n return \"decompressedSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an ApexInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n */\n ApexInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexInfo)\n return object;\n let message = new $root.chromeos_update_engine.ApexInfo();\n if (object.packageName != null)\n message.packageName = String(object.packageName);\n if (object.version != null)\n if ($util.Long)\n (message.version = $util.Long.fromValue(object.version)).unsigned = false;\n else if (typeof object.version === \"string\")\n message.version = parseInt(object.version, 10);\n else if (typeof object.version === \"number\")\n message.version = object.version;\n else if (typeof object.version === \"object\")\n message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber();\n if (object.isCompressed != null)\n message.isCompressed = Boolean(object.isCompressed);\n if (object.decompressedSize != null)\n if ($util.Long)\n (message.decompressedSize = $util.Long.fromValue(object.decompressedSize)).unsigned = false;\n else if (typeof object.decompressedSize === \"string\")\n message.decompressedSize = parseInt(object.decompressedSize, 10);\n else if (typeof object.decompressedSize === \"number\")\n message.decompressedSize = object.decompressedSize;\n else if (typeof object.decompressedSize === \"object\")\n message.decompressedSize = new $util.LongBits(object.decompressedSize.low >>> 0, object.decompressedSize.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from an ApexInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.ApexInfo} message ApexInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.packageName = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.version = options.longs === String ? \"0\" : 0;\n object.isCompressed = false;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.decompressedSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.decompressedSize = options.longs === String ? \"0\" : 0;\n }\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n object.packageName = message.packageName;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (typeof message.version === \"number\")\n object.version = options.longs === String ? String(message.version) : message.version;\n else\n object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version;\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n object.isCompressed = message.isCompressed;\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (typeof message.decompressedSize === \"number\")\n object.decompressedSize = options.longs === String ? String(message.decompressedSize) : message.decompressedSize;\n else\n object.decompressedSize = options.longs === String ? $util.Long.prototype.toString.call(message.decompressedSize) : options.longs === Number ? new $util.LongBits(message.decompressedSize.low >>> 0, message.decompressedSize.high >>> 0).toNumber() : message.decompressedSize;\n return object;\n };\n\n /**\n * Converts this ApexInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ApexInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexInfo;\n })();\n\n chromeos_update_engine.ApexMetadata = (function() {\n\n /**\n * Properties of an ApexMetadata.\n * @memberof chromeos_update_engine\n * @interface IApexMetadata\n * @property {Array.|null} [apexInfo] ApexMetadata apexInfo\n */\n\n /**\n * Constructs a new ApexMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexMetadata.\n * @implements IApexMetadata\n * @constructor\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n */\n function ApexMetadata(properties) {\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexMetadata apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n */\n ApexMetadata.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new ApexMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata instance\n */\n ApexMetadata.create = function create(properties) {\n return new ApexMetadata(properties);\n };\n\n /**\n * Encodes the specified ApexMetadata message. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified ApexMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates an ApexMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n */\n ApexMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexMetadata)\n return object;\n let message = new $root.chromeos_update_engine.ApexMetadata();\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from an ApexMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.ApexMetadata} message ApexMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.apexInfo = [];\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this ApexMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n ApexMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexMetadata;\n })();\n\n chromeos_update_engine.DeltaArchiveManifest = (function() {\n\n /**\n * Properties of a DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @interface IDeltaArchiveManifest\n * @property {number|null} [blockSize] DeltaArchiveManifest blockSize\n * @property {number|Long|null} [signaturesOffset] DeltaArchiveManifest signaturesOffset\n * @property {number|Long|null} [signaturesSize] DeltaArchiveManifest signaturesSize\n * @property {number|null} [minorVersion] DeltaArchiveManifest minorVersion\n * @property {Array.|null} [partitions] DeltaArchiveManifest partitions\n * @property {number|Long|null} [maxTimestamp] DeltaArchiveManifest maxTimestamp\n * @property {chromeos_update_engine.IDynamicPartitionMetadata|null} [dynamicPartitionMetadata] DeltaArchiveManifest dynamicPartitionMetadata\n * @property {boolean|null} [partialUpdate] DeltaArchiveManifest partialUpdate\n * @property {Array.|null} [apexInfo] DeltaArchiveManifest apexInfo\n * @property {string|null} [securityPatchLevel] DeltaArchiveManifest securityPatchLevel\n */\n\n /**\n * Constructs a new DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DeltaArchiveManifest.\n * @implements IDeltaArchiveManifest\n * @constructor\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n */\n function DeltaArchiveManifest(properties) {\n this.partitions = [];\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DeltaArchiveManifest blockSize.\n * @member {number} blockSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.blockSize = 4096;\n\n /**\n * DeltaArchiveManifest signaturesOffset.\n * @member {number|Long} signaturesOffset\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest signaturesSize.\n * @member {number|Long} signaturesSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest minorVersion.\n * @member {number} minorVersion\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.minorVersion = 0;\n\n /**\n * DeltaArchiveManifest partitions.\n * @member {Array.} partitions\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partitions = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest maxTimestamp.\n * @member {number|Long} maxTimestamp\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.maxTimestamp = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * DeltaArchiveManifest dynamicPartitionMetadata.\n * @member {chromeos_update_engine.IDynamicPartitionMetadata|null|undefined} dynamicPartitionMetadata\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.dynamicPartitionMetadata = null;\n\n /**\n * DeltaArchiveManifest partialUpdate.\n * @member {boolean} partialUpdate\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partialUpdate = false;\n\n /**\n * DeltaArchiveManifest apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.apexInfo = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest securityPatchLevel.\n * @member {string} securityPatchLevel\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.securityPatchLevel = \"\";\n\n /**\n * Creates a new DeltaArchiveManifest instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest instance\n */\n DeltaArchiveManifest.create = function create(properties) {\n return new DeltaArchiveManifest(properties);\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.blockSize != null && Object.hasOwnProperty.call(message, \"blockSize\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.blockSize);\n if (message.signaturesOffset != null && Object.hasOwnProperty.call(message, \"signaturesOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.signaturesOffset);\n if (message.signaturesSize != null && Object.hasOwnProperty.call(message, \"signaturesSize\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.signaturesSize);\n if (message.minorVersion != null && Object.hasOwnProperty.call(message, \"minorVersion\"))\n writer.uint32(/* id 12, wireType 0 =*/96).uint32(message.minorVersion);\n if (message.partitions != null && message.partitions.length)\n for (let i = 0; i < message.partitions.length; ++i)\n $root.chromeos_update_engine.PartitionUpdate.encode(message.partitions[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();\n if (message.maxTimestamp != null && Object.hasOwnProperty.call(message, \"maxTimestamp\"))\n writer.uint32(/* id 14, wireType 0 =*/112).int64(message.maxTimestamp);\n if (message.dynamicPartitionMetadata != null && Object.hasOwnProperty.call(message, \"dynamicPartitionMetadata\"))\n $root.chromeos_update_engine.DynamicPartitionMetadata.encode(message.dynamicPartitionMetadata, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.partialUpdate != null && Object.hasOwnProperty.call(message, \"partialUpdate\"))\n writer.uint32(/* id 16, wireType 0 =*/128).bool(message.partialUpdate);\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();\n if (message.securityPatchLevel != null && Object.hasOwnProperty.call(message, \"securityPatchLevel\"))\n writer.uint32(/* id 18, wireType 2 =*/146).string(message.securityPatchLevel);\n return writer;\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message, length delimited. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 3:\n message.blockSize = reader.uint32();\n break;\n case 4:\n message.signaturesOffset = reader.uint64();\n break;\n case 5:\n message.signaturesSize = reader.uint64();\n break;\n case 12:\n message.minorVersion = reader.uint32();\n break;\n case 13:\n if (!(message.partitions && message.partitions.length))\n message.partitions = [];\n message.partitions.push($root.chromeos_update_engine.PartitionUpdate.decode(reader, reader.uint32()));\n break;\n case 14:\n message.maxTimestamp = reader.int64();\n break;\n case 15:\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.decode(reader, reader.uint32());\n break;\n case 16:\n message.partialUpdate = reader.bool();\n break;\n case 17:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n case 18:\n message.securityPatchLevel = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DeltaArchiveManifest message.\n * @function verify\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DeltaArchiveManifest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n if (!$util.isInteger(message.blockSize))\n return \"blockSize: integer expected\";\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (!$util.isInteger(message.signaturesOffset) && !(message.signaturesOffset && $util.isInteger(message.signaturesOffset.low) && $util.isInteger(message.signaturesOffset.high)))\n return \"signaturesOffset: integer|Long expected\";\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (!$util.isInteger(message.signaturesSize) && !(message.signaturesSize && $util.isInteger(message.signaturesSize.low) && $util.isInteger(message.signaturesSize.high)))\n return \"signaturesSize: integer|Long expected\";\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n if (!$util.isInteger(message.minorVersion))\n return \"minorVersion: integer expected\";\n if (message.partitions != null && message.hasOwnProperty(\"partitions\")) {\n if (!Array.isArray(message.partitions))\n return \"partitions: array expected\";\n for (let i = 0; i < message.partitions.length; ++i) {\n let error = $root.chromeos_update_engine.PartitionUpdate.verify(message.partitions[i]);\n if (error)\n return \"partitions.\" + error;\n }\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (!$util.isInteger(message.maxTimestamp) && !(message.maxTimestamp && $util.isInteger(message.maxTimestamp.low) && $util.isInteger(message.maxTimestamp.high)))\n return \"maxTimestamp: integer|Long expected\";\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\")) {\n let error = $root.chromeos_update_engine.DynamicPartitionMetadata.verify(message.dynamicPartitionMetadata);\n if (error)\n return \"dynamicPartitionMetadata.\" + error;\n }\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n if (typeof message.partialUpdate !== \"boolean\")\n return \"partialUpdate: boolean expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n if (!$util.isString(message.securityPatchLevel))\n return \"securityPatchLevel: string expected\";\n return null;\n };\n\n /**\n * Creates a DeltaArchiveManifest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n */\n DeltaArchiveManifest.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DeltaArchiveManifest)\n return object;\n let message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n if (object.blockSize != null)\n message.blockSize = object.blockSize >>> 0;\n if (object.signaturesOffset != null)\n if ($util.Long)\n (message.signaturesOffset = $util.Long.fromValue(object.signaturesOffset)).unsigned = true;\n else if (typeof object.signaturesOffset === \"string\")\n message.signaturesOffset = parseInt(object.signaturesOffset, 10);\n else if (typeof object.signaturesOffset === \"number\")\n message.signaturesOffset = object.signaturesOffset;\n else if (typeof object.signaturesOffset === \"object\")\n message.signaturesOffset = new $util.LongBits(object.signaturesOffset.low >>> 0, object.signaturesOffset.high >>> 0).toNumber(true);\n if (object.signaturesSize != null)\n if ($util.Long)\n (message.signaturesSize = $util.Long.fromValue(object.signaturesSize)).unsigned = true;\n else if (typeof object.signaturesSize === \"string\")\n message.signaturesSize = parseInt(object.signaturesSize, 10);\n else if (typeof object.signaturesSize === \"number\")\n message.signaturesSize = object.signaturesSize;\n else if (typeof object.signaturesSize === \"object\")\n message.signaturesSize = new $util.LongBits(object.signaturesSize.low >>> 0, object.signaturesSize.high >>> 0).toNumber(true);\n if (object.minorVersion != null)\n message.minorVersion = object.minorVersion >>> 0;\n if (object.partitions) {\n if (!Array.isArray(object.partitions))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected\");\n message.partitions = [];\n for (let i = 0; i < object.partitions.length; ++i) {\n if (typeof object.partitions[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: object expected\");\n message.partitions[i] = $root.chromeos_update_engine.PartitionUpdate.fromObject(object.partitions[i]);\n }\n }\n if (object.maxTimestamp != null)\n if ($util.Long)\n (message.maxTimestamp = $util.Long.fromValue(object.maxTimestamp)).unsigned = false;\n else if (typeof object.maxTimestamp === \"string\")\n message.maxTimestamp = parseInt(object.maxTimestamp, 10);\n else if (typeof object.maxTimestamp === \"number\")\n message.maxTimestamp = object.maxTimestamp;\n else if (typeof object.maxTimestamp === \"object\")\n message.maxTimestamp = new $util.LongBits(object.maxTimestamp.low >>> 0, object.maxTimestamp.high >>> 0).toNumber();\n if (object.dynamicPartitionMetadata != null) {\n if (typeof object.dynamicPartitionMetadata !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected\");\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.fromObject(object.dynamicPartitionMetadata);\n }\n if (object.partialUpdate != null)\n message.partialUpdate = Boolean(object.partialUpdate);\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n if (object.securityPatchLevel != null)\n message.securityPatchLevel = String(object.securityPatchLevel);\n return message;\n };\n\n /**\n * Creates a plain object from a DeltaArchiveManifest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.DeltaArchiveManifest} message DeltaArchiveManifest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DeltaArchiveManifest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.partitions = [];\n object.apexInfo = [];\n }\n if (options.defaults) {\n object.blockSize = 4096;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesSize = options.longs === String ? \"0\" : 0;\n object.minorVersion = 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.maxTimestamp = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.maxTimestamp = options.longs === String ? \"0\" : 0;\n object.dynamicPartitionMetadata = null;\n object.partialUpdate = false;\n object.securityPatchLevel = \"\";\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n object.blockSize = message.blockSize;\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (typeof message.signaturesOffset === \"number\")\n object.signaturesOffset = options.longs === String ? String(message.signaturesOffset) : message.signaturesOffset;\n else\n object.signaturesOffset = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesOffset) : options.longs === Number ? new $util.LongBits(message.signaturesOffset.low >>> 0, message.signaturesOffset.high >>> 0).toNumber(true) : message.signaturesOffset;\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (typeof message.signaturesSize === \"number\")\n object.signaturesSize = options.longs === String ? String(message.signaturesSize) : message.signaturesSize;\n else\n object.signaturesSize = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesSize) : options.longs === Number ? new $util.LongBits(message.signaturesSize.low >>> 0, message.signaturesSize.high >>> 0).toNumber(true) : message.signaturesSize;\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n object.minorVersion = message.minorVersion;\n if (message.partitions && message.partitions.length) {\n object.partitions = [];\n for (let j = 0; j < message.partitions.length; ++j)\n object.partitions[j] = $root.chromeos_update_engine.PartitionUpdate.toObject(message.partitions[j], options);\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (typeof message.maxTimestamp === \"number\")\n object.maxTimestamp = options.longs === String ? String(message.maxTimestamp) : message.maxTimestamp;\n else\n object.maxTimestamp = options.longs === String ? $util.Long.prototype.toString.call(message.maxTimestamp) : options.longs === Number ? new $util.LongBits(message.maxTimestamp.low >>> 0, message.maxTimestamp.high >>> 0).toNumber() : message.maxTimestamp;\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\"))\n object.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.toObject(message.dynamicPartitionMetadata, options);\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n object.partialUpdate = message.partialUpdate;\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n object.securityPatchLevel = message.securityPatchLevel;\n return object;\n };\n\n /**\n * Converts this DeltaArchiveManifest to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n * @returns {Object.} JSON object\n */\n DeltaArchiveManifest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DeltaArchiveManifest;\n })();\n\n return chromeos_update_engine;\n})();\n\nexport { $root as default };\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TextWriter, ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { chromeos_update_engine } from './update_metadata_pb.js'\n\n/**\n * Parse the non-A/B OTA package and return it as a DeltaArchiveManifest\n * @param {ZipReader} packedFile\n */\nexport class PayloadNonAB extends chromeos_update_engine.DeltaArchiveManifest {\n nonAB: boolean = true\n Blocksize: number = 4096\n packedFile: ZipReader\n constructor(packedFile: ZipReader) {\n super()\n this.packedFile = packedFile\n }\n\n async init() {\n this.Blocksize = 4096\n this.partialUpdate = false\n this.dynamicPartitionMetadata = new chromeos_update_engine.DynamicPartitionMetadata(\n { snapshotEnabled: false, vabcEnabled: false }\n )\n this.partitions = []\n\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.transfer.list)/g\n const /** Array */ entries = await this.packedFile.getEntries()\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n const match = entry.filename.match(regexName)![0]\n let newPartition: any = new chromeos_update_engine.PartitionUpdate({\n partitionName: match\n })\n newPartition.rawText = await entry.getData!(new TextWriter())\n await this.parseTransferList(newPartition)\n this.partitions.push(newPartition)\n }\n }\n }\n\n async parseTransferList(partition: chromeos_update_engine.PartitionUpdate | any) {\n let lines = (partition as any).rawText.split('\\n')\n // First four line in header: version, total blocks,\n // number of stashed entries, maximum used memory for stash\n if (lines.length < 4) {\n throw 'At least 4 lines in header should be provided.'\n }\n partition.version = lines[0]\n partition.totalBlocks = parseInt(lines[1])\n partition.entryStashed = parseInt(lines[2])\n partition.maxStashed = parseInt(lines[3])\n partition.newPartitionInfo = new chromeos_update_engine.PartitionInfo()\n partition.newPartitionInfo.hash = new Uint8Array()\n partition.newPartitionInfo.size = 'unknown'\n /**\n * The main body have 8 different ops:\n * zero [rangeset] : fill zeros\n * new [rangeset] : fill with new data from \n * erase [rangeset] : mark given blocks as empty\n * move <...>\n * bsdiff <...>\n * imgdiff <...> :\n * Read the source blocks and apply (not for move op) to the target blocks\n * stash : load the given source range to memory\n * free : free the given \n * format:\n * [rangeset]: <# of pairs>, , , ...\n * : a hex number with length of 40\n * <...>: We expect to parse the remainder of the parameter tokens as one of:\n * (loads data from source image only)\n * - <[stash_id:stash_range] ...> (loads data from stashes only)\n * <[stash_id:stash_range] ...>\n * (loads data from both source image and stashes)\n */\n partition.operations = new Array()\n let newDataSize = await this.sizeNewData(partition.partitionName)\n for (const line of lines.slice(4)) {\n let op = new chromeos_update_engine.InstallOperation()\n let elements = line.split(' ')\n op.type = elements[0]\n switch ((op.type as unknown) as string) {\n case 'zero':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'new':\n // unlike an A/B OTA, the payload only exists in the payload.bin,\n // in an non-A/B OTA, the payload exists in both .new.data and .patch.data.\n // The new ops do not have any information about data length.\n // what we do here is: read in the size of .new.data, assume the first new\n // op have the data length of the size of .new.data.\n op.dataLength = newDataSize\n newDataSize = 0\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'erase':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'move':\n op.dstExtents = parseRange([], elements[2])\n break\n case 'bsdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'imgdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'stash':\n break\n case 'free':\n break\n }\n partition.operations.push(op)\n }\n }\n\n /**\n * Return the size of .new.data.*\n * @param {String} partitionName\n * @return {Number}\n */\n async sizeNewData(partitionName: string) {\n const /** Array */ entries = await this.packedFile.getEntries()\n const /** RegExp */ regexName = new RegExp(partitionName + '.new.dat.*')\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n return entry.uncompressedSize\n }\n }\n }\n}\n\n/**\n * Parse the range string and return it as an array of extents\n * @param {extents} Array\n * @param {String} rangeset\n * @return Array\n */\nfunction parseRange(extents: Object[], rangeset: string) {\n const regexRange = new RegExp('[d,]+')\n if (rangeset.match(regexRange)) {\n let elements = rangeset.split(',')\n for (let i = 1; i < elements.length; i = i + 2) {\n let extent = new Object({\n startBlock: parseInt(elements[i]),\n numBlocks: parseInt(elements[i + 1]) - parseInt(elements[i])\n })\n extents.push(extent)\n }\n }\n return extents\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class paypload is used to read in and\n * parse the payload.bin file from a OTA.zip file.\n * Class OpType creates a Map that can resolve the\n * operation type.\n * @package zip.js\n * @package protobufjs\n */\n\nimport {\n BlobReader,\n TextWriter,\n Writer,\n ZipReader,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\n// import '@zip.js/zip.js'\nimport { chromeos_update_engine as update_metadata_pb } from './update_metadata_pb'\nimport { PayloadNonAB } from './payload_nonab'\nimport { ZipFile } from './trim_zip'\n// import { Zip_js } from 'zip.js'\n\nconst /** String */ _MAGIC = 'CrAU'\nconst /** Number */ _VERSION_SIZE = 8\nconst /** Number */ _MANIFEST_LEN_SIZE = 8\nconst /** Number */ _METADATA_SIGNATURE_LEN_SIZE = 4\n\nconst /** Number */ _PAYLOAD_HEADER_SIZE =\n _MAGIC.length +\n _VERSION_SIZE +\n _MANIFEST_LEN_SIZE +\n _METADATA_SIGNATURE_LEN_SIZE\n\nconst /** Number */ _BRILLO_MAJOR_PAYLOAD_VERSION = 2\nexport const /** Array */ MetadataFormat = [\n {\n prefix: 'pre-build',\n key: 'preBuild',\n name: 'Pre-build'\n },\n {\n prefix: 'pre-build-incremental',\n key: 'preBuildVersion',\n name: 'Pre-build version'\n },\n {\n prefix: 'post-build',\n key: 'postBuild',\n name: 'Post-build'\n },\n {\n prefix: 'post-build-incremental',\n key: 'postBuildVersion',\n name: 'Post-build version'\n },\n {\n prefix: 'post-security-patch-level',\n key: 'postSecurityPatchLevel',\n name: 'Post-build SPL'\n },\n {\n prefix: 'post-timestamp',\n key: 'postTimestamp',\n name: 'Post-build timestamp'\n },\n ]\n\nclass StopIteration extends Error {}\n\nclass AbPayloadHeader {\n constructor(\n public magic: string,\n public version: number,\n public manifest_len: number,\n public metadata_signature_len: number\n ) {}\n}\n\n/**\n * Read in an integer from binary bufferArray.\n * @param {Int} size the size of a integer being read in\n * @return {Int} an integer.\n */\nasync function readIntAt(buffer: Blob, position: number, size: number) {\n let /** DataView */ view = new DataView(\n await buffer!.slice(position, position + size).arrayBuffer()\n )\n if (typeof view.getBigUint64 !== 'function') {\n view.getBigUint64 = function(offset) {\n const a = BigInt(view.getUint32(offset))\n const b = BigInt(view.getUint32(offset + 4))\n const bigNumber = a * 4294967296n + b\n return bigNumber\n }\n }\n switch (size) {\n case 2:\n return view.getUint16(0)\n case 4:\n return view.getUint32(0)\n case 8:\n return Number(view.getBigUint64(0))\n default:\n throw 'Cannot read this integer with size ' + size\n }\n}\n\nclass OTAPayloadBlobWriter extends Writer {\n offset: number\n contentType: string\n blob: Blob\n prefixLength: number\n\n header?: AbPayloadHeader\n\n async readHeader(blob: Blob) {\n let cursor = 0\n const readInt = (size: number) => {\n const ret = readIntAt(blob, cursor, size)\n cursor += size\n return ret\n }\n let buffer = await blob.slice(0, _PAYLOAD_HEADER_SIZE).arrayBuffer()\n let /** TextDecoder */ decoder = new TextDecoder()\n let magicBytes = buffer.slice(0, _MAGIC.length)\n const magic = decoder.decode(magicBytes)\n if (magic != _MAGIC) {\n throw new Error(\n `MAGIC is not correct, expected: ${_MAGIC} actual: ${magic}`\n )\n }\n cursor += _MAGIC.length\n const header_version = await readInt(_VERSION_SIZE)\n const manifest_len = await readInt(_MANIFEST_LEN_SIZE)\n if (header_version != _BRILLO_MAJOR_PAYLOAD_VERSION) {\n throw new Error(`Unexpected major version number: ${header_version}`)\n }\n const metadata_signature_len = await readInt(_METADATA_SIGNATURE_LEN_SIZE)\n this.header = new AbPayloadHeader(\n magic,\n header_version,\n manifest_len,\n metadata_signature_len\n )\n }\n /**\n * A zip.Writer that is tailored for OTA payload.bin read-in.\n * Instead of reading in all the contents in payload.bin, this writer will\n * throw an 'StopIteration' error when the header is read in.\n * The header will be stored into the .\n * @param {Payload} payload\n * @param {String} contentType\n */\n constructor(contentType = '') {\n super()\n this.offset = 0\n this.contentType = contentType\n this.blob = new Blob([], { type: contentType })\n this.prefixLength = 0\n }\n\n async writeUint8Array(array: Uint8Array) {\n super.writeUint8Array(array)\n this.blob = new Blob([this.blob, array.buffer], { type: this.contentType })\n this.offset = this.blob.size\n // Once the prefixLength is non-zero, the address of manifest and signature\n // become known and can be read in. Otherwise the header needs to be read\n // in first to determine the prefixLength.\n if (this.offset >= _PAYLOAD_HEADER_SIZE && this.prefixLength == 0) {\n console.log('Parsing header!')\n await this.readHeader(this.blob)\n this.prefixLength =\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n console.log(`Computed metadata length: ${this.prefixLength}`)\n }\n if (this.prefixLength > 0) {\n console.log(`${this.offset}/${this.prefixLength}`)\n if (this.offset >= this.prefixLength) {\n // The prefix has everything we need (header, manifest, signature). Once\n // the offset is beyond the prefix, no need to move on.\n this.blob = this.blob.slice(0, this.prefixLength)\n throw new StopIteration()\n }\n }\n }\n\n getData() {\n return this.blob\n }\n}\n\nexport class Payload {\n zipreader: ZipReader\n buffer: Blob | undefined\n private metadata: any\n payload_properties!: string\n manifest: update_metadata_pb.DeltaArchiveManifest | undefined\n metadata_signature!: update_metadata_pb.Signatures\n\n header?: AbPayloadHeader\n\n /**\n * This class parses the metadata of a OTA package.\n * @param {File} file A OTA.zip file read from user's machine.\n */\n constructor(file: File | URL | ZipFile) {\n if (file instanceof File) {\n this.zipreader = new ZipReader(new BlobReader(file))\n } else if (file instanceof URL) {\n this.zipreader = new ZipReader(new HttpReader(file.href))\n } else {\n this.zipreader = file.reader\n }\n }\n\n getMetadataLength(): number {\n return (\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n )\n }\n\n /**\n * Unzip the OTA package, get payload.bin and metadata\n */\n async unzip() {\n let entries = await this.zipreader.getEntries()\n for (let entry of entries) {\n if (entry.filename == 'payload.bin') {\n let writer = new OTAPayloadBlobWriter('')\n try {\n await entry.getData!(writer)\n } catch (e) {\n if (e instanceof StopIteration) {\n // Exception used as a hack to stop reading from zip. NO need to do anything\n // Ideally zip.js would provide an API to partialll read a zip\n // entry, but they don't. So this is what we get\n } else {\n console.log(e)\n throw e\n }\n }\n this.buffer = writer.getData()\n await this.readManifest(this.buffer, writer.header!)\n console.log('AB OTA manifest parsed')\n } else if (entry.filename == 'META-INF/com/android/metadata') {\n this.metadata = await entry.getData!(new TextWriter())\n console.log('OTA Package metadata parsed')\n } else if (entry.filename == \"payload_properties.txt\") {\n this.payload_properties = await entry.getData!(new TextWriter());\n console.log('OTA payload_properties.txt parsed');\n }\n }\n if (!this.manifest) {\n console.log('Failed to parse AB OTA package, falling back to non-AB')\n try {\n // The temporary variable manifest has to be used here, to prevent the html page\n // being rendered before everything is read in properly\n let manifest = new PayloadNonAB(this.zipreader)\n await manifest.init()\n manifest.nonAB = true\n this.manifest = manifest\n } catch (error) {\n alert('Please select a legit OTA package')\n return\n }\n }\n }\n\n /**\n * Read the header of payload.bin, including the magic, header_version,\n * manifest_len, metadata_signature_len.\n */\n /**\n * Read in the manifest in an OTA.zip file.\n * The structure of the manifest can be found in:\n * aosp/system/update_engine/update_metadata.proto\n */\n async readManifest(buffer: Blob, header: AbPayloadHeader) {\n this.header = header\n let cursor = _PAYLOAD_HEADER_SIZE\n let manifestBlob = await buffer\n .slice(cursor, cursor + header.manifest_len)\n .arrayBuffer()\n cursor += header.manifest_len\n this.manifest = update_metadata_pb.DeltaArchiveManifest.decode(\n new Uint8Array(manifestBlob)\n )\n let signatureBlob = await buffer\n .slice(cursor, cursor + header.metadata_signature_len)\n .arrayBuffer()\n cursor += header.metadata_signature_len\n this.metadata_signature = update_metadata_pb.Signatures.decode(\n new Uint8Array(signatureBlob)\n );\n (this.manifest! as any).nonAB = false\n }\n\n parseMetadata() {\n for (let formatter of MetadataFormat) {\n let regex = new RegExp(formatter.prefix + '.+')\n if (this.metadata.match(regex)) {\n ;(this as any)[formatter.key] = trimEntry(\n this.metadata.match(regex)[0],\n formatter.prefix\n )\n } else {\n ;(this as any)[formatter.key] = ''\n }\n }\n }\n\n async init() {\n await this.unzip()\n this.parseMetadata()\n }\n}\n\nexport class DefaultMap extends Map {\n /** Reload the original get method. Return the original key value if\n * the key does not exist.\n * @param {Any} key\n */\n getWithDefault(key: any) {\n if (!this.has(key)) return key\n return this.get(key)\n }\n}\n\nexport class OpType {\n mapType: DefaultMap\n /**\n * OpType.mapType create a map that could resolve the operation\n * types. The operation types are encoded as numbers in\n * update_metadata.proto and must be decoded before any usage.\n */\n constructor() {\n let types = update_metadata_pb.InstallOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport class MergeOpType {\n mapType: DefaultMap\n /**\n * MergeOpType create a map that could resolve the COW merge operation\n * types. This is very similar to OpType class except that one is for\n * installation operations.\n */\n constructor() {\n let /** Array<{String: Number}>*/ types =\n update_metadata_pb.CowMergeOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport function octToHex(bufferArray: Uint8Array, space = true, maxLine = 16) {\n let hex_table = ''\n for (let i = 0; i < bufferArray.length; i++) {\n const hex /** String **/ = bufferArray[i].toString(16).toUpperCase()\n if (hex.length === 2) {\n hex_table += hex + (space ? ' ' : '')\n } else {\n hex_table += '0' + hex + (space ? ' ' : '')\n }\n if ((i + 1) % maxLine == 0 && space) {\n hex_table += '\\n'\n }\n }\n return hex_table\n}\n\n/**\n * Trim the prefix in an entry. This is required because the lookbehind\n * regular expression is not supported in safari yet.\n * @param {String} entry\n * @param {String} prefix\n * @return String\n */\nfunction trimEntry(entry: string, prefix: string) {\n return entry.slice(prefix.length + 1, entry.length)\n}\n","\n\n\n\n\n\n\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EChartsOption } from 'echarts'\n\nexport class EchartsData {\n statisticData: Map\n trimmedData: Map\n title: string\n unit: string\n maximumEntries: number\n /**\n * Given a set of [key, value] pairs and title, create an object for further\n * usage in Vue-Echarts.\n * @param {Map} statisticData\n * @param {String} title\n * @param {String} unit\n * @param {Number} maximumEntries\n */\n constructor(\n statisticData: Map,\n title: string,\n unit: string,\n maximumEntries = 15\n ) {\n this.statisticData = statisticData\n this.trimmedData = trimMap(statisticData, maximumEntries)\n this.title = title\n this.unit = unit\n this.maximumEntries = maximumEntries\n }\n\n /**\n * Convert the raw data into a string.\n * @return {String} A list of [key, value].\n */\n listData() {\n let /** String */ table = ''\n for (let [key, value] of this.statisticData) {\n table += key + ' : ' + value.toString() + ' Blocks' + '\\n'\n }\n return table\n }\n\n /**\n * Generate necessary parameters (option) for vue-echarts.\n * Format of the parameters can be found here:\n * https://echarts.apache.org/en/option.html\n * @param {String} unit\n * @return {Object} an ECharts option object.\n */\n getEchartsOption(): EChartsOption {\n let /** Object */ option: EChartsOption = {}\n option.title = {\n text: this.title,\n left: 'center'\n }\n option.tooltip = {\n trigger: 'item',\n formatter: '{a}
{b} : {c} ' + this.unit + ' ({d}%)'\n }\n option.legend = {\n orient: 'horizontal',\n left: 'top',\n top: '10%',\n data: Array.from(this.trimmedData.keys())\n }\n option.series = [\n {\n name: this.title,\n type: 'pie',\n radius: '55%',\n center: ['50%', '60%'],\n data: Array.from(this.trimmedData).map((pair: any) => {\n return { value: pair[1], name: pair[0] }\n }),\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)'\n }\n }\n }\n ]\n return option\n }\n}\n\n/**\n * When there are too many entries in the map, the pie chart can be very\n * crowded. This function will return the entries that have high values.\n * Specifically, the top will be stored and the others\n * will be added into an entry called 'other'.\n * @param {Map} map\n * @param {Number} maximumEntries\n * @return {Map}\n */\nfunction trimMap(map: Map, maximumEntries: number) {\n if (map.size <= maximumEntries) return map\n let /** Map */ new_map = new Map()\n for (let i = 0; i < maximumEntries; i++) {\n let /** Number */ curr = 0\n let /** String */ currKey = ''\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n if (value > curr) {\n curr = value\n currKey = key\n }\n }\n }\n new_map.set(currKey, curr)\n }\n let /** Number */ restTotal = 0\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n restTotal += value\n }\n }\n new_map.set('other', restTotal)\n return new_map\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class MapParser will take in a Android build and construct\n * several file name maps (physical address: file name) according to it.\n * The map of each partitions is added by calling MapParser.add(partitionName).\n * You can query the file name being operated by calling\n * MapParser.query(address, datalength).\n */\n\nimport {\n ZipReader,\n BlobReader,\n TextWriter,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\nimport { chromeos_update_engine } from './update_metadata_pb'\n\nexport class MapParser {\n build: ZipReader\n mapFiles: Map\n maps: Map\n /**\n * This class will take in a .zip Android build and construct a file type map\n * @param {File} targetFile\n */\n constructor(targetFile: File | URL) {\n if (targetFile instanceof File) {\n this.build = new ZipReader(new BlobReader(targetFile))\n } else {\n this.build = new ZipReader(new HttpReader(targetFile.href))\n }\n this.mapFiles = new Map()\n this.maps = new Map()\n }\n\n /**\n * Find the .map entries in the .zip build file. Store them as a map with\n * pairs of (partition name: zip.js entry).\n */\n async init() {\n let /** Array */ entries = await this.build.getEntries()\n const /** RegExp*/ regexPath = /IMAGES\\/[a-z_]*\\.map/g\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.map)/g\n entries.forEach(entry => {\n if (entry.filename.match(regexPath)) {\n this.mapFiles.set(entry.filename.match(regexName)![0], entry)\n }\n })\n }\n\n /**\n * According to the .map in the build, build a map for later query.\n * @param {String} partitionName\n * @param {Number} totalLength\n */\n async add(partitionName: string, totalLength: number) {\n let /** Array */ map = []\n const /** RegExp */ regexNumber = /\\d+/g\n const /** Reg */ regexRange = /\\d+\\-\\d+/g\n for (let i = 0; i < totalLength; i++) map[i] = `<${partitionName}>`\n if (this.mapFiles.get(partitionName)) {\n let /** String */ mapText = await this.mapFiles\n .get(partitionName)\n .getData(new TextWriter())\n let /** Array */ fileEntries = mapText.split('\\n')\n // Each line of the .map file in Android build starts with the filename\n // Followed by the block address, either a number or a range, for example:\n // //system/apex/com.android.adbd.apex 54-66 66 66-2663\n for (let entry of fileEntries) {\n let /** Array */ elements = entry.split(' ')\n for (let j = 1; j < elements.length; j++) {\n let /** Number */ left = 0\n let /** Number */ right = 0\n if (elements[j].match(regexRange)) {\n left = parseInt(elements[j].match(/\\d+/g)[0])\n right = parseInt(elements[j].match(/\\d+/g)[1])\n } else {\n left = parseInt(elements[j].match(regexNumber))\n right = parseInt(elements[j].match(regexNumber))\n }\n InsertMap(map, elements[0], left, right)\n }\n }\n this.maps.set(partitionName, map)\n } else {\n this.maps.set(partitionName, map)\n }\n }\n\n /**\n * Return the filename of given address.\n * @param {String} partitionName\n * @param {Array} extents\n * @return {Array}\n */\n query(partitionName: string, extents: Array) {\n let /** Array */ names = []\n let /** Array */ map = this.maps.get(partitionName)\n for (let ext of extents) {\n names.push(queryMap(map, ext.startBlock, ext.startBlock + ext.numBlocks))\n }\n return names\n }\n}\n\n/**\n * Fill in the hashtable from to using .\n * @param {Array} map\n * @param {String} name\n * @param {Number} left\n * @param {Number} right\n */\nfunction InsertMap(\n map: Array,\n name: string,\n left: number,\n right: number\n) {\n for (let i = left; i <= right; i++) {\n map[i] = name\n }\n}\n\n/**\n * Query the hashtable using index
.\n * @param {Array} map\n * @param {Number} left\n * @param {Number} right\n */\nfunction queryMap(map: Array, left: number, right: number) {\n // Assuming the consecutive blocks belong to the same file\n // Only the start block is queried here.\n if (!map[left]) {\n return 'unknown'\n }\n return map[left]\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Offer functions that can be used to parse the partitionUpdate\n * and then do statistics over it. One can use analysePartitions to specify the\n * partitions been analysed and metrics.\n */\n\nimport { OpType, MergeOpType } from './payload'\nimport { EchartsData } from './echarts_data'\nimport { MapParser } from './map_parser'\nimport { chromeos_update_engine } from './update_metadata_pb'\n\n/**\n * Add a to a element associated to . If the element dose not\n * exists than its value will be initialized to zero.\n * @param {Map} map\n * @param {String} key\n * @param {Number} value\n */\nfunction addNumberToMap(map: Map, key: String, value: number) {\n if (!map.get(key)) {\n map.set(key, 0)\n }\n map.set(key, map.get(key)! + value)\n}\n\n/**\n * Return a statistics over the numbers of blocks (in destination) that are\n * being operated by different installation operation (e.g. REPLACE, BSDIFF).\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedBlockStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n operatedBlocks,\n operationType,\n numBlocks(operation.dstExtents)\n )\n }\n }\n return operatedBlocks\n}\n\nfunction partitionPayloadSize(\n partition: chromeos_update_engine.IPartitionUpdate\n) {\n if (!partition.operations) {\n return 0\n }\n let size = 0\n for (let op of partition.operations!) {\n size += op.dataLength\n }\n return size\n}\n\nexport function partitionPayloadSizeStatistics(\n partitions: Array\n) {\n let partitionStats = new Map()\n for (let partition of partitions) {\n addNumberToMap(\n partitionStats,\n partition.partitionName,\n partitionPayloadSize(partition)\n )\n }\n return partitionStats\n}\n\nexport function mergeOperationStatistics(\n partitions: Array,\n blockSize: number\n) {\n let /** Map */ mergeOperations = new Map()\n let /** MergeOpType */ opType = new MergeOpType()\n let /** Number */ totalBlocks = 0\n for (let partition of partitions) {\n for (let operation of partition.mergeOperations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n mergeOperations,\n operationType,\n operation.dstExtent!.numBlocks\n )\n }\n // The total blocks number should be rounded up\n if (partition.newPartitionInfo == null) {\n throw new Error(\n `Partition ${partition.partitionName} doesn't have new_partition_info field.`\n )\n }\n totalBlocks += Math.ceil(partition.newPartitionInfo.size / blockSize)\n }\n // The COW merge operation is default to be COW_replace and not shown in\n // the manifest info. We have to mannually add that part of operations,\n // by subtracting the total blocks with other blocks.\n mergeOperations.forEach((value, key) => (totalBlocks -= value))\n mergeOperations.set('COW_REPLACE', totalBlocks)\n return mergeOperations\n}\n\n/**\n * Return a statistics over the disk usage of payload.bin, based on the type of\n * installation operations. Only partitions that are being passed in will be\n * included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedPayloadStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(operatedBlocks, operationType, operation.dataLength)\n }\n }\n return operatedBlocks\n}\n/**\n * Return a statistics over the disk usage of each file types in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFileExtensionsStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let filenameStats = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n const fileExtenstionStats = new Map()\n filenameStats.forEach((size, filename) => {\n addNumberToMap(fileExtenstionStats, name2Extension(filename), size)\n })\n return fileExtenstionStats\n}\n\n/**\n * Return a statistics over the disk usage of each file name in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFilenamesStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let /** Map */ operatedFilenames = new Map()\n if (!targetFile) {\n return operatedFilenames\n }\n let buildMap = new MapParser(targetFile)\n await buildMap.init()\n for (let partition of partitions) {\n await buildMap.add(\n partition.partitionName,\n Math.ceil(partition.newPartitionInfo!.size / blockSize)\n )\n for (let operation of partition.operations!) {\n if (!operation.hasOwnProperty('dataLength')) continue\n let operatedFileNames = buildMap.query(\n partition.partitionName,\n operation.dstExtents!\n )\n let extentDataLength = distributeFilenames(\n operatedFileNames,\n operation.dstExtents!,\n operation.dataLength\n )\n extentDataLength!.forEach((value, key) => {\n addNumberToMap(operatedFilenames, key, value)\n })\n }\n }\n return operatedFilenames\n}\n\n/**\n * Analyse the given partitions using the given metrics.\n * @param {String} metrics\n * @param {Array} partitions\n * @return {EchartsData}\n */\nexport async function analysePartitions(\n metrics: String,\n partitions: Array,\n blockSize = 4096,\n targetFile: File | null | URL = null\n) {\n let /** Map */ statisticsData\n let /** Echartsdata */ echartsData\n switch (metrics) {\n case 'blocks':\n statisticsData = operatedBlockStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Operated blocks in target build',\n 'blocks'\n )\n break\n case 'payload':\n statisticsData = operatedPayloadStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Payload disk usage',\n 'bytes'\n )\n break\n case 'COWmerge':\n statisticsData = mergeOperationStatistics(partitions, blockSize)\n echartsData = new EchartsData(\n statisticsData,\n 'COW merge operations',\n 'blocks'\n )\n break\n case 'filenames':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated filenames',\n 'bytes'\n )\n break\n case 'extensions':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFileExtensionsStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated extensions',\n 'bytes'\n )\n break\n case 'partitions':\n statisticsData = partitionPayloadSizeStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Partition payload size',\n 'bytes'\n )\n break\n }\n if (echartsData) {\n return echartsData\n } else {\n throw 'Please double check if this is a proper AB OTA package.'\n }\n}\n\n/**\n * Calculate the number of blocks being operated\n * @param {Array} exts\n * @return {number}\n */\nexport function numBlocks(\n exts: Array | null | undefined\n) {\n if (!exts) {\n return 0\n }\n const accumulator = (total: number, ext: chromeos_update_engine.IExtent) =>\n total + ext.numBlocks\n return exts.reduce(accumulator, 0)\n}\n\n/**\n * Return a string that indicates the blocks being operated\n * in the manner of (start_block, block_length)\n * @param {Array} exts\n * @return {string}\n */\nexport function displayBlocks(exts: Array) {\n const accumulator = (total: string, ext: chromeos_update_engine.Extent) =>\n total + '(' + ext.startBlock + ',' + ext.numBlocks + ')'\n return exts.reduce(accumulator, '')\n}\n\n/**\n * Return a map with pairs of (file extension, data length used by this\n * extension). The total data length will be distributed by the blocks ratio\n * of each extent.\n * @param {Array} filenames\n * @param {Array} exts\n * @param {Number} length\n * @return {Map}\n */\nexport function distributeFilenames(\n filenames: Array,\n exts: Array,\n length: number\n): Map {\n let totalBlocks = numBlocks(exts)\n let distributedLengths = new Map()\n for (let i = 0; i < filenames.length; i++) {\n addNumberToMap(\n distributedLengths,\n filenames[i],\n Math.round((length * exts[i].numBlocks) / totalBlocks)\n )\n }\n return distributedLengths\n}\n\n/**\n * convert a filename into extension, for example:\n * '//system/apex/com.android.adbd.apex' => 'apex'\n * @param {String} filename\n * @return {String}\n */\nexport function name2Extension(filename: string) {\n let elements = filename.split('.')\n if (elements.length > 1) {\n return elements[elements.length - 1]\n } else if (elements[0] === 'unknown') {\n return 'unknown'\n } else if (filename[0] == '<' && filename.endsWith('>')) {\n return filename\n } else {\n return 'no-extension'\n }\n}\n","\nimport { numBlocks, displayBlocks } from '../services/payload_composition'\nimport { DefaultMap } from '../services/payload'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n operation: {\n type: Object,\n required: true\n },\n mapType: {\n type: DefaultMap,\n required: true\n }\n },\n data() {\n return {\n srcTotalBlocks: 0,\n srcBlocks: '',\n dstTotalBlocks: 0,\n dstBlocks: ''\n }\n },\n mounted() {\n if (this.operation.srcExtents) {\n this.srcTotalBlocks = numBlocks(this.operation.srcExtents)\n this.srcBlocks = displayBlocks(this.operation.srcExtents)\n }\n if (this.operation.dstExtents) {\n this.dstTotalBlocks = numBlocks(this.operation.dstExtents)\n this.dstBlocks = displayBlocks(this.operation.dstExtents)\n }\n }\n})\n","import { render } from \"./OperationDetail.vue?vue&type=template&id=44174082&scoped=true\"\nimport script from \"./OperationDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./OperationDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-44174082\"\n\nexport default script","\nimport { chromeos_update_engine } from '@/services/update_metadata_pb'\nimport { defineComponent } from 'vue'\nimport { OpType, octToHex } from '../services/payload'\nimport OperationDetail from './OperationDetail.vue'\n\nexport default defineComponent({\n components: {\n OperationDetail\n },\n props: {\n partition: {\n type: chromeos_update_engine.PartitionUpdate,\n required: true\n },\n dynamicPartitionList: {\n type: Array,\n required: true\n }\n },\n data() {\n return {\n showOPs: false,\n showInfo: false,\n opType: new OpType()\n }\n },\n methods: {\n toggle(key: string) {\n ;(this as any)[key] = !(this as any)[key]\n },\n octToHex: octToHex\n },\n computed: {\n readableTimestamp() {\n const unixTimestamp = parseInt(this.partition.version)\n if (isNaN(unixTimestamp)) {\n return ''\n }\n // Unix timestamp is in seconds, but js want milliseconds. So *1000\n return new Date(unixTimestamp * 1000).toString()\n },\n isDynamicPartition(): boolean {\n return (\n this.dynamicPartitionList.indexOf(this.partition.partitionName) >= 0\n )\n },\n isFECEnabled(): boolean {\n return (\n this.partition.fecExtent?.numBlocks > 0\n )\n },\n isHashtreeEnabled(): boolean {\n return (\n this.partition.hashTreeExtent?.numBlocks > 0\n )\n }\n }\n})\n","import { render } from \"./PartitionDetail.vue?vue&type=template&id=21e569e9&scoped=true\"\nimport script from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PartitionDetail.vue?vue&type=style&index=0&id=21e569e9&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-21e569e9\"\n\nexport default script","\n\n\n\n\n\n\n","import * as zip from '@zip.js/zip.js/dist/zip.js'\nimport { ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { Payload } from './payload'\n\nexport class ZipFile {\n public reader: ZipReader\n\n constructor(private file: File | URL) {\n this.reader = getZipReader(file)\n }\n getFileName() {\n return getFileName(this.file)\n }\n getFileSize() {\n if (this.file instanceof File) {\n return this.file.size\n } else {\n // TODO(zhangkelvin) Support getting file size from URL\n return 0\n }\n }\n}\n\nexport async function trimZip(\n file: ZipReader,\n p: (entry: zip.Entry) => boolean\n): Promise {\n const reader = file\n const writer = new zip.ZipWriter(new zip.BlobWriter('application/zip'))\n const entries = await reader.getEntries()\n for (const entry of entries.filter(entry => !!entry && p(entry))) {\n const blobWriter = new zip.BlobWriter()\n const data = (await entry.getData!(blobWriter)) as Blob\n console.log(`Adding ${entry.filename}, ${data.size}`)\n writer.add(entry.filename, new zip.BlobReader(blobWriter.getData()), {\n level: 0 // no compression\n })\n }\n return writer\n}\n\nfunction getZipReader(file: File | URL) {\n if (file instanceof File) {\n return new zip.ZipReader(new zip.BlobReader(file))\n } else {\n return new zip.ZipReader(new zip.HttpReader(file.href))\n }\n}\n\nexport function getFileName(file: File | URL) {\n if (file instanceof File) {\n return file.name\n } else {\n return file.pathname\n }\n}\n\nexport async function trimTargetFiles(file: File | URL): Promise {\n const writer = await trimZip(getZipReader(file), entry => {\n return entry.filename.startsWith('META/') || entry.filename.endsWith('.map') || entry.filename.endsWith(\".prop\") || entry.filename == \"prop.default\"\n })\n return await writer.close()\n}\n\nexport async function trimOTAPackage(payload: Payload): Promise {\n const writer = await trimZip(payload.zipreader, entry => {\n return entry.filename != 'payload.bin'\n })\n await writer.add(\n 'payload.bin',\n new zip.BlobReader(payload.buffer!.slice(0, payload.getMetadataLength())),\n // Most toolings assume that payload.bin and other entries are not\n // compressed, so use level 0\n {\n level: 0\n }\n )\n const blob: Blob = await writer.close()\n return blob\n}\n\nexport function downloadFile(\n blob: Blob,\n downloadNode: HTMLAnchorElement,\n filename: string\n) {\n const url = window.URL.createObjectURL(blob)\n downloadNode.href = url\n downloadNode.download = filename\n downloadNode.click()\n window.URL.revokeObjectURL(url)\n}\n\nexport function ensureSuffix(str: string, suffix: string) {\n if (str.endsWith(suffix)) {\n return str\n } else {\n return str + suffix\n }\n}\n","\nimport { Payload, MetadataFormat } from '../services/payload'\nimport { ZipFile } from '@/services/trim_zip'\n\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n zipFile: {\n type: ZipFile,\n required: true\n },\n payload: {\n type: Payload,\n required: true\n }\n },\n data() {\n return {\n MetadataFormat\n }\n },\n computed: {\n isDataWipePackage(): boolean {\n return this.payload.payload_properties.includes(\"POWERWASH=1\");\n },\n otaMetadata(): {\n prefix: string\n key: string\n name: string\n }[] {\n return MetadataFormat.filter(formatter =>\n String((this.payload as any)[formatter.key]).length > 0\n );\n },\n totalCOWSize(): number {\n const cowSizes = this.payload?.manifest?.partitions.map(p => p.estimateCowSize || 0);\n if (!cowSizes) {\n return 0;\n }\n return cowSizes.reduce((a, b) => a + b);\n },\n vabcCompressionParam(): string {\n return this.payload?.manifest?.dynamicPartitionMetadata?.vabcCompressionParam || \"\";\n },\n securityPatchLevel(): string {\n const spl = this.payload?.manifest?.securityPatchLevel;\n if (!spl) {\n return \"\";\n }\n return spl;\n },\n totalDynamicPartitionSize(): number {\n const groups = this.payload?.manifest?.dynamicPartitionMetadata?.groups\n if (!groups) {\n return 0\n }\n const dynamicPartitionNamess = new Set(\n groups.flatMap(g => g.partitionNames)\n )\n const dynamicPartitions =\n this.payload.manifest?.partitions.filter(p =>\n dynamicPartitionNamess.has(p.partitionName)\n ) || []\n if (dynamicPartitions.length <= 0) {\n return 0\n }\n return dynamicPartitions\n .map(p => p.newPartitionInfo?.size || 0)\n .reduce((acc, cur) => acc + cur)\n }\n }\n})\n","import { render } from \"./BasicInfo.vue?vue&type=template&id=4b9027e2&scoped=true\"\nimport script from \"./BasicInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./BasicInfo.vue?vue&type=script&lang=ts\"\n\nimport \"./BasicInfo.vue?vue&type=style&index=0&id=4b9027e2&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-4b9027e2\"\n\nexport default script","\nimport PartitionDetail from './PartitionDetail.vue'\nimport BasicInfo from './BasicInfo.vue'\nimport { Payload, octToHex } from '../services/payload'\nimport {\n downloadFile,\n ensureSuffix,\n trimOTAPackage,\n ZipFile\n} from '@/services/trim_zip'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n components: {\n PartitionDetail,\n BasicInfo\n },\n props: {\n zipFile: {\n type: ZipFile,\n default: null\n },\n payload: {\n type: Payload,\n default: null\n }\n },\n methods: {\n octToHex: octToHex,\n async exportOTAPackage() {\n const blob = await trimOTAPackage(this.payload as Payload)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(this.zipFile.getFileName(), '.zip')\n )\n }\n },\n computed: {\n dynamicPartitions(): string[] {\n return (\n this.payload.manifest?.dynamicPartitionMetadata?.groups?.flatMap(\n g => g.partitionNames || []\n ) || []\n )\n }\n }\n})\n","import { render } from \"./PayloadDetail.vue?vue&type=template&id=05db67f2&scoped=true\"\nimport script from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-05db67f2\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n labels: {\n type: Array,\n default: new Array()\n },\n modelValue: {\n type: Map,\n default: new Map()\n }\n },\n data() {\n return {\n selectAll: 1,\n selectAllText: ['Select All', 'Unselect All']\n }\n },\n mounted() {\n // Set the default value to be true once mounted\n for (let key of this.labels) {\n this.modelValue.set(key, true)\n }\n },\n methods: {\n updateSelected(newSelect: string) {\n this.modelValue.set(newSelect, !this.modelValue.get(newSelect))\n this.$emit('update:modelValue', this.modelValue)\n },\n revertAllSelection() {\n this.selectAll = 1 - this.selectAll\n for (let key of this.modelValue.keys()) {\n this.modelValue.set(key, Boolean(this.selectAll))\n }\n }\n }\n})\n","import { render } from \"./PartialCheckbox.vue?vue&type=template&id=533f2336&scoped=true\"\nimport script from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\n\nimport \"./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-533f2336\"\n\nexport default script","\n\n\n\n\n\n\n","import { render } from \"./PieChart.vue?vue&type=template&id=5d1cb486&scoped=true\"\nimport script from \"./PieChart.vue?vue&type=script&lang=js\"\nexport * from \"./PieChart.vue?vue&type=script&lang=js\"\n\nimport \"./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-5d1cb486\"\n\nexport default script","\nimport axios from 'axios'\nimport PartialCheckbox from './PartialCheckbox.vue'\nimport PieChart from './PieChart.vue'\nimport BaseFile from './BaseFile.vue'\nimport { analysePartitions } from '../services/payload_composition'\nimport { chromeos_update_engine as update_metadata_pb } from '../services/update_metadata_pb'\nimport { TooltipComponentPositionCallbackParams } from 'echarts'\nimport { EchartsData } from '@/services/echarts_data'\nimport { defineComponent } from 'vue'\nimport {\n downloadFile,\n ensureSuffix,\n getFileName,\n trimTargetFiles\n} from '@/services/trim_zip'\n\ninterface ComponentState {\n partitionInclude: Map\n echartsData: EchartsData | null\n listData: string\n targetFile: File | URL | null\n}\n\nexport default defineComponent({\n components: {\n PartialCheckbox,\n PieChart,\n BaseFile\n },\n props: {\n manifest: {\n type: update_metadata_pb.DeltaArchiveManifest,\n default: () => []\n },\n demo: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n partitionInclude: new Map(),\n echartsData: null,\n listData: '',\n targetFile: null\n } as ComponentState\n },\n computed: {\n updatePartitions(): string[] {\n return this.manifest.partitions.map(\n (partition: update_metadata_pb.IPartitionUpdate) => {\n return partition.partitionName\n }\n )\n }\n },\n async mounted() {\n if (this.demo) {\n try {\n const download = await axios.get(\n './files/cf_x86_target_file_demo.zip',\n { responseType: 'blob' }\n )\n this.targetFile = new File([download.data], 'target_demo.zip')\n } catch (err) {\n console.log('Please put a proper example target file in /public/files/')\n }\n }\n },\n methods: {\n piechartClick(param: TooltipComponentPositionCallbackParams) {\n console.log(param)\n },\n async updateChart(metrics: string) {\n let partitionSelected = this.manifest.partitions.filter(partition =>\n this.partitionInclude.get(partition.partitionName)\n )\n try {\n this.echartsData = await analysePartitions(\n metrics,\n partitionSelected,\n this.manifest.blockSize,\n this.targetFile\n )\n } catch (err) {\n alert(`Cannot be processed for the following issue: ${err}`)\n }\n },\n selectBuild(file: File | URL) {\n //TODO(lishutong) check the version of target file is same to the OTA target\n this.targetFile = file\n },\n async exportTargetFileMetadata() {\n const blob = await trimTargetFiles(this.targetFile!)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(getFileName(this.targetFile!), '.zip')\n )\n }\n }\n})\n","import { render } from \"./PayloadComposition.vue?vue&type=template&id=b6f71732&scoped=true\"\nimport script from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadComposition.vue?vue&type=style&index=0&id=b6f71732&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-b6f71732\"\n\nexport default script","\nimport BaseFile from '../components/BaseFile.vue'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n BaseFile,\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return ({\n zipFile: null,\n payload: null\n } as unknown) as {\n zipFile: ZipFile\n payload: Payload\n }\n },\n methods: {\n async unpackOTA(file: File | URL) {\n this.zipFile = new ZipFile(file)\n try {\n const payload = new Payload(this.zipFile as ZipFile);\n await payload.init();\n this.payload = payload;\n } catch (err) {\n alert(`Please check if this is a correct OTA package (.zip). ${err}`)\n console.log(err)\n }\n }\n }\n})\n","import { render } from \"./PackageAnalysis.vue?vue&type=template&id=142e5614\"\nimport script from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nexport * from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\nimport axios from 'axios'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return {\n zipFile: null,\n payload: null\n } as {\n zipFile: ZipFile | null\n payload: Payload | null\n }\n },\n async created() {\n // put cf_x86_demo.zip and cf_x86_target_file_demo into\n // this directory: /public/files\n try {\n const download = await axios.get('./files/cf_x86_demo.zip', {\n responseType: 'blob'\n })\n this.zipFile = new ZipFile(new File([download.data], 'ota_demo.zip'))\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n console.log('Please put a proper example OTA in /public/files/')\n }\n }\n})\n","import { render } from \"./Demo.vue?vue&type=template&id=1e5d071a\"\nimport script from \"./Demo.vue?vue&type=script&lang=ts\"\nexport * from \"./Demo.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n","import { render } from \"./About.vue?vue&type=template&id=67ed0bf6\"\nconst script = {}\nscript.render = render\n\nexport default script","\n\n\n\n","import { render } from \"./NotFound.vue?vue&type=template&id=50c6f348&scoped=true\"\nconst script = {}\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-50c6f348\"\n\nexport default script","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createRouter, createWebHistory } from 'vue-router'\nimport PackageAnalysis from '@/views/PackageAnalysis.vue'\nimport Demo from'@/views/Demo.vue'\nimport About from '@/views/About.vue'\nimport NotFound from '@/views/NotFound.vue'\n\nconst routes = [\n {\n path: '/',\n name: 'Analysis',\n component: PackageAnalysis,\n meta: {\n title: 'Analyse OTA package - from AOSP'\n }\n },\n {\n path: '/demo',\n name: 'Demo',\n component: Demo\n },\n {\n path: '/about',\n name: 'About',\n component: About\n },\n {\n path: '/:catchAll(.*)',\n name: 'Not Found',\n component: NotFound\n }\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes\n})\n\n// This callback runs before every route change, including on page load.\nrouter.beforeEach((to, from, next) => {\n // This goes through the matched routes from last to first, finding the closest route with a title.\n // e.g., if we have `/some/deep/nested/route` and `/some`, `/deep`, and `/nested` have titles,\n // `/nested`'s will be chosen.\n const nearestWithTitle = to.matched.slice().reverse().find(r => r.meta && r.meta.title);\n\n // Find the nearest route element with meta tags.\n const nearestWithMeta = to.matched.slice().reverse().find(r => r.meta && r.meta.metaTags)!;\n\n const previousNearestWithMeta = from.matched.slice().reverse().find(r => r.meta && r.meta.metaTags);\n\n // If a route with a title was found, set the document (page) title to that value.\n if(nearestWithTitle) {\n document.title = nearestWithTitle.meta.title as string;\n } else if(previousNearestWithMeta) {\n document.title = previousNearestWithMeta.meta.title as string;\n }\n\n // Remove any stale meta tags from the document using the key attribute we set below.\n Array.from(document.querySelectorAll('[data-vue-router-controlled]')).map(el => el.parentNode!.removeChild(el));\n\n next();\n});\n\nexport default router\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createStore } from 'vuex'\n\nexport default createStore({\n state: {},\n mutations: {},\n actions: {},\n modules: {}\n})\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createApp } from 'vue'\nimport vuetify from './plugins/vuetify'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nconst app = createApp(App)\napp.use(router)\napp.use(store)\napp.use(vuetify)\n\napp.mount('#app')","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\""],"sourceRoot":""} \ No newline at end of file diff --git a/analyseOTA/js/app.15c5fa89.js b/analyseOTA/js/app.15c5fa89.js new file mode 100644 index 0000000..4e524d7 --- /dev/null +++ b/analyseOTA/js/app.15c5fa89.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var r,o,s=t[0],c=t[1],l=t[2],p=0,d=[];p>>3){case 1:r.startBlock=e.uint64();break;case 2:r.numBlocks=e.uint64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null==e.startBlock||!e.hasOwnProperty("startBlock")||se.isInteger(e.startBlock)||e.startBlock&&se.isInteger(e.startBlock.low)&&se.isInteger(e.startBlock.high)?null==e.numBlocks||!e.hasOwnProperty("numBlocks")||se.isInteger(e.numBlocks)||e.numBlocks&&se.isInteger(e.numBlocks.low)&&se.isInteger(e.numBlocks.high)?null:"numBlocks: integer|Long expected":"startBlock: integer|Long expected"},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.Extent)return e;var t=new ce.chromeos_update_engine.Extent;return null!=e.startBlock&&(se.Long?(t.startBlock=se.Long.fromValue(e.startBlock)).unsigned=!0:"string"===typeof e.startBlock?t.startBlock=parseInt(e.startBlock,10):"number"===typeof e.startBlock?t.startBlock=e.startBlock:"object"===Object(re["a"])(e.startBlock)&&(t.startBlock=new se.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0))),null!=e.numBlocks&&(se.Long?(t.numBlocks=se.Long.fromValue(e.numBlocks)).unsigned=!0:"string"===typeof e.numBlocks?t.numBlocks=parseInt(e.numBlocks,10):"number"===typeof e.numBlocks?t.numBlocks=e.numBlocks:"object"===Object(re["a"])(e.numBlocks)&&(t.numBlocks=new se.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(se.Long){var r=new se.Long(0,0,!0);n.startBlock=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.startBlock=t.longs===String?"0":0;if(se.Long){var a=new se.Long(0,0,!0);n.numBlocks=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.numBlocks=t.longs===String?"0":0}return null!=e.startBlock&&e.hasOwnProperty("startBlock")&&("number"===typeof e.startBlock?n.startBlock=t.longs===String?String(e.startBlock):e.startBlock:n.startBlock=t.longs===String?se.Long.prototype.toString.call(e.startBlock):t.longs===Number?new se.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0):e.startBlock),null!=e.numBlocks&&e.hasOwnProperty("numBlocks")&&("number"===typeof e.numBlocks?n.numBlocks=t.longs===String?String(e.numBlocks):e.numBlocks:n.numBlocks=t.longs===String?se.Long.prototype.toString.call(e.numBlocks):t.longs===Number?new se.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0):e.numBlocks),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.Signatures=function(){function e(e){if(this.signatures=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.signatures&&r.signatures.length||(r.signatures=[]),r.signatures.push(ce.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.signatures&&e.hasOwnProperty("signatures")){if(!Array.isArray(e.signatures))return"signatures: array expected";for(var t=0;t>>3){case 1:r.version=e.uint32();break;case 2:r.data=e.bytes();break;case 3:r.unpaddedSignatureSize=e.fixed32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null!=e.version&&e.hasOwnProperty("version")&&!se.isInteger(e.version)?"version: integer expected":null!=e.data&&e.hasOwnProperty("data")&&!(e.data&&"number"===typeof e.data.length||se.isString(e.data))?"data: buffer expected":null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&!se.isInteger(e.unpaddedSignatureSize)?"unpaddedSignatureSize: integer expected":null},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.Signatures.Signature)return e;var t=new ce.chromeos_update_engine.Signatures.Signature;return null!=e.version&&(t.version=e.version>>>0),null!=e.data&&("string"===typeof e.data?se.base64.decode(e.data,t.data=se.newBuffer(se.base64.length(e.data)),0):e.data.length&&(t.data=e.data)),null!=e.unpaddedSignatureSize&&(t.unpaddedSignatureSize=e.unpaddedSignatureSize>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.version=0,t.bytes===String?n.data="":(n.data=[],t.bytes!==Array&&(n.data=se.newBuffer(n.data))),n.unpaddedSignatureSize=0),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.data&&e.hasOwnProperty("data")&&(n.data=t.bytes===String?se.base64.encode(e.data,0,e.data.length):t.bytes===Array?Array.prototype.slice.call(e.data):e.data),null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&(n.unpaddedSignatureSize=e.unpaddedSignatureSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e}(),e.PartitionInfo=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.size=e.uint64();break;case 2:r.hash=e.bytes();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null==e.size||!e.hasOwnProperty("size")||se.isInteger(e.size)||e.size&&se.isInteger(e.size.low)&&se.isInteger(e.size.high)?null!=e.hash&&e.hasOwnProperty("hash")&&!(e.hash&&"number"===typeof e.hash.length||se.isString(e.hash))?"hash: buffer expected":null:"size: integer|Long expected"},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.PartitionInfo)return e;var t=new ce.chromeos_update_engine.PartitionInfo;return null!=e.size&&(se.Long?(t.size=se.Long.fromValue(e.size)).unsigned=!0:"string"===typeof e.size?t.size=parseInt(e.size,10):"number"===typeof e.size?t.size=e.size:"object"===Object(re["a"])(e.size)&&(t.size=new se.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0))),null!=e.hash&&("string"===typeof e.hash?se.base64.decode(e.hash,t.hash=se.newBuffer(se.base64.length(e.hash)),0):e.hash.length&&(t.hash=e.hash)),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(se.Long){var r=new se.Long(0,0,!0);n.size=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.size=t.longs===String?"0":0;t.bytes===String?n.hash="":(n.hash=[],t.bytes!==Array&&(n.hash=se.newBuffer(n.hash)))}return null!=e.size&&e.hasOwnProperty("size")&&("number"===typeof e.size?n.size=t.longs===String?String(e.size):e.size:n.size=t.longs===String?se.Long.prototype.toString.call(e.size):t.longs===Number?new se.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0):e.size),null!=e.hash&&e.hasOwnProperty("hash")&&(n.hash=t.bytes===String?se.base64.encode(e.hash,0,e.hash.length):t.bytes===Array?Array.prototype.slice.call(e.hash):e.hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.InstallOperation=function(){function e(e){if(this.srcExtents=[],this.dstExtents=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.dataOffset=e.uint64();break;case 3:r.dataLength=e.uint64();break;case 4:r.srcExtents&&r.srcExtents.length||(r.srcExtents=[]),r.srcExtents.push(ce.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 5:r.srcLength=e.uint64();break;case 6:r.dstExtents&&r.dstExtents.length||(r.dstExtents=[]),r.dstExtents.push(ce.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 7:r.dstLength=e.uint64();break;case 8:r.dataSha256Hash=e.bytes();break;case 9:r.srcSha256Hash=e.bytes();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("type"))throw se.ProtocolError("missing required 'type'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 8:case 6:case 7:case 10:case 9:case 11:case 12:case 13:break}if(null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&!se.isInteger(e.dataOffset)&&!(e.dataOffset&&se.isInteger(e.dataOffset.low)&&se.isInteger(e.dataOffset.high)))return"dataOffset: integer|Long expected";if(null!=e.dataLength&&e.hasOwnProperty("dataLength")&&!se.isInteger(e.dataLength)&&!(e.dataLength&&se.isInteger(e.dataLength.low)&&se.isInteger(e.dataLength.high)))return"dataLength: integer|Long expected";if(null!=e.srcExtents&&e.hasOwnProperty("srcExtents")){if(!Array.isArray(e.srcExtents))return"srcExtents: array expected";for(var t=0;t>>0,e.dataOffset.high>>>0).toNumber(!0))),null!=e.dataLength&&(se.Long?(t.dataLength=se.Long.fromValue(e.dataLength)).unsigned=!0:"string"===typeof e.dataLength?t.dataLength=parseInt(e.dataLength,10):"number"===typeof e.dataLength?t.dataLength=e.dataLength:"object"===Object(re["a"])(e.dataLength)&&(t.dataLength=new se.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0))),e.srcExtents){if(!Array.isArray(e.srcExtents))throw TypeError(".chromeos_update_engine.InstallOperation.srcExtents: array expected");t.srcExtents=[];for(var n=0;n>>0,e.srcLength.high>>>0).toNumber(!0))),e.dstExtents){if(!Array.isArray(e.dstExtents))throw TypeError(".chromeos_update_engine.InstallOperation.dstExtents: array expected");t.dstExtents=[];for(var r=0;r>>0,e.dstLength.high>>>0).toNumber(!0))),null!=e.dataSha256Hash&&("string"===typeof e.dataSha256Hash?se.base64.decode(e.dataSha256Hash,t.dataSha256Hash=se.newBuffer(se.base64.length(e.dataSha256Hash)),0):e.dataSha256Hash.length&&(t.dataSha256Hash=e.dataSha256Hash)),null!=e.srcSha256Hash&&("string"===typeof e.srcSha256Hash?se.base64.decode(e.srcSha256Hash,t.srcSha256Hash=se.newBuffer(se.base64.length(e.srcSha256Hash)),0):e.srcSha256Hash.length&&(t.srcSha256Hash=e.srcSha256Hash)),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.srcExtents=[],n.dstExtents=[]),t.defaults){if(n.type=t.enums===String?"REPLACE":0,se.Long){var r=new se.Long(0,0,!0);n.dataOffset=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.dataOffset=t.longs===String?"0":0;if(se.Long){var a=new se.Long(0,0,!0);n.dataLength=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.dataLength=t.longs===String?"0":0;if(se.Long){var i=new se.Long(0,0,!0);n.srcLength=t.longs===String?i.toString():t.longs===Number?i.toNumber():i}else n.srcLength=t.longs===String?"0":0;if(se.Long){var o=new se.Long(0,0,!0);n.dstLength=t.longs===String?o.toString():t.longs===Number?o.toNumber():o}else n.dstLength=t.longs===String?"0":0;t.bytes===String?n.dataSha256Hash="":(n.dataSha256Hash=[],t.bytes!==Array&&(n.dataSha256Hash=se.newBuffer(n.dataSha256Hash))),t.bytes===String?n.srcSha256Hash="":(n.srcSha256Hash=[],t.bytes!==Array&&(n.srcSha256Hash=se.newBuffer(n.srcSha256Hash)))}if(null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?ce.chromeos_update_engine.InstallOperation.Type[e.type]:e.type),null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&("number"===typeof e.dataOffset?n.dataOffset=t.longs===String?String(e.dataOffset):e.dataOffset:n.dataOffset=t.longs===String?se.Long.prototype.toString.call(e.dataOffset):t.longs===Number?new se.LongBits(e.dataOffset.low>>>0,e.dataOffset.high>>>0).toNumber(!0):e.dataOffset),null!=e.dataLength&&e.hasOwnProperty("dataLength")&&("number"===typeof e.dataLength?n.dataLength=t.longs===String?String(e.dataLength):e.dataLength:n.dataLength=t.longs===String?se.Long.prototype.toString.call(e.dataLength):t.longs===Number?new se.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0):e.dataLength),e.srcExtents&&e.srcExtents.length){n.srcExtents=[];for(var s=0;s>>0,e.srcLength.high>>>0).toNumber(!0):e.srcLength),e.dstExtents&&e.dstExtents.length){n.dstExtents=[];for(var c=0;c>>0,e.dstLength.high>>>0).toNumber(!0):e.dstLength),null!=e.dataSha256Hash&&e.hasOwnProperty("dataSha256Hash")&&(n.dataSha256Hash=t.bytes===String?se.base64.encode(e.dataSha256Hash,0,e.dataSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.dataSha256Hash):e.dataSha256Hash),null!=e.srcSha256Hash&&e.hasOwnProperty("srcSha256Hash")&&(n.srcSha256Hash=t.bytes===String?se.base64.encode(e.srcSha256Hash,0,e.srcSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.srcSha256Hash):e.srcSha256Hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="REPLACE"]=0,t[e[1]="REPLACE_BZ"]=1,t[e[2]="MOVE"]=2,t[e[3]="BSDIFF"]=3,t[e[4]="SOURCE_COPY"]=4,t[e[5]="SOURCE_BSDIFF"]=5,t[e[8]="REPLACE_XZ"]=8,t[e[6]="ZERO"]=6,t[e[7]="DISCARD"]=7,t[e[10]="BROTLI_BSDIFF"]=10,t[e[9]="PUFFDIFF"]=9,t[e[11]="ZUCCHINI"]=11,t[e[12]="LZ4DIFF_BSDIFF"]=12,t[e[13]="LZ4DIFF_PUFFDIFF"]=13,t}(),e}(),e.CowMergeOperation=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.srcExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 3:r.dstExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 4:r.srcOffset=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:break}if(null!=e.srcExtent&&e.hasOwnProperty("srcExtent")){var t=ce.chromeos_update_engine.Extent.verify(e.srcExtent);if(t)return"srcExtent."+t}if(null!=e.dstExtent&&e.hasOwnProperty("dstExtent")){var n=ce.chromeos_update_engine.Extent.verify(e.dstExtent);if(n)return"dstExtent."+n}return null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&!se.isInteger(e.srcOffset)?"srcOffset: integer expected":null},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.CowMergeOperation)return e;var t=new ce.chromeos_update_engine.CowMergeOperation;switch(e.type){case"COW_COPY":case 0:t.type=0;break;case"COW_XOR":case 1:t.type=1;break;case"COW_REPLACE":case 2:t.type=2;break}if(null!=e.srcExtent){if("object"!==Object(re["a"])(e.srcExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.srcExtent: object expected");t.srcExtent=ce.chromeos_update_engine.Extent.fromObject(e.srcExtent)}if(null!=e.dstExtent){if("object"!==Object(re["a"])(e.dstExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.dstExtent: object expected");t.dstExtent=ce.chromeos_update_engine.Extent.fromObject(e.dstExtent)}return null!=e.srcOffset&&(t.srcOffset=e.srcOffset>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.type=t.enums===String?"COW_COPY":0,n.srcExtent=null,n.dstExtent=null,n.srcOffset=0),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?ce.chromeos_update_engine.CowMergeOperation.Type[e.type]:e.type),null!=e.srcExtent&&e.hasOwnProperty("srcExtent")&&(n.srcExtent=ce.chromeos_update_engine.Extent.toObject(e.srcExtent,t)),null!=e.dstExtent&&e.hasOwnProperty("dstExtent")&&(n.dstExtent=ce.chromeos_update_engine.Extent.toObject(e.dstExtent,t)),null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&(n.srcOffset=e.srcOffset),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="COW_COPY"]=0,t[e[1]="COW_XOR"]=1,t[e[2]="COW_REPLACE"]=2,t}(),e}(),e.PartitionUpdate=function(){function e(e){if(this.newPartitionSignature=[],this.operations=[],this.mergeOperations=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.partitionName=e.string();break;case 2:r.runPostinstall=e.bool();break;case 3:r.postinstallPath=e.string();break;case 4:r.filesystemType=e.string();break;case 5:r.newPartitionSignature&&r.newPartitionSignature.length||(r.newPartitionSignature=[]),r.newPartitionSignature.push(ce.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;case 6:r.oldPartitionInfo=ce.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:r.newPartitionInfo=ce.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:r.operations&&r.operations.length||(r.operations=[]),r.operations.push(ce.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 9:r.postinstallOptional=e.bool();break;case 10:r.hashTreeDataExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 11:r.hashTreeExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 12:r.hashTreeAlgorithm=e.string();break;case 13:r.hashTreeSalt=e.bytes();break;case 14:r.fecDataExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 15:r.fecExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 16:r.fecRoots=e.uint32();break;case 17:r.version=e.string();break;case 18:r.mergeOperations&&r.mergeOperations.length||(r.mergeOperations=[]),r.mergeOperations.push(ce.chromeos_update_engine.CowMergeOperation.decode(e,e.uint32()));break;case 19:r.estimateCowSize=e.uint64();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("partitionName"))throw se.ProtocolError("missing required 'partitionName'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(!se.isString(e.partitionName))return"partitionName: string expected";if(null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&"boolean"!==typeof e.runPostinstall)return"runPostinstall: boolean expected";if(null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&!se.isString(e.postinstallPath))return"postinstallPath: string expected";if(null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&!se.isString(e.filesystemType))return"filesystemType: string expected";if(null!=e.newPartitionSignature&&e.hasOwnProperty("newPartitionSignature")){if(!Array.isArray(e.newPartitionSignature))return"newPartitionSignature: array expected";for(var t=0;t>>0),null!=e.version&&(t.version=String(e.version)),e.mergeOperations){if(!Array.isArray(e.mergeOperations))throw TypeError(".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected");t.mergeOperations=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.newPartitionSignature=[],n.operations=[],n.mergeOperations=[]),t.defaults)if(n.partitionName="",n.runPostinstall=!1,n.postinstallPath="",n.filesystemType="",n.oldPartitionInfo=null,n.newPartitionInfo=null,n.postinstallOptional=!1,n.hashTreeDataExtent=null,n.hashTreeExtent=null,n.hashTreeAlgorithm="",t.bytes===String?n.hashTreeSalt="":(n.hashTreeSalt=[],t.bytes!==Array&&(n.hashTreeSalt=se.newBuffer(n.hashTreeSalt))),n.fecDataExtent=null,n.fecExtent=null,n.fecRoots=2,n.version="",se.Long){var r=new se.Long(0,0,!0);n.estimateCowSize=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.estimateCowSize=t.longs===String?"0":0;if(null!=e.partitionName&&e.hasOwnProperty("partitionName")&&(n.partitionName=e.partitionName),null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&(n.runPostinstall=e.runPostinstall),null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&(n.postinstallPath=e.postinstallPath),null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&(n.filesystemType=e.filesystemType),e.newPartitionSignature&&e.newPartitionSignature.length){n.newPartitionSignature=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0):e.estimateCowSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.DynamicPartitionGroup=function(){function e(e){if(this.partitionNames=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.name=e.string();break;case 2:r.size=e.uint64();break;case 3:r.partitionNames&&r.partitionNames.length||(r.partitionNames=[]),r.partitionNames.push(e.string());break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("name"))throw se.ProtocolError("missing required 'name'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(!se.isString(e.name))return"name: string expected";if(null!=e.size&&e.hasOwnProperty("size")&&!se.isInteger(e.size)&&!(e.size&&se.isInteger(e.size.low)&&se.isInteger(e.size.high)))return"size: integer|Long expected";if(null!=e.partitionNames&&e.hasOwnProperty("partitionNames")){if(!Array.isArray(e.partitionNames))return"partitionNames: array expected";for(var t=0;t>>0,e.size.high>>>0).toNumber(!0))),e.partitionNames){if(!Array.isArray(e.partitionNames))throw TypeError(".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected");t.partitionNames=[];for(var n=0;n>>0,e.size.high>>>0).toNumber(!0):e.size),e.partitionNames&&e.partitionNames.length){n.partitionNames=[];for(var a=0;a>>3){case 1:r.groups&&r.groups.length||(r.groups=[]),r.groups.push(ce.chromeos_update_engine.DynamicPartitionGroup.decode(e,e.uint32()));break;case 2:r.snapshotEnabled=e.bool();break;case 3:r.vabcEnabled=e.bool();break;case 4:r.vabcCompressionParam=e.string();break;case 5:r.cowVersion=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.groups&&e.hasOwnProperty("groups")){if(!Array.isArray(e.groups))return"groups: array expected";for(var t=0;t>>0),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.groups=[]),t.defaults&&(n.snapshotEnabled=!1,n.vabcEnabled=!1,n.vabcCompressionParam="",n.cowVersion=0),e.groups&&e.groups.length){n.groups=[];for(var r=0;r>>3){case 1:r.packageName=e.string();break;case 2:r.version=e.int64();break;case 3:r.isCompressed=e.bool();break;case 4:r.decompressedSize=e.int64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null!=e.packageName&&e.hasOwnProperty("packageName")&&!se.isString(e.packageName)?"packageName: string expected":null==e.version||!e.hasOwnProperty("version")||se.isInteger(e.version)||e.version&&se.isInteger(e.version.low)&&se.isInteger(e.version.high)?null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&"boolean"!==typeof e.isCompressed?"isCompressed: boolean expected":null==e.decompressedSize||!e.hasOwnProperty("decompressedSize")||se.isInteger(e.decompressedSize)||e.decompressedSize&&se.isInteger(e.decompressedSize.low)&&se.isInteger(e.decompressedSize.high)?null:"decompressedSize: integer|Long expected":"version: integer|Long expected"},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.ApexInfo)return e;var t=new ce.chromeos_update_engine.ApexInfo;return null!=e.packageName&&(t.packageName=String(e.packageName)),null!=e.version&&(se.Long?(t.version=se.Long.fromValue(e.version)).unsigned=!1:"string"===typeof e.version?t.version=parseInt(e.version,10):"number"===typeof e.version?t.version=e.version:"object"===Object(re["a"])(e.version)&&(t.version=new se.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber())),null!=e.isCompressed&&(t.isCompressed=Boolean(e.isCompressed)),null!=e.decompressedSize&&(se.Long?(t.decompressedSize=se.Long.fromValue(e.decompressedSize)).unsigned=!1:"string"===typeof e.decompressedSize?t.decompressedSize=parseInt(e.decompressedSize,10):"number"===typeof e.decompressedSize?t.decompressedSize=e.decompressedSize:"object"===Object(re["a"])(e.decompressedSize)&&(t.decompressedSize=new se.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber())),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(n.packageName="",se.Long){var r=new se.Long(0,0,!1);n.version=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.version=t.longs===String?"0":0;if(n.isCompressed=!1,se.Long){var a=new se.Long(0,0,!1);n.decompressedSize=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.decompressedSize=t.longs===String?"0":0}return null!=e.packageName&&e.hasOwnProperty("packageName")&&(n.packageName=e.packageName),null!=e.version&&e.hasOwnProperty("version")&&("number"===typeof e.version?n.version=t.longs===String?String(e.version):e.version:n.version=t.longs===String?se.Long.prototype.toString.call(e.version):t.longs===Number?new se.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber():e.version),null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&(n.isCompressed=e.isCompressed),null!=e.decompressedSize&&e.hasOwnProperty("decompressedSize")&&("number"===typeof e.decompressedSize?n.decompressedSize=t.longs===String?String(e.decompressedSize):e.decompressedSize:n.decompressedSize=t.longs===String?se.Long.prototype.toString.call(e.decompressedSize):t.longs===Number?new se.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber():e.decompressedSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.ApexMetadata=function(){function e(e){if(this.apexInfo=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(ce.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.apexInfo&&e.hasOwnProperty("apexInfo")){if(!Array.isArray(e.apexInfo))return"apexInfo: array expected";for(var t=0;t>>3){case 3:r.blockSize=e.uint32();break;case 4:r.signaturesOffset=e.uint64();break;case 5:r.signaturesSize=e.uint64();break;case 12:r.minorVersion=e.uint32();break;case 13:r.partitions&&r.partitions.length||(r.partitions=[]),r.partitions.push(ce.chromeos_update_engine.PartitionUpdate.decode(e,e.uint32()));break;case 14:r.maxTimestamp=e.int64();break;case 15:r.dynamicPartitionMetadata=ce.chromeos_update_engine.DynamicPartitionMetadata.decode(e,e.uint32());break;case 16:r.partialUpdate=e.bool();break;case 17:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(ce.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;case 18:r.securityPatchLevel=e.string();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.blockSize&&e.hasOwnProperty("blockSize")&&!se.isInteger(e.blockSize))return"blockSize: integer expected";if(null!=e.signaturesOffset&&e.hasOwnProperty("signaturesOffset")&&!se.isInteger(e.signaturesOffset)&&!(e.signaturesOffset&&se.isInteger(e.signaturesOffset.low)&&se.isInteger(e.signaturesOffset.high)))return"signaturesOffset: integer|Long expected";if(null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&!se.isInteger(e.signaturesSize)&&!(e.signaturesSize&&se.isInteger(e.signaturesSize.low)&&se.isInteger(e.signaturesSize.high)))return"signaturesSize: integer|Long expected";if(null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&!se.isInteger(e.minorVersion))return"minorVersion: integer expected";if(null!=e.partitions&&e.hasOwnProperty("partitions")){if(!Array.isArray(e.partitions))return"partitions: array expected";for(var t=0;t>>0),null!=e.signaturesOffset&&(se.Long?(t.signaturesOffset=se.Long.fromValue(e.signaturesOffset)).unsigned=!0:"string"===typeof e.signaturesOffset?t.signaturesOffset=parseInt(e.signaturesOffset,10):"number"===typeof e.signaturesOffset?t.signaturesOffset=e.signaturesOffset:"object"===Object(re["a"])(e.signaturesOffset)&&(t.signaturesOffset=new se.LongBits(e.signaturesOffset.low>>>0,e.signaturesOffset.high>>>0).toNumber(!0))),null!=e.signaturesSize&&(se.Long?(t.signaturesSize=se.Long.fromValue(e.signaturesSize)).unsigned=!0:"string"===typeof e.signaturesSize?t.signaturesSize=parseInt(e.signaturesSize,10):"number"===typeof e.signaturesSize?t.signaturesSize=e.signaturesSize:"object"===Object(re["a"])(e.signaturesSize)&&(t.signaturesSize=new se.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0))),null!=e.minorVersion&&(t.minorVersion=e.minorVersion>>>0),e.partitions){if(!Array.isArray(e.partitions))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected");t.partitions=[];for(var n=0;n>>0,e.maxTimestamp.high>>>0).toNumber())),null!=e.dynamicPartitionMetadata){if("object"!==Object(re["a"])(e.dynamicPartitionMetadata))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected");t.dynamicPartitionMetadata=ce.chromeos_update_engine.DynamicPartitionMetadata.fromObject(e.dynamicPartitionMetadata)}if(null!=e.partialUpdate&&(t.partialUpdate=Boolean(e.partialUpdate)),e.apexInfo){if(!Array.isArray(e.apexInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected");t.apexInfo=[];for(var r=0;r>>0,e.signaturesOffset.high>>>0).toNumber(!0):e.signaturesOffset),null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&("number"===typeof e.signaturesSize?n.signaturesSize=t.longs===String?String(e.signaturesSize):e.signaturesSize:n.signaturesSize=t.longs===String?se.Long.prototype.toString.call(e.signaturesSize):t.longs===Number?new se.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0):e.signaturesSize),null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&(n.minorVersion=e.minorVersion),e.partitions&&e.partitions.length){n.partitions=[];for(var o=0;o>>0,e.maxTimestamp.high>>>0).toNumber():e.maxTimestamp),null!=e.dynamicPartitionMetadata&&e.hasOwnProperty("dynamicPartitionMetadata")&&(n.dynamicPartitionMetadata=ce.chromeos_update_engine.DynamicPartitionMetadata.toObject(e.dynamicPartitionMetadata,t)),null!=e.partialUpdate&&e.hasOwnProperty("partialUpdate")&&(n.partialUpdate=e.partialUpdate),e.apexInfo&&e.apexInfo.length){n.apexInfo=[];for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:"";return Object(he["a"])(this,n),e=t.call(this),e.offset=0,e.contentType=r,e.blob=new Blob([],{type:r}),e.prefixLength=0,e}return Object(fe["a"])(n,[{key:"readHeader",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r,a,i,o,s,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return n=0,r=function(e){var r=Ie(t,n,e);return n+=e,r},e.next=4,t.slice(0,ke).arrayBuffer();case 4:if(a=e.sent,i=new TextDecoder,o=a.slice(0,ve.length),s=i.decode(o),s==ve){e.next=10;break}throw new Error("MAGIC is not correct, expected: ".concat(ve," actual: ").concat(s));case 10:return n+=ve.length,e.next=13,r(we);case 13:return c=e.sent,e.next=16,r(xe);case 16:if(l=e.sent,c==Pe){e.next=19;break}throw new Error("Unexpected major version number: ".concat(c));case 19:return e.next=21,r(Se);case 21:u=e.sent,this.header=new Le(s,c,l,u);case 23:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"writeUint8Array",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(Object(pe["a"])(Object(de["a"])(n.prototype),"writeUint8Array",this).call(this,t),this.blob=new Blob([this.blob,t.buffer],{type:this.contentType}),this.offset=this.blob.size,!(this.offset>=ke&&0==this.prefixLength)){e.next=9;break}return console.log("Parsing header!"),e.next=7,this.readHeader(this.blob);case 7:this.prefixLength=ke+this.header.manifest_len+this.header.metadata_signature_len,console.log("Computed metadata length: ".concat(this.prefixLength));case 9:if(!(this.prefixLength>0)){e.next=14;break}if(console.log("".concat(this.offset,"/").concat(this.prefixLength)),!(this.offset>=this.prefixLength)){e.next=14;break}throw this.blob=this.blob.slice(0,this.prefixLength),new Ee;case 14:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getData",value:function(){return this.blob}}]),n}(Oe["Writer"]),Te=function(){function e(t){Object(he["a"])(this,e),t instanceof File?this.zipreader=new Oe["ZipReader"](new Oe["BlobReader"](t)):t instanceof URL?this.zipreader=new Oe["ZipReader"](new Oe["HttpReader"](t.href)):this.zipreader=t.reader}return Object(fe["a"])(e,[{key:"getMetadataLength",value:function(){return ke+this.header.manifest_len+this.header.metadata_signature_len}},{key:"unzip",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a,i,o;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.zipreader.getEntries();case 2:t=e.sent,n=Object(ue["a"])(t),e.prev=4,n.s();case 6:if((r=n.n()).done){e.next=35;break}if(a=r.value,"payload.bin"!=a.filename){e.next=28;break}return i=new Ae(""),e.prev=10,e.next=13,a.getData(i);case 13:e.next=22;break;case 15:if(e.prev=15,e.t0=e["catch"](10),!(e.t0 instanceof Ee)){e.next=20;break}e.next=22;break;case 20:throw console.log(e.t0),e.t0;case 22:return this.buffer=i.getData(),e.next=25,this.readManifest(this.buffer,i.header);case 25:console.log("AB OTA manifest parsed"),e.next=33;break;case 28:if("META-INF/com/android/metadata"!=a.filename){e.next=33;break}return e.next=31,a.getData(new Oe["TextWriter"]);case 31:this.metadata=e.sent,console.log("OTA Package metadata parsed");case 33:e.next=6;break;case 35:e.next=40;break;case 37:e.prev=37,e.t1=e["catch"](4),n.e(e.t1);case 40:return e.prev=40,n.f(),e.finish(40);case 43:if(this.manifest){e.next=57;break}return console.log("Failed to parse AB OTA package, falling back to non-AB"),e.prev=45,o=new ye(this.zipreader),e.next=49,o.init();case 49:o.nonAB=!0,this.manifest=o,e.next=57;break;case 53:return e.prev=53,e.t2=e["catch"](45),alert("Please select a legit OTA package"),e.abrupt("return");case 57:case"end":return e.stop()}}),e,this,[[4,37,40,43],[10,15],[45,53]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"readManifest",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.header=n,r=ke,e.next=4,t.slice(r,r+n.manifest_len).arrayBuffer();case 4:return a=e.sent,r+=n.manifest_len,this.manifest=le.DeltaArchiveManifest.decode(new Uint8Array(a)),e.next=9,t.slice(r,r+n.metadata_signature_len).arrayBuffer();case 9:i=e.sent,r+=n.metadata_signature_len,this.metadata_signature=le.Signatures.decode(new Uint8Array(i)),this.manifest.nonAB=!1;case 13:case"end":return e.stop()}}),e,this)})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"parseMetadata",value:function(){var e,t=Object(ue["a"])(_e);try{for(t.s();!(e=t.n()).done;){var n=e.value,r=new RegExp(n.prefix+".+");this.metadata.match(r)?this[n.key]=Fe(this.metadata.match(r)[0],n.prefix):this[n.key]=""}}catch(a){t.e(a)}finally{t.f()}}},{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.unzip();case 2:this.parseMetadata();case 3:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}]),e}(),Be=function(e){Object(ge["a"])(n,e);var t=Object(be["a"])(n);function n(){return Object(he["a"])(this,n),t.apply(this,arguments)}return Object(fe["a"])(n,[{key:"getWithDefault",value:function(e){return this.has(e)?this.get(e):e}}]),n}(Object(me["a"])(Map)),Ne=Object(fe["a"])((function e(){Object(he["a"])(this,e);var t=le.InstallOperation.Type;this.mapType=new Be;for(var n=0,r=Object.keys(t);n1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:16,r="",a=0;a3&&void 0!==arguments[3]?arguments[3]:15;Object(he["a"])(this,e),this.statisticData=t,this.trimmedData=Qe(t,a),this.title=n,this.unit=r,this.maximumEntries=a}return Object(fe["a"])(e,[{key:"listData",value:function(){var e,t="",n=Object(ue["a"])(this.statisticData);try{for(n.s();!(e=n.n()).done;){var r=Object(Ye["a"])(e.value,2),a=r[0],i=r[1];t+=a+" : "+i.toString()+" Blocks\n"}}catch(o){n.e(o)}finally{n.f()}return t}},{key:"getEchartsOption",value:function(){var e={};return e.title={text:this.title,left:"center"},e.tooltip={trigger:"item",formatter:"{a}
{b} : {c} "+this.unit+" ({d}%)"},e.legend={orient:"horizontal",left:"top",top:"10%",data:Array.from(this.trimmedData.keys())},e.series=[{name:this.title,type:"pie",radius:"55%",center:["50%","60%"],data:Array.from(this.trimmedData).map((function(e){return{value:e[1],name:e[0]}})),emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],e}}]),e}();function Qe(e,t){if(e.size<=t)return e;for(var n=new Map,r=0;ri&&(i=u,o=l)}}catch(m){s.e(m)}finally{s.f()}n.set(o,i)}var p,d=0,f=Object(ue["a"])(e);try{for(f.s();!(p=f.n()).done;){var h=Object(Ye["a"])(p.value,2),g=h[0],b=h[1];n.get(g)||(d+=b)}}catch(m){f.e(m)}finally{f.f()}return n.set("other",d),n}var et=function(){function e(t){Object(he["a"])(this,e),t instanceof File?this.build=new Oe["ZipReader"](new Oe["BlobReader"](t)):this.build=new Oe["ZipReader"](new Oe["HttpReader"](t.href)),this.mapFiles=new Map,this.maps=new Map}return Object(fe["a"])(e,[{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a=this;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.build.getEntries();case 2:t=e.sent,n=/IMAGES\/[a-z_]*\.map/g,r=/[\w_]+(?=\.map)/g,t.forEach((function(e){e.filename.match(n)&&a.mapFiles.set(e.filename.match(r)[0],e)}));case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"add",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,c,l,u,p,d,f,h,g;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:for(r=[],a=/\d+/g,i=/\d+\-\d+/g,o=0;o");if(!this.mapFiles.get(t)){e.next=14;break}return e.next=7,this.mapFiles.get(t).getData(new Oe["TextWriter"]);case 7:s=e.sent,c=s.split("\n"),l=Object(ue["a"])(c);try{for(l.s();!(u=l.n()).done;)for(p=u.value,d=p.split(" "),f=1;f2&&void 0!==s[2]?s[2]:4096,a=s.length>3&&void 0!==s[3]?s[3]:null,e.t0=t,e.next="blocks"===e.t0?5:"payload"===e.t0?8:"COWmerge"===e.t0?11:"filenames"===e.t0?14:"extensions"===e.t0?21:28;break;case 5:return i=at(n),o=new Ke(i,"Operated blocks in target build","blocks"),e.abrupt("break",28);case 8:return i=ot(n),o=new Ke(i,"Payload disk usage","bytes"),e.abrupt("break",28);case 11:return i=it(n,r),o=new Ke(i,"COW merge operations","blocks"),e.abrupt("break",28);case 14:if(null!=a){e.next=16;break}throw new Error("Target file is required for filenames analysis");case 16:return e.next=18,lt(n,r,a);case 18:return i=e.sent,o=new Ke(i,"Size of operated filenames","bytes"),e.abrupt("break",28);case 21:if(null!=a){e.next=23;break}throw new Error("Target file is required for filenames analysis");case 23:return e.next=25,st(n,r,a);case 25:return i=e.sent,o=new Ke(i,"Size of operated extensions","bytes"),e.abrupt("break",28);case 28:if(!o){e.next=32;break}return e.abrupt("return",o);case 32:throw"Please double check if this is a proper AB OTA package.";case 33:case"end":return e.stop()}}),e)}))),dt.apply(this,arguments)}function ft(e){if(!e)return 0;var t=function(e,t){return e+t.numBlocks};return e.reduce(t,0)}function ht(e){var t=function(e,t){return e+"("+t.startBlock+","+t.numBlocks+")"};return e.reduce(t,"")}function gt(e,t,n){for(var r=ft(t),a=new Map,i=0;i1?t[t.length-1]:"unknown"===t[0]?"unknown":"<"==e[0]&&e.endsWith(">")?e:"no-extension"}var mt=Object(r["m"])({props:{operation:{type:Object,required:!0},mapType:{type:Be,required:!0}},data:function(){return{srcTotalBlocks:0,srcBlocks:"",dstTotalBlocks:0,dstBlocks:""}},mounted:function(){this.operation.srcExtents&&(this.srcTotalBlocks=ft(this.operation.srcExtents),this.srcBlocks=ht(this.operation.srcExtents)),this.operation.dstExtents&&(this.dstTotalBlocks=ft(this.operation.dstExtents),this.dstBlocks=ht(this.operation.dstExtents))}});n("8edb");mt.render=$e,mt.__scopeId="data-v-44174082";var Ot=mt,yt=Object(r["m"])({components:{OperationDetail:Ot},props:{partition:{type:le.PartitionUpdate,required:!0},dynamicPartitionList:{type:Array,required:!0}},data:function(){return{showOPs:!1,showInfo:!1,opType:new Ne}},methods:{toggle:function(e){this[e]=!this[e]},octToHex:De},computed:{readableTimestamp:function(){var e=parseInt(this.partition.version);return isNaN(e)?"":new Date(1e3*e).toString()},isDynamicPartition:function(){return this.dynamicPartitionList.indexOf(this.partition.partitionName)>=0}}});n("edc2");yt.render=ne,yt.__scopeId="data-v-6dba348a";var jt=yt,vt=(n("498a"),Object(r["Z"])("data-v-24adde54"));Object(r["D"])("data-v-24adde54");var wt=Object(r["l"])("h3",null,"Basic infos",-1),xt={class:"align"},St=Object(r["l"])("strong",null," File name ",-1),kt=Object(r["l"])("strong",null," File size ",-1),Pt={class:"align"},_t={class:"wrap"},Et={key:2},Lt={class:"align"},It=Object(r["l"])("strong",null," Incremental ",-1),zt={key:0},At={key:1},Tt=Object(r["l"])("strong",null," Partial ",-1),Bt={key:0},Nt={key:1},Ct=Object(r["l"])("strong",null," A/B update ",-1),Dt={key:0},Ft={key:1},Rt=Object(r["l"])("strong",null," VAB ",-1),Mt={key:0},Ut={key:1},Ht=Object(r["l"])("strong",null," VABC ",-1),Vt={key:0},Wt={key:1},Zt={key:0},Jt=Object(r["l"])("strong",null," Total Dynamic Partition Size ",-1),Xt={key:1},qt=Object(r["l"])("strong",null," Total VABC COW Size ",-1),Gt={key:2},$t=Object(r["l"])("strong",null," VABC Compression Param ",-1),Yt={key:3},Kt=Object(r["l"])("strong",null," Security Patch Level ",-1);Object(r["B"])();var Qt=vt((function(e,t,n,a,i,o){return Object(r["A"])(),Object(r["i"])(r["a"],null,[wt,e.zipFile?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:0},e.$attrs),[Object(r["l"])("ul",xt,[Object(r["l"])("li",null,[St,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileName()),1)]),Object(r["l"])("li",null,[kt,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileSize())+" Bytes",1)])])],16)):Object(r["j"])("",!0),e.payload&&e.payload.metadata?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:1},e.$attrs),[Object(r["l"])("ul",Pt,[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.otaMetadata,(function(t){return Object(r["A"])(),Object(r["i"])("li",{key:t.name},[Object(r["l"])("strong",null,Object(r["N"])(t.name.trim()+" "),1),Object(r["l"])("p",_t,Object(r["N"])(String(e.payload[t.key]).trim()),1)])})),128))])],16)):Object(r["j"])("",!0),e.payload&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])("div",Et,[Object(r["l"])("ul",Lt,[Object(r["l"])("li",null,[It,e.payload.preBuild?(Object(r["A"])(),Object(r["i"])("span",zt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",At," ❌ "))]),Object(r["l"])("li",null,[Tt,e.payload.manifest.partialUpdate?(Object(r["A"])(),Object(r["i"])("span",Bt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Nt," ❌ "))]),Object(r["l"])("li",null,[Ct,e.payload.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",Ft," ❌ ")):(Object(r["A"])(),Object(r["i"])("span",Dt," ✅ "))]),Object(r["l"])("li",null,[Rt,e.payload.manifest.dynamicPartitionMetadata.snapshotEnabled?(Object(r["A"])(),Object(r["i"])("span",Mt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Ut," ❌ "))]),Object(r["l"])("li",null,[Ht,e.payload.manifest.dynamicPartitionMetadata.vabcEnabled?(Object(r["A"])(),Object(r["i"])("span",Vt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Wt," ❌ "))]),e.totalDynamicPartitionSize?(Object(r["A"])(),Object(r["i"])("li",Zt,[Jt,Object(r["k"])(" "+Object(r["N"])(e.totalDynamicPartitionSize),1)])):Object(r["j"])("",!0),e.totalCOWSize?(Object(r["A"])(),Object(r["i"])("li",Xt,[qt,Object(r["k"])(" "+Object(r["N"])(e.totalCOWSize),1)])):Object(r["j"])("",!0),e.vabcCompressionParam?(Object(r["A"])(),Object(r["i"])("li",Gt,[$t,Object(r["k"])(" "+Object(r["N"])(e.vabcCompressionParam),1)])):Object(r["j"])("",!0),e.securityPatchLevel?(Object(r["A"])(),Object(r["i"])("li",Yt,[Kt,Object(r["k"])(" "+Object(r["N"])(e.securityPatchLevel),1)])):Object(r["j"])("",!0)])])):Object(r["j"])("",!0)],64)})),en=(n("4de4"),n("6062"),n("2ca0"),function(){function e(t){Object(he["a"])(this,e),this.file=t,this.reader=rn(t)}return Object(fe["a"])(e,[{key:"getFileName",value:function(){return an(this.file)}},{key:"getFileSize",value:function(){return this.file instanceof File?this.file.size:0}}]),e}());function tn(e,t){return nn.apply(this,arguments)}function nn(){return nn=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return r=t,a=new Oe["ZipWriter"](new Oe["BlobWriter"]("application/zip")),e.next=4,r.getEntries();case 4:i=e.sent,o=Object(ue["a"])(i.filter((function(e){return!!e&&n(e)}))),e.prev=6,o.s();case 8:if((s=o.n()).done){e.next=18;break}return c=s.value,l=new Oe["BlobWriter"],e.next=13,c.getData(l);case 13:u=e.sent,console.log("Adding ".concat(c.filename,", ").concat(u.size)),a.add(c.filename,new Oe["BlobReader"](l.getData()),{level:0});case 16:e.next=8;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e["catch"](6),o.e(e.t0);case 23:return e.prev=23,o.f(),e.finish(23);case 26:return e.abrupt("return",a);case 27:case"end":return e.stop()}}),e,null,[[6,20,23,26]])}))),nn.apply(this,arguments)}function rn(e){return e instanceof File?new Oe["ZipReader"](new Oe["BlobReader"](e)):new Oe["ZipReader"](new Oe["HttpReader"](e.href))}function an(e){return e instanceof File?e.name:e.pathname}function on(e){return sn.apply(this,arguments)}function sn(){return sn=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,tn(rn(t),(function(e){return e.filename.startsWith("META/")||e.filename.endsWith(".map")}));case 2:return n=e.sent,e.next=5,n.close();case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)}))),sn.apply(this,arguments)}function cn(e){return ln.apply(this,arguments)}function ln(){return ln=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,tn(t.zipreader,(function(e){return"payload.bin"!=e.filename}));case 2:return n=e.sent,e.next=5,n.add("payload.bin",new Oe["BlobReader"](t.buffer.slice(0,t.getMetadataLength())),{level:0});case 5:return e.next=7,n.close();case 7:return r=e.sent,e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)}))),ln.apply(this,arguments)}function un(e,t,n){var r=window.URL.createObjectURL(e);t.href=r,t.download=n,t.click(),window.URL.revokeObjectURL(r)}function pn(e,t){return e.endsWith(t)?e:e+t}var dn=Object(r["m"])({props:{zipFile:{type:en,required:!0},payload:{type:Te,required:!0}},data:function(){return{MetadataFormat:_e}},computed:{otaMetadata:function(){var e=this;return _e.filter((function(t){return String(e.payload[t.key]).length>0}))},totalCOWSize:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.partitions.map((function(e){return e.estimateCowSize||0}));return n?n.reduce((function(e,t){return e+t})):0},vabcCompressionParam:function(){var e,t,n;return(null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.vabcCompressionParam)||""},securityPatchLevel:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.securityPatchLevel;return n||""},totalDynamicPartitionSize:function(){var e,t,n,r,a=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.groups;if(!a)return 0;var i=new Set(a.flatMap((function(e){return e.partitionNames}))),o=(null===(r=this.payload.manifest)||void 0===r?void 0:r.partitions.filter((function(e){return i.has(e.partitionName)})))||[];return o.length<=0?0:o.map((function(e){var t;return(null===(t=e.newPartitionInfo)||void 0===t?void 0:t.size)||0})).reduce((function(e,t){return e+t}))}}});n("2b88");dn.render=Qt,dn.__scopeId="data-v-24adde54";var fn=dn,hn=Object(r["m"])({components:{PartitionDetail:jt,BasicInfo:fn},props:{zipFile:{type:en,default:null},payload:{type:Te,default:null}},methods:{octToHex:De,exportOTAPackage:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,cn(e.payload);case 2:n=t.sent,r=e.$refs["download"],un(n,r,"trimmed_"+pn(e.zipFile.getFileName(),".zip"));case 5:case"end":return t.stop()}}),t)})))()}},computed:{dynamicPartitions:function(){var e,t,n;return(null===(e=this.payload.manifest)||void 0===e||null===(t=e.dynamicPartitionMetadata)||void 0===t||null===(n=t.groups)||void 0===n?void 0:n.flatMap((function(e){return e.partitionNames||[]})))||[]}}});n("dc41");hn.render=A,hn.__scopeId="data-v-05db67f2";var gn=hn,bn=Object(r["Z"])("data-v-44b569bd");Object(r["D"])("data-v-44b569bd");var mn=Object(r["k"])("Export Target File Metadata"),On={ref:"download"},yn={key:1},jn=Object(r["k"])(" Analyse Installed Blocks (in target build) "),vn=Object(r["k"])(" Analyse Payload Composition "),wn=Object(r["k"])(" Analyse COW Merge Operations "),xn={key:0,class:"tooltiptext"},Sn=Object(r["k"])(" Analyse Filenames "),kn=Object(r["k"])(" Analyse File Extensions ");Object(r["B"])();var Pn=bn((function(e,t,n,a,i,o){var s=Object(r["I"])("v-btn"),c=Object(r["I"])("PartialCheckbox"),l=Object(r["I"])("PieChart"),u=Object(r["I"])("v-divider"),p=Object(r["I"])("v-col"),d=Object(r["I"])("v-row"),f=Object(r["I"])("BaseFile");return Object(r["A"])(),Object(r["i"])(r["a"],null,[e.targetFile?(Object(r["A"])(),Object(r["i"])(s,{key:0,block:"",class:"md-6",onClick:e.exportTargetFileMetadata},{default:bn((function(){return[mn]})),_:1},8,["onClick"])):Object(r["j"])("",!0),Object(r["l"])("a",On,null,512),Object(r["l"])(c,{modelValue:e.partitionInclude,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.partitionInclude=t}),labels:e.updatePartitions},null,8,["modelValue","labels"]),e.echartsData?(Object(r["A"])(),Object(r["i"])("div",yn,[Object(r["l"])(l,{echartsData:e.echartsData,onClick:e.piechartClick},null,8,["echartsData","onClick"])])):Object(r["j"])("",!0),Object(r["l"])(u),Object(r["l"])(d,null,{default:bn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"},{default:bn((function(){return[Object(r["l"])(s,{block:"",onClick:t[2]||(t[2]=function(t){return e.updateChart("blocks")})},{default:bn((function(){return[jn]})),_:1})]})),_:1}),Object(r["l"])(p,{cols:"12",md:"6"},{default:bn((function(){return[Object(r["l"])(s,{block:"",onClick:t[3]||(t[3]=function(t){return e.updateChart("payload")})},{default:bn((function(){return[vn]})),_:1})]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:bn((function(){return[Object(r["l"])(p,{cols:"12",md:"6",class:"tooltip"},{default:bn((function(){return[Object(r["l"])(s,{disabled:e.manifest.nonAB||!e.manifest.dynamicPartitionMetadata.vabcEnabled,title:"Only available for VABC update",block:"",onClick:t[4]||(t[4]=function(t){return e.updateChart("COWmerge")})},{default:bn((function(){return[wn]})),_:1},8,["disabled"]),e.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",xn," This function is only supported in A/B OTA ")):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(p,{cols:"12",md:"6"},{default:bn((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[5]||(t[5]=function(t){return e.updateChart("filenames")})},{default:bn((function(){return[Sn]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:bn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"},{default:bn((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[6]||(t[6]=function(t){return e.updateChart("extensions")})},{default:bn((function(){return[kn]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:bn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"}),Object(r["l"])(p,{cols:"12",md:"6"},{default:bn((function(){return[e.demo?Object(r["j"])("",!0):(Object(r["A"])(),Object(r["i"])(f,{key:0,label:"Drag and drop or Select The target Android build",onFileSelect:e.selectBuild},null,8,["onFileSelect"]))]})),_:1})]})),_:1})],64)})),_n=n("bc3a"),En=n.n(_n),Ln=Object(r["Z"])("data-v-533f2336");Object(r["D"])("data-v-533f2336");var In={key:0};Object(r["B"])();var zn=Ln((function(e,t,n,a,i,o){var s=Object(r["I"])("v-btn"),c=Object(r["I"])("v-col"),l=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(r["a"],null,[Object(r["l"])(s,{block:"",type:"button",class:"my-5",onClick:e.revertAllSelection},{default:Ln((function(){return[Object(r["k"])(Object(r["N"])(e.selectAllText[e.selectAll]),1)]})),_:1},8,["onClick"]),Object(r["l"])(l,{class:"mb-5"},{default:Ln((function(){return[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.labels,(function(n){return Object(r["A"])(),Object(r["i"])(c,{key:n,cols:"12",md:"4"},{default:Ln((function(){return[Object(r["l"])("input",{type:"checkbox",value:n,checked:e.modelValue.get(n),onChange:t[1]||(t[1]=function(t){return e.updateSelected(t.target.value)})},null,40,["value","checked"]),n?(Object(r["A"])(),Object(r["i"])("label",In,Object(r["N"])(n),1)):Object(r["j"])("",!0)]})),_:2},1024)})),128))]})),_:1})],64)})),An=Object(r["m"])({props:{labels:{type:Array,default:new Array},modelValue:{type:Map,default:new Map}},data:function(){return{selectAll:1,selectAllText:["Select All","Unselect All"]}},mounted:function(){var e,t=Object(ue["a"])(this.labels);try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,!0)}}catch(r){t.e(r)}finally{t.f()}},methods:{updateSelected:function(e){this.modelValue.set(e,!this.modelValue.get(e)),this.$emit("update:modelValue",this.modelValue)},revertAllSelection:function(){this.selectAll=1-this.selectAll;var e,t=Object(ue["a"])(this.modelValue.keys());try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,Boolean(this.selectAll))}}catch(r){t.e(r)}finally{t.f()}}}});n("a75a");An.render=zn,An.__scopeId="data-v-533f2336";var Tn=An,Bn=n("2909"),Nn="undefined"===typeof arguments?void 0:arguments,Cn=Object(r["Z"])("data-v-5d1cb486"),Dn=Cn((function(e,t,n,a,i,o){var s=Object(r["I"])("v-chart");return Object(r["A"])(),Object(r["i"])(s,{class:"chart",option:o.getEchartsOption,onClick:t[1]||(t[1]=function(t){return e.$emit.apply(e,["click"].concat(Object(Bn["a"])(Nn)))})},null,8,["option"])})),Fn=n("ade3"),Rn=n("22b4"),Mn=n("f95e"),Un=n("49bb"),Hn=n("9394"),Vn=n("2da7"),Wn=n("ff32"),Zn=n("5c7f");Object(Rn["a"])([Mn["a"],Un["a"],Hn["a"],Vn["a"],Wn["a"]]);var Jn={components:{VChart:Zn["b"]},provide:Object(Fn["a"])({},Zn["a"],"dark"),props:{echartsData:{type:Ke,required:!0}},computed:{getEchartsOption:function(){return this.echartsData.getEchartsOption()}}};n("47e0");Jn.render=Dn,Jn.__scopeId="data-v-5d1cb486";var Xn=Jn,qn=Object(r["m"])({components:{PartialCheckbox:Tn,PieChart:Xn,BaseFile:x},props:{manifest:{type:le.DeltaArchiveManifest,default:function(){return[]}},demo:{type:Boolean,default:!1}},data:function(){return{partitionInclude:new Map,echartsData:null,listData:"",targetFile:null}},computed:{updatePartitions:function(){return this.manifest.partitions.map((function(e){return e.partitionName}))}},mounted:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(!e.demo){t.next=11;break}return t.prev=1,t.next=4,En.a.get("./files/cf_x86_target_file_demo.zip",{responseType:"blob"});case 4:n=t.sent,e.targetFile=new File([n.data],"target_demo.zip"),t.next=11;break;case 8:t.prev=8,t.t0=t["catch"](1),console.log("Please put a proper example target file in /public/files/");case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))()},methods:{piechartClick:function(e){console.log(e)},updateChart:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return r=t.manifest.partitions.filter((function(e){return t.partitionInclude.get(e.partitionName)})),n.prev=1,n.next=4,pt(e,r,t.manifest.blockSize,t.targetFile);case 4:t.echartsData=n.sent,n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Cannot be processed for the following issue: ".concat(n.t0));case 10:case"end":return n.stop()}}),n,null,[[1,7]])})))()},selectBuild:function(e){this.targetFile=e},exportTargetFileMetadata:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,on(e.targetFile);case 2:n=t.sent,r=e.$refs["download"],un(n,r,"trimmed_"+pn(an(e.targetFile),".zip"));case 5:case"end":return t.stop()}}),t)})))()}}});n("4b95");qn.render=Pn,qn.__scopeId="data-v-44b569bd";var Gn=qn,$n=Object(r["m"])({components:{BaseFile:x,PayloadDetail:gn,PayloadComposition:Gn},data:function(){return{zipFile:null,payload:null}},methods:{unpackOTA:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return t.zipFile=new en(e),n.prev=1,t.payload=new Te(t.zipFile),n.next=5,t.payload.init();case 5:n.next=11;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Please check if this is a correct OTA package (.zip). ".concat(n.t0)),console.log(n.t0);case 11:case"end":return n.stop()}}),n,null,[[1,7]])})))()}}});$n.render=h;var Yn=$n;function Kn(e,t,n,a,i,o){var s=Object(r["I"])("PayloadDetail"),c=Object(r["I"])("v-col"),l=Object(r["I"])("v-divider"),u=Object(r["I"])("PayloadComposition"),p=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(p,null,{default:Object(r["X"])((function(){return[Object(r["l"])(c,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload?(Object(r["A"])(),Object(r["i"])(s,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(l,{vertical:""}),Object(r["l"])(c,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])(u,{key:0,manifest:e.payload.manifest,demo:!0},null,8,["manifest"])):Object(r["j"])("",!0)]})),_:1})]})),_:1})}var Qn=Object(r["m"])({components:{PayloadDetail:gn,PayloadComposition:Gn},data:function(){return{zipFile:null,payload:null}},created:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,En.a.get("./files/cf_x86_demo.zip",{responseType:"blob"});case 3:return n=t.sent,e.zipFile=new en(new File([n.data],"ota_demo.zip")),e.payload=new Te(e.zipFile),t.next=8,e.payload.init();case 8:t.next=13;break;case 10:t.prev=10,t.t0=t["catch"](0),console.log("Please put a proper example OTA in /public/files/");case 13:case"end":return t.stop()}}),t,null,[[0,10]])})))()}});Qn.render=Kn;var er=Qn,tr={class:"about"},nr=Object(r["l"])("p",null,"A web based tool to inspect Android OTA packages.",-1);function rr(e,t){return Object(r["A"])(),Object(r["i"])("div",tr,[nr])}const ar={};ar.render=rr;var ir=ar,or=Object(r["Z"])("data-v-50c6f348");Object(r["D"])("data-v-50c6f348");var sr=Object(r["l"])("h1",null,"Not Found!",-1),cr=Object(r["l"])("p",null,[Object(r["l"])("a",{href:"/"},"Go home?")],-1);Object(r["B"])();var lr=or((function(e,t){var n=Object(r["I"])("center");return Object(r["A"])(),Object(r["i"])(n,null,{default:or((function(){return[sr,cr]})),_:1})}));n("8e71");const ur={};ur.render=lr,ur.__scopeId="data-v-50c6f348";var pr=ur,dr=[{path:"/",name:"Analysis",component:Yn,meta:{title:"Analyse OTA package - from AOSP"}},{path:"/demo",name:"Demo",component:er},{path:"/about",name:"About",component:ir},{path:"/:catchAll(.*)",name:"Not Found",component:pr}],fr=Object(d["a"])({history:Object(d["b"])("/analyseOTA/"),routes:dr});fr.beforeEach((function(e,t,n){var r=e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.title})),a=(e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})),t.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})));r?document.title=r.meta.title:a&&(document.title=a.meta.title),Array.from(document.querySelectorAll("[data-vue-router-controlled]")).map((function(e){return e.parentNode.removeChild(e)})),n()}));var hr=fr,gr=n("5502"),br=Object(gr["a"])({state:{},mutations:{},actions:{},modules:{}}),mr=Object(r["h"])(p);mr.use(hr),mr.use(br),mr.use(s),mr.mount("#app")},d978:function(e,t,n){},dc41:function(e,t,n){"use strict";n("027d")},edc2:function(e,t,n){"use strict";n("c021")}}); +//# sourceMappingURL=app.15c5fa89.js.map \ No newline at end of file diff --git a/analyseOTA/js/app.15c5fa89.js.map b/analyseOTA/js/app.15c5fa89.js.map new file mode 100644 index 0000000..255fa6b --- /dev/null +++ b/analyseOTA/js/app.15c5fa89.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?1825","webpack:///./src/components/BasicInfo.vue?0f75","webpack:///./src/components/PieChart.vue?3f25","webpack:///./src/components/BaseFile.vue?5b74","webpack:///./src/components/PayloadComposition.vue?8d59","webpack:///./src/views/NotFound.vue?18b8","webpack:///./src/components/OperationDetail.vue?7823","webpack:///./src/components/PartialCheckbox.vue?cce7","webpack:///./src/plugins/vuetify.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?6697","webpack:///./src/views/PackageAnalysis.vue","webpack:///./src/components/BaseFile.vue","webpack:///./src/components/BaseFile.vue?5af0","webpack:///./src/components/BaseFile.vue?408d","webpack:///./src/components/PayloadDetail.vue","webpack:///./src/components/PartitionDetail.vue","webpack:///./src/services/update_metadata_pb.js","webpack:///./src/services/payload_nonab.ts","webpack:///./src/services/payload.ts","webpack:///./src/components/OperationDetail.vue","webpack:///./src/services/echarts_data.ts","webpack:///./src/services/map_parser.ts","webpack:///./src/services/payload_composition.ts","webpack:///./src/components/OperationDetail.vue?0239","webpack:///./src/components/OperationDetail.vue?19cd","webpack:///./src/components/PartitionDetail.vue?7d27","webpack:///./src/components/PartitionDetail.vue?b40d","webpack:///./src/components/BasicInfo.vue","webpack:///./src/services/trim_zip.ts","webpack:///./src/components/BasicInfo.vue?bb39","webpack:///./src/components/BasicInfo.vue?e053","webpack:///./src/components/PayloadDetail.vue?cdd8","webpack:///./src/components/PayloadDetail.vue?a20c","webpack:///./src/components/PayloadComposition.vue","webpack:///./src/components/PartialCheckbox.vue","webpack:///./src/components/PartialCheckbox.vue?fbe3","webpack:///./src/components/PartialCheckbox.vue?59db","webpack:///./src/components/PieChart.vue","webpack:///./src/components/PieChart.vue?1278","webpack:///./src/components/PayloadComposition.vue?3e04","webpack:///./src/components/PayloadComposition.vue?d59c","webpack:///./src/views/PackageAnalysis.vue?3fdf","webpack:///./src/views/PackageAnalysis.vue?2d24","webpack:///./src/views/Demo.vue","webpack:///./src/views/Demo.vue?9616","webpack:///./src/views/Demo.vue?e633","webpack:///./src/views/About.vue","webpack:///./src/views/About.vue?aa81","webpack:///./src/views/NotFound.vue","webpack:///./src/views/NotFound.vue?2812","webpack:///./src/router/index.ts","webpack:///./src/store/index.ts","webpack:///./src/main.ts","webpack:///./src/components/PayloadDetail.vue?0b74","webpack:///./src/components/PartitionDetail.vue?3d89"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","components","directives","theme","defaultTheme","rounded","color","links","link","to","class","fluid","render","style","cols","md","label","unpackOTA","zipFile","payload","vertical","manifest","dragover","dragleave","drop","fileName","ref","type","accept","handleFileChange","placeholder","url","urlKeyup","props","String","default","emits","computed","parsedURL","URL","this","methods","event","currentTarget","target","files","selectedFile","$emit","preventDefault","classList","contains","add","remove","dataTransfer","console","log","error","__scopeId","exportOTAPackage","partitions","partition","partitionName","elevation","hover","shaped","dynamicPartitionList","dynamicPartitions","metadata_signature","nonAB","octToHex","signatures","oldPartitionInfo","isDynamicPartition","estimateCowSize","postinstallPath","toggle","showInfo","size","hash","newPartitionInfo","version","readableTimestamp","showOPs","operations","operation","dataSha256Hash","mapType","opType","$Reader","$protobuf","$Writer","$util","$root","chromeos_update_engine","Extent","properties","keys","startBlock","Long","fromBits","numBlocks","encode","message","writer","uint32","uint64","encodeDelimited","ldelim","decode","reader","end","undefined","len","pos","tag","skipType","decodeDelimited","verify","isInteger","low","high","fromObject","fromValue","unsigned","parseInt","LongBits","toNumber","toObject","options","defaults","long","longs","toString","Number","toJSON","constructor","toJSONOptions","Signatures","emptyArray","Signature","fork","Array","isArray","TypeError","arrays","newBuffer","unpaddedSignatureSize","bytes","fixed32","isString","base64","PartitionInfo","InstallOperation","srcExtents","dstExtents","dataOffset","dataLength","srcLength","dstLength","srcSha256Hash","int32","ProtocolError","instance","enums","Type","valuesById","values","CowMergeOperation","srcExtent","dstExtent","srcOffset","PartitionUpdate","newPartitionSignature","mergeOperations","runPostinstall","filesystemType","postinstallOptional","hashTreeDataExtent","hashTreeExtent","hashTreeAlgorithm","hashTreeSalt","fecDataExtent","fecExtent","fecRoots","string","bool","Boolean","DynamicPartitionGroup","partitionNames","DynamicPartitionMetadata","groups","snapshotEnabled","vabcEnabled","vabcCompressionParam","cowVersion","ApexInfo","packageName","isCompressed","decompressedSize","int64","ApexMetadata","apexInfo","DeltaArchiveManifest","blockSize","signaturesOffset","signaturesSize","minorVersion","maxTimestamp","dynamicPartitionMetadata","partialUpdate","securityPatchLevel","packedFile","Blocksize","regexName","getEntries","entries","entry","filename","match","newPartition","getData","rawText","parseTransferList","lines","split","totalBlocks","entryStashed","maxStashed","Uint8Array","sizeNewData","newDataSize","line","op","elements","reduce","parseRange","RegExp","uncompressedSize","extents","rangeset","regexRange","extent","_MAGIC","_VERSION_SIZE","_MANIFEST_LEN_SIZE","_METADATA_SIGNATURE_LEN_SIZE","_PAYLOAD_HEADER_SIZE","_BRILLO_MAJOR_PAYLOAD_VERSION","MetadataFormat","prefix","Error","magic","manifest_len","metadata_signature_len","readIntAt","buffer","position","DataView","arrayBuffer","view","getBigUint64","offset","a","BigInt","getUint32","b","bigNumber","getUint16","contentType","blob","Blob","prefixLength","cursor","readInt","ret","decoder","TextDecoder","magicBytes","header_version","header","array","readHeader","file","File","zipreader","href","readManifest","metadata","init","alert","manifestBlob","signatureBlob","formatter","regex","trimEntry","unzip","parseMetadata","has","Map","types","set","bufferArray","space","maxLine","hex_table","hex","toUpperCase","getWithDefault","srcTotalBlocks","srcBlocks","dstTotalBlocks","dstBlocks","statisticData","title","unit","maximumEntries","trimmedData","trimMap","table","option","text","left","tooltip","trigger","legend","orient","top","from","series","radius","center","map","pair","emphasis","itemStyle","shadowBlur","shadowOffsetX","shadowColor","new_map","curr","currKey","restTotal","targetFile","build","mapFiles","maps","regexPath","forEach","totalLength","regexNumber","mapText","fileEntries","right","InsertMap","names","ext","queryMap","addNumberToMap","operatedBlockStatistics","operatedBlocks","operationType","mergeOperationStatistics","Math","ceil","operatedPayloadStatistics","operatedFileExtensionsStatistics","operatedFilenamesStatistics","filenameStats","fileExtenstionStats","name2Extension","operatedFilenames","buildMap","operatedFileNames","query","extentDataLength","distributeFilenames","analysePartitions","metrics","statisticsData","echartsData","exts","accumulator","total","displayBlocks","filenames","distributedLengths","round","endsWith","required","mounted","OperationDetail","unixTimestamp","isNaN","Date","indexOf","$attrs","getFileName","getFileSize","otaMetadata","trim","preBuild","totalDynamicPartitionSize","totalCOWSize","getZipReader","trimZip","zip","filter","blobWriter","level","pathname","trimTargetFiles","startsWith","close","trimOTAPackage","getMetadataLength","downloadFile","downloadNode","createObjectURL","download","click","revokeObjectURL","ensureSuffix","str","suffix","cowSizes","spl","dynamicPartitionNamess","Set","flatMap","g","acc","cur","PartitionDetail","BasicInfo","$refs","block","exportTargetFileMetadata","partitionInclude","labels","updatePartitions","piechartClick","updateChart","disabled","demo","selectBuild","revertAllSelection","selectAllText","selectAll","checked","modelValue","updateSelected","$event","newSelect","getEchartsOption","VChart","provide","PartialCheckbox","PieChart","BaseFile","listData","responseType","param","partitionSelected","PayloadDetail","PayloadComposition","created","script","routes","path","component","PackageAnalysis","meta","Demo","About","NotFound","router","history","beforeEach","next","nearestWithTitle","matched","reverse","find","previousNearestWithMeta","metaTags","document","querySelectorAll","el","parentNode","removeChild","state","mutations","actions","app","App","use","store","vuetify","mount"],"mappings":"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","file":"js/app.15c5fa89.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/analyseOTA/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BasicInfo.vue?vue&type=style&index=0&id=24adde54&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadComposition.vue?vue&type=style&index=0&id=44b569bd&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport 'vuetify/lib/styles/main.sass'\nimport { createVuetify } from 'vuetify'\nimport * as components from 'vuetify/lib/components'\nimport * as directives from 'vuetify/lib/directives'\n\nexport default createVuetify({\n components,\n directives,\n theme: {\n defaultTheme: 'dark'\n }\n})\n","\n\n\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=ee415730\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n label: {\n type: String,\n default: ''\n }\n },\n emits: {\n 'file-select': null\n },\n data() {\n return {\n fileName: '',\n url: ''\n }\n },\n computed: {\n parsedURL(): URL | null {\n try {\n return new URL(this.url)\n } catch {\n return null\n }\n }\n },\n\n methods: {\n handleFileChange(event: any) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (target.files == null || target.files.length < 1) {\n return\n }\n const selectedFile = target.files![0]\n this.$emit('file-select', selectedFile)\n // If user selects a file, clear the URL component\n this.url = ''\n this.fileName = target.files![0].name\n },\n dragover(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!target.classList.contains('file-hover')) {\n target.classList.add('file-hover')\n }\n },\n dragleave(event: DragEvent) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n target.classList.remove('file-hover')\n },\n drop(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!event.dataTransfer || event.dataTransfer.files.length == 0) {\n return\n }\n target.files = event.dataTransfer.files\n this.handleFileChange(event)\n target.classList.remove('file-hover')\n },\n urlKeyup(event: KeyboardEvent) {\n console.log(this.url)\n if (event.key == 'Enter') {\n const target = event.target as HTMLInputElement\n if (this.parsedURL == null) {\n console.error(`${target.value} is an invalid URL`)\n return\n }\n this.$emit('file-select', this.parsedURL)\n }\n }\n }\n})\n","import { render } from \"./BaseFile.vue?vue&type=template&id=0630c5ec&scoped=true\"\nimport script from \"./BaseFile.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseFile.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-0630c5ec\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\nimport * as $protobuf from \"protobufjs/minimal\";\n\n// Common aliases\nconst $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nconst $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\nexport const chromeos_update_engine = $root.chromeos_update_engine = (() => {\n\n /**\n * Namespace chromeos_update_engine.\n * @exports chromeos_update_engine\n * @namespace\n */\n const chromeos_update_engine = {};\n\n chromeos_update_engine.Extent = (function() {\n\n /**\n * Properties of an Extent.\n * @memberof chromeos_update_engine\n * @interface IExtent\n * @property {number|Long|null} [startBlock] Extent startBlock\n * @property {number|Long|null} [numBlocks] Extent numBlocks\n */\n\n /**\n * Constructs a new Extent.\n * @memberof chromeos_update_engine\n * @classdesc Represents an Extent.\n * @implements IExtent\n * @constructor\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n */\n function Extent(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Extent startBlock.\n * @member {number|Long} startBlock\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.startBlock = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Extent numBlocks.\n * @member {number|Long} numBlocks\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.numBlocks = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new Extent instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n * @returns {chromeos_update_engine.Extent} Extent instance\n */\n Extent.create = function create(properties) {\n return new Extent(properties);\n };\n\n /**\n * Encodes the specified Extent message. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startBlock != null && Object.hasOwnProperty.call(message, \"startBlock\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.startBlock);\n if (message.numBlocks != null && Object.hasOwnProperty.call(message, \"numBlocks\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.numBlocks);\n return writer;\n };\n\n /**\n * Encodes the specified Extent message, length delimited. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Extent();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.startBlock = reader.uint64();\n break;\n case 2:\n message.numBlocks = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an Extent message.\n * @function verify\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Extent.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (!$util.isInteger(message.startBlock) && !(message.startBlock && $util.isInteger(message.startBlock.low) && $util.isInteger(message.startBlock.high)))\n return \"startBlock: integer|Long expected\";\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (!$util.isInteger(message.numBlocks) && !(message.numBlocks && $util.isInteger(message.numBlocks.low) && $util.isInteger(message.numBlocks.high)))\n return \"numBlocks: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an Extent message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Extent} Extent\n */\n Extent.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Extent)\n return object;\n let message = new $root.chromeos_update_engine.Extent();\n if (object.startBlock != null)\n if ($util.Long)\n (message.startBlock = $util.Long.fromValue(object.startBlock)).unsigned = true;\n else if (typeof object.startBlock === \"string\")\n message.startBlock = parseInt(object.startBlock, 10);\n else if (typeof object.startBlock === \"number\")\n message.startBlock = object.startBlock;\n else if (typeof object.startBlock === \"object\")\n message.startBlock = new $util.LongBits(object.startBlock.low >>> 0, object.startBlock.high >>> 0).toNumber(true);\n if (object.numBlocks != null)\n if ($util.Long)\n (message.numBlocks = $util.Long.fromValue(object.numBlocks)).unsigned = true;\n else if (typeof object.numBlocks === \"string\")\n message.numBlocks = parseInt(object.numBlocks, 10);\n else if (typeof object.numBlocks === \"number\")\n message.numBlocks = object.numBlocks;\n else if (typeof object.numBlocks === \"object\")\n message.numBlocks = new $util.LongBits(object.numBlocks.low >>> 0, object.numBlocks.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from an Extent message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.Extent} message Extent\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Extent.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.startBlock = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.startBlock = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.numBlocks = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.numBlocks = options.longs === String ? \"0\" : 0;\n }\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (typeof message.startBlock === \"number\")\n object.startBlock = options.longs === String ? String(message.startBlock) : message.startBlock;\n else\n object.startBlock = options.longs === String ? $util.Long.prototype.toString.call(message.startBlock) : options.longs === Number ? new $util.LongBits(message.startBlock.low >>> 0, message.startBlock.high >>> 0).toNumber(true) : message.startBlock;\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (typeof message.numBlocks === \"number\")\n object.numBlocks = options.longs === String ? String(message.numBlocks) : message.numBlocks;\n else\n object.numBlocks = options.longs === String ? $util.Long.prototype.toString.call(message.numBlocks) : options.longs === Number ? new $util.LongBits(message.numBlocks.low >>> 0, message.numBlocks.high >>> 0).toNumber(true) : message.numBlocks;\n return object;\n };\n\n /**\n * Converts this Extent to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Extent\n * @instance\n * @returns {Object.} JSON object\n */\n Extent.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Extent;\n })();\n\n chromeos_update_engine.Signatures = (function() {\n\n /**\n * Properties of a Signatures.\n * @memberof chromeos_update_engine\n * @interface ISignatures\n * @property {Array.|null} [signatures] Signatures signatures\n */\n\n /**\n * Constructs a new Signatures.\n * @memberof chromeos_update_engine\n * @classdesc Represents a Signatures.\n * @implements ISignatures\n * @constructor\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n */\n function Signatures(properties) {\n this.signatures = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signatures signatures.\n * @member {Array.} signatures\n * @memberof chromeos_update_engine.Signatures\n * @instance\n */\n Signatures.prototype.signatures = $util.emptyArray;\n\n /**\n * Creates a new Signatures instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures} Signatures instance\n */\n Signatures.create = function create(properties) {\n return new Signatures(properties);\n };\n\n /**\n * Encodes the specified Signatures message. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.signatures != null && message.signatures.length)\n for (let i = 0; i < message.signatures.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.signatures[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Signatures message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.signatures && message.signatures.length))\n message.signatures = [];\n message.signatures.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signatures message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signatures.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.signatures != null && message.hasOwnProperty(\"signatures\")) {\n if (!Array.isArray(message.signatures))\n return \"signatures: array expected\";\n for (let i = 0; i < message.signatures.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.signatures[i]);\n if (error)\n return \"signatures.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a Signatures message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures} Signatures\n */\n Signatures.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures)\n return object;\n let message = new $root.chromeos_update_engine.Signatures();\n if (object.signatures) {\n if (!Array.isArray(object.signatures))\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: array expected\");\n message.signatures = [];\n for (let i = 0; i < object.signatures.length; ++i) {\n if (typeof object.signatures[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: object expected\");\n message.signatures[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.signatures[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Signatures message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.Signatures} message Signatures\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signatures.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.signatures = [];\n if (message.signatures && message.signatures.length) {\n object.signatures = [];\n for (let j = 0; j < message.signatures.length; ++j)\n object.signatures[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.signatures[j], options);\n }\n return object;\n };\n\n /**\n * Converts this Signatures to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures\n * @instance\n * @returns {Object.} JSON object\n */\n Signatures.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n Signatures.Signature = (function() {\n\n /**\n * Properties of a Signature.\n * @memberof chromeos_update_engine.Signatures\n * @interface ISignature\n * @property {number|null} [version] Signature version\n * @property {Uint8Array|null} [data] Signature data\n * @property {number|null} [unpaddedSignatureSize] Signature unpaddedSignatureSize\n */\n\n /**\n * Constructs a new Signature.\n * @memberof chromeos_update_engine.Signatures\n * @classdesc Represents a Signature.\n * @implements ISignature\n * @constructor\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n */\n function Signature(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signature version.\n * @member {number} version\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.version = 0;\n\n /**\n * Signature data.\n * @member {Uint8Array} data\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.data = $util.newBuffer([]);\n\n /**\n * Signature unpaddedSignatureSize.\n * @member {number} unpaddedSignatureSize\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.unpaddedSignatureSize = 0;\n\n /**\n * Creates a new Signature instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures.Signature} Signature instance\n */\n Signature.create = function create(properties) {\n return new Signature(properties);\n };\n\n /**\n * Encodes the specified Signature message. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.version);\n if (message.data != null && Object.hasOwnProperty.call(message, \"data\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.data);\n if (message.unpaddedSignatureSize != null && Object.hasOwnProperty.call(message, \"unpaddedSignatureSize\"))\n writer.uint32(/* id 3, wireType 5 =*/29).fixed32(message.unpaddedSignatureSize);\n return writer;\n };\n\n /**\n * Encodes the specified Signature message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures.Signature();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.version = reader.uint32();\n break;\n case 2:\n message.data = reader.bytes();\n break;\n case 3:\n message.unpaddedSignatureSize = reader.fixed32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signature message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signature.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version))\n return \"version: integer expected\";\n if (message.data != null && message.hasOwnProperty(\"data\"))\n if (!(message.data && typeof message.data.length === \"number\" || $util.isString(message.data)))\n return \"data: buffer expected\";\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n if (!$util.isInteger(message.unpaddedSignatureSize))\n return \"unpaddedSignatureSize: integer expected\";\n return null;\n };\n\n /**\n * Creates a Signature message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n */\n Signature.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures.Signature)\n return object;\n let message = new $root.chromeos_update_engine.Signatures.Signature();\n if (object.version != null)\n message.version = object.version >>> 0;\n if (object.data != null)\n if (typeof object.data === \"string\")\n $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);\n else if (object.data.length)\n message.data = object.data;\n if (object.unpaddedSignatureSize != null)\n message.unpaddedSignatureSize = object.unpaddedSignatureSize >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a Signature message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.Signature} message Signature\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signature.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.version = 0;\n if (options.bytes === String)\n object.data = \"\";\n else {\n object.data = [];\n if (options.bytes !== Array)\n object.data = $util.newBuffer(object.data);\n }\n object.unpaddedSignatureSize = 0;\n }\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.data != null && message.hasOwnProperty(\"data\"))\n object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n object.unpaddedSignatureSize = message.unpaddedSignatureSize;\n return object;\n };\n\n /**\n * Converts this Signature to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n * @returns {Object.} JSON object\n */\n Signature.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Signature;\n })();\n\n return Signatures;\n })();\n\n chromeos_update_engine.PartitionInfo = (function() {\n\n /**\n * Properties of a PartitionInfo.\n * @memberof chromeos_update_engine\n * @interface IPartitionInfo\n * @property {number|Long|null} [size] PartitionInfo size\n * @property {Uint8Array|null} [hash] PartitionInfo hash\n */\n\n /**\n * Constructs a new PartitionInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionInfo.\n * @implements IPartitionInfo\n * @constructor\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n */\n function PartitionInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionInfo size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * PartitionInfo hash.\n * @member {Uint8Array} hash\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.hash = $util.newBuffer([]);\n\n /**\n * Creates a new PartitionInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo instance\n */\n PartitionInfo.create = function create(properties) {\n return new PartitionInfo(properties);\n };\n\n /**\n * Encodes the specified PartitionInfo message. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.size);\n if (message.hash != null && Object.hasOwnProperty.call(message, \"hash\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.hash);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.size = reader.uint64();\n break;\n case 2:\n message.hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionInfo message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n if (!(message.hash && typeof message.hash.length === \"number\" || $util.isString(message.hash)))\n return \"hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates a PartitionInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n */\n PartitionInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionInfo)\n return object;\n let message = new $root.chromeos_update_engine.PartitionInfo();\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.hash != null)\n if (typeof object.hash === \"string\")\n $util.base64.decode(object.hash, message.hash = $util.newBuffer($util.base64.length(object.hash)), 0);\n else if (object.hash.length)\n message.hash = object.hash;\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.PartitionInfo} message PartitionInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.hash = \"\";\n else {\n object.hash = [];\n if (options.bytes !== Array)\n object.hash = $util.newBuffer(object.hash);\n }\n }\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n object.hash = options.bytes === String ? $util.base64.encode(message.hash, 0, message.hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.hash) : message.hash;\n return object;\n };\n\n /**\n * Converts this PartitionInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionInfo;\n })();\n\n chromeos_update_engine.InstallOperation = (function() {\n\n /**\n * Properties of an InstallOperation.\n * @memberof chromeos_update_engine\n * @interface IInstallOperation\n * @property {chromeos_update_engine.InstallOperation.Type} type InstallOperation type\n * @property {number|Long|null} [dataOffset] InstallOperation dataOffset\n * @property {number|Long|null} [dataLength] InstallOperation dataLength\n * @property {Array.|null} [srcExtents] InstallOperation srcExtents\n * @property {number|Long|null} [srcLength] InstallOperation srcLength\n * @property {Array.|null} [dstExtents] InstallOperation dstExtents\n * @property {number|Long|null} [dstLength] InstallOperation dstLength\n * @property {Uint8Array|null} [dataSha256Hash] InstallOperation dataSha256Hash\n * @property {Uint8Array|null} [srcSha256Hash] InstallOperation srcSha256Hash\n */\n\n /**\n * Constructs a new InstallOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents an InstallOperation.\n * @implements IInstallOperation\n * @constructor\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n */\n function InstallOperation(properties) {\n this.srcExtents = [];\n this.dstExtents = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * InstallOperation type.\n * @member {chromeos_update_engine.InstallOperation.Type} type\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.type = 0;\n\n /**\n * InstallOperation dataOffset.\n * @member {number|Long} dataOffset\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataLength.\n * @member {number|Long} dataLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation srcExtents.\n * @member {Array.} srcExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcExtents = $util.emptyArray;\n\n /**\n * InstallOperation srcLength.\n * @member {number|Long} srcLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dstExtents.\n * @member {Array.} dstExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstExtents = $util.emptyArray;\n\n /**\n * InstallOperation dstLength.\n * @member {number|Long} dstLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataSha256Hash.\n * @member {Uint8Array} dataSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataSha256Hash = $util.newBuffer([]);\n\n /**\n * InstallOperation srcSha256Hash.\n * @member {Uint8Array} srcSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcSha256Hash = $util.newBuffer([]);\n\n /**\n * Creates a new InstallOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation instance\n */\n InstallOperation.create = function create(properties) {\n return new InstallOperation(properties);\n };\n\n /**\n * Encodes the specified InstallOperation message. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.dataOffset != null && Object.hasOwnProperty.call(message, \"dataOffset\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.dataOffset);\n if (message.dataLength != null && Object.hasOwnProperty.call(message, \"dataLength\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.dataLength);\n if (message.srcExtents != null && message.srcExtents.length)\n for (let i = 0; i < message.srcExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.srcExtents[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.srcLength != null && Object.hasOwnProperty.call(message, \"srcLength\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.srcLength);\n if (message.dstExtents != null && message.dstExtents.length)\n for (let i = 0; i < message.dstExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.dstExtents[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.dstLength != null && Object.hasOwnProperty.call(message, \"dstLength\"))\n writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.dstLength);\n if (message.dataSha256Hash != null && Object.hasOwnProperty.call(message, \"dataSha256Hash\"))\n writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.dataSha256Hash);\n if (message.srcSha256Hash != null && Object.hasOwnProperty.call(message, \"srcSha256Hash\"))\n writer.uint32(/* id 9, wireType 2 =*/74).bytes(message.srcSha256Hash);\n return writer;\n };\n\n /**\n * Encodes the specified InstallOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.InstallOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.dataOffset = reader.uint64();\n break;\n case 3:\n message.dataLength = reader.uint64();\n break;\n case 4:\n if (!(message.srcExtents && message.srcExtents.length))\n message.srcExtents = [];\n message.srcExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 5:\n message.srcLength = reader.uint64();\n break;\n case 6:\n if (!(message.dstExtents && message.dstExtents.length))\n message.dstExtents = [];\n message.dstExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 7:\n message.dstLength = reader.uint64();\n break;\n case 8:\n message.dataSha256Hash = reader.bytes();\n break;\n case 9:\n message.srcSha256Hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"type\"))\n throw $util.ProtocolError(\"missing required 'type'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an InstallOperation message.\n * @function verify\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n InstallOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 8:\n case 6:\n case 7:\n case 10:\n case 9:\n case 11:\n case 12:\n case 13:\n break;\n }\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (!$util.isInteger(message.dataOffset) && !(message.dataOffset && $util.isInteger(message.dataOffset.low) && $util.isInteger(message.dataOffset.high)))\n return \"dataOffset: integer|Long expected\";\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (!$util.isInteger(message.dataLength) && !(message.dataLength && $util.isInteger(message.dataLength.low) && $util.isInteger(message.dataLength.high)))\n return \"dataLength: integer|Long expected\";\n if (message.srcExtents != null && message.hasOwnProperty(\"srcExtents\")) {\n if (!Array.isArray(message.srcExtents))\n return \"srcExtents: array expected\";\n for (let i = 0; i < message.srcExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtents[i]);\n if (error)\n return \"srcExtents.\" + error;\n }\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (!$util.isInteger(message.srcLength) && !(message.srcLength && $util.isInteger(message.srcLength.low) && $util.isInteger(message.srcLength.high)))\n return \"srcLength: integer|Long expected\";\n if (message.dstExtents != null && message.hasOwnProperty(\"dstExtents\")) {\n if (!Array.isArray(message.dstExtents))\n return \"dstExtents: array expected\";\n for (let i = 0; i < message.dstExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtents[i]);\n if (error)\n return \"dstExtents.\" + error;\n }\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (!$util.isInteger(message.dstLength) && !(message.dstLength && $util.isInteger(message.dstLength.low) && $util.isInteger(message.dstLength.high)))\n return \"dstLength: integer|Long expected\";\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n if (!(message.dataSha256Hash && typeof message.dataSha256Hash.length === \"number\" || $util.isString(message.dataSha256Hash)))\n return \"dataSha256Hash: buffer expected\";\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n if (!(message.srcSha256Hash && typeof message.srcSha256Hash.length === \"number\" || $util.isString(message.srcSha256Hash)))\n return \"srcSha256Hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates an InstallOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n */\n InstallOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.InstallOperation)\n return object;\n let message = new $root.chromeos_update_engine.InstallOperation();\n switch (object.type) {\n case \"REPLACE\":\n case 0:\n message.type = 0;\n break;\n case \"REPLACE_BZ\":\n case 1:\n message.type = 1;\n break;\n case \"MOVE\":\n case 2:\n message.type = 2;\n break;\n case \"BSDIFF\":\n case 3:\n message.type = 3;\n break;\n case \"SOURCE_COPY\":\n case 4:\n message.type = 4;\n break;\n case \"SOURCE_BSDIFF\":\n case 5:\n message.type = 5;\n break;\n case \"REPLACE_XZ\":\n case 8:\n message.type = 8;\n break;\n case \"ZERO\":\n case 6:\n message.type = 6;\n break;\n case \"DISCARD\":\n case 7:\n message.type = 7;\n break;\n case \"BROTLI_BSDIFF\":\n case 10:\n message.type = 10;\n break;\n case \"PUFFDIFF\":\n case 9:\n message.type = 9;\n break;\n case \"ZUCCHINI\":\n case 11:\n message.type = 11;\n break;\n case \"LZ4DIFF_BSDIFF\":\n case 12:\n message.type = 12;\n break;\n case \"LZ4DIFF_PUFFDIFF\":\n case 13:\n message.type = 13;\n break;\n }\n if (object.dataOffset != null)\n if ($util.Long)\n (message.dataOffset = $util.Long.fromValue(object.dataOffset)).unsigned = true;\n else if (typeof object.dataOffset === \"string\")\n message.dataOffset = parseInt(object.dataOffset, 10);\n else if (typeof object.dataOffset === \"number\")\n message.dataOffset = object.dataOffset;\n else if (typeof object.dataOffset === \"object\")\n message.dataOffset = new $util.LongBits(object.dataOffset.low >>> 0, object.dataOffset.high >>> 0).toNumber(true);\n if (object.dataLength != null)\n if ($util.Long)\n (message.dataLength = $util.Long.fromValue(object.dataLength)).unsigned = true;\n else if (typeof object.dataLength === \"string\")\n message.dataLength = parseInt(object.dataLength, 10);\n else if (typeof object.dataLength === \"number\")\n message.dataLength = object.dataLength;\n else if (typeof object.dataLength === \"object\")\n message.dataLength = new $util.LongBits(object.dataLength.low >>> 0, object.dataLength.high >>> 0).toNumber(true);\n if (object.srcExtents) {\n if (!Array.isArray(object.srcExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: array expected\");\n message.srcExtents = [];\n for (let i = 0; i < object.srcExtents.length; ++i) {\n if (typeof object.srcExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: object expected\");\n message.srcExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.srcExtents[i]);\n }\n }\n if (object.srcLength != null)\n if ($util.Long)\n (message.srcLength = $util.Long.fromValue(object.srcLength)).unsigned = true;\n else if (typeof object.srcLength === \"string\")\n message.srcLength = parseInt(object.srcLength, 10);\n else if (typeof object.srcLength === \"number\")\n message.srcLength = object.srcLength;\n else if (typeof object.srcLength === \"object\")\n message.srcLength = new $util.LongBits(object.srcLength.low >>> 0, object.srcLength.high >>> 0).toNumber(true);\n if (object.dstExtents) {\n if (!Array.isArray(object.dstExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: array expected\");\n message.dstExtents = [];\n for (let i = 0; i < object.dstExtents.length; ++i) {\n if (typeof object.dstExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: object expected\");\n message.dstExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.dstExtents[i]);\n }\n }\n if (object.dstLength != null)\n if ($util.Long)\n (message.dstLength = $util.Long.fromValue(object.dstLength)).unsigned = true;\n else if (typeof object.dstLength === \"string\")\n message.dstLength = parseInt(object.dstLength, 10);\n else if (typeof object.dstLength === \"number\")\n message.dstLength = object.dstLength;\n else if (typeof object.dstLength === \"object\")\n message.dstLength = new $util.LongBits(object.dstLength.low >>> 0, object.dstLength.high >>> 0).toNumber(true);\n if (object.dataSha256Hash != null)\n if (typeof object.dataSha256Hash === \"string\")\n $util.base64.decode(object.dataSha256Hash, message.dataSha256Hash = $util.newBuffer($util.base64.length(object.dataSha256Hash)), 0);\n else if (object.dataSha256Hash.length)\n message.dataSha256Hash = object.dataSha256Hash;\n if (object.srcSha256Hash != null)\n if (typeof object.srcSha256Hash === \"string\")\n $util.base64.decode(object.srcSha256Hash, message.srcSha256Hash = $util.newBuffer($util.base64.length(object.srcSha256Hash)), 0);\n else if (object.srcSha256Hash.length)\n message.srcSha256Hash = object.srcSha256Hash;\n return message;\n };\n\n /**\n * Creates a plain object from an InstallOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.InstallOperation} message InstallOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n InstallOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.srcExtents = [];\n object.dstExtents = [];\n }\n if (options.defaults) {\n object.type = options.enums === String ? \"REPLACE\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.srcLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.srcLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dstLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dstLength = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.dataSha256Hash = \"\";\n else {\n object.dataSha256Hash = [];\n if (options.bytes !== Array)\n object.dataSha256Hash = $util.newBuffer(object.dataSha256Hash);\n }\n if (options.bytes === String)\n object.srcSha256Hash = \"\";\n else {\n object.srcSha256Hash = [];\n if (options.bytes !== Array)\n object.srcSha256Hash = $util.newBuffer(object.srcSha256Hash);\n }\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.InstallOperation.Type[message.type] : message.type;\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (typeof message.dataOffset === \"number\")\n object.dataOffset = options.longs === String ? String(message.dataOffset) : message.dataOffset;\n else\n object.dataOffset = options.longs === String ? $util.Long.prototype.toString.call(message.dataOffset) : options.longs === Number ? new $util.LongBits(message.dataOffset.low >>> 0, message.dataOffset.high >>> 0).toNumber(true) : message.dataOffset;\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (typeof message.dataLength === \"number\")\n object.dataLength = options.longs === String ? String(message.dataLength) : message.dataLength;\n else\n object.dataLength = options.longs === String ? $util.Long.prototype.toString.call(message.dataLength) : options.longs === Number ? new $util.LongBits(message.dataLength.low >>> 0, message.dataLength.high >>> 0).toNumber(true) : message.dataLength;\n if (message.srcExtents && message.srcExtents.length) {\n object.srcExtents = [];\n for (let j = 0; j < message.srcExtents.length; ++j)\n object.srcExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.srcExtents[j], options);\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (typeof message.srcLength === \"number\")\n object.srcLength = options.longs === String ? String(message.srcLength) : message.srcLength;\n else\n object.srcLength = options.longs === String ? $util.Long.prototype.toString.call(message.srcLength) : options.longs === Number ? new $util.LongBits(message.srcLength.low >>> 0, message.srcLength.high >>> 0).toNumber(true) : message.srcLength;\n if (message.dstExtents && message.dstExtents.length) {\n object.dstExtents = [];\n for (let j = 0; j < message.dstExtents.length; ++j)\n object.dstExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.dstExtents[j], options);\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (typeof message.dstLength === \"number\")\n object.dstLength = options.longs === String ? String(message.dstLength) : message.dstLength;\n else\n object.dstLength = options.longs === String ? $util.Long.prototype.toString.call(message.dstLength) : options.longs === Number ? new $util.LongBits(message.dstLength.low >>> 0, message.dstLength.high >>> 0).toNumber(true) : message.dstLength;\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n object.dataSha256Hash = options.bytes === String ? $util.base64.encode(message.dataSha256Hash, 0, message.dataSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.dataSha256Hash) : message.dataSha256Hash;\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n object.srcSha256Hash = options.bytes === String ? $util.base64.encode(message.srcSha256Hash, 0, message.srcSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.srcSha256Hash) : message.srcSha256Hash;\n return object;\n };\n\n /**\n * Converts this InstallOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n * @returns {Object.} JSON object\n */\n InstallOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.InstallOperation.Type\n * @enum {number}\n * @property {number} REPLACE=0 REPLACE value\n * @property {number} REPLACE_BZ=1 REPLACE_BZ value\n * @property {number} MOVE=2 MOVE value\n * @property {number} BSDIFF=3 BSDIFF value\n * @property {number} SOURCE_COPY=4 SOURCE_COPY value\n * @property {number} SOURCE_BSDIFF=5 SOURCE_BSDIFF value\n * @property {number} REPLACE_XZ=8 REPLACE_XZ value\n * @property {number} ZERO=6 ZERO value\n * @property {number} DISCARD=7 DISCARD value\n * @property {number} BROTLI_BSDIFF=10 BROTLI_BSDIFF value\n * @property {number} PUFFDIFF=9 PUFFDIFF value\n * @property {number} ZUCCHINI=11 ZUCCHINI value\n * @property {number} LZ4DIFF_BSDIFF=12 LZ4DIFF_BSDIFF value\n * @property {number} LZ4DIFF_PUFFDIFF=13 LZ4DIFF_PUFFDIFF value\n */\n InstallOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"REPLACE\"] = 0;\n values[valuesById[1] = \"REPLACE_BZ\"] = 1;\n values[valuesById[2] = \"MOVE\"] = 2;\n values[valuesById[3] = \"BSDIFF\"] = 3;\n values[valuesById[4] = \"SOURCE_COPY\"] = 4;\n values[valuesById[5] = \"SOURCE_BSDIFF\"] = 5;\n values[valuesById[8] = \"REPLACE_XZ\"] = 8;\n values[valuesById[6] = \"ZERO\"] = 6;\n values[valuesById[7] = \"DISCARD\"] = 7;\n values[valuesById[10] = \"BROTLI_BSDIFF\"] = 10;\n values[valuesById[9] = \"PUFFDIFF\"] = 9;\n values[valuesById[11] = \"ZUCCHINI\"] = 11;\n values[valuesById[12] = \"LZ4DIFF_BSDIFF\"] = 12;\n values[valuesById[13] = \"LZ4DIFF_PUFFDIFF\"] = 13;\n return values;\n })();\n\n return InstallOperation;\n })();\n\n chromeos_update_engine.CowMergeOperation = (function() {\n\n /**\n * Properties of a CowMergeOperation.\n * @memberof chromeos_update_engine\n * @interface ICowMergeOperation\n * @property {chromeos_update_engine.CowMergeOperation.Type|null} [type] CowMergeOperation type\n * @property {chromeos_update_engine.IExtent|null} [srcExtent] CowMergeOperation srcExtent\n * @property {chromeos_update_engine.IExtent|null} [dstExtent] CowMergeOperation dstExtent\n * @property {number|null} [srcOffset] CowMergeOperation srcOffset\n */\n\n /**\n * Constructs a new CowMergeOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents a CowMergeOperation.\n * @implements ICowMergeOperation\n * @constructor\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n */\n function CowMergeOperation(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * CowMergeOperation type.\n * @member {chromeos_update_engine.CowMergeOperation.Type} type\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.type = 0;\n\n /**\n * CowMergeOperation srcExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} srcExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcExtent = null;\n\n /**\n * CowMergeOperation dstExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} dstExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.dstExtent = null;\n\n /**\n * CowMergeOperation srcOffset.\n * @member {number} srcOffset\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcOffset = 0;\n\n /**\n * Creates a new CowMergeOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation instance\n */\n CowMergeOperation.create = function create(properties) {\n return new CowMergeOperation(properties);\n };\n\n /**\n * Encodes the specified CowMergeOperation message. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.srcExtent != null && Object.hasOwnProperty.call(message, \"srcExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.srcExtent, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.dstExtent != null && Object.hasOwnProperty.call(message, \"dstExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.dstExtent, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.srcOffset != null && Object.hasOwnProperty.call(message, \"srcOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.srcOffset);\n return writer;\n };\n\n /**\n * Encodes the specified CowMergeOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.CowMergeOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.srcExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 3:\n message.dstExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 4:\n message.srcOffset = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a CowMergeOperation message.\n * @function verify\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n CowMergeOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtent);\n if (error)\n return \"srcExtent.\" + error;\n }\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtent);\n if (error)\n return \"dstExtent.\" + error;\n }\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n if (!$util.isInteger(message.srcOffset))\n return \"srcOffset: integer expected\";\n return null;\n };\n\n /**\n * Creates a CowMergeOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n */\n CowMergeOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.CowMergeOperation)\n return object;\n let message = new $root.chromeos_update_engine.CowMergeOperation();\n switch (object.type) {\n case \"COW_COPY\":\n case 0:\n message.type = 0;\n break;\n case \"COW_XOR\":\n case 1:\n message.type = 1;\n break;\n case \"COW_REPLACE\":\n case 2:\n message.type = 2;\n break;\n }\n if (object.srcExtent != null) {\n if (typeof object.srcExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.srcExtent: object expected\");\n message.srcExtent = $root.chromeos_update_engine.Extent.fromObject(object.srcExtent);\n }\n if (object.dstExtent != null) {\n if (typeof object.dstExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.dstExtent: object expected\");\n message.dstExtent = $root.chromeos_update_engine.Extent.fromObject(object.dstExtent);\n }\n if (object.srcOffset != null)\n message.srcOffset = object.srcOffset >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a CowMergeOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.CowMergeOperation} message CowMergeOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n CowMergeOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"COW_COPY\" : 0;\n object.srcExtent = null;\n object.dstExtent = null;\n object.srcOffset = 0;\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.CowMergeOperation.Type[message.type] : message.type;\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\"))\n object.srcExtent = $root.chromeos_update_engine.Extent.toObject(message.srcExtent, options);\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\"))\n object.dstExtent = $root.chromeos_update_engine.Extent.toObject(message.dstExtent, options);\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n object.srcOffset = message.srcOffset;\n return object;\n };\n\n /**\n * Converts this CowMergeOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n * @returns {Object.} JSON object\n */\n CowMergeOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.CowMergeOperation.Type\n * @enum {number}\n * @property {number} COW_COPY=0 COW_COPY value\n * @property {number} COW_XOR=1 COW_XOR value\n * @property {number} COW_REPLACE=2 COW_REPLACE value\n */\n CowMergeOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"COW_COPY\"] = 0;\n values[valuesById[1] = \"COW_XOR\"] = 1;\n values[valuesById[2] = \"COW_REPLACE\"] = 2;\n return values;\n })();\n\n return CowMergeOperation;\n })();\n\n chromeos_update_engine.PartitionUpdate = (function() {\n\n /**\n * Properties of a PartitionUpdate.\n * @memberof chromeos_update_engine\n * @interface IPartitionUpdate\n * @property {string} partitionName PartitionUpdate partitionName\n * @property {boolean|null} [runPostinstall] PartitionUpdate runPostinstall\n * @property {string|null} [postinstallPath] PartitionUpdate postinstallPath\n * @property {string|null} [filesystemType] PartitionUpdate filesystemType\n * @property {Array.|null} [newPartitionSignature] PartitionUpdate newPartitionSignature\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldPartitionInfo] PartitionUpdate oldPartitionInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newPartitionInfo] PartitionUpdate newPartitionInfo\n * @property {Array.|null} [operations] PartitionUpdate operations\n * @property {boolean|null} [postinstallOptional] PartitionUpdate postinstallOptional\n * @property {chromeos_update_engine.IExtent|null} [hashTreeDataExtent] PartitionUpdate hashTreeDataExtent\n * @property {chromeos_update_engine.IExtent|null} [hashTreeExtent] PartitionUpdate hashTreeExtent\n * @property {string|null} [hashTreeAlgorithm] PartitionUpdate hashTreeAlgorithm\n * @property {Uint8Array|null} [hashTreeSalt] PartitionUpdate hashTreeSalt\n * @property {chromeos_update_engine.IExtent|null} [fecDataExtent] PartitionUpdate fecDataExtent\n * @property {chromeos_update_engine.IExtent|null} [fecExtent] PartitionUpdate fecExtent\n * @property {number|null} [fecRoots] PartitionUpdate fecRoots\n * @property {string|null} [version] PartitionUpdate version\n * @property {Array.|null} [mergeOperations] PartitionUpdate mergeOperations\n * @property {number|Long|null} [estimateCowSize] PartitionUpdate estimateCowSize\n */\n\n /**\n * Constructs a new PartitionUpdate.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionUpdate.\n * @implements IPartitionUpdate\n * @constructor\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n */\n function PartitionUpdate(properties) {\n this.newPartitionSignature = [];\n this.operations = [];\n this.mergeOperations = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionUpdate partitionName.\n * @member {string} partitionName\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.partitionName = \"\";\n\n /**\n * PartitionUpdate runPostinstall.\n * @member {boolean} runPostinstall\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.runPostinstall = false;\n\n /**\n * PartitionUpdate postinstallPath.\n * @member {string} postinstallPath\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallPath = \"\";\n\n /**\n * PartitionUpdate filesystemType.\n * @member {string} filesystemType\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.filesystemType = \"\";\n\n /**\n * PartitionUpdate newPartitionSignature.\n * @member {Array.} newPartitionSignature\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionSignature = $util.emptyArray;\n\n /**\n * PartitionUpdate oldPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.oldPartitionInfo = null;\n\n /**\n * PartitionUpdate newPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionInfo = null;\n\n /**\n * PartitionUpdate operations.\n * @member {Array.} operations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.operations = $util.emptyArray;\n\n /**\n * PartitionUpdate postinstallOptional.\n * @member {boolean} postinstallOptional\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallOptional = false;\n\n /**\n * PartitionUpdate hashTreeDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeDataExtent = null;\n\n /**\n * PartitionUpdate hashTreeExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeExtent = null;\n\n /**\n * PartitionUpdate hashTreeAlgorithm.\n * @member {string} hashTreeAlgorithm\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeAlgorithm = \"\";\n\n /**\n * PartitionUpdate hashTreeSalt.\n * @member {Uint8Array} hashTreeSalt\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeSalt = $util.newBuffer([]);\n\n /**\n * PartitionUpdate fecDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecDataExtent = null;\n\n /**\n * PartitionUpdate fecExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecExtent = null;\n\n /**\n * PartitionUpdate fecRoots.\n * @member {number} fecRoots\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecRoots = 2;\n\n /**\n * PartitionUpdate version.\n * @member {string} version\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.version = \"\";\n\n /**\n * PartitionUpdate mergeOperations.\n * @member {Array.} mergeOperations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.mergeOperations = $util.emptyArray;\n\n /**\n * PartitionUpdate estimateCowSize.\n * @member {number|Long} estimateCowSize\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.estimateCowSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new PartitionUpdate instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate instance\n */\n PartitionUpdate.create = function create(properties) {\n return new PartitionUpdate(properties);\n };\n\n /**\n * Encodes the specified PartitionUpdate message. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.partitionName);\n if (message.runPostinstall != null && Object.hasOwnProperty.call(message, \"runPostinstall\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.runPostinstall);\n if (message.postinstallPath != null && Object.hasOwnProperty.call(message, \"postinstallPath\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.postinstallPath);\n if (message.filesystemType != null && Object.hasOwnProperty.call(message, \"filesystemType\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.filesystemType);\n if (message.newPartitionSignature != null && message.newPartitionSignature.length)\n for (let i = 0; i < message.newPartitionSignature.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.newPartitionSignature[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.oldPartitionInfo != null && Object.hasOwnProperty.call(message, \"oldPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldPartitionInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newPartitionInfo != null && Object.hasOwnProperty.call(message, \"newPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newPartitionInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.operations != null && message.operations.length)\n for (let i = 0; i < message.operations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.operations[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.postinstallOptional != null && Object.hasOwnProperty.call(message, \"postinstallOptional\"))\n writer.uint32(/* id 9, wireType 0 =*/72).bool(message.postinstallOptional);\n if (message.hashTreeDataExtent != null && Object.hasOwnProperty.call(message, \"hashTreeDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeDataExtent, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.hashTreeExtent != null && Object.hasOwnProperty.call(message, \"hashTreeExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeExtent, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.hashTreeAlgorithm != null && Object.hasOwnProperty.call(message, \"hashTreeAlgorithm\"))\n writer.uint32(/* id 12, wireType 2 =*/98).string(message.hashTreeAlgorithm);\n if (message.hashTreeSalt != null && Object.hasOwnProperty.call(message, \"hashTreeSalt\"))\n writer.uint32(/* id 13, wireType 2 =*/106).bytes(message.hashTreeSalt);\n if (message.fecDataExtent != null && Object.hasOwnProperty.call(message, \"fecDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecDataExtent, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.fecExtent != null && Object.hasOwnProperty.call(message, \"fecExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecExtent, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.fecRoots != null && Object.hasOwnProperty.call(message, \"fecRoots\"))\n writer.uint32(/* id 16, wireType 0 =*/128).uint32(message.fecRoots);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 17, wireType 2 =*/138).string(message.version);\n if (message.mergeOperations != null && message.mergeOperations.length)\n for (let i = 0; i < message.mergeOperations.length; ++i)\n $root.chromeos_update_engine.CowMergeOperation.encode(message.mergeOperations[i], writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n if (message.estimateCowSize != null && Object.hasOwnProperty.call(message, \"estimateCowSize\"))\n writer.uint32(/* id 19, wireType 0 =*/152).uint64(message.estimateCowSize);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionUpdate message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionUpdate();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.partitionName = reader.string();\n break;\n case 2:\n message.runPostinstall = reader.bool();\n break;\n case 3:\n message.postinstallPath = reader.string();\n break;\n case 4:\n message.filesystemType = reader.string();\n break;\n case 5:\n if (!(message.newPartitionSignature && message.newPartitionSignature.length))\n message.newPartitionSignature = [];\n message.newPartitionSignature.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n case 6:\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n if (!(message.operations && message.operations.length))\n message.operations = [];\n message.operations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 9:\n message.postinstallOptional = reader.bool();\n break;\n case 10:\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 11:\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 12:\n message.hashTreeAlgorithm = reader.string();\n break;\n case 13:\n message.hashTreeSalt = reader.bytes();\n break;\n case 14:\n message.fecDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 15:\n message.fecExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 16:\n message.fecRoots = reader.uint32();\n break;\n case 17:\n message.version = reader.string();\n break;\n case 18:\n if (!(message.mergeOperations && message.mergeOperations.length))\n message.mergeOperations = [];\n message.mergeOperations.push($root.chromeos_update_engine.CowMergeOperation.decode(reader, reader.uint32()));\n break;\n case 19:\n message.estimateCowSize = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"partitionName\"))\n throw $util.ProtocolError(\"missing required 'partitionName'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionUpdate message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionUpdate.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.partitionName))\n return \"partitionName: string expected\";\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n if (typeof message.runPostinstall !== \"boolean\")\n return \"runPostinstall: boolean expected\";\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n if (!$util.isString(message.postinstallPath))\n return \"postinstallPath: string expected\";\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n if (!$util.isString(message.filesystemType))\n return \"filesystemType: string expected\";\n if (message.newPartitionSignature != null && message.hasOwnProperty(\"newPartitionSignature\")) {\n if (!Array.isArray(message.newPartitionSignature))\n return \"newPartitionSignature: array expected\";\n for (let i = 0; i < message.newPartitionSignature.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.newPartitionSignature[i]);\n if (error)\n return \"newPartitionSignature.\" + error;\n }\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldPartitionInfo);\n if (error)\n return \"oldPartitionInfo.\" + error;\n }\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newPartitionInfo);\n if (error)\n return \"newPartitionInfo.\" + error;\n }\n if (message.operations != null && message.hasOwnProperty(\"operations\")) {\n if (!Array.isArray(message.operations))\n return \"operations: array expected\";\n for (let i = 0; i < message.operations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.operations[i]);\n if (error)\n return \"operations.\" + error;\n }\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n if (typeof message.postinstallOptional !== \"boolean\")\n return \"postinstallOptional: boolean expected\";\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeDataExtent);\n if (error)\n return \"hashTreeDataExtent.\" + error;\n }\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeExtent);\n if (error)\n return \"hashTreeExtent.\" + error;\n }\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n if (!$util.isString(message.hashTreeAlgorithm))\n return \"hashTreeAlgorithm: string expected\";\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n if (!(message.hashTreeSalt && typeof message.hashTreeSalt.length === \"number\" || $util.isString(message.hashTreeSalt)))\n return \"hashTreeSalt: buffer expected\";\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecDataExtent);\n if (error)\n return \"fecDataExtent.\" + error;\n }\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecExtent);\n if (error)\n return \"fecExtent.\" + error;\n }\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n if (!$util.isInteger(message.fecRoots))\n return \"fecRoots: integer expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.mergeOperations != null && message.hasOwnProperty(\"mergeOperations\")) {\n if (!Array.isArray(message.mergeOperations))\n return \"mergeOperations: array expected\";\n for (let i = 0; i < message.mergeOperations.length; ++i) {\n let error = $root.chromeos_update_engine.CowMergeOperation.verify(message.mergeOperations[i]);\n if (error)\n return \"mergeOperations.\" + error;\n }\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (!$util.isInteger(message.estimateCowSize) && !(message.estimateCowSize && $util.isInteger(message.estimateCowSize.low) && $util.isInteger(message.estimateCowSize.high)))\n return \"estimateCowSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a PartitionUpdate message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n */\n PartitionUpdate.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionUpdate)\n return object;\n let message = new $root.chromeos_update_engine.PartitionUpdate();\n if (object.partitionName != null)\n message.partitionName = String(object.partitionName);\n if (object.runPostinstall != null)\n message.runPostinstall = Boolean(object.runPostinstall);\n if (object.postinstallPath != null)\n message.postinstallPath = String(object.postinstallPath);\n if (object.filesystemType != null)\n message.filesystemType = String(object.filesystemType);\n if (object.newPartitionSignature) {\n if (!Array.isArray(object.newPartitionSignature))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: array expected\");\n message.newPartitionSignature = [];\n for (let i = 0; i < object.newPartitionSignature.length; ++i) {\n if (typeof object.newPartitionSignature[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: object expected\");\n message.newPartitionSignature[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.newPartitionSignature[i]);\n }\n }\n if (object.oldPartitionInfo != null) {\n if (typeof object.oldPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.oldPartitionInfo: object expected\");\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldPartitionInfo);\n }\n if (object.newPartitionInfo != null) {\n if (typeof object.newPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionInfo: object expected\");\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newPartitionInfo);\n }\n if (object.operations) {\n if (!Array.isArray(object.operations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: array expected\");\n message.operations = [];\n for (let i = 0; i < object.operations.length; ++i) {\n if (typeof object.operations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: object expected\");\n message.operations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.operations[i]);\n }\n }\n if (object.postinstallOptional != null)\n message.postinstallOptional = Boolean(object.postinstallOptional);\n if (object.hashTreeDataExtent != null) {\n if (typeof object.hashTreeDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeDataExtent: object expected\");\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeDataExtent);\n }\n if (object.hashTreeExtent != null) {\n if (typeof object.hashTreeExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeExtent: object expected\");\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeExtent);\n }\n if (object.hashTreeAlgorithm != null)\n message.hashTreeAlgorithm = String(object.hashTreeAlgorithm);\n if (object.hashTreeSalt != null)\n if (typeof object.hashTreeSalt === \"string\")\n $util.base64.decode(object.hashTreeSalt, message.hashTreeSalt = $util.newBuffer($util.base64.length(object.hashTreeSalt)), 0);\n else if (object.hashTreeSalt.length)\n message.hashTreeSalt = object.hashTreeSalt;\n if (object.fecDataExtent != null) {\n if (typeof object.fecDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecDataExtent: object expected\");\n message.fecDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecDataExtent);\n }\n if (object.fecExtent != null) {\n if (typeof object.fecExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecExtent: object expected\");\n message.fecExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecExtent);\n }\n if (object.fecRoots != null)\n message.fecRoots = object.fecRoots >>> 0;\n if (object.version != null)\n message.version = String(object.version);\n if (object.mergeOperations) {\n if (!Array.isArray(object.mergeOperations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected\");\n message.mergeOperations = [];\n for (let i = 0; i < object.mergeOperations.length; ++i) {\n if (typeof object.mergeOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: object expected\");\n message.mergeOperations[i] = $root.chromeos_update_engine.CowMergeOperation.fromObject(object.mergeOperations[i]);\n }\n }\n if (object.estimateCowSize != null)\n if ($util.Long)\n (message.estimateCowSize = $util.Long.fromValue(object.estimateCowSize)).unsigned = true;\n else if (typeof object.estimateCowSize === \"string\")\n message.estimateCowSize = parseInt(object.estimateCowSize, 10);\n else if (typeof object.estimateCowSize === \"number\")\n message.estimateCowSize = object.estimateCowSize;\n else if (typeof object.estimateCowSize === \"object\")\n message.estimateCowSize = new $util.LongBits(object.estimateCowSize.low >>> 0, object.estimateCowSize.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionUpdate message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.PartitionUpdate} message PartitionUpdate\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionUpdate.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.newPartitionSignature = [];\n object.operations = [];\n object.mergeOperations = [];\n }\n if (options.defaults) {\n object.partitionName = \"\";\n object.runPostinstall = false;\n object.postinstallPath = \"\";\n object.filesystemType = \"\";\n object.oldPartitionInfo = null;\n object.newPartitionInfo = null;\n object.postinstallOptional = false;\n object.hashTreeDataExtent = null;\n object.hashTreeExtent = null;\n object.hashTreeAlgorithm = \"\";\n if (options.bytes === String)\n object.hashTreeSalt = \"\";\n else {\n object.hashTreeSalt = [];\n if (options.bytes !== Array)\n object.hashTreeSalt = $util.newBuffer(object.hashTreeSalt);\n }\n object.fecDataExtent = null;\n object.fecExtent = null;\n object.fecRoots = 2;\n object.version = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.estimateCowSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.estimateCowSize = options.longs === String ? \"0\" : 0;\n }\n if (message.partitionName != null && message.hasOwnProperty(\"partitionName\"))\n object.partitionName = message.partitionName;\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n object.runPostinstall = message.runPostinstall;\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n object.postinstallPath = message.postinstallPath;\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n object.filesystemType = message.filesystemType;\n if (message.newPartitionSignature && message.newPartitionSignature.length) {\n object.newPartitionSignature = [];\n for (let j = 0; j < message.newPartitionSignature.length; ++j)\n object.newPartitionSignature[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.newPartitionSignature[j], options);\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\"))\n object.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldPartitionInfo, options);\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\"))\n object.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newPartitionInfo, options);\n if (message.operations && message.operations.length) {\n object.operations = [];\n for (let j = 0; j < message.operations.length; ++j)\n object.operations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.operations[j], options);\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n object.postinstallOptional = message.postinstallOptional;\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\"))\n object.hashTreeDataExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeDataExtent, options);\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\"))\n object.hashTreeExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeExtent, options);\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n object.hashTreeAlgorithm = message.hashTreeAlgorithm;\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n object.hashTreeSalt = options.bytes === String ? $util.base64.encode(message.hashTreeSalt, 0, message.hashTreeSalt.length) : options.bytes === Array ? Array.prototype.slice.call(message.hashTreeSalt) : message.hashTreeSalt;\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\"))\n object.fecDataExtent = $root.chromeos_update_engine.Extent.toObject(message.fecDataExtent, options);\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\"))\n object.fecExtent = $root.chromeos_update_engine.Extent.toObject(message.fecExtent, options);\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n object.fecRoots = message.fecRoots;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.mergeOperations && message.mergeOperations.length) {\n object.mergeOperations = [];\n for (let j = 0; j < message.mergeOperations.length; ++j)\n object.mergeOperations[j] = $root.chromeos_update_engine.CowMergeOperation.toObject(message.mergeOperations[j], options);\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (typeof message.estimateCowSize === \"number\")\n object.estimateCowSize = options.longs === String ? String(message.estimateCowSize) : message.estimateCowSize;\n else\n object.estimateCowSize = options.longs === String ? $util.Long.prototype.toString.call(message.estimateCowSize) : options.longs === Number ? new $util.LongBits(message.estimateCowSize.low >>> 0, message.estimateCowSize.high >>> 0).toNumber(true) : message.estimateCowSize;\n return object;\n };\n\n /**\n * Converts this PartitionUpdate to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionUpdate.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionUpdate;\n })();\n\n chromeos_update_engine.DynamicPartitionGroup = (function() {\n\n /**\n * Properties of a DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionGroup\n * @property {string} name DynamicPartitionGroup name\n * @property {number|Long|null} [size] DynamicPartitionGroup size\n * @property {Array.|null} [partitionNames] DynamicPartitionGroup partitionNames\n */\n\n /**\n * Constructs a new DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionGroup.\n * @implements IDynamicPartitionGroup\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n */\n function DynamicPartitionGroup(properties) {\n this.partitionNames = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionGroup name.\n * @member {string} name\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.name = \"\";\n\n /**\n * DynamicPartitionGroup size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DynamicPartitionGroup partitionNames.\n * @member {Array.} partitionNames\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.partitionNames = $util.emptyArray;\n\n /**\n * Creates a new DynamicPartitionGroup instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup instance\n */\n DynamicPartitionGroup.create = function create(properties) {\n return new DynamicPartitionGroup(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.size);\n if (message.partitionNames != null && message.partitionNames.length)\n for (let i = 0; i < message.partitionNames.length; ++i)\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.partitionNames[i]);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.name = reader.string();\n break;\n case 2:\n message.size = reader.uint64();\n break;\n case 3:\n if (!(message.partitionNames && message.partitionNames.length))\n message.partitionNames = [];\n message.partitionNames.push(reader.string());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"name\"))\n throw $util.ProtocolError(\"missing required 'name'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionGroup message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionGroup.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.partitionNames != null && message.hasOwnProperty(\"partitionNames\")) {\n if (!Array.isArray(message.partitionNames))\n return \"partitionNames: array expected\";\n for (let i = 0; i < message.partitionNames.length; ++i)\n if (!$util.isString(message.partitionNames[i]))\n return \"partitionNames: string[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a DynamicPartitionGroup message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n */\n DynamicPartitionGroup.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionGroup)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n if (object.name != null)\n message.name = String(object.name);\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.partitionNames) {\n if (!Array.isArray(object.partitionNames))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected\");\n message.partitionNames = [];\n for (let i = 0; i < object.partitionNames.length; ++i)\n message.partitionNames[i] = String(object.partitionNames[i]);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionGroup message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.DynamicPartitionGroup} message DynamicPartitionGroup\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionGroup.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.partitionNames = [];\n if (options.defaults) {\n object.name = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.partitionNames && message.partitionNames.length) {\n object.partitionNames = [];\n for (let j = 0; j < message.partitionNames.length; ++j)\n object.partitionNames[j] = message.partitionNames[j];\n }\n return object;\n };\n\n /**\n * Converts this DynamicPartitionGroup to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionGroup.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionGroup;\n })();\n\n chromeos_update_engine.DynamicPartitionMetadata = (function() {\n\n /**\n * Properties of a DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionMetadata\n * @property {Array.|null} [groups] DynamicPartitionMetadata groups\n * @property {boolean|null} [snapshotEnabled] DynamicPartitionMetadata snapshotEnabled\n * @property {boolean|null} [vabcEnabled] DynamicPartitionMetadata vabcEnabled\n * @property {string|null} [vabcCompressionParam] DynamicPartitionMetadata vabcCompressionParam\n * @property {number|null} [cowVersion] DynamicPartitionMetadata cowVersion\n */\n\n /**\n * Constructs a new DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionMetadata.\n * @implements IDynamicPartitionMetadata\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n */\n function DynamicPartitionMetadata(properties) {\n this.groups = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionMetadata groups.\n * @member {Array.} groups\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.groups = $util.emptyArray;\n\n /**\n * DynamicPartitionMetadata snapshotEnabled.\n * @member {boolean} snapshotEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.snapshotEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcEnabled.\n * @member {boolean} vabcEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcCompressionParam.\n * @member {string} vabcCompressionParam\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcCompressionParam = \"\";\n\n /**\n * DynamicPartitionMetadata cowVersion.\n * @member {number} cowVersion\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.cowVersion = 0;\n\n /**\n * Creates a new DynamicPartitionMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata instance\n */\n DynamicPartitionMetadata.create = function create(properties) {\n return new DynamicPartitionMetadata(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.groups != null && message.groups.length)\n for (let i = 0; i < message.groups.length; ++i)\n $root.chromeos_update_engine.DynamicPartitionGroup.encode(message.groups[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.snapshotEnabled != null && Object.hasOwnProperty.call(message, \"snapshotEnabled\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.snapshotEnabled);\n if (message.vabcEnabled != null && Object.hasOwnProperty.call(message, \"vabcEnabled\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.vabcEnabled);\n if (message.vabcCompressionParam != null && Object.hasOwnProperty.call(message, \"vabcCompressionParam\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.vabcCompressionParam);\n if (message.cowVersion != null && Object.hasOwnProperty.call(message, \"cowVersion\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.cowVersion);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.groups && message.groups.length))\n message.groups = [];\n message.groups.push($root.chromeos_update_engine.DynamicPartitionGroup.decode(reader, reader.uint32()));\n break;\n case 2:\n message.snapshotEnabled = reader.bool();\n break;\n case 3:\n message.vabcEnabled = reader.bool();\n break;\n case 4:\n message.vabcCompressionParam = reader.string();\n break;\n case 5:\n message.cowVersion = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.groups != null && message.hasOwnProperty(\"groups\")) {\n if (!Array.isArray(message.groups))\n return \"groups: array expected\";\n for (let i = 0; i < message.groups.length; ++i) {\n let error = $root.chromeos_update_engine.DynamicPartitionGroup.verify(message.groups[i]);\n if (error)\n return \"groups.\" + error;\n }\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n if (typeof message.snapshotEnabled !== \"boolean\")\n return \"snapshotEnabled: boolean expected\";\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n if (typeof message.vabcEnabled !== \"boolean\")\n return \"vabcEnabled: boolean expected\";\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n if (!$util.isString(message.vabcCompressionParam))\n return \"vabcCompressionParam: string expected\";\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n if (!$util.isInteger(message.cowVersion))\n return \"cowVersion: integer expected\";\n return null;\n };\n\n /**\n * Creates a DynamicPartitionMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n */\n DynamicPartitionMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionMetadata)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n if (object.groups) {\n if (!Array.isArray(object.groups))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: array expected\");\n message.groups = [];\n for (let i = 0; i < object.groups.length; ++i) {\n if (typeof object.groups[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: object expected\");\n message.groups[i] = $root.chromeos_update_engine.DynamicPartitionGroup.fromObject(object.groups[i]);\n }\n }\n if (object.snapshotEnabled != null)\n message.snapshotEnabled = Boolean(object.snapshotEnabled);\n if (object.vabcEnabled != null)\n message.vabcEnabled = Boolean(object.vabcEnabled);\n if (object.vabcCompressionParam != null)\n message.vabcCompressionParam = String(object.vabcCompressionParam);\n if (object.cowVersion != null)\n message.cowVersion = object.cowVersion >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.DynamicPartitionMetadata} message DynamicPartitionMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.groups = [];\n if (options.defaults) {\n object.snapshotEnabled = false;\n object.vabcEnabled = false;\n object.vabcCompressionParam = \"\";\n object.cowVersion = 0;\n }\n if (message.groups && message.groups.length) {\n object.groups = [];\n for (let j = 0; j < message.groups.length; ++j)\n object.groups[j] = $root.chromeos_update_engine.DynamicPartitionGroup.toObject(message.groups[j], options);\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n object.snapshotEnabled = message.snapshotEnabled;\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n object.vabcEnabled = message.vabcEnabled;\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n object.vabcCompressionParam = message.vabcCompressionParam;\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n object.cowVersion = message.cowVersion;\n return object;\n };\n\n /**\n * Converts this DynamicPartitionMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionMetadata;\n })();\n\n chromeos_update_engine.ApexInfo = (function() {\n\n /**\n * Properties of an ApexInfo.\n * @memberof chromeos_update_engine\n * @interface IApexInfo\n * @property {string|null} [packageName] ApexInfo packageName\n * @property {number|Long|null} [version] ApexInfo version\n * @property {boolean|null} [isCompressed] ApexInfo isCompressed\n * @property {number|Long|null} [decompressedSize] ApexInfo decompressedSize\n */\n\n /**\n * Constructs a new ApexInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexInfo.\n * @implements IApexInfo\n * @constructor\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n */\n function ApexInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexInfo packageName.\n * @member {string} packageName\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.packageName = \"\";\n\n /**\n * ApexInfo version.\n * @member {number|Long} version\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * ApexInfo isCompressed.\n * @member {boolean} isCompressed\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.isCompressed = false;\n\n /**\n * ApexInfo decompressedSize.\n * @member {number|Long} decompressedSize\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.decompressedSize = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * Creates a new ApexInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo instance\n */\n ApexInfo.create = function create(properties) {\n return new ApexInfo(properties);\n };\n\n /**\n * Encodes the specified ApexInfo message. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.packageName != null && Object.hasOwnProperty.call(message, \"packageName\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.packageName);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.version);\n if (message.isCompressed != null && Object.hasOwnProperty.call(message, \"isCompressed\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isCompressed);\n if (message.decompressedSize != null && Object.hasOwnProperty.call(message, \"decompressedSize\"))\n writer.uint32(/* id 4, wireType 0 =*/32).int64(message.decompressedSize);\n return writer;\n };\n\n /**\n * Encodes the specified ApexInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.packageName = reader.string();\n break;\n case 2:\n message.version = reader.int64();\n break;\n case 3:\n message.isCompressed = reader.bool();\n break;\n case 4:\n message.decompressedSize = reader.int64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n if (!$util.isString(message.packageName))\n return \"packageName: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high)))\n return \"version: integer|Long expected\";\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n if (typeof message.isCompressed !== \"boolean\")\n return \"isCompressed: boolean expected\";\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (!$util.isInteger(message.decompressedSize) && !(message.decompressedSize && $util.isInteger(message.decompressedSize.low) && $util.isInteger(message.decompressedSize.high)))\n return \"decompressedSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an ApexInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n */\n ApexInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexInfo)\n return object;\n let message = new $root.chromeos_update_engine.ApexInfo();\n if (object.packageName != null)\n message.packageName = String(object.packageName);\n if (object.version != null)\n if ($util.Long)\n (message.version = $util.Long.fromValue(object.version)).unsigned = false;\n else if (typeof object.version === \"string\")\n message.version = parseInt(object.version, 10);\n else if (typeof object.version === \"number\")\n message.version = object.version;\n else if (typeof object.version === \"object\")\n message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber();\n if (object.isCompressed != null)\n message.isCompressed = Boolean(object.isCompressed);\n if (object.decompressedSize != null)\n if ($util.Long)\n (message.decompressedSize = $util.Long.fromValue(object.decompressedSize)).unsigned = false;\n else if (typeof object.decompressedSize === \"string\")\n message.decompressedSize = parseInt(object.decompressedSize, 10);\n else if (typeof object.decompressedSize === \"number\")\n message.decompressedSize = object.decompressedSize;\n else if (typeof object.decompressedSize === \"object\")\n message.decompressedSize = new $util.LongBits(object.decompressedSize.low >>> 0, object.decompressedSize.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from an ApexInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.ApexInfo} message ApexInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.packageName = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.version = options.longs === String ? \"0\" : 0;\n object.isCompressed = false;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.decompressedSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.decompressedSize = options.longs === String ? \"0\" : 0;\n }\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n object.packageName = message.packageName;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (typeof message.version === \"number\")\n object.version = options.longs === String ? String(message.version) : message.version;\n else\n object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version;\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n object.isCompressed = message.isCompressed;\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (typeof message.decompressedSize === \"number\")\n object.decompressedSize = options.longs === String ? String(message.decompressedSize) : message.decompressedSize;\n else\n object.decompressedSize = options.longs === String ? $util.Long.prototype.toString.call(message.decompressedSize) : options.longs === Number ? new $util.LongBits(message.decompressedSize.low >>> 0, message.decompressedSize.high >>> 0).toNumber() : message.decompressedSize;\n return object;\n };\n\n /**\n * Converts this ApexInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ApexInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexInfo;\n })();\n\n chromeos_update_engine.ApexMetadata = (function() {\n\n /**\n * Properties of an ApexMetadata.\n * @memberof chromeos_update_engine\n * @interface IApexMetadata\n * @property {Array.|null} [apexInfo] ApexMetadata apexInfo\n */\n\n /**\n * Constructs a new ApexMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexMetadata.\n * @implements IApexMetadata\n * @constructor\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n */\n function ApexMetadata(properties) {\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexMetadata apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n */\n ApexMetadata.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new ApexMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata instance\n */\n ApexMetadata.create = function create(properties) {\n return new ApexMetadata(properties);\n };\n\n /**\n * Encodes the specified ApexMetadata message. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified ApexMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates an ApexMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n */\n ApexMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexMetadata)\n return object;\n let message = new $root.chromeos_update_engine.ApexMetadata();\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from an ApexMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.ApexMetadata} message ApexMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.apexInfo = [];\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this ApexMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n ApexMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexMetadata;\n })();\n\n chromeos_update_engine.DeltaArchiveManifest = (function() {\n\n /**\n * Properties of a DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @interface IDeltaArchiveManifest\n * @property {number|null} [blockSize] DeltaArchiveManifest blockSize\n * @property {number|Long|null} [signaturesOffset] DeltaArchiveManifest signaturesOffset\n * @property {number|Long|null} [signaturesSize] DeltaArchiveManifest signaturesSize\n * @property {number|null} [minorVersion] DeltaArchiveManifest minorVersion\n * @property {Array.|null} [partitions] DeltaArchiveManifest partitions\n * @property {number|Long|null} [maxTimestamp] DeltaArchiveManifest maxTimestamp\n * @property {chromeos_update_engine.IDynamicPartitionMetadata|null} [dynamicPartitionMetadata] DeltaArchiveManifest dynamicPartitionMetadata\n * @property {boolean|null} [partialUpdate] DeltaArchiveManifest partialUpdate\n * @property {Array.|null} [apexInfo] DeltaArchiveManifest apexInfo\n * @property {string|null} [securityPatchLevel] DeltaArchiveManifest securityPatchLevel\n */\n\n /**\n * Constructs a new DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DeltaArchiveManifest.\n * @implements IDeltaArchiveManifest\n * @constructor\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n */\n function DeltaArchiveManifest(properties) {\n this.partitions = [];\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DeltaArchiveManifest blockSize.\n * @member {number} blockSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.blockSize = 4096;\n\n /**\n * DeltaArchiveManifest signaturesOffset.\n * @member {number|Long} signaturesOffset\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest signaturesSize.\n * @member {number|Long} signaturesSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest minorVersion.\n * @member {number} minorVersion\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.minorVersion = 0;\n\n /**\n * DeltaArchiveManifest partitions.\n * @member {Array.} partitions\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partitions = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest maxTimestamp.\n * @member {number|Long} maxTimestamp\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.maxTimestamp = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * DeltaArchiveManifest dynamicPartitionMetadata.\n * @member {chromeos_update_engine.IDynamicPartitionMetadata|null|undefined} dynamicPartitionMetadata\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.dynamicPartitionMetadata = null;\n\n /**\n * DeltaArchiveManifest partialUpdate.\n * @member {boolean} partialUpdate\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partialUpdate = false;\n\n /**\n * DeltaArchiveManifest apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.apexInfo = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest securityPatchLevel.\n * @member {string} securityPatchLevel\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.securityPatchLevel = \"\";\n\n /**\n * Creates a new DeltaArchiveManifest instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest instance\n */\n DeltaArchiveManifest.create = function create(properties) {\n return new DeltaArchiveManifest(properties);\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.blockSize != null && Object.hasOwnProperty.call(message, \"blockSize\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.blockSize);\n if (message.signaturesOffset != null && Object.hasOwnProperty.call(message, \"signaturesOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.signaturesOffset);\n if (message.signaturesSize != null && Object.hasOwnProperty.call(message, \"signaturesSize\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.signaturesSize);\n if (message.minorVersion != null && Object.hasOwnProperty.call(message, \"minorVersion\"))\n writer.uint32(/* id 12, wireType 0 =*/96).uint32(message.minorVersion);\n if (message.partitions != null && message.partitions.length)\n for (let i = 0; i < message.partitions.length; ++i)\n $root.chromeos_update_engine.PartitionUpdate.encode(message.partitions[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();\n if (message.maxTimestamp != null && Object.hasOwnProperty.call(message, \"maxTimestamp\"))\n writer.uint32(/* id 14, wireType 0 =*/112).int64(message.maxTimestamp);\n if (message.dynamicPartitionMetadata != null && Object.hasOwnProperty.call(message, \"dynamicPartitionMetadata\"))\n $root.chromeos_update_engine.DynamicPartitionMetadata.encode(message.dynamicPartitionMetadata, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.partialUpdate != null && Object.hasOwnProperty.call(message, \"partialUpdate\"))\n writer.uint32(/* id 16, wireType 0 =*/128).bool(message.partialUpdate);\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();\n if (message.securityPatchLevel != null && Object.hasOwnProperty.call(message, \"securityPatchLevel\"))\n writer.uint32(/* id 18, wireType 2 =*/146).string(message.securityPatchLevel);\n return writer;\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message, length delimited. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 3:\n message.blockSize = reader.uint32();\n break;\n case 4:\n message.signaturesOffset = reader.uint64();\n break;\n case 5:\n message.signaturesSize = reader.uint64();\n break;\n case 12:\n message.minorVersion = reader.uint32();\n break;\n case 13:\n if (!(message.partitions && message.partitions.length))\n message.partitions = [];\n message.partitions.push($root.chromeos_update_engine.PartitionUpdate.decode(reader, reader.uint32()));\n break;\n case 14:\n message.maxTimestamp = reader.int64();\n break;\n case 15:\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.decode(reader, reader.uint32());\n break;\n case 16:\n message.partialUpdate = reader.bool();\n break;\n case 17:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n case 18:\n message.securityPatchLevel = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DeltaArchiveManifest message.\n * @function verify\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DeltaArchiveManifest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n if (!$util.isInteger(message.blockSize))\n return \"blockSize: integer expected\";\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (!$util.isInteger(message.signaturesOffset) && !(message.signaturesOffset && $util.isInteger(message.signaturesOffset.low) && $util.isInteger(message.signaturesOffset.high)))\n return \"signaturesOffset: integer|Long expected\";\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (!$util.isInteger(message.signaturesSize) && !(message.signaturesSize && $util.isInteger(message.signaturesSize.low) && $util.isInteger(message.signaturesSize.high)))\n return \"signaturesSize: integer|Long expected\";\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n if (!$util.isInteger(message.minorVersion))\n return \"minorVersion: integer expected\";\n if (message.partitions != null && message.hasOwnProperty(\"partitions\")) {\n if (!Array.isArray(message.partitions))\n return \"partitions: array expected\";\n for (let i = 0; i < message.partitions.length; ++i) {\n let error = $root.chromeos_update_engine.PartitionUpdate.verify(message.partitions[i]);\n if (error)\n return \"partitions.\" + error;\n }\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (!$util.isInteger(message.maxTimestamp) && !(message.maxTimestamp && $util.isInteger(message.maxTimestamp.low) && $util.isInteger(message.maxTimestamp.high)))\n return \"maxTimestamp: integer|Long expected\";\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\")) {\n let error = $root.chromeos_update_engine.DynamicPartitionMetadata.verify(message.dynamicPartitionMetadata);\n if (error)\n return \"dynamicPartitionMetadata.\" + error;\n }\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n if (typeof message.partialUpdate !== \"boolean\")\n return \"partialUpdate: boolean expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n if (!$util.isString(message.securityPatchLevel))\n return \"securityPatchLevel: string expected\";\n return null;\n };\n\n /**\n * Creates a DeltaArchiveManifest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n */\n DeltaArchiveManifest.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DeltaArchiveManifest)\n return object;\n let message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n if (object.blockSize != null)\n message.blockSize = object.blockSize >>> 0;\n if (object.signaturesOffset != null)\n if ($util.Long)\n (message.signaturesOffset = $util.Long.fromValue(object.signaturesOffset)).unsigned = true;\n else if (typeof object.signaturesOffset === \"string\")\n message.signaturesOffset = parseInt(object.signaturesOffset, 10);\n else if (typeof object.signaturesOffset === \"number\")\n message.signaturesOffset = object.signaturesOffset;\n else if (typeof object.signaturesOffset === \"object\")\n message.signaturesOffset = new $util.LongBits(object.signaturesOffset.low >>> 0, object.signaturesOffset.high >>> 0).toNumber(true);\n if (object.signaturesSize != null)\n if ($util.Long)\n (message.signaturesSize = $util.Long.fromValue(object.signaturesSize)).unsigned = true;\n else if (typeof object.signaturesSize === \"string\")\n message.signaturesSize = parseInt(object.signaturesSize, 10);\n else if (typeof object.signaturesSize === \"number\")\n message.signaturesSize = object.signaturesSize;\n else if (typeof object.signaturesSize === \"object\")\n message.signaturesSize = new $util.LongBits(object.signaturesSize.low >>> 0, object.signaturesSize.high >>> 0).toNumber(true);\n if (object.minorVersion != null)\n message.minorVersion = object.minorVersion >>> 0;\n if (object.partitions) {\n if (!Array.isArray(object.partitions))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected\");\n message.partitions = [];\n for (let i = 0; i < object.partitions.length; ++i) {\n if (typeof object.partitions[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: object expected\");\n message.partitions[i] = $root.chromeos_update_engine.PartitionUpdate.fromObject(object.partitions[i]);\n }\n }\n if (object.maxTimestamp != null)\n if ($util.Long)\n (message.maxTimestamp = $util.Long.fromValue(object.maxTimestamp)).unsigned = false;\n else if (typeof object.maxTimestamp === \"string\")\n message.maxTimestamp = parseInt(object.maxTimestamp, 10);\n else if (typeof object.maxTimestamp === \"number\")\n message.maxTimestamp = object.maxTimestamp;\n else if (typeof object.maxTimestamp === \"object\")\n message.maxTimestamp = new $util.LongBits(object.maxTimestamp.low >>> 0, object.maxTimestamp.high >>> 0).toNumber();\n if (object.dynamicPartitionMetadata != null) {\n if (typeof object.dynamicPartitionMetadata !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected\");\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.fromObject(object.dynamicPartitionMetadata);\n }\n if (object.partialUpdate != null)\n message.partialUpdate = Boolean(object.partialUpdate);\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n if (object.securityPatchLevel != null)\n message.securityPatchLevel = String(object.securityPatchLevel);\n return message;\n };\n\n /**\n * Creates a plain object from a DeltaArchiveManifest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.DeltaArchiveManifest} message DeltaArchiveManifest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DeltaArchiveManifest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.partitions = [];\n object.apexInfo = [];\n }\n if (options.defaults) {\n object.blockSize = 4096;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesSize = options.longs === String ? \"0\" : 0;\n object.minorVersion = 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.maxTimestamp = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.maxTimestamp = options.longs === String ? \"0\" : 0;\n object.dynamicPartitionMetadata = null;\n object.partialUpdate = false;\n object.securityPatchLevel = \"\";\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n object.blockSize = message.blockSize;\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (typeof message.signaturesOffset === \"number\")\n object.signaturesOffset = options.longs === String ? String(message.signaturesOffset) : message.signaturesOffset;\n else\n object.signaturesOffset = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesOffset) : options.longs === Number ? new $util.LongBits(message.signaturesOffset.low >>> 0, message.signaturesOffset.high >>> 0).toNumber(true) : message.signaturesOffset;\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (typeof message.signaturesSize === \"number\")\n object.signaturesSize = options.longs === String ? String(message.signaturesSize) : message.signaturesSize;\n else\n object.signaturesSize = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesSize) : options.longs === Number ? new $util.LongBits(message.signaturesSize.low >>> 0, message.signaturesSize.high >>> 0).toNumber(true) : message.signaturesSize;\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n object.minorVersion = message.minorVersion;\n if (message.partitions && message.partitions.length) {\n object.partitions = [];\n for (let j = 0; j < message.partitions.length; ++j)\n object.partitions[j] = $root.chromeos_update_engine.PartitionUpdate.toObject(message.partitions[j], options);\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (typeof message.maxTimestamp === \"number\")\n object.maxTimestamp = options.longs === String ? String(message.maxTimestamp) : message.maxTimestamp;\n else\n object.maxTimestamp = options.longs === String ? $util.Long.prototype.toString.call(message.maxTimestamp) : options.longs === Number ? new $util.LongBits(message.maxTimestamp.low >>> 0, message.maxTimestamp.high >>> 0).toNumber() : message.maxTimestamp;\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\"))\n object.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.toObject(message.dynamicPartitionMetadata, options);\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n object.partialUpdate = message.partialUpdate;\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n object.securityPatchLevel = message.securityPatchLevel;\n return object;\n };\n\n /**\n * Converts this DeltaArchiveManifest to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n * @returns {Object.} JSON object\n */\n DeltaArchiveManifest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DeltaArchiveManifest;\n })();\n\n return chromeos_update_engine;\n})();\n\nexport { $root as default };\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TextWriter, ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { chromeos_update_engine } from './update_metadata_pb.js'\n\n/**\n * Parse the non-A/B OTA package and return it as a DeltaArchiveManifest\n * @param {ZipReader} packedFile\n */\nexport class PayloadNonAB extends chromeos_update_engine.DeltaArchiveManifest {\n nonAB: boolean = true\n Blocksize: number = 4096\n packedFile: ZipReader\n constructor(packedFile: ZipReader) {\n super()\n this.packedFile = packedFile\n }\n\n async init() {\n this.Blocksize = 4096\n this.partialUpdate = false\n this.dynamicPartitionMetadata = new chromeos_update_engine.DynamicPartitionMetadata(\n { snapshotEnabled: false, vabcEnabled: false }\n )\n this.partitions = []\n\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.transfer.list)/g\n const /** Array */ entries = await this.packedFile.getEntries()\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n const match = entry.filename.match(regexName)![0]\n let newPartition: any = new chromeos_update_engine.PartitionUpdate({\n partitionName: match\n })\n newPartition.rawText = await entry.getData!(new TextWriter())\n await this.parseTransferList(newPartition)\n this.partitions.push(newPartition)\n }\n }\n }\n\n async parseTransferList(partition: chromeos_update_engine.PartitionUpdate | any) {\n let lines = (partition as any).rawText.split('\\n')\n // First four line in header: version, total blocks,\n // number of stashed entries, maximum used memory for stash\n if (lines.length < 4) {\n throw 'At least 4 lines in header should be provided.'\n }\n partition.version = lines[0]\n partition.totalBlocks = parseInt(lines[1])\n partition.entryStashed = parseInt(lines[2])\n partition.maxStashed = parseInt(lines[3])\n partition.newPartitionInfo = new chromeos_update_engine.PartitionInfo()\n partition.newPartitionInfo.hash = new Uint8Array()\n partition.newPartitionInfo.size = 'unknown'\n /**\n * The main body have 8 different ops:\n * zero [rangeset] : fill zeros\n * new [rangeset] : fill with new data from \n * erase [rangeset] : mark given blocks as empty\n * move <...>\n * bsdiff <...>\n * imgdiff <...> :\n * Read the source blocks and apply (not for move op) to the target blocks\n * stash : load the given source range to memory\n * free : free the given \n * format:\n * [rangeset]: <# of pairs>, , , ...\n * : a hex number with length of 40\n * <...>: We expect to parse the remainder of the parameter tokens as one of:\n * (loads data from source image only)\n * - <[stash_id:stash_range] ...> (loads data from stashes only)\n * <[stash_id:stash_range] ...>\n * (loads data from both source image and stashes)\n */\n partition.operations = new Array()\n let newDataSize = await this.sizeNewData(partition.partitionName)\n for (const line of lines.slice(4)) {\n let op = new chromeos_update_engine.InstallOperation()\n let elements = line.split(' ')\n op.type = elements[0]\n switch ((op.type as unknown) as string) {\n case 'zero':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'new':\n // unlike an A/B OTA, the payload only exists in the payload.bin,\n // in an non-A/B OTA, the payload exists in both .new.data and .patch.data.\n // The new ops do not have any information about data length.\n // what we do here is: read in the size of .new.data, assume the first new\n // op have the data length of the size of .new.data.\n op.dataLength = newDataSize\n newDataSize = 0\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'erase':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'move':\n op.dstExtents = parseRange([], elements[2])\n break\n case 'bsdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'imgdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'stash':\n break\n case 'free':\n break\n }\n partition.operations.push(op)\n }\n }\n\n /**\n * Return the size of .new.data.*\n * @param {String} partitionName\n * @return {Number}\n */\n async sizeNewData(partitionName: string) {\n const /** Array */ entries = await this.packedFile.getEntries()\n const /** RegExp */ regexName = new RegExp(partitionName + '.new.dat.*')\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n return entry.uncompressedSize\n }\n }\n }\n}\n\n/**\n * Parse the range string and return it as an array of extents\n * @param {extents} Array\n * @param {String} rangeset\n * @return Array\n */\nfunction parseRange(extents: Object[], rangeset: string) {\n const regexRange = new RegExp('[d,]+')\n if (rangeset.match(regexRange)) {\n let elements = rangeset.split(',')\n for (let i = 1; i < elements.length; i = i + 2) {\n let extent = new Object({\n startBlock: parseInt(elements[i]),\n numBlocks: parseInt(elements[i + 1]) - parseInt(elements[i])\n })\n extents.push(extent)\n }\n }\n return extents\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class paypload is used to read in and\n * parse the payload.bin file from a OTA.zip file.\n * Class OpType creates a Map that can resolve the\n * operation type.\n * @package zip.js\n * @package protobufjs\n */\n\nimport {\n BlobReader,\n TextWriter,\n Writer,\n ZipReader,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\n// import '@zip.js/zip.js'\nimport { chromeos_update_engine as update_metadata_pb } from './update_metadata_pb'\nimport { PayloadNonAB } from './payload_nonab'\nimport { ZipFile } from './trim_zip'\n// import { Zip_js } from 'zip.js'\n\nconst /** String */ _MAGIC = 'CrAU'\nconst /** Number */ _VERSION_SIZE = 8\nconst /** Number */ _MANIFEST_LEN_SIZE = 8\nconst /** Number */ _METADATA_SIGNATURE_LEN_SIZE = 4\n\nconst /** Number */ _PAYLOAD_HEADER_SIZE =\n _MAGIC.length +\n _VERSION_SIZE +\n _MANIFEST_LEN_SIZE +\n _METADATA_SIGNATURE_LEN_SIZE\n\nconst /** Number */ _BRILLO_MAJOR_PAYLOAD_VERSION = 2\nexport const /** Array */ MetadataFormat = [\n {\n prefix: 'pre-build',\n key: 'preBuild',\n name: 'Pre-build'\n },\n {\n prefix: 'pre-build-incremental',\n key: 'preBuildVersion',\n name: 'Pre-build version'\n },\n {\n prefix: 'post-build',\n key: 'postBuild',\n name: 'Post-build'\n },\n {\n prefix: 'post-build-incremental',\n key: 'postBuildVersion',\n name: 'Post-build version'\n },\n {\n prefix: 'post-security-patch-level',\n key: 'postSecurityPatchLevel',\n name: 'Post-build SPL'\n },\n {\n prefix: 'post-timestamp',\n key: 'postTimestamp',\n name: 'Post-build timestamp'\n },\n ]\n\nclass StopIteration extends Error {}\n\nclass AbPayloadHeader {\n constructor(\n public magic: string,\n public version: number,\n public manifest_len: number,\n public metadata_signature_len: number\n ) {}\n}\n\n/**\n * Read in an integer from binary bufferArray.\n * @param {Int} size the size of a integer being read in\n * @return {Int} an integer.\n */\nasync function readIntAt(buffer: Blob, position: number, size: number) {\n let /** DataView */ view = new DataView(\n await buffer!.slice(position, position + size).arrayBuffer()\n )\n if (typeof view.getBigUint64 !== 'function') {\n view.getBigUint64 = function(offset) {\n const a = BigInt(view.getUint32(offset))\n const b = BigInt(view.getUint32(offset + 4))\n const bigNumber = a * 4294967296n + b\n return bigNumber\n }\n }\n switch (size) {\n case 2:\n return view.getUint16(0)\n case 4:\n return view.getUint32(0)\n case 8:\n return Number(view.getBigUint64(0))\n default:\n throw 'Cannot read this integer with size ' + size\n }\n}\n\nclass OTAPayloadBlobWriter extends Writer {\n offset: number\n contentType: string\n blob: Blob\n prefixLength: number\n\n header?: AbPayloadHeader\n\n async readHeader(blob: Blob) {\n let cursor = 0\n const readInt = (size: number) => {\n const ret = readIntAt(blob, cursor, size)\n cursor += size\n return ret\n }\n let buffer = await blob.slice(0, _PAYLOAD_HEADER_SIZE).arrayBuffer()\n let /** TextDecoder */ decoder = new TextDecoder()\n let magicBytes = buffer.slice(0, _MAGIC.length)\n const magic = decoder.decode(magicBytes)\n if (magic != _MAGIC) {\n throw new Error(\n `MAGIC is not correct, expected: ${_MAGIC} actual: ${magic}`\n )\n }\n cursor += _MAGIC.length\n const header_version = await readInt(_VERSION_SIZE)\n const manifest_len = await readInt(_MANIFEST_LEN_SIZE)\n if (header_version != _BRILLO_MAJOR_PAYLOAD_VERSION) {\n throw new Error(`Unexpected major version number: ${header_version}`)\n }\n const metadata_signature_len = await readInt(_METADATA_SIGNATURE_LEN_SIZE)\n this.header = new AbPayloadHeader(\n magic,\n header_version,\n manifest_len,\n metadata_signature_len\n )\n }\n /**\n * A zip.Writer that is tailored for OTA payload.bin read-in.\n * Instead of reading in all the contents in payload.bin, this writer will\n * throw an 'StopIteration' error when the header is read in.\n * The header will be stored into the .\n * @param {Payload} payload\n * @param {String} contentType\n */\n constructor(contentType = '') {\n super()\n this.offset = 0\n this.contentType = contentType\n this.blob = new Blob([], { type: contentType })\n this.prefixLength = 0\n }\n\n async writeUint8Array(array: Uint8Array) {\n super.writeUint8Array(array)\n this.blob = new Blob([this.blob, array.buffer], { type: this.contentType })\n this.offset = this.blob.size\n // Once the prefixLength is non-zero, the address of manifest and signature\n // become known and can be read in. Otherwise the header needs to be read\n // in first to determine the prefixLength.\n if (this.offset >= _PAYLOAD_HEADER_SIZE && this.prefixLength == 0) {\n console.log('Parsing header!')\n await this.readHeader(this.blob)\n this.prefixLength =\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n console.log(`Computed metadata length: ${this.prefixLength}`)\n }\n if (this.prefixLength > 0) {\n console.log(`${this.offset}/${this.prefixLength}`)\n if (this.offset >= this.prefixLength) {\n // The prefix has everything we need (header, manifest, signature). Once\n // the offset is beyond the prefix, no need to move on.\n this.blob = this.blob.slice(0, this.prefixLength)\n throw new StopIteration()\n }\n }\n }\n\n getData() {\n return this.blob\n }\n}\n\nexport class Payload {\n zipreader: ZipReader\n buffer: Blob | undefined\n private metadata: any\n manifest: update_metadata_pb.DeltaArchiveManifest | undefined\n metadata_signature!: update_metadata_pb.Signatures\n\n header?: AbPayloadHeader\n\n /**\n * This class parses the metadata of a OTA package.\n * @param {File} file A OTA.zip file read from user's machine.\n */\n constructor(file: File | URL | ZipFile) {\n if (file instanceof File) {\n this.zipreader = new ZipReader(new BlobReader(file))\n } else if (file instanceof URL) {\n this.zipreader = new ZipReader(new HttpReader(file.href))\n } else {\n this.zipreader = file.reader\n }\n }\n\n getMetadataLength(): number {\n return (\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n )\n }\n\n /**\n * Unzip the OTA package, get payload.bin and metadata\n */\n async unzip() {\n let entries = await this.zipreader.getEntries()\n for (let entry of entries) {\n if (entry.filename == 'payload.bin') {\n let writer = new OTAPayloadBlobWriter('')\n try {\n await entry.getData!(writer)\n } catch (e) {\n if (e instanceof StopIteration) {\n // Exception used as a hack to stop reading from zip. NO need to do anything\n // Ideally zip.js would provide an API to partialll read a zip\n // entry, but they don't. So this is what we get\n } else {\n console.log(e)\n throw e\n }\n }\n this.buffer = writer.getData()\n await this.readManifest(this.buffer, writer.header!)\n console.log('AB OTA manifest parsed')\n } else if (entry.filename == 'META-INF/com/android/metadata') {\n this.metadata = await entry.getData!(new TextWriter())\n console.log('OTA Package metadata parsed')\n }\n }\n if (!this.manifest) {\n console.log('Failed to parse AB OTA package, falling back to non-AB')\n try {\n // The temporary variable manifest has to be used here, to prevent the html page\n // being rendered before everything is read in properly\n let manifest = new PayloadNonAB(this.zipreader)\n await manifest.init()\n manifest.nonAB = true\n this.manifest = manifest\n } catch (error) {\n alert('Please select a legit OTA package')\n return\n }\n }\n }\n\n /**\n * Read the header of payload.bin, including the magic, header_version,\n * manifest_len, metadata_signature_len.\n */\n /**\n * Read in the manifest in an OTA.zip file.\n * The structure of the manifest can be found in:\n * aosp/system/update_engine/update_metadata.proto\n */\n async readManifest(buffer: Blob, header: AbPayloadHeader) {\n this.header = header\n let cursor = _PAYLOAD_HEADER_SIZE\n let manifestBlob = await buffer\n .slice(cursor, cursor + header.manifest_len)\n .arrayBuffer()\n cursor += header.manifest_len\n this.manifest = update_metadata_pb.DeltaArchiveManifest.decode(\n new Uint8Array(manifestBlob)\n )\n let signatureBlob = await buffer\n .slice(cursor, cursor + header.metadata_signature_len)\n .arrayBuffer()\n cursor += header.metadata_signature_len\n this.metadata_signature = update_metadata_pb.Signatures.decode(\n new Uint8Array(signatureBlob)\n );\n (this.manifest! as any).nonAB = false\n }\n\n parseMetadata() {\n for (let formatter of MetadataFormat) {\n let regex = new RegExp(formatter.prefix + '.+')\n if (this.metadata.match(regex)) {\n ;(this as any)[formatter.key] = trimEntry(\n this.metadata.match(regex)[0],\n formatter.prefix\n )\n } else {\n ;(this as any)[formatter.key] = ''\n }\n }\n }\n\n async init() {\n await this.unzip()\n this.parseMetadata()\n }\n}\n\nexport class DefaultMap extends Map {\n /** Reload the original get method. Return the original key value if\n * the key does not exist.\n * @param {Any} key\n */\n getWithDefault(key: any) {\n if (!this.has(key)) return key\n return this.get(key)\n }\n}\n\nexport class OpType {\n mapType: DefaultMap\n /**\n * OpType.mapType create a map that could resolve the operation\n * types. The operation types are encoded as numbers in\n * update_metadata.proto and must be decoded before any usage.\n */\n constructor() {\n let types = update_metadata_pb.InstallOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport class MergeOpType {\n mapType: DefaultMap\n /**\n * MergeOpType create a map that could resolve the COW merge operation\n * types. This is very similar to OpType class except that one is for\n * installation operations.\n */\n constructor() {\n let /** Array<{String: Number}>*/ types =\n update_metadata_pb.CowMergeOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport function octToHex(bufferArray: Uint8Array, space = true, maxLine = 16) {\n let hex_table = ''\n for (let i = 0; i < bufferArray.length; i++) {\n const hex /** String **/ = bufferArray[i].toString(16).toUpperCase()\n if (hex.length === 2) {\n hex_table += hex + (space ? ' ' : '')\n } else {\n hex_table += '0' + hex + (space ? ' ' : '')\n }\n if ((i + 1) % maxLine == 0 && space) {\n hex_table += '\\n'\n }\n }\n return hex_table\n}\n\n/**\n * Trim the prefix in an entry. This is required because the lookbehind\n * regular expression is not supported in safari yet.\n * @param {String} entry\n * @param {String} prefix\n * @return String\n */\nfunction trimEntry(entry: string, prefix: string) {\n return entry.slice(prefix.length + 1, entry.length)\n}\n","\n\n\n\n\n\n\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EChartsOption } from 'echarts'\n\nexport class EchartsData {\n statisticData: Map\n trimmedData: Map\n title: string\n unit: string\n maximumEntries: number\n /**\n * Given a set of [key, value] pairs and title, create an object for further\n * usage in Vue-Echarts.\n * @param {Map} statisticData\n * @param {String} title\n * @param {String} unit\n * @param {Number} maximumEntries\n */\n constructor(\n statisticData: Map,\n title: string,\n unit: string,\n maximumEntries = 15\n ) {\n this.statisticData = statisticData\n this.trimmedData = trimMap(statisticData, maximumEntries)\n this.title = title\n this.unit = unit\n this.maximumEntries = maximumEntries\n }\n\n /**\n * Convert the raw data into a string.\n * @return {String} A list of [key, value].\n */\n listData() {\n let /** String */ table = ''\n for (let [key, value] of this.statisticData) {\n table += key + ' : ' + value.toString() + ' Blocks' + '\\n'\n }\n return table\n }\n\n /**\n * Generate necessary parameters (option) for vue-echarts.\n * Format of the parameters can be found here:\n * https://echarts.apache.org/en/option.html\n * @param {String} unit\n * @return {Object} an ECharts option object.\n */\n getEchartsOption(): EChartsOption {\n let /** Object */ option: EChartsOption = {}\n option.title = {\n text: this.title,\n left: 'center'\n }\n option.tooltip = {\n trigger: 'item',\n formatter: '{a}
{b} : {c} ' + this.unit + ' ({d}%)'\n }\n option.legend = {\n orient: 'horizontal',\n left: 'top',\n top: '10%',\n data: Array.from(this.trimmedData.keys())\n }\n option.series = [\n {\n name: this.title,\n type: 'pie',\n radius: '55%',\n center: ['50%', '60%'],\n data: Array.from(this.trimmedData).map((pair: any) => {\n return { value: pair[1], name: pair[0] }\n }),\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)'\n }\n }\n }\n ]\n return option\n }\n}\n\n/**\n * When there are too many entries in the map, the pie chart can be very\n * crowded. This function will return the entries that have high values.\n * Specifically, the top will be stored and the others\n * will be added into an entry called 'other'.\n * @param {Map} map\n * @param {Number} maximumEntries\n * @return {Map}\n */\nfunction trimMap(map: Map, maximumEntries: number) {\n if (map.size <= maximumEntries) return map\n let /** Map */ new_map = new Map()\n for (let i = 0; i < maximumEntries; i++) {\n let /** Number */ curr = 0\n let /** String */ currKey = ''\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n if (value > curr) {\n curr = value\n currKey = key\n }\n }\n }\n new_map.set(currKey, curr)\n }\n let /** Number */ restTotal = 0\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n restTotal += value\n }\n }\n new_map.set('other', restTotal)\n return new_map\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class MapParser will take in a Android build and construct\n * several file name maps (physical address: file name) according to it.\n * The map of each partitions is added by calling MapParser.add(partitionName).\n * You can query the file name being operated by calling\n * MapParser.query(address, datalength).\n */\n\nimport {\n ZipReader,\n BlobReader,\n TextWriter,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\nimport { chromeos_update_engine } from './update_metadata_pb'\n\nexport class MapParser {\n build: ZipReader\n mapFiles: Map\n maps: Map\n /**\n * This class will take in a .zip Android build and construct a file type map\n * @param {File} targetFile\n */\n constructor(targetFile: File | URL) {\n if (targetFile instanceof File) {\n this.build = new ZipReader(new BlobReader(targetFile))\n } else {\n this.build = new ZipReader(new HttpReader(targetFile.href))\n }\n this.mapFiles = new Map()\n this.maps = new Map()\n }\n\n /**\n * Find the .map entries in the .zip build file. Store them as a map with\n * pairs of (partition name: zip.js entry).\n */\n async init() {\n let /** Array */ entries = await this.build.getEntries()\n const /** RegExp*/ regexPath = /IMAGES\\/[a-z_]*\\.map/g\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.map)/g\n entries.forEach(entry => {\n if (entry.filename.match(regexPath)) {\n this.mapFiles.set(entry.filename.match(regexName)![0], entry)\n }\n })\n }\n\n /**\n * According to the .map in the build, build a map for later query.\n * @param {String} partitionName\n * @param {Number} totalLength\n */\n async add(partitionName: string, totalLength: number) {\n let /** Array */ map = []\n const /** RegExp */ regexNumber = /\\d+/g\n const /** Reg */ regexRange = /\\d+\\-\\d+/g\n for (let i = 0; i < totalLength; i++) map[i] = `<${partitionName}>`\n if (this.mapFiles.get(partitionName)) {\n let /** String */ mapText = await this.mapFiles\n .get(partitionName)\n .getData(new TextWriter())\n let /** Array */ fileEntries = mapText.split('\\n')\n // Each line of the .map file in Android build starts with the filename\n // Followed by the block address, either a number or a range, for example:\n // //system/apex/com.android.adbd.apex 54-66 66 66-2663\n for (let entry of fileEntries) {\n let /** Array */ elements = entry.split(' ')\n for (let j = 1; j < elements.length; j++) {\n let /** Number */ left = 0\n let /** Number */ right = 0\n if (elements[j].match(regexRange)) {\n left = parseInt(elements[j].match(/\\d+/g)[0])\n right = parseInt(elements[j].match(/\\d+/g)[1])\n } else {\n left = parseInt(elements[j].match(regexNumber))\n right = parseInt(elements[j].match(regexNumber))\n }\n InsertMap(map, elements[0], left, right)\n }\n }\n this.maps.set(partitionName, map)\n } else {\n this.maps.set(partitionName, map)\n }\n }\n\n /**\n * Return the filename of given address.\n * @param {String} partitionName\n * @param {Array} extents\n * @return {Array}\n */\n query(partitionName: string, extents: Array) {\n let /** Array */ names = []\n let /** Array */ map = this.maps.get(partitionName)\n for (let ext of extents) {\n names.push(queryMap(map, ext.startBlock, ext.startBlock + ext.numBlocks))\n }\n return names\n }\n}\n\n/**\n * Fill in the hashtable from to using .\n * @param {Array} map\n * @param {String} name\n * @param {Number} left\n * @param {Number} right\n */\nfunction InsertMap(\n map: Array,\n name: string,\n left: number,\n right: number\n) {\n for (let i = left; i <= right; i++) {\n map[i] = name\n }\n}\n\n/**\n * Query the hashtable using index
.\n * @param {Array} map\n * @param {Number} left\n * @param {Number} right\n */\nfunction queryMap(map: Array, left: number, right: number) {\n // Assuming the consecutive blocks belong to the same file\n // Only the start block is queried here.\n if (!map[left]) {\n return 'unknown'\n }\n return map[left]\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Offer functions that can be used to parse the partitionUpdate\n * and then do statistics over it. One can use analysePartitions to specify the\n * partitions been analysed and metrics.\n */\n\nimport { OpType, MergeOpType } from './payload'\nimport { EchartsData } from './echarts_data'\nimport { MapParser } from './map_parser'\nimport { chromeos_update_engine } from './update_metadata_pb'\n\n/**\n * Add a to a element associated to . If the element dose not\n * exists than its value will be initialized to zero.\n * @param {Map} map\n * @param {String} key\n * @param {Number} value\n */\nfunction addNumberToMap(map: Map, key: String, value: number) {\n if (!map.get(key)) {\n map.set(key, 0)\n }\n map.set(key, map.get(key)! + value)\n}\n\n/**\n * Return a statistics over the numbers of blocks (in destination) that are\n * being operated by different installation operation (e.g. REPLACE, BSDIFF).\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedBlockStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n operatedBlocks,\n operationType,\n numBlocks(operation.dstExtents)\n )\n }\n }\n return operatedBlocks\n}\n\nexport function mergeOperationStatistics(\n partitions: Array,\n blockSize: number\n) {\n let /** Map */ mergeOperations = new Map()\n let /** MergeOpType */ opType = new MergeOpType()\n let /** Number */ totalBlocks = 0\n for (let partition of partitions) {\n for (let operation of partition.mergeOperations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n mergeOperations,\n operationType,\n operation.dstExtent!.numBlocks\n )\n }\n // The total blocks number should be rounded up\n if (partition.newPartitionInfo == null) {\n throw new Error(\n `Partition ${partition.partitionName} doesn't have new_partition_info field.`\n )\n }\n totalBlocks += Math.ceil(partition.newPartitionInfo.size / blockSize)\n }\n // The COW merge operation is default to be COW_replace and not shown in\n // the manifest info. We have to mannually add that part of operations,\n // by subtracting the total blocks with other blocks.\n mergeOperations.forEach((value, key) => (totalBlocks -= value))\n mergeOperations.set('COW_REPLACE', totalBlocks)\n return mergeOperations\n}\n\n/**\n * Return a statistics over the disk usage of payload.bin, based on the type of\n * installation operations. Only partitions that are being passed in will be\n * included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedPayloadStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(operatedBlocks, operationType, operation.dataLength)\n }\n }\n return operatedBlocks\n}\n/**\n * Return a statistics over the disk usage of each file types in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFileExtensionsStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let filenameStats = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n const fileExtenstionStats = new Map()\n filenameStats.forEach((size, filename) => {\n addNumberToMap(fileExtenstionStats, name2Extension(filename), size)\n })\n return fileExtenstionStats\n}\n\n/**\n * Return a statistics over the disk usage of each file name in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFilenamesStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let /** Map */ operatedFilenames = new Map()\n if (!targetFile) {\n return operatedFilenames\n }\n let buildMap = new MapParser(targetFile)\n await buildMap.init()\n for (let partition of partitions) {\n await buildMap.add(\n partition.partitionName,\n Math.ceil(partition.newPartitionInfo!.size / blockSize)\n )\n for (let operation of partition.operations!) {\n if (!operation.hasOwnProperty('dataLength')) continue\n let operatedFileNames = buildMap.query(\n partition.partitionName,\n operation.dstExtents!\n )\n let extentDataLength = distributeFilenames(\n operatedFileNames,\n operation.dstExtents!,\n operation.dataLength\n )\n extentDataLength!.forEach((value, key) => {\n addNumberToMap(operatedFilenames, key, value)\n })\n }\n }\n return operatedFilenames\n}\n\n/**\n * Analyse the given partitions using the given metrics.\n * @param {String} metrics\n * @param {Array} partitions\n * @return {EchartsData}\n */\nexport async function analysePartitions(\n metrics: String,\n partitions: Array,\n blockSize = 4096,\n targetFile: File | null | URL = null\n) {\n let /** Map */ statisticsData\n let /** Echartsdata */ echartsData\n switch (metrics) {\n case 'blocks':\n statisticsData = operatedBlockStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Operated blocks in target build',\n 'blocks'\n )\n break\n case 'payload':\n statisticsData = operatedPayloadStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Payload disk usage',\n 'bytes'\n )\n break\n case 'COWmerge':\n statisticsData = mergeOperationStatistics(partitions, blockSize)\n echartsData = new EchartsData(\n statisticsData,\n 'COW merge operations',\n 'blocks'\n )\n break\n case 'filenames':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated filenames',\n 'bytes'\n )\n break\n case 'extensions':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFileExtensionsStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated extensions',\n 'bytes'\n )\n break\n }\n if (echartsData) {\n return echartsData\n } else {\n throw 'Please double check if this is a proper AB OTA package.'\n }\n}\n\n/**\n * Calculate the number of blocks being operated\n * @param {Array} exts\n * @return {number}\n */\nexport function numBlocks(\n exts: Array | null | undefined\n) {\n if (!exts) {\n return 0\n }\n const accumulator = (total: number, ext: chromeos_update_engine.IExtent) =>\n total + ext.numBlocks\n return exts.reduce(accumulator, 0)\n}\n\n/**\n * Return a string that indicates the blocks being operated\n * in the manner of (start_block, block_length)\n * @param {Array} exts\n * @return {string}\n */\nexport function displayBlocks(exts: Array) {\n const accumulator = (total: string, ext: chromeos_update_engine.Extent) =>\n total + '(' + ext.startBlock + ',' + ext.numBlocks + ')'\n return exts.reduce(accumulator, '')\n}\n\n/**\n * Return a map with pairs of (file extension, data length used by this\n * extension). The total data length will be distributed by the blocks ratio\n * of each extent.\n * @param {Array} filenames\n * @param {Array} exts\n * @param {Number} length\n * @return {Map}\n */\nexport function distributeFilenames(\n filenames: Array,\n exts: Array,\n length: number\n): Map {\n let totalBlocks = numBlocks(exts)\n let distributedLengths = new Map()\n for (let i = 0; i < filenames.length; i++) {\n addNumberToMap(\n distributedLengths,\n filenames[i],\n Math.round((length * exts[i].numBlocks) / totalBlocks)\n )\n }\n return distributedLengths\n}\n\n/**\n * convert a filename into extension, for example:\n * '//system/apex/com.android.adbd.apex' => 'apex'\n * @param {String} filename\n * @return {String}\n */\nexport function name2Extension(filename: string) {\n let elements = filename.split('.')\n if (elements.length > 1) {\n return elements[elements.length - 1]\n } else if (elements[0] === 'unknown') {\n return 'unknown'\n } else if (filename[0] == '<' && filename.endsWith('>')) {\n return filename\n } else {\n return 'no-extension'\n }\n}\n","\nimport { numBlocks, displayBlocks } from '../services/payload_composition'\nimport { DefaultMap } from '../services/payload'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n operation: {\n type: Object,\n required: true\n },\n mapType: {\n type: DefaultMap,\n required: true\n }\n },\n data() {\n return {\n srcTotalBlocks: 0,\n srcBlocks: '',\n dstTotalBlocks: 0,\n dstBlocks: ''\n }\n },\n mounted() {\n if (this.operation.srcExtents) {\n this.srcTotalBlocks = numBlocks(this.operation.srcExtents)\n this.srcBlocks = displayBlocks(this.operation.srcExtents)\n }\n if (this.operation.dstExtents) {\n this.dstTotalBlocks = numBlocks(this.operation.dstExtents)\n this.dstBlocks = displayBlocks(this.operation.dstExtents)\n }\n }\n})\n","import { render } from \"./OperationDetail.vue?vue&type=template&id=44174082&scoped=true\"\nimport script from \"./OperationDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./OperationDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-44174082\"\n\nexport default script","\nimport { chromeos_update_engine } from '@/services/update_metadata_pb'\nimport { defineComponent } from 'vue'\nimport { OpType, octToHex } from '../services/payload'\nimport OperationDetail from './OperationDetail.vue'\n\nexport default defineComponent({\n components: {\n OperationDetail\n },\n props: {\n partition: {\n type: chromeos_update_engine.PartitionUpdate,\n required: true\n },\n dynamicPartitionList: {\n type: Array,\n required: true\n }\n },\n data() {\n return {\n showOPs: false,\n showInfo: false,\n opType: new OpType()\n }\n },\n methods: {\n toggle(key: string) {\n ;(this as any)[key] = !(this as any)[key]\n },\n octToHex: octToHex\n },\n computed: {\n readableTimestamp() {\n const unixTimestamp = parseInt(this.partition.version)\n if (isNaN(unixTimestamp)) {\n return ''\n }\n // Unix timestamp is in seconds, but js want milliseconds. So *1000\n return new Date(unixTimestamp * 1000).toString()\n },\n isDynamicPartition(): boolean {\n return (\n this.dynamicPartitionList.indexOf(this.partition.partitionName) >= 0\n )\n }\n }\n})\n","import { render } from \"./PartitionDetail.vue?vue&type=template&id=6dba348a&scoped=true\"\nimport script from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PartitionDetail.vue?vue&type=style&index=0&id=6dba348a&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-6dba348a\"\n\nexport default script","\n\n\n\n\n\n\n","import * as zip from '@zip.js/zip.js/dist/zip.js'\nimport { ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { Payload } from './payload'\n\nexport class ZipFile {\n public reader: ZipReader\n\n constructor(private file: File | URL) {\n this.reader = getZipReader(file)\n }\n getFileName() {\n return getFileName(this.file)\n }\n getFileSize() {\n if (this.file instanceof File) {\n return this.file.size\n } else {\n // TODO(zhangkelvin) Support getting file size from URL\n return 0\n }\n }\n}\n\nexport async function trimZip(\n file: ZipReader,\n p: (entry: zip.Entry) => boolean\n): Promise {\n const reader = file\n const writer = new zip.ZipWriter(new zip.BlobWriter('application/zip'))\n const entries = await reader.getEntries()\n for (const entry of entries.filter(entry => !!entry && p(entry))) {\n const blobWriter = new zip.BlobWriter()\n const data = (await entry.getData!(blobWriter)) as Blob\n console.log(`Adding ${entry.filename}, ${data.size}`)\n writer.add(entry.filename, new zip.BlobReader(blobWriter.getData()), {\n level: 0 // no compression\n })\n }\n return writer\n}\n\nfunction getZipReader(file: File | URL) {\n if (file instanceof File) {\n return new zip.ZipReader(new zip.BlobReader(file))\n } else {\n return new zip.ZipReader(new zip.HttpReader(file.href))\n }\n}\n\nexport function getFileName(file: File | URL) {\n if (file instanceof File) {\n return file.name\n } else {\n return file.pathname\n }\n}\n\nexport async function trimTargetFiles(file: File | URL): Promise {\n const writer = await trimZip(getZipReader(file), entry => {\n return entry.filename.startsWith('META/') || entry.filename.endsWith('.map')\n })\n return await writer.close()\n}\n\nexport async function trimOTAPackage(payload: Payload): Promise {\n const writer = await trimZip(payload.zipreader, entry => {\n return entry.filename != 'payload.bin'\n })\n await writer.add(\n 'payload.bin',\n new zip.BlobReader(payload.buffer!.slice(0, payload.getMetadataLength())),\n // Most toolings assume that payload.bin and other entries are not\n // compressed, so use level 0\n {\n level: 0\n }\n )\n const blob: Blob = await writer.close()\n return blob\n}\n\nexport function downloadFile(\n blob: Blob,\n downloadNode: HTMLAnchorElement,\n filename: string\n) {\n const url = window.URL.createObjectURL(blob)\n downloadNode.href = url\n downloadNode.download = filename\n downloadNode.click()\n window.URL.revokeObjectURL(url)\n}\n\nexport function ensureSuffix(str: string, suffix: string) {\n if (str.endsWith(suffix)) {\n return str\n } else {\n return str + suffix\n }\n}\n","\nimport { Payload, MetadataFormat } from '../services/payload'\nimport { ZipFile } from '@/services/trim_zip'\n\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n zipFile: {\n type: ZipFile,\n required: true\n },\n payload: {\n type: Payload,\n required: true\n }\n },\n data() {\n return {\n MetadataFormat\n }\n },\n computed: {\n otaMetadata(): {\n prefix: string\n key: string\n name: string\n }[] {\n return MetadataFormat.filter(formatter =>\n String((this.payload as any)[formatter.key]).length > 0\n );\n },\n totalCOWSize(): number {\n const cowSizes = this.payload?.manifest?.partitions.map(p => p.estimateCowSize || 0);\n if (!cowSizes) {\n return 0;\n }\n return cowSizes.reduce((a, b) => a + b);\n },\n vabcCompressionParam(): string {\n return this.payload?.manifest?.dynamicPartitionMetadata?.vabcCompressionParam || \"\";\n },\n securityPatchLevel(): string {\n const spl = this.payload?.manifest?.securityPatchLevel;\n if (!spl) {\n return \"\";\n }\n return spl;\n },\n totalDynamicPartitionSize(): number {\n const groups = this.payload?.manifest?.dynamicPartitionMetadata?.groups\n if (!groups) {\n return 0\n }\n const dynamicPartitionNamess = new Set(\n groups.flatMap(g => g.partitionNames)\n )\n const dynamicPartitions =\n this.payload.manifest?.partitions.filter(p =>\n dynamicPartitionNamess.has(p.partitionName)\n ) || []\n if (dynamicPartitions.length <= 0) {\n return 0\n }\n return dynamicPartitions\n .map(p => p.newPartitionInfo?.size || 0)\n .reduce((acc, cur) => acc + cur)\n }\n }\n})\n","import { render } from \"./BasicInfo.vue?vue&type=template&id=24adde54&scoped=true\"\nimport script from \"./BasicInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./BasicInfo.vue?vue&type=script&lang=ts\"\n\nimport \"./BasicInfo.vue?vue&type=style&index=0&id=24adde54&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-24adde54\"\n\nexport default script","\nimport PartitionDetail from './PartitionDetail.vue'\nimport BasicInfo from './BasicInfo.vue'\nimport { Payload, octToHex } from '../services/payload'\nimport {\n downloadFile,\n ensureSuffix,\n trimOTAPackage,\n ZipFile\n} from '@/services/trim_zip'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n components: {\n PartitionDetail,\n BasicInfo\n },\n props: {\n zipFile: {\n type: ZipFile,\n default: null\n },\n payload: {\n type: Payload,\n default: null\n }\n },\n methods: {\n octToHex: octToHex,\n async exportOTAPackage() {\n const blob = await trimOTAPackage(this.payload as Payload)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(this.zipFile.getFileName(), '.zip')\n )\n }\n },\n computed: {\n dynamicPartitions(): string[] {\n return (\n this.payload.manifest?.dynamicPartitionMetadata?.groups?.flatMap(\n g => g.partitionNames || []\n ) || []\n )\n }\n }\n})\n","import { render } from \"./PayloadDetail.vue?vue&type=template&id=05db67f2&scoped=true\"\nimport script from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-05db67f2\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n labels: {\n type: Array,\n default: new Array()\n },\n modelValue: {\n type: Map,\n default: new Map()\n }\n },\n data() {\n return {\n selectAll: 1,\n selectAllText: ['Select All', 'Unselect All']\n }\n },\n mounted() {\n // Set the default value to be true once mounted\n for (let key of this.labels) {\n this.modelValue.set(key, true)\n }\n },\n methods: {\n updateSelected(newSelect: string) {\n this.modelValue.set(newSelect, !this.modelValue.get(newSelect))\n this.$emit('update:modelValue', this.modelValue)\n },\n revertAllSelection() {\n this.selectAll = 1 - this.selectAll\n for (let key of this.modelValue.keys()) {\n this.modelValue.set(key, Boolean(this.selectAll))\n }\n }\n }\n})\n","import { render } from \"./PartialCheckbox.vue?vue&type=template&id=533f2336&scoped=true\"\nimport script from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\n\nimport \"./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-533f2336\"\n\nexport default script","\n\n\n\n\n\n\n","import { render } from \"./PieChart.vue?vue&type=template&id=5d1cb486&scoped=true\"\nimport script from \"./PieChart.vue?vue&type=script&lang=js\"\nexport * from \"./PieChart.vue?vue&type=script&lang=js\"\n\nimport \"./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-5d1cb486\"\n\nexport default script","\nimport axios from 'axios'\nimport PartialCheckbox from './PartialCheckbox.vue'\nimport PieChart from './PieChart.vue'\nimport BaseFile from './BaseFile.vue'\nimport { analysePartitions } from '../services/payload_composition'\nimport { chromeos_update_engine as update_metadata_pb } from '../services/update_metadata_pb'\nimport { TooltipComponentPositionCallbackParams } from 'echarts'\nimport { EchartsData } from '@/services/echarts_data'\nimport { defineComponent } from 'vue'\nimport {\n downloadFile,\n ensureSuffix,\n getFileName,\n trimTargetFiles\n} from '@/services/trim_zip'\n\ninterface ComponentState {\n partitionInclude: Map\n echartsData: EchartsData | null\n listData: string\n targetFile: File | URL | null\n}\n\nexport default defineComponent({\n components: {\n PartialCheckbox,\n PieChart,\n BaseFile\n },\n props: {\n manifest: {\n type: update_metadata_pb.DeltaArchiveManifest,\n default: () => []\n },\n demo: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n partitionInclude: new Map(),\n echartsData: null,\n listData: '',\n targetFile: null\n } as ComponentState\n },\n computed: {\n updatePartitions(): string[] {\n return this.manifest.partitions.map(\n (partition: update_metadata_pb.IPartitionUpdate) => {\n return partition.partitionName\n }\n )\n }\n },\n async mounted() {\n if (this.demo) {\n try {\n const download = await axios.get(\n './files/cf_x86_target_file_demo.zip',\n { responseType: 'blob' }\n )\n this.targetFile = new File([download.data], 'target_demo.zip')\n } catch (err) {\n console.log('Please put a proper example target file in /public/files/')\n }\n }\n },\n methods: {\n piechartClick(param: TooltipComponentPositionCallbackParams) {\n console.log(param)\n },\n async updateChart(metrics: string) {\n let partitionSelected = this.manifest.partitions.filter(partition =>\n this.partitionInclude.get(partition.partitionName)\n )\n try {\n this.echartsData = await analysePartitions(\n metrics,\n partitionSelected,\n this.manifest.blockSize,\n this.targetFile\n )\n } catch (err) {\n alert(`Cannot be processed for the following issue: ${err}`)\n }\n },\n selectBuild(file: File | URL) {\n //TODO(lishutong) check the version of target file is same to the OTA target\n this.targetFile = file\n },\n async exportTargetFileMetadata() {\n const blob = await trimTargetFiles(this.targetFile!)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(getFileName(this.targetFile!), '.zip')\n )\n }\n }\n})\n","import { render } from \"./PayloadComposition.vue?vue&type=template&id=44b569bd&scoped=true\"\nimport script from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadComposition.vue?vue&type=style&index=0&id=44b569bd&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-44b569bd\"\n\nexport default script","\nimport BaseFile from '../components/BaseFile.vue'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n BaseFile,\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return ({\n zipFile: null,\n payload: null\n } as unknown) as {\n zipFile: ZipFile\n payload: Payload\n }\n },\n methods: {\n async unpackOTA(file: File | URL) {\n this.zipFile = new ZipFile(file)\n try {\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n alert(`Please check if this is a correct OTA package (.zip). ${err}`)\n console.log(err)\n }\n }\n }\n})\n","import { render } from \"./PackageAnalysis.vue?vue&type=template&id=4cbf2b67\"\nimport script from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nexport * from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\nimport axios from 'axios'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return {\n zipFile: null,\n payload: null\n } as {\n zipFile: ZipFile | null\n payload: Payload | null\n }\n },\n async created() {\n // put cf_x86_demo.zip and cf_x86_target_file_demo into\n // this directory: /public/files\n try {\n const download = await axios.get('./files/cf_x86_demo.zip', {\n responseType: 'blob'\n })\n this.zipFile = new ZipFile(new File([download.data], 'ota_demo.zip'))\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n console.log('Please put a proper example OTA in /public/files/')\n }\n }\n})\n","import { render } from \"./Demo.vue?vue&type=template&id=1e5d071a\"\nimport script from \"./Demo.vue?vue&type=script&lang=ts\"\nexport * from \"./Demo.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n","import { render } from \"./About.vue?vue&type=template&id=67ed0bf6\"\nconst script = {}\nscript.render = render\n\nexport default script","\n\n\n\n","import { render } from \"./NotFound.vue?vue&type=template&id=50c6f348&scoped=true\"\nconst script = {}\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-50c6f348\"\n\nexport default script","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createRouter, createWebHistory } from 'vue-router'\nimport PackageAnalysis from '@/views/PackageAnalysis.vue'\nimport Demo from'@/views/Demo.vue'\nimport About from '@/views/About.vue'\nimport NotFound from '@/views/NotFound.vue'\n\nconst routes = [\n {\n path: '/',\n name: 'Analysis',\n component: PackageAnalysis,\n meta: {\n title: 'Analyse OTA package - from AOSP'\n }\n },\n {\n path: '/demo',\n name: 'Demo',\n component: Demo\n },\n {\n path: '/about',\n name: 'About',\n component: About\n },\n {\n path: '/:catchAll(.*)',\n name: 'Not Found',\n component: NotFound\n }\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes\n})\n\n// This callback runs before every route change, including on page load.\nrouter.beforeEach((to, from, next) => {\n // This goes through the matched routes from last to first, finding the closest route with a title.\n // e.g., if we have `/some/deep/nested/route` and `/some`, `/deep`, and `/nested` have titles,\n // `/nested`'s will be chosen.\n const nearestWithTitle = to.matched.slice().reverse().find(r => r.meta && r.meta.title);\n\n // Find the nearest route element with meta tags.\n const nearestWithMeta = to.matched.slice().reverse().find(r => r.meta && r.meta.metaTags)!;\n\n const previousNearestWithMeta = from.matched.slice().reverse().find(r => r.meta && r.meta.metaTags);\n\n // If a route with a title was found, set the document (page) title to that value.\n if(nearestWithTitle) {\n document.title = nearestWithTitle.meta.title as string;\n } else if(previousNearestWithMeta) {\n document.title = previousNearestWithMeta.meta.title as string;\n }\n\n // Remove any stale meta tags from the document using the key attribute we set below.\n Array.from(document.querySelectorAll('[data-vue-router-controlled]')).map(el => el.parentNode!.removeChild(el));\n\n next();\n});\n\nexport default router\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createStore } from 'vuex'\n\nexport default createStore({\n state: {},\n mutations: {},\n actions: {},\n modules: {}\n})\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createApp } from 'vue'\nimport vuetify from './plugins/vuetify'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nconst app = createApp(App)\napp.use(router)\napp.use(store)\napp.use(vuetify)\n\napp.mount('#app')","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartitionDetail.vue?vue&type=style&index=0&id=6dba348a&scoped=true&lang=css\""],"sourceRoot":""} \ No newline at end of file diff --git a/analyseOTA/js/app.283b932c.js b/analyseOTA/js/app.283b932c.js new file mode 100644 index 0000000..10ca44d --- /dev/null +++ b/analyseOTA/js/app.283b932c.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var r,o,s=t[0],c=t[1],l=t[2],p=0,d=[];p>>3){case 1:r.startBlock=e.uint64();break;case 2:r.numBlocks=e.uint64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null==e.startBlock||!e.hasOwnProperty("startBlock")||se.isInteger(e.startBlock)||e.startBlock&&se.isInteger(e.startBlock.low)&&se.isInteger(e.startBlock.high)?null==e.numBlocks||!e.hasOwnProperty("numBlocks")||se.isInteger(e.numBlocks)||e.numBlocks&&se.isInteger(e.numBlocks.low)&&se.isInteger(e.numBlocks.high)?null:"numBlocks: integer|Long expected":"startBlock: integer|Long expected"},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.Extent)return e;var t=new ce.chromeos_update_engine.Extent;return null!=e.startBlock&&(se.Long?(t.startBlock=se.Long.fromValue(e.startBlock)).unsigned=!0:"string"===typeof e.startBlock?t.startBlock=parseInt(e.startBlock,10):"number"===typeof e.startBlock?t.startBlock=e.startBlock:"object"===Object(re["a"])(e.startBlock)&&(t.startBlock=new se.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0))),null!=e.numBlocks&&(se.Long?(t.numBlocks=se.Long.fromValue(e.numBlocks)).unsigned=!0:"string"===typeof e.numBlocks?t.numBlocks=parseInt(e.numBlocks,10):"number"===typeof e.numBlocks?t.numBlocks=e.numBlocks:"object"===Object(re["a"])(e.numBlocks)&&(t.numBlocks=new se.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(se.Long){var r=new se.Long(0,0,!0);n.startBlock=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.startBlock=t.longs===String?"0":0;if(se.Long){var a=new se.Long(0,0,!0);n.numBlocks=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.numBlocks=t.longs===String?"0":0}return null!=e.startBlock&&e.hasOwnProperty("startBlock")&&("number"===typeof e.startBlock?n.startBlock=t.longs===String?String(e.startBlock):e.startBlock:n.startBlock=t.longs===String?se.Long.prototype.toString.call(e.startBlock):t.longs===Number?new se.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0):e.startBlock),null!=e.numBlocks&&e.hasOwnProperty("numBlocks")&&("number"===typeof e.numBlocks?n.numBlocks=t.longs===String?String(e.numBlocks):e.numBlocks:n.numBlocks=t.longs===String?se.Long.prototype.toString.call(e.numBlocks):t.longs===Number?new se.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0):e.numBlocks),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.Signatures=function(){function e(e){if(this.signatures=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.signatures&&r.signatures.length||(r.signatures=[]),r.signatures.push(ce.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.signatures&&e.hasOwnProperty("signatures")){if(!Array.isArray(e.signatures))return"signatures: array expected";for(var t=0;t>>3){case 1:r.version=e.uint32();break;case 2:r.data=e.bytes();break;case 3:r.unpaddedSignatureSize=e.fixed32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null!=e.version&&e.hasOwnProperty("version")&&!se.isInteger(e.version)?"version: integer expected":null!=e.data&&e.hasOwnProperty("data")&&!(e.data&&"number"===typeof e.data.length||se.isString(e.data))?"data: buffer expected":null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&!se.isInteger(e.unpaddedSignatureSize)?"unpaddedSignatureSize: integer expected":null},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.Signatures.Signature)return e;var t=new ce.chromeos_update_engine.Signatures.Signature;return null!=e.version&&(t.version=e.version>>>0),null!=e.data&&("string"===typeof e.data?se.base64.decode(e.data,t.data=se.newBuffer(se.base64.length(e.data)),0):e.data.length&&(t.data=e.data)),null!=e.unpaddedSignatureSize&&(t.unpaddedSignatureSize=e.unpaddedSignatureSize>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.version=0,t.bytes===String?n.data="":(n.data=[],t.bytes!==Array&&(n.data=se.newBuffer(n.data))),n.unpaddedSignatureSize=0),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.data&&e.hasOwnProperty("data")&&(n.data=t.bytes===String?se.base64.encode(e.data,0,e.data.length):t.bytes===Array?Array.prototype.slice.call(e.data):e.data),null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&(n.unpaddedSignatureSize=e.unpaddedSignatureSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e}(),e.PartitionInfo=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.size=e.uint64();break;case 2:r.hash=e.bytes();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null==e.size||!e.hasOwnProperty("size")||se.isInteger(e.size)||e.size&&se.isInteger(e.size.low)&&se.isInteger(e.size.high)?null!=e.hash&&e.hasOwnProperty("hash")&&!(e.hash&&"number"===typeof e.hash.length||se.isString(e.hash))?"hash: buffer expected":null:"size: integer|Long expected"},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.PartitionInfo)return e;var t=new ce.chromeos_update_engine.PartitionInfo;return null!=e.size&&(se.Long?(t.size=se.Long.fromValue(e.size)).unsigned=!0:"string"===typeof e.size?t.size=parseInt(e.size,10):"number"===typeof e.size?t.size=e.size:"object"===Object(re["a"])(e.size)&&(t.size=new se.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0))),null!=e.hash&&("string"===typeof e.hash?se.base64.decode(e.hash,t.hash=se.newBuffer(se.base64.length(e.hash)),0):e.hash.length&&(t.hash=e.hash)),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(se.Long){var r=new se.Long(0,0,!0);n.size=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.size=t.longs===String?"0":0;t.bytes===String?n.hash="":(n.hash=[],t.bytes!==Array&&(n.hash=se.newBuffer(n.hash)))}return null!=e.size&&e.hasOwnProperty("size")&&("number"===typeof e.size?n.size=t.longs===String?String(e.size):e.size:n.size=t.longs===String?se.Long.prototype.toString.call(e.size):t.longs===Number?new se.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0):e.size),null!=e.hash&&e.hasOwnProperty("hash")&&(n.hash=t.bytes===String?se.base64.encode(e.hash,0,e.hash.length):t.bytes===Array?Array.prototype.slice.call(e.hash):e.hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.InstallOperation=function(){function e(e){if(this.srcExtents=[],this.dstExtents=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.dataOffset=e.uint64();break;case 3:r.dataLength=e.uint64();break;case 4:r.srcExtents&&r.srcExtents.length||(r.srcExtents=[]),r.srcExtents.push(ce.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 5:r.srcLength=e.uint64();break;case 6:r.dstExtents&&r.dstExtents.length||(r.dstExtents=[]),r.dstExtents.push(ce.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 7:r.dstLength=e.uint64();break;case 8:r.dataSha256Hash=e.bytes();break;case 9:r.srcSha256Hash=e.bytes();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("type"))throw se.ProtocolError("missing required 'type'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 8:case 6:case 7:case 10:case 9:case 11:case 12:case 13:break}if(null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&!se.isInteger(e.dataOffset)&&!(e.dataOffset&&se.isInteger(e.dataOffset.low)&&se.isInteger(e.dataOffset.high)))return"dataOffset: integer|Long expected";if(null!=e.dataLength&&e.hasOwnProperty("dataLength")&&!se.isInteger(e.dataLength)&&!(e.dataLength&&se.isInteger(e.dataLength.low)&&se.isInteger(e.dataLength.high)))return"dataLength: integer|Long expected";if(null!=e.srcExtents&&e.hasOwnProperty("srcExtents")){if(!Array.isArray(e.srcExtents))return"srcExtents: array expected";for(var t=0;t>>0,e.dataOffset.high>>>0).toNumber(!0))),null!=e.dataLength&&(se.Long?(t.dataLength=se.Long.fromValue(e.dataLength)).unsigned=!0:"string"===typeof e.dataLength?t.dataLength=parseInt(e.dataLength,10):"number"===typeof e.dataLength?t.dataLength=e.dataLength:"object"===Object(re["a"])(e.dataLength)&&(t.dataLength=new se.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0))),e.srcExtents){if(!Array.isArray(e.srcExtents))throw TypeError(".chromeos_update_engine.InstallOperation.srcExtents: array expected");t.srcExtents=[];for(var n=0;n>>0,e.srcLength.high>>>0).toNumber(!0))),e.dstExtents){if(!Array.isArray(e.dstExtents))throw TypeError(".chromeos_update_engine.InstallOperation.dstExtents: array expected");t.dstExtents=[];for(var r=0;r>>0,e.dstLength.high>>>0).toNumber(!0))),null!=e.dataSha256Hash&&("string"===typeof e.dataSha256Hash?se.base64.decode(e.dataSha256Hash,t.dataSha256Hash=se.newBuffer(se.base64.length(e.dataSha256Hash)),0):e.dataSha256Hash.length&&(t.dataSha256Hash=e.dataSha256Hash)),null!=e.srcSha256Hash&&("string"===typeof e.srcSha256Hash?se.base64.decode(e.srcSha256Hash,t.srcSha256Hash=se.newBuffer(se.base64.length(e.srcSha256Hash)),0):e.srcSha256Hash.length&&(t.srcSha256Hash=e.srcSha256Hash)),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.srcExtents=[],n.dstExtents=[]),t.defaults){if(n.type=t.enums===String?"REPLACE":0,se.Long){var r=new se.Long(0,0,!0);n.dataOffset=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.dataOffset=t.longs===String?"0":0;if(se.Long){var a=new se.Long(0,0,!0);n.dataLength=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.dataLength=t.longs===String?"0":0;if(se.Long){var i=new se.Long(0,0,!0);n.srcLength=t.longs===String?i.toString():t.longs===Number?i.toNumber():i}else n.srcLength=t.longs===String?"0":0;if(se.Long){var o=new se.Long(0,0,!0);n.dstLength=t.longs===String?o.toString():t.longs===Number?o.toNumber():o}else n.dstLength=t.longs===String?"0":0;t.bytes===String?n.dataSha256Hash="":(n.dataSha256Hash=[],t.bytes!==Array&&(n.dataSha256Hash=se.newBuffer(n.dataSha256Hash))),t.bytes===String?n.srcSha256Hash="":(n.srcSha256Hash=[],t.bytes!==Array&&(n.srcSha256Hash=se.newBuffer(n.srcSha256Hash)))}if(null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?ce.chromeos_update_engine.InstallOperation.Type[e.type]:e.type),null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&("number"===typeof e.dataOffset?n.dataOffset=t.longs===String?String(e.dataOffset):e.dataOffset:n.dataOffset=t.longs===String?se.Long.prototype.toString.call(e.dataOffset):t.longs===Number?new se.LongBits(e.dataOffset.low>>>0,e.dataOffset.high>>>0).toNumber(!0):e.dataOffset),null!=e.dataLength&&e.hasOwnProperty("dataLength")&&("number"===typeof e.dataLength?n.dataLength=t.longs===String?String(e.dataLength):e.dataLength:n.dataLength=t.longs===String?se.Long.prototype.toString.call(e.dataLength):t.longs===Number?new se.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0):e.dataLength),e.srcExtents&&e.srcExtents.length){n.srcExtents=[];for(var s=0;s>>0,e.srcLength.high>>>0).toNumber(!0):e.srcLength),e.dstExtents&&e.dstExtents.length){n.dstExtents=[];for(var c=0;c>>0,e.dstLength.high>>>0).toNumber(!0):e.dstLength),null!=e.dataSha256Hash&&e.hasOwnProperty("dataSha256Hash")&&(n.dataSha256Hash=t.bytes===String?se.base64.encode(e.dataSha256Hash,0,e.dataSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.dataSha256Hash):e.dataSha256Hash),null!=e.srcSha256Hash&&e.hasOwnProperty("srcSha256Hash")&&(n.srcSha256Hash=t.bytes===String?se.base64.encode(e.srcSha256Hash,0,e.srcSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.srcSha256Hash):e.srcSha256Hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="REPLACE"]=0,t[e[1]="REPLACE_BZ"]=1,t[e[2]="MOVE"]=2,t[e[3]="BSDIFF"]=3,t[e[4]="SOURCE_COPY"]=4,t[e[5]="SOURCE_BSDIFF"]=5,t[e[8]="REPLACE_XZ"]=8,t[e[6]="ZERO"]=6,t[e[7]="DISCARD"]=7,t[e[10]="BROTLI_BSDIFF"]=10,t[e[9]="PUFFDIFF"]=9,t[e[11]="ZUCCHINI"]=11,t[e[12]="LZ4DIFF_BSDIFF"]=12,t[e[13]="LZ4DIFF_PUFFDIFF"]=13,t}(),e}(),e.CowMergeOperation=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.srcExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 3:r.dstExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 4:r.srcOffset=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:break}if(null!=e.srcExtent&&e.hasOwnProperty("srcExtent")){var t=ce.chromeos_update_engine.Extent.verify(e.srcExtent);if(t)return"srcExtent."+t}if(null!=e.dstExtent&&e.hasOwnProperty("dstExtent")){var n=ce.chromeos_update_engine.Extent.verify(e.dstExtent);if(n)return"dstExtent."+n}return null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&!se.isInteger(e.srcOffset)?"srcOffset: integer expected":null},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.CowMergeOperation)return e;var t=new ce.chromeos_update_engine.CowMergeOperation;switch(e.type){case"COW_COPY":case 0:t.type=0;break;case"COW_XOR":case 1:t.type=1;break;case"COW_REPLACE":case 2:t.type=2;break}if(null!=e.srcExtent){if("object"!==Object(re["a"])(e.srcExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.srcExtent: object expected");t.srcExtent=ce.chromeos_update_engine.Extent.fromObject(e.srcExtent)}if(null!=e.dstExtent){if("object"!==Object(re["a"])(e.dstExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.dstExtent: object expected");t.dstExtent=ce.chromeos_update_engine.Extent.fromObject(e.dstExtent)}return null!=e.srcOffset&&(t.srcOffset=e.srcOffset>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.type=t.enums===String?"COW_COPY":0,n.srcExtent=null,n.dstExtent=null,n.srcOffset=0),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?ce.chromeos_update_engine.CowMergeOperation.Type[e.type]:e.type),null!=e.srcExtent&&e.hasOwnProperty("srcExtent")&&(n.srcExtent=ce.chromeos_update_engine.Extent.toObject(e.srcExtent,t)),null!=e.dstExtent&&e.hasOwnProperty("dstExtent")&&(n.dstExtent=ce.chromeos_update_engine.Extent.toObject(e.dstExtent,t)),null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&(n.srcOffset=e.srcOffset),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="COW_COPY"]=0,t[e[1]="COW_XOR"]=1,t[e[2]="COW_REPLACE"]=2,t}(),e}(),e.PartitionUpdate=function(){function e(e){if(this.newPartitionSignature=[],this.operations=[],this.mergeOperations=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.partitionName=e.string();break;case 2:r.runPostinstall=e.bool();break;case 3:r.postinstallPath=e.string();break;case 4:r.filesystemType=e.string();break;case 5:r.newPartitionSignature&&r.newPartitionSignature.length||(r.newPartitionSignature=[]),r.newPartitionSignature.push(ce.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;case 6:r.oldPartitionInfo=ce.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:r.newPartitionInfo=ce.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:r.operations&&r.operations.length||(r.operations=[]),r.operations.push(ce.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 9:r.postinstallOptional=e.bool();break;case 10:r.hashTreeDataExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 11:r.hashTreeExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 12:r.hashTreeAlgorithm=e.string();break;case 13:r.hashTreeSalt=e.bytes();break;case 14:r.fecDataExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 15:r.fecExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 16:r.fecRoots=e.uint32();break;case 17:r.version=e.string();break;case 18:r.mergeOperations&&r.mergeOperations.length||(r.mergeOperations=[]),r.mergeOperations.push(ce.chromeos_update_engine.CowMergeOperation.decode(e,e.uint32()));break;case 19:r.estimateCowSize=e.uint64();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("partitionName"))throw se.ProtocolError("missing required 'partitionName'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(!se.isString(e.partitionName))return"partitionName: string expected";if(null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&"boolean"!==typeof e.runPostinstall)return"runPostinstall: boolean expected";if(null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&!se.isString(e.postinstallPath))return"postinstallPath: string expected";if(null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&!se.isString(e.filesystemType))return"filesystemType: string expected";if(null!=e.newPartitionSignature&&e.hasOwnProperty("newPartitionSignature")){if(!Array.isArray(e.newPartitionSignature))return"newPartitionSignature: array expected";for(var t=0;t>>0),null!=e.version&&(t.version=String(e.version)),e.mergeOperations){if(!Array.isArray(e.mergeOperations))throw TypeError(".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected");t.mergeOperations=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.newPartitionSignature=[],n.operations=[],n.mergeOperations=[]),t.defaults)if(n.partitionName="",n.runPostinstall=!1,n.postinstallPath="",n.filesystemType="",n.oldPartitionInfo=null,n.newPartitionInfo=null,n.postinstallOptional=!1,n.hashTreeDataExtent=null,n.hashTreeExtent=null,n.hashTreeAlgorithm="",t.bytes===String?n.hashTreeSalt="":(n.hashTreeSalt=[],t.bytes!==Array&&(n.hashTreeSalt=se.newBuffer(n.hashTreeSalt))),n.fecDataExtent=null,n.fecExtent=null,n.fecRoots=2,n.version="",se.Long){var r=new se.Long(0,0,!0);n.estimateCowSize=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.estimateCowSize=t.longs===String?"0":0;if(null!=e.partitionName&&e.hasOwnProperty("partitionName")&&(n.partitionName=e.partitionName),null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&(n.runPostinstall=e.runPostinstall),null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&(n.postinstallPath=e.postinstallPath),null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&(n.filesystemType=e.filesystemType),e.newPartitionSignature&&e.newPartitionSignature.length){n.newPartitionSignature=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0):e.estimateCowSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.DynamicPartitionGroup=function(){function e(e){if(this.partitionNames=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.name=e.string();break;case 2:r.size=e.uint64();break;case 3:r.partitionNames&&r.partitionNames.length||(r.partitionNames=[]),r.partitionNames.push(e.string());break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("name"))throw se.ProtocolError("missing required 'name'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(!se.isString(e.name))return"name: string expected";if(null!=e.size&&e.hasOwnProperty("size")&&!se.isInteger(e.size)&&!(e.size&&se.isInteger(e.size.low)&&se.isInteger(e.size.high)))return"size: integer|Long expected";if(null!=e.partitionNames&&e.hasOwnProperty("partitionNames")){if(!Array.isArray(e.partitionNames))return"partitionNames: array expected";for(var t=0;t>>0,e.size.high>>>0).toNumber(!0))),e.partitionNames){if(!Array.isArray(e.partitionNames))throw TypeError(".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected");t.partitionNames=[];for(var n=0;n>>0,e.size.high>>>0).toNumber(!0):e.size),e.partitionNames&&e.partitionNames.length){n.partitionNames=[];for(var a=0;a>>3){case 1:r.groups&&r.groups.length||(r.groups=[]),r.groups.push(ce.chromeos_update_engine.DynamicPartitionGroup.decode(e,e.uint32()));break;case 2:r.snapshotEnabled=e.bool();break;case 3:r.vabcEnabled=e.bool();break;case 4:r.vabcCompressionParam=e.string();break;case 5:r.cowVersion=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.groups&&e.hasOwnProperty("groups")){if(!Array.isArray(e.groups))return"groups: array expected";for(var t=0;t>>0),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.groups=[]),t.defaults&&(n.snapshotEnabled=!1,n.vabcEnabled=!1,n.vabcCompressionParam="",n.cowVersion=0),e.groups&&e.groups.length){n.groups=[];for(var r=0;r>>3){case 1:r.packageName=e.string();break;case 2:r.version=e.int64();break;case 3:r.isCompressed=e.bool();break;case 4:r.decompressedSize=e.int64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null!=e.packageName&&e.hasOwnProperty("packageName")&&!se.isString(e.packageName)?"packageName: string expected":null==e.version||!e.hasOwnProperty("version")||se.isInteger(e.version)||e.version&&se.isInteger(e.version.low)&&se.isInteger(e.version.high)?null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&"boolean"!==typeof e.isCompressed?"isCompressed: boolean expected":null==e.decompressedSize||!e.hasOwnProperty("decompressedSize")||se.isInteger(e.decompressedSize)||e.decompressedSize&&se.isInteger(e.decompressedSize.low)&&se.isInteger(e.decompressedSize.high)?null:"decompressedSize: integer|Long expected":"version: integer|Long expected"},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.ApexInfo)return e;var t=new ce.chromeos_update_engine.ApexInfo;return null!=e.packageName&&(t.packageName=String(e.packageName)),null!=e.version&&(se.Long?(t.version=se.Long.fromValue(e.version)).unsigned=!1:"string"===typeof e.version?t.version=parseInt(e.version,10):"number"===typeof e.version?t.version=e.version:"object"===Object(re["a"])(e.version)&&(t.version=new se.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber())),null!=e.isCompressed&&(t.isCompressed=Boolean(e.isCompressed)),null!=e.decompressedSize&&(se.Long?(t.decompressedSize=se.Long.fromValue(e.decompressedSize)).unsigned=!1:"string"===typeof e.decompressedSize?t.decompressedSize=parseInt(e.decompressedSize,10):"number"===typeof e.decompressedSize?t.decompressedSize=e.decompressedSize:"object"===Object(re["a"])(e.decompressedSize)&&(t.decompressedSize=new se.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber())),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(n.packageName="",se.Long){var r=new se.Long(0,0,!1);n.version=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.version=t.longs===String?"0":0;if(n.isCompressed=!1,se.Long){var a=new se.Long(0,0,!1);n.decompressedSize=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.decompressedSize=t.longs===String?"0":0}return null!=e.packageName&&e.hasOwnProperty("packageName")&&(n.packageName=e.packageName),null!=e.version&&e.hasOwnProperty("version")&&("number"===typeof e.version?n.version=t.longs===String?String(e.version):e.version:n.version=t.longs===String?se.Long.prototype.toString.call(e.version):t.longs===Number?new se.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber():e.version),null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&(n.isCompressed=e.isCompressed),null!=e.decompressedSize&&e.hasOwnProperty("decompressedSize")&&("number"===typeof e.decompressedSize?n.decompressedSize=t.longs===String?String(e.decompressedSize):e.decompressedSize:n.decompressedSize=t.longs===String?se.Long.prototype.toString.call(e.decompressedSize):t.longs===Number?new se.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber():e.decompressedSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.ApexMetadata=function(){function e(e){if(this.apexInfo=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(ce.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.apexInfo&&e.hasOwnProperty("apexInfo")){if(!Array.isArray(e.apexInfo))return"apexInfo: array expected";for(var t=0;t>>3){case 3:r.blockSize=e.uint32();break;case 4:r.signaturesOffset=e.uint64();break;case 5:r.signaturesSize=e.uint64();break;case 12:r.minorVersion=e.uint32();break;case 13:r.partitions&&r.partitions.length||(r.partitions=[]),r.partitions.push(ce.chromeos_update_engine.PartitionUpdate.decode(e,e.uint32()));break;case 14:r.maxTimestamp=e.int64();break;case 15:r.dynamicPartitionMetadata=ce.chromeos_update_engine.DynamicPartitionMetadata.decode(e,e.uint32());break;case 16:r.partialUpdate=e.bool();break;case 17:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(ce.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;case 18:r.securityPatchLevel=e.string();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.blockSize&&e.hasOwnProperty("blockSize")&&!se.isInteger(e.blockSize))return"blockSize: integer expected";if(null!=e.signaturesOffset&&e.hasOwnProperty("signaturesOffset")&&!se.isInteger(e.signaturesOffset)&&!(e.signaturesOffset&&se.isInteger(e.signaturesOffset.low)&&se.isInteger(e.signaturesOffset.high)))return"signaturesOffset: integer|Long expected";if(null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&!se.isInteger(e.signaturesSize)&&!(e.signaturesSize&&se.isInteger(e.signaturesSize.low)&&se.isInteger(e.signaturesSize.high)))return"signaturesSize: integer|Long expected";if(null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&!se.isInteger(e.minorVersion))return"minorVersion: integer expected";if(null!=e.partitions&&e.hasOwnProperty("partitions")){if(!Array.isArray(e.partitions))return"partitions: array expected";for(var t=0;t>>0),null!=e.signaturesOffset&&(se.Long?(t.signaturesOffset=se.Long.fromValue(e.signaturesOffset)).unsigned=!0:"string"===typeof e.signaturesOffset?t.signaturesOffset=parseInt(e.signaturesOffset,10):"number"===typeof e.signaturesOffset?t.signaturesOffset=e.signaturesOffset:"object"===Object(re["a"])(e.signaturesOffset)&&(t.signaturesOffset=new se.LongBits(e.signaturesOffset.low>>>0,e.signaturesOffset.high>>>0).toNumber(!0))),null!=e.signaturesSize&&(se.Long?(t.signaturesSize=se.Long.fromValue(e.signaturesSize)).unsigned=!0:"string"===typeof e.signaturesSize?t.signaturesSize=parseInt(e.signaturesSize,10):"number"===typeof e.signaturesSize?t.signaturesSize=e.signaturesSize:"object"===Object(re["a"])(e.signaturesSize)&&(t.signaturesSize=new se.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0))),null!=e.minorVersion&&(t.minorVersion=e.minorVersion>>>0),e.partitions){if(!Array.isArray(e.partitions))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected");t.partitions=[];for(var n=0;n>>0,e.maxTimestamp.high>>>0).toNumber())),null!=e.dynamicPartitionMetadata){if("object"!==Object(re["a"])(e.dynamicPartitionMetadata))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected");t.dynamicPartitionMetadata=ce.chromeos_update_engine.DynamicPartitionMetadata.fromObject(e.dynamicPartitionMetadata)}if(null!=e.partialUpdate&&(t.partialUpdate=Boolean(e.partialUpdate)),e.apexInfo){if(!Array.isArray(e.apexInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected");t.apexInfo=[];for(var r=0;r>>0,e.signaturesOffset.high>>>0).toNumber(!0):e.signaturesOffset),null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&("number"===typeof e.signaturesSize?n.signaturesSize=t.longs===String?String(e.signaturesSize):e.signaturesSize:n.signaturesSize=t.longs===String?se.Long.prototype.toString.call(e.signaturesSize):t.longs===Number?new se.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0):e.signaturesSize),null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&(n.minorVersion=e.minorVersion),e.partitions&&e.partitions.length){n.partitions=[];for(var o=0;o>>0,e.maxTimestamp.high>>>0).toNumber():e.maxTimestamp),null!=e.dynamicPartitionMetadata&&e.hasOwnProperty("dynamicPartitionMetadata")&&(n.dynamicPartitionMetadata=ce.chromeos_update_engine.DynamicPartitionMetadata.toObject(e.dynamicPartitionMetadata,t)),null!=e.partialUpdate&&e.hasOwnProperty("partialUpdate")&&(n.partialUpdate=e.partialUpdate),e.apexInfo&&e.apexInfo.length){n.apexInfo=[];for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:"";return Object(he["a"])(this,n),e=t.call(this),e.offset=0,e.contentType=r,e.blob=new Blob([],{type:r}),e.prefixLength=0,e}return Object(fe["a"])(n,[{key:"readHeader",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r,a,i,o,s,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return n=0,r=function(e){var r=Ie(t,n,e);return n+=e,r},e.next=4,t.slice(0,ke).arrayBuffer();case 4:if(a=e.sent,i=new TextDecoder,o=a.slice(0,ve.length),s=i.decode(o),s==ve){e.next=10;break}throw new Error("MAGIC is not correct, expected: ".concat(ve," actual: ").concat(s));case 10:return n+=ve.length,e.next=13,r(we);case 13:return c=e.sent,e.next=16,r(xe);case 16:if(l=e.sent,c==Pe){e.next=19;break}throw new Error("Unexpected major version number: ".concat(c));case 19:return e.next=21,r(Se);case 21:u=e.sent,this.header=new Le(s,c,l,u);case 23:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"writeUint8Array",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(Object(pe["a"])(Object(de["a"])(n.prototype),"writeUint8Array",this).call(this,t),this.blob=new Blob([this.blob,t.buffer],{type:this.contentType}),this.offset=this.blob.size,!(this.offset>=ke&&0==this.prefixLength)){e.next=9;break}return console.log("Parsing header!"),e.next=7,this.readHeader(this.blob);case 7:this.prefixLength=ke+this.header.manifest_len+this.header.metadata_signature_len,console.log("Computed metadata length: ".concat(this.prefixLength));case 9:if(!(this.prefixLength>0)){e.next=14;break}if(console.log("".concat(this.offset,"/").concat(this.prefixLength)),!(this.offset>=this.prefixLength)){e.next=14;break}throw this.blob=this.blob.slice(0,this.prefixLength),new Ee;case 14:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getData",value:function(){return this.blob}}]),n}(Oe["Writer"]),Te=function(){function e(t){Object(he["a"])(this,e),t instanceof File?this.zipreader=new Oe["ZipReader"](new Oe["BlobReader"](t)):t instanceof URL?this.zipreader=new Oe["ZipReader"](new Oe["HttpReader"](t.href)):this.zipreader=t.reader}return Object(fe["a"])(e,[{key:"getMetadataLength",value:function(){return ke+this.header.manifest_len+this.header.metadata_signature_len}},{key:"unzip",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a,i,o;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.zipreader.getEntries();case 2:t=e.sent,n=Object(ue["a"])(t),e.prev=4,n.s();case 6:if((r=n.n()).done){e.next=35;break}if(a=r.value,"payload.bin"!=a.filename){e.next=28;break}return i=new Ae(""),e.prev=10,e.next=13,a.getData(i);case 13:e.next=22;break;case 15:if(e.prev=15,e.t0=e["catch"](10),!(e.t0 instanceof Ee)){e.next=20;break}e.next=22;break;case 20:throw console.log(e.t0),e.t0;case 22:return this.buffer=i.getData(),e.next=25,this.readManifest(this.buffer,i.header);case 25:console.log("AB OTA manifest parsed"),e.next=33;break;case 28:if("META-INF/com/android/metadata"!=a.filename){e.next=33;break}return e.next=31,a.getData(new Oe["TextWriter"]);case 31:this.metadata=e.sent,console.log("OTA Package metadata parsed");case 33:e.next=6;break;case 35:e.next=40;break;case 37:e.prev=37,e.t1=e["catch"](4),n.e(e.t1);case 40:return e.prev=40,n.f(),e.finish(40);case 43:if(this.manifest){e.next=57;break}return console.log("Failed to parse AB OTA package, falling back to non-AB"),e.prev=45,o=new ye(this.zipreader),e.next=49,o.init();case 49:o.nonAB=!0,this.manifest=o,e.next=57;break;case 53:return e.prev=53,e.t2=e["catch"](45),alert("Please select a legit OTA package"),e.abrupt("return");case 57:case"end":return e.stop()}}),e,this,[[4,37,40,43],[10,15],[45,53]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"readManifest",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.header=n,r=ke,e.next=4,t.slice(r,r+n.manifest_len).arrayBuffer();case 4:return a=e.sent,r+=n.manifest_len,this.manifest=le.DeltaArchiveManifest.decode(new Uint8Array(a)),e.next=9,t.slice(r,r+n.metadata_signature_len).arrayBuffer();case 9:i=e.sent,r+=n.metadata_signature_len,this.metadata_signature=le.Signatures.decode(new Uint8Array(i)),this.manifest.nonAB=!1;case 13:case"end":return e.stop()}}),e,this)})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"parseMetadata",value:function(){var e,t=Object(ue["a"])(_e);try{for(t.s();!(e=t.n()).done;){var n=e.value,r=new RegExp(n.prefix+".+");this.metadata.match(r)?this[n.key]=Fe(this.metadata.match(r)[0],n.prefix):this[n.key]=""}}catch(a){t.e(a)}finally{t.f()}}},{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.unzip();case 2:this.parseMetadata();case 3:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}]),e}(),Be=function(e){Object(ge["a"])(n,e);var t=Object(be["a"])(n);function n(){return Object(he["a"])(this,n),t.apply(this,arguments)}return Object(fe["a"])(n,[{key:"getWithDefault",value:function(e){return this.has(e)?this.get(e):e}}]),n}(Object(me["a"])(Map)),Ne=Object(fe["a"])((function e(){Object(he["a"])(this,e);var t=le.InstallOperation.Type;this.mapType=new Be;for(var n=0,r=Object.keys(t);n1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:16,r="",a=0;a3&&void 0!==arguments[3]?arguments[3]:15;Object(he["a"])(this,e),this.statisticData=t,this.trimmedData=Qe(t,a),this.title=n,this.unit=r,this.maximumEntries=a}return Object(fe["a"])(e,[{key:"listData",value:function(){var e,t="",n=Object(ue["a"])(this.statisticData);try{for(n.s();!(e=n.n()).done;){var r=Object(Ye["a"])(e.value,2),a=r[0],i=r[1];t+=a+" : "+i.toString()+" Blocks\n"}}catch(o){n.e(o)}finally{n.f()}return t}},{key:"getEchartsOption",value:function(){var e={};return e.title={text:this.title,left:"center"},e.tooltip={trigger:"item",formatter:"{a}
{b} : {c} "+this.unit+" ({d}%)"},e.legend={orient:"horizontal",left:"top",top:"10%",data:Array.from(this.trimmedData.keys())},e.series=[{name:this.title,type:"pie",radius:"55%",center:["50%","60%"],data:Array.from(this.trimmedData).map((function(e){return{value:e[1],name:e[0]}})),emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],e}}]),e}();function Qe(e,t){if(e.size<=t)return e;for(var n=new Map,r=0;ri&&(i=u,o=l)}}catch(m){s.e(m)}finally{s.f()}n.set(o,i)}var p,d=0,f=Object(ue["a"])(e);try{for(f.s();!(p=f.n()).done;){var h=Object(Ye["a"])(p.value,2),g=h[0],b=h[1];n.get(g)||(d+=b)}}catch(m){f.e(m)}finally{f.f()}return n.set("other",d),n}var et=function(){function e(t){Object(he["a"])(this,e),t instanceof File?this.build=new Oe["ZipReader"](new Oe["BlobReader"](t)):this.build=new Oe["ZipReader"](new Oe["HttpReader"](t.href)),this.mapFiles=new Map,this.maps=new Map}return Object(fe["a"])(e,[{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a=this;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.build.getEntries();case 2:t=e.sent,n=/IMAGES\/[a-z_]*\.map/g,r=/[\w_]+(?=\.map)/g,t.forEach((function(e){e.filename.match(n)&&a.mapFiles.set(e.filename.match(r)[0],e)}));case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"add",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,c,l,u,p,d,f,h,g;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:for(r=[],a=/\d+/g,i=/\d+\-\d+/g,o=0;o");if(!this.mapFiles.get(t)){e.next=14;break}return e.next=7,this.mapFiles.get(t).getData(new Oe["TextWriter"]);case 7:s=e.sent,c=s.split("\n"),l=Object(ue["a"])(c);try{for(l.s();!(u=l.n()).done;)for(p=u.value,d=p.split(" "),f=1;f2&&void 0!==s[2]?s[2]:4096,a=s.length>3&&void 0!==s[3]?s[3]:null,e.t0=t,e.next="blocks"===e.t0?5:"payload"===e.t0?8:"COWmerge"===e.t0?11:"filenames"===e.t0?14:"extensions"===e.t0?21:28;break;case 5:return i=at(n),o=new Ke(i,"Operated blocks in target build","blocks"),e.abrupt("break",28);case 8:return i=ot(n),o=new Ke(i,"Payload disk usage","bytes"),e.abrupt("break",28);case 11:return i=it(n,r),o=new Ke(i,"COW merge operations","blocks"),e.abrupt("break",28);case 14:if(null!=a){e.next=16;break}throw new Error("Target file is required for filenames analysis");case 16:return e.next=18,lt(n,r,a);case 18:return i=e.sent,o=new Ke(i,"Size of operated filenames","bytes"),e.abrupt("break",28);case 21:if(null!=a){e.next=23;break}throw new Error("Target file is required for filenames analysis");case 23:return e.next=25,st(n,r,a);case 25:return i=e.sent,o=new Ke(i,"Size of operated extensions","bytes"),e.abrupt("break",28);case 28:if(!o){e.next=32;break}return e.abrupt("return",o);case 32:throw"Please double check if this is a proper AB OTA package.";case 33:case"end":return e.stop()}}),e)}))),dt.apply(this,arguments)}function ft(e){if(!e)return 0;var t=function(e,t){return e+t.numBlocks};return e.reduce(t,0)}function ht(e){var t=function(e,t){return e+"("+t.startBlock+","+t.numBlocks+")"};return e.reduce(t,"")}function gt(e,t,n){for(var r=ft(t),a=new Map,i=0;i1?t[t.length-1]:"unknown"===t[0]?"unknown":"<"==e[0]&&e.endsWith(">")?e:"no-extension"}var mt=Object(r["m"])({props:{operation:{type:Object,required:!0},mapType:{type:Be,required:!0}},data:function(){return{srcTotalBlocks:0,srcBlocks:"",dstTotalBlocks:0,dstBlocks:""}},mounted:function(){this.operation.srcExtents&&(this.srcTotalBlocks=ft(this.operation.srcExtents),this.srcBlocks=ht(this.operation.srcExtents)),this.operation.dstExtents&&(this.dstTotalBlocks=ft(this.operation.dstExtents),this.dstBlocks=ht(this.operation.dstExtents))}});n("8edb");mt.render=$e,mt.__scopeId="data-v-44174082";var Ot=mt,yt=Object(r["m"])({components:{OperationDetail:Ot},props:{partition:{type:le.PartitionUpdate,required:!0},dynamicPartitionList:{type:Array,required:!0}},data:function(){return{showOPs:!1,showInfo:!1,opType:new Ne}},methods:{toggle:function(e){this[e]=!this[e]},octToHex:Ce},computed:{readableTimestamp:function(){var e=parseInt(this.partition.version);return isNaN(e)?"":new Date(1e3*e).toString()},isDynamicPartition:function(){return this.dynamicPartitionList.indexOf(this.partition.partitionName)>=0}}});n("edc2");yt.render=ne,yt.__scopeId="data-v-6dba348a";var jt=yt,vt=(n("498a"),Object(r["Z"])("data-v-62f2be1b"));Object(r["D"])("data-v-62f2be1b");var wt=Object(r["l"])("h3",null,"Basic infos",-1),xt={class:"align"},St=Object(r["l"])("strong",null," File name ",-1),kt=Object(r["l"])("strong",null," File size ",-1),Pt={class:"align"},_t={class:"wrap"},Et={key:2},Lt={class:"align"},It=Object(r["l"])("strong",null," Incremental ",-1),zt={key:0},At={key:1},Tt=Object(r["l"])("strong",null," Partial ",-1),Bt={key:0},Nt={key:1},Dt=Object(r["l"])("strong",null," A/B update ",-1),Ct={key:0},Ft={key:1},Rt=Object(r["l"])("strong",null," VAB ",-1),Mt={key:0},Ut={key:1},Ht=Object(r["l"])("strong",null," VABC ",-1),Vt={key:0},Wt={key:1},Zt={key:0},Jt=Object(r["l"])("strong",null," Total Dynamic Partition Size ",-1),Xt={key:1},qt=Object(r["l"])("strong",null," Total VABC COW Size ",-1),Gt={key:2},$t=Object(r["l"])("strong",null," Security Patch Level ",-1);Object(r["B"])();var Yt=vt((function(e,t,n,a,i,o){return Object(r["A"])(),Object(r["i"])(r["a"],null,[wt,e.zipFile?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:0},e.$attrs),[Object(r["l"])("ul",xt,[Object(r["l"])("li",null,[St,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileName()),1)]),Object(r["l"])("li",null,[kt,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileSize())+" Bytes",1)])])],16)):Object(r["j"])("",!0),e.payload&&e.payload.metadata?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:1},e.$attrs),[Object(r["l"])("ul",Pt,[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.otaMetadata,(function(t){return Object(r["A"])(),Object(r["i"])("li",{key:t.name},[Object(r["l"])("strong",null,Object(r["N"])(t.name.trim()+" "),1),Object(r["l"])("p",_t,Object(r["N"])(String(e.payload[t.key]).trim()),1)])})),128))])],16)):Object(r["j"])("",!0),e.payload&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])("div",Et,[Object(r["l"])("ul",Lt,[Object(r["l"])("li",null,[It,e.payload.preBuild?(Object(r["A"])(),Object(r["i"])("span",zt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",At," ❌ "))]),Object(r["l"])("li",null,[Tt,e.payload.manifest.partialUpdate?(Object(r["A"])(),Object(r["i"])("span",Bt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Nt," ❌ "))]),Object(r["l"])("li",null,[Dt,e.payload.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",Ft," ❌ ")):(Object(r["A"])(),Object(r["i"])("span",Ct," ✅ "))]),Object(r["l"])("li",null,[Rt,e.payload.manifest.dynamicPartitionMetadata.snapshotEnabled?(Object(r["A"])(),Object(r["i"])("span",Mt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Ut," ❌ "))]),Object(r["l"])("li",null,[Ht,e.payload.manifest.dynamicPartitionMetadata.vabcEnabled?(Object(r["A"])(),Object(r["i"])("span",Vt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Wt," ❌ "))]),e.totalDynamicPartitionSize?(Object(r["A"])(),Object(r["i"])("li",Zt,[Jt,Object(r["k"])(" "+Object(r["N"])(e.totalDynamicPartitionSize),1)])):Object(r["j"])("",!0),e.totalCOWSize?(Object(r["A"])(),Object(r["i"])("li",Xt,[qt,Object(r["k"])(" "+Object(r["N"])(e.totalCOWSize),1)])):Object(r["j"])("",!0),e.securityPatchLevel?(Object(r["A"])(),Object(r["i"])("li",Gt,[$t,Object(r["k"])(" "+Object(r["N"])(e.securityPatchLevel),1)])):Object(r["j"])("",!0)])])):Object(r["j"])("",!0)],64)})),Kt=(n("4de4"),n("6062"),n("2ca0"),function(){function e(t){Object(he["a"])(this,e),this.file=t,this.reader=tn(t)}return Object(fe["a"])(e,[{key:"getFileName",value:function(){return nn(this.file)}},{key:"getFileSize",value:function(){return this.file instanceof File?this.file.size:0}}]),e}());function Qt(e,t){return en.apply(this,arguments)}function en(){return en=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return r=t,a=new Oe["ZipWriter"](new Oe["BlobWriter"]("application/zip")),e.next=4,r.getEntries();case 4:i=e.sent,o=Object(ue["a"])(i.filter((function(e){return!!e&&n(e)}))),e.prev=6,o.s();case 8:if((s=o.n()).done){e.next=18;break}return c=s.value,l=new Oe["BlobWriter"],e.next=13,c.getData(l);case 13:u=e.sent,console.log("Adding ".concat(c.filename,", ").concat(u.size)),a.add(c.filename,new Oe["BlobReader"](l.getData()),{level:0});case 16:e.next=8;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e["catch"](6),o.e(e.t0);case 23:return e.prev=23,o.f(),e.finish(23);case 26:return e.abrupt("return",a);case 27:case"end":return e.stop()}}),e,null,[[6,20,23,26]])}))),en.apply(this,arguments)}function tn(e){return e instanceof File?new Oe["ZipReader"](new Oe["BlobReader"](e)):new Oe["ZipReader"](new Oe["HttpReader"](e.href))}function nn(e){return e instanceof File?e.name:e.pathname}function rn(e){return an.apply(this,arguments)}function an(){return an=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Qt(tn(t),(function(e){return e.filename.startsWith("META/")||e.filename.endsWith(".map")}));case 2:return n=e.sent,e.next=5,n.close();case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)}))),an.apply(this,arguments)}function on(e){return sn.apply(this,arguments)}function sn(){return sn=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Qt(t.zipreader,(function(e){return"payload.bin"!=e.filename}));case 2:return n=e.sent,e.next=5,n.add("payload.bin",new Oe["BlobReader"](t.buffer.slice(0,t.getMetadataLength())),{level:0});case 5:return e.next=7,n.close();case 7:return r=e.sent,e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)}))),sn.apply(this,arguments)}function cn(e,t,n){var r=window.URL.createObjectURL(e);t.href=r,t.download=n,t.click(),window.URL.revokeObjectURL(r)}function ln(e,t){return e.endsWith(t)?e:e+t}var un=Object(r["m"])({props:{zipFile:{type:Kt,required:!0},payload:{type:Te,required:!0}},data:function(){return{MetadataFormat:_e}},computed:{otaMetadata:function(){var e=this;return _e.filter((function(t){return String(e.payload[t.key]).length>0}))},totalCOWSize:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.partitions.map((function(e){return e.estimateCowSize||0}));return n?n.reduce((function(e,t){return e+t})):0},securityPatchLevel:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.securityPatchLevel;return n||""},totalDynamicPartitionSize:function(){var e,t,n,r,a=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.groups;if(!a)return 0;var i=new Set(a.flatMap((function(e){return e.partitionNames}))),o=(null===(r=this.payload.manifest)||void 0===r?void 0:r.partitions.filter((function(e){return i.has(e.partitionName)})))||[];return o.length<=0?0:o.map((function(e){var t;return(null===(t=e.newPartitionInfo)||void 0===t?void 0:t.size)||0})).reduce((function(e,t){return e+t}))}}});n("f029");un.render=Yt,un.__scopeId="data-v-62f2be1b";var pn=un,dn=Object(r["m"])({components:{PartitionDetail:jt,BasicInfo:pn},props:{zipFile:{type:Kt,default:null},payload:{type:Te,default:null}},methods:{octToHex:Ce,exportOTAPackage:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,on(e.payload);case 2:n=t.sent,r=e.$refs["download"],cn(n,r,"trimmed_"+ln(e.zipFile.getFileName(),".zip"));case 5:case"end":return t.stop()}}),t)})))()}},computed:{dynamicPartitions:function(){var e,t,n;return(null===(e=this.payload.manifest)||void 0===e||null===(t=e.dynamicPartitionMetadata)||void 0===t||null===(n=t.groups)||void 0===n?void 0:n.flatMap((function(e){return e.partitionNames||[]})))||[]}}});n("dc41");dn.render=A,dn.__scopeId="data-v-05db67f2";var fn=dn,hn=Object(r["Z"])("data-v-44b569bd");Object(r["D"])("data-v-44b569bd");var gn=Object(r["k"])("Export Target File Metadata"),bn={ref:"download"},mn={key:1},On=Object(r["k"])(" Analyse Installed Blocks (in target build) "),yn=Object(r["k"])(" Analyse Payload Composition "),jn=Object(r["k"])(" Analyse COW Merge Operations "),vn={key:0,class:"tooltiptext"},wn=Object(r["k"])(" Analyse Filenames "),xn=Object(r["k"])(" Analyse File Extensions ");Object(r["B"])();var Sn=hn((function(e,t,n,a,i,o){var s=Object(r["I"])("v-btn"),c=Object(r["I"])("PartialCheckbox"),l=Object(r["I"])("PieChart"),u=Object(r["I"])("v-divider"),p=Object(r["I"])("v-col"),d=Object(r["I"])("v-row"),f=Object(r["I"])("BaseFile");return Object(r["A"])(),Object(r["i"])(r["a"],null,[e.targetFile?(Object(r["A"])(),Object(r["i"])(s,{key:0,block:"",class:"md-6",onClick:e.exportTargetFileMetadata},{default:hn((function(){return[gn]})),_:1},8,["onClick"])):Object(r["j"])("",!0),Object(r["l"])("a",bn,null,512),Object(r["l"])(c,{modelValue:e.partitionInclude,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.partitionInclude=t}),labels:e.updatePartitions},null,8,["modelValue","labels"]),e.echartsData?(Object(r["A"])(),Object(r["i"])("div",mn,[Object(r["l"])(l,{echartsData:e.echartsData,onClick:e.piechartClick},null,8,["echartsData","onClick"])])):Object(r["j"])("",!0),Object(r["l"])(u),Object(r["l"])(d,null,{default:hn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"},{default:hn((function(){return[Object(r["l"])(s,{block:"",onClick:t[2]||(t[2]=function(t){return e.updateChart("blocks")})},{default:hn((function(){return[On]})),_:1})]})),_:1}),Object(r["l"])(p,{cols:"12",md:"6"},{default:hn((function(){return[Object(r["l"])(s,{block:"",onClick:t[3]||(t[3]=function(t){return e.updateChart("payload")})},{default:hn((function(){return[yn]})),_:1})]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:hn((function(){return[Object(r["l"])(p,{cols:"12",md:"6",class:"tooltip"},{default:hn((function(){return[Object(r["l"])(s,{disabled:e.manifest.nonAB||!e.manifest.dynamicPartitionMetadata.vabcEnabled,title:"Only available for VABC update",block:"",onClick:t[4]||(t[4]=function(t){return e.updateChart("COWmerge")})},{default:hn((function(){return[jn]})),_:1},8,["disabled"]),e.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",vn," This function is only supported in A/B OTA ")):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(p,{cols:"12",md:"6"},{default:hn((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[5]||(t[5]=function(t){return e.updateChart("filenames")})},{default:hn((function(){return[wn]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:hn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"},{default:hn((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[6]||(t[6]=function(t){return e.updateChart("extensions")})},{default:hn((function(){return[xn]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:hn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"}),Object(r["l"])(p,{cols:"12",md:"6"},{default:hn((function(){return[e.demo?Object(r["j"])("",!0):(Object(r["A"])(),Object(r["i"])(f,{key:0,label:"Drag and drop or Select The target Android build",onFileSelect:e.selectBuild},null,8,["onFileSelect"]))]})),_:1})]})),_:1})],64)})),kn=n("bc3a"),Pn=n.n(kn),_n=Object(r["Z"])("data-v-533f2336");Object(r["D"])("data-v-533f2336");var En={key:0};Object(r["B"])();var Ln=_n((function(e,t,n,a,i,o){var s=Object(r["I"])("v-btn"),c=Object(r["I"])("v-col"),l=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(r["a"],null,[Object(r["l"])(s,{block:"",type:"button",class:"my-5",onClick:e.revertAllSelection},{default:_n((function(){return[Object(r["k"])(Object(r["N"])(e.selectAllText[e.selectAll]),1)]})),_:1},8,["onClick"]),Object(r["l"])(l,{class:"mb-5"},{default:_n((function(){return[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.labels,(function(n){return Object(r["A"])(),Object(r["i"])(c,{key:n,cols:"12",md:"4"},{default:_n((function(){return[Object(r["l"])("input",{type:"checkbox",value:n,checked:e.modelValue.get(n),onChange:t[1]||(t[1]=function(t){return e.updateSelected(t.target.value)})},null,40,["value","checked"]),n?(Object(r["A"])(),Object(r["i"])("label",En,Object(r["N"])(n),1)):Object(r["j"])("",!0)]})),_:2},1024)})),128))]})),_:1})],64)})),In=Object(r["m"])({props:{labels:{type:Array,default:new Array},modelValue:{type:Map,default:new Map}},data:function(){return{selectAll:1,selectAllText:["Select All","Unselect All"]}},mounted:function(){var e,t=Object(ue["a"])(this.labels);try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,!0)}}catch(r){t.e(r)}finally{t.f()}},methods:{updateSelected:function(e){this.modelValue.set(e,!this.modelValue.get(e)),this.$emit("update:modelValue",this.modelValue)},revertAllSelection:function(){this.selectAll=1-this.selectAll;var e,t=Object(ue["a"])(this.modelValue.keys());try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,Boolean(this.selectAll))}}catch(r){t.e(r)}finally{t.f()}}}});n("a75a");In.render=Ln,In.__scopeId="data-v-533f2336";var zn=In,An=n("2909"),Tn="undefined"===typeof arguments?void 0:arguments,Bn=Object(r["Z"])("data-v-5d1cb486"),Nn=Bn((function(e,t,n,a,i,o){var s=Object(r["I"])("v-chart");return Object(r["A"])(),Object(r["i"])(s,{class:"chart",option:o.getEchartsOption,onClick:t[1]||(t[1]=function(t){return e.$emit.apply(e,["click"].concat(Object(An["a"])(Tn)))})},null,8,["option"])})),Dn=n("ade3"),Cn=n("22b4"),Fn=n("f95e"),Rn=n("49bb"),Mn=n("9394"),Un=n("2da7"),Hn=n("ff32"),Vn=n("5c7f");Object(Cn["a"])([Fn["a"],Rn["a"],Mn["a"],Un["a"],Hn["a"]]);var Wn={components:{VChart:Vn["b"]},provide:Object(Dn["a"])({},Vn["a"],"dark"),props:{echartsData:{type:Ke,required:!0}},computed:{getEchartsOption:function(){return this.echartsData.getEchartsOption()}}};n("47e0");Wn.render=Nn,Wn.__scopeId="data-v-5d1cb486";var Zn=Wn,Jn=Object(r["m"])({components:{PartialCheckbox:zn,PieChart:Zn,BaseFile:x},props:{manifest:{type:le.DeltaArchiveManifest,default:function(){return[]}},demo:{type:Boolean,default:!1}},data:function(){return{partitionInclude:new Map,echartsData:null,listData:"",targetFile:null}},computed:{updatePartitions:function(){return this.manifest.partitions.map((function(e){return e.partitionName}))}},mounted:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(!e.demo){t.next=11;break}return t.prev=1,t.next=4,Pn.a.get("./files/cf_x86_target_file_demo.zip",{responseType:"blob"});case 4:n=t.sent,e.targetFile=new File([n.data],"target_demo.zip"),t.next=11;break;case 8:t.prev=8,t.t0=t["catch"](1),console.log("Please put a proper example target file in /public/files/");case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))()},methods:{piechartClick:function(e){console.log(e)},updateChart:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return r=t.manifest.partitions.filter((function(e){return t.partitionInclude.get(e.partitionName)})),n.prev=1,n.next=4,pt(e,r,t.manifest.blockSize,t.targetFile);case 4:t.echartsData=n.sent,n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Cannot be processed for the following issue: ".concat(n.t0));case 10:case"end":return n.stop()}}),n,null,[[1,7]])})))()},selectBuild:function(e){this.targetFile=e},exportTargetFileMetadata:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,rn(e.targetFile);case 2:n=t.sent,r=e.$refs["download"],cn(n,r,"trimmed_"+ln(nn(e.targetFile),".zip"));case 5:case"end":return t.stop()}}),t)})))()}}});n("4b95");Jn.render=Sn,Jn.__scopeId="data-v-44b569bd";var Xn=Jn,qn=Object(r["m"])({components:{BaseFile:x,PayloadDetail:fn,PayloadComposition:Xn},data:function(){return{zipFile:null,payload:null}},methods:{unpackOTA:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return t.zipFile=new Kt(e),n.prev=1,t.payload=new Te(t.zipFile),n.next=5,t.payload.init();case 5:n.next=11;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Please check if this is a correct OTA package (.zip). ".concat(n.t0)),console.log(n.t0);case 11:case"end":return n.stop()}}),n,null,[[1,7]])})))()}}});qn.render=h;var Gn=qn;function $n(e,t,n,a,i,o){var s=Object(r["I"])("PayloadDetail"),c=Object(r["I"])("v-col"),l=Object(r["I"])("v-divider"),u=Object(r["I"])("PayloadComposition"),p=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(p,null,{default:Object(r["X"])((function(){return[Object(r["l"])(c,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload?(Object(r["A"])(),Object(r["i"])(s,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(l,{vertical:""}),Object(r["l"])(c,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])(u,{key:0,manifest:e.payload.manifest,demo:!0},null,8,["manifest"])):Object(r["j"])("",!0)]})),_:1})]})),_:1})}var Yn=Object(r["m"])({components:{PayloadDetail:fn,PayloadComposition:Xn},data:function(){return{zipFile:null,payload:null}},created:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,Pn.a.get("./files/cf_x86_demo.zip",{responseType:"blob"});case 3:return n=t.sent,e.zipFile=new Kt(new File([n.data],"ota_demo.zip")),e.payload=new Te(e.zipFile),t.next=8,e.payload.init();case 8:t.next=13;break;case 10:t.prev=10,t.t0=t["catch"](0),console.log("Please put a proper example OTA in /public/files/");case 13:case"end":return t.stop()}}),t,null,[[0,10]])})))()}});Yn.render=$n;var Kn=Yn,Qn={class:"about"},er=Object(r["l"])("p",null,"A web based tool to inspect Android OTA packages.",-1);function tr(e,t){return Object(r["A"])(),Object(r["i"])("div",Qn,[er])}const nr={};nr.render=tr;var rr=nr,ar=Object(r["Z"])("data-v-50c6f348");Object(r["D"])("data-v-50c6f348");var ir=Object(r["l"])("h1",null,"Not Found!",-1),or=Object(r["l"])("p",null,[Object(r["l"])("a",{href:"/"},"Go home?")],-1);Object(r["B"])();var sr=ar((function(e,t){var n=Object(r["I"])("center");return Object(r["A"])(),Object(r["i"])(n,null,{default:ar((function(){return[ir,or]})),_:1})}));n("8e71");const cr={};cr.render=sr,cr.__scopeId="data-v-50c6f348";var lr=cr,ur=[{path:"/",name:"Analysis",component:Gn,meta:{title:"Analyse OTA package - from AOSP"}},{path:"/demo",name:"Demo",component:Kn},{path:"/about",name:"About",component:rr},{path:"/:catchAll(.*)",name:"Not Found",component:lr}],pr=Object(d["a"])({history:Object(d["b"])("/analyseOTA/"),routes:ur});pr.beforeEach((function(e,t,n){var r=e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.title})),a=(e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})),t.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})));r?document.title=r.meta.title:a&&(document.title=a.meta.title),Array.from(document.querySelectorAll("[data-vue-router-controlled]")).map((function(e){return e.parentNode.removeChild(e)})),n()}));var dr=pr,fr=n("5502"),hr=Object(fr["a"])({state:{},mutations:{},actions:{},modules:{}}),gr=Object(r["h"])(p);gr.use(dr),gr.use(hr),gr.use(s),gr.mount("#app")},d978:function(e,t,n){},dc41:function(e,t,n){"use strict";n("027d")},edc2:function(e,t,n){"use strict";n("c021")},f029:function(e,t,n){"use strict";n("3336")}}); +//# sourceMappingURL=app.283b932c.js.map \ No newline at end of file diff --git a/analyseOTA/js/app.283b932c.js.map b/analyseOTA/js/app.283b932c.js.map new file mode 100644 index 0000000..195137b --- /dev/null +++ b/analyseOTA/js/app.283b932c.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?1825","webpack:///./src/components/PieChart.vue?3f25","webpack:///./src/components/BaseFile.vue?5b74","webpack:///./src/components/PayloadComposition.vue?8d59","webpack:///./src/views/NotFound.vue?18b8","webpack:///./src/components/OperationDetail.vue?7823","webpack:///./src/components/PartialCheckbox.vue?cce7","webpack:///./src/plugins/vuetify.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?6697","webpack:///./src/views/PackageAnalysis.vue","webpack:///./src/components/BaseFile.vue","webpack:///./src/components/BaseFile.vue?5af0","webpack:///./src/components/BaseFile.vue?408d","webpack:///./src/components/PayloadDetail.vue","webpack:///./src/components/PartitionDetail.vue","webpack:///./src/services/update_metadata_pb.js","webpack:///./src/services/payload_nonab.ts","webpack:///./src/services/payload.ts","webpack:///./src/components/OperationDetail.vue","webpack:///./src/services/echarts_data.ts","webpack:///./src/services/map_parser.ts","webpack:///./src/services/payload_composition.ts","webpack:///./src/components/OperationDetail.vue?0239","webpack:///./src/components/OperationDetail.vue?19cd","webpack:///./src/components/PartitionDetail.vue?7d27","webpack:///./src/components/PartitionDetail.vue?b40d","webpack:///./src/components/BasicInfo.vue","webpack:///./src/services/trim_zip.ts","webpack:///./src/components/BasicInfo.vue?bb39","webpack:///./src/components/BasicInfo.vue?e053","webpack:///./src/components/PayloadDetail.vue?cdd8","webpack:///./src/components/PayloadDetail.vue?a20c","webpack:///./src/components/PayloadComposition.vue","webpack:///./src/components/PartialCheckbox.vue","webpack:///./src/components/PartialCheckbox.vue?fbe3","webpack:///./src/components/PartialCheckbox.vue?59db","webpack:///./src/components/PieChart.vue","webpack:///./src/components/PieChart.vue?1278","webpack:///./src/components/PayloadComposition.vue?3e04","webpack:///./src/components/PayloadComposition.vue?d59c","webpack:///./src/views/PackageAnalysis.vue?3fdf","webpack:///./src/views/PackageAnalysis.vue?2d24","webpack:///./src/views/Demo.vue","webpack:///./src/views/Demo.vue?9616","webpack:///./src/views/Demo.vue?e633","webpack:///./src/views/About.vue","webpack:///./src/views/About.vue?aa81","webpack:///./src/views/NotFound.vue","webpack:///./src/views/NotFound.vue?2812","webpack:///./src/router/index.ts","webpack:///./src/store/index.ts","webpack:///./src/main.ts","webpack:///./src/components/PayloadDetail.vue?0b74","webpack:///./src/components/PartitionDetail.vue?3d89","webpack:///./src/components/BasicInfo.vue?5fd0"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","components","directives","theme","defaultTheme","rounded","color","links","link","to","class","fluid","render","style","cols","md","label","unpackOTA","zipFile","payload","vertical","manifest","dragover","dragleave","drop","fileName","ref","type","accept","handleFileChange","placeholder","url","urlKeyup","props","String","default","emits","computed","parsedURL","URL","this","methods","event","currentTarget","target","files","selectedFile","$emit","preventDefault","classList","contains","add","remove","dataTransfer","console","log","error","__scopeId","exportOTAPackage","partitions","partition","partitionName","elevation","hover","shaped","dynamicPartitionList","dynamicPartitions","metadata_signature","nonAB","octToHex","signatures","oldPartitionInfo","isDynamicPartition","estimateCowSize","postinstallPath","toggle","showInfo","size","hash","newPartitionInfo","version","readableTimestamp","showOPs","operations","operation","dataSha256Hash","mapType","opType","$Reader","$protobuf","$Writer","$util","$root","chromeos_update_engine","Extent","properties","keys","startBlock","Long","fromBits","numBlocks","encode","message","writer","uint32","uint64","encodeDelimited","ldelim","decode","reader","end","undefined","len","pos","tag","skipType","decodeDelimited","verify","isInteger","low","high","fromObject","fromValue","unsigned","parseInt","LongBits","toNumber","toObject","options","defaults","long","longs","toString","Number","toJSON","constructor","toJSONOptions","Signatures","emptyArray","Signature","fork","Array","isArray","TypeError","arrays","newBuffer","unpaddedSignatureSize","bytes","fixed32","isString","base64","PartitionInfo","InstallOperation","srcExtents","dstExtents","dataOffset","dataLength","srcLength","dstLength","srcSha256Hash","int32","ProtocolError","instance","enums","Type","valuesById","values","CowMergeOperation","srcExtent","dstExtent","srcOffset","PartitionUpdate","newPartitionSignature","mergeOperations","runPostinstall","filesystemType","postinstallOptional","hashTreeDataExtent","hashTreeExtent","hashTreeAlgorithm","hashTreeSalt","fecDataExtent","fecExtent","fecRoots","string","bool","Boolean","DynamicPartitionGroup","partitionNames","DynamicPartitionMetadata","groups","snapshotEnabled","vabcEnabled","vabcCompressionParam","cowVersion","ApexInfo","packageName","isCompressed","decompressedSize","int64","ApexMetadata","apexInfo","DeltaArchiveManifest","blockSize","signaturesOffset","signaturesSize","minorVersion","maxTimestamp","dynamicPartitionMetadata","partialUpdate","securityPatchLevel","packedFile","Blocksize","regexName","getEntries","entries","entry","filename","match","newPartition","getData","rawText","parseTransferList","lines","split","totalBlocks","entryStashed","maxStashed","Uint8Array","sizeNewData","newDataSize","line","op","elements","reduce","parseRange","RegExp","uncompressedSize","extents","rangeset","regexRange","extent","_MAGIC","_VERSION_SIZE","_MANIFEST_LEN_SIZE","_METADATA_SIGNATURE_LEN_SIZE","_PAYLOAD_HEADER_SIZE","_BRILLO_MAJOR_PAYLOAD_VERSION","MetadataFormat","prefix","Error","magic","manifest_len","metadata_signature_len","readIntAt","buffer","position","DataView","arrayBuffer","view","getBigUint64","offset","a","BigInt","getUint32","b","bigNumber","getUint16","contentType","blob","Blob","prefixLength","cursor","readInt","ret","decoder","TextDecoder","magicBytes","header_version","header","array","readHeader","file","File","zipreader","href","readManifest","metadata","init","alert","manifestBlob","signatureBlob","formatter","regex","trimEntry","unzip","parseMetadata","has","Map","types","set","bufferArray","space","maxLine","hex_table","hex","toUpperCase","getWithDefault","srcTotalBlocks","srcBlocks","dstTotalBlocks","dstBlocks","statisticData","title","unit","maximumEntries","trimmedData","trimMap","table","option","text","left","tooltip","trigger","legend","orient","top","from","series","radius","center","map","pair","emphasis","itemStyle","shadowBlur","shadowOffsetX","shadowColor","new_map","curr","currKey","restTotal","targetFile","build","mapFiles","maps","regexPath","forEach","totalLength","regexNumber","mapText","fileEntries","right","InsertMap","names","ext","queryMap","addNumberToMap","operatedBlockStatistics","operatedBlocks","operationType","mergeOperationStatistics","Math","ceil","operatedPayloadStatistics","operatedFileExtensionsStatistics","operatedFilenamesStatistics","filenameStats","fileExtenstionStats","name2Extension","operatedFilenames","buildMap","operatedFileNames","query","extentDataLength","distributeFilenames","analysePartitions","metrics","statisticsData","echartsData","exts","accumulator","total","displayBlocks","filenames","distributedLengths","round","endsWith","required","mounted","OperationDetail","unixTimestamp","isNaN","Date","indexOf","$attrs","getFileName","getFileSize","otaMetadata","trim","preBuild","totalDynamicPartitionSize","totalCOWSize","getZipReader","trimZip","zip","filter","blobWriter","level","pathname","trimTargetFiles","startsWith","close","trimOTAPackage","getMetadataLength","downloadFile","downloadNode","createObjectURL","download","click","revokeObjectURL","ensureSuffix","str","suffix","cowSizes","spl","dynamicPartitionNamess","Set","flatMap","g","acc","cur","PartitionDetail","BasicInfo","$refs","block","exportTargetFileMetadata","partitionInclude","labels","updatePartitions","piechartClick","updateChart","disabled","demo","selectBuild","revertAllSelection","selectAllText","selectAll","checked","modelValue","updateSelected","$event","newSelect","getEchartsOption","VChart","provide","PartialCheckbox","PieChart","BaseFile","listData","responseType","param","partitionSelected","PayloadDetail","PayloadComposition","created","script","routes","path","component","PackageAnalysis","meta","Demo","About","NotFound","router","history","beforeEach","next","nearestWithTitle","matched","reverse","find","previousNearestWithMeta","metaTags","document","querySelectorAll","el","parentNode","removeChild","state","mutations","actions","app","App","use","store","vuetify","mount"],"mappings":"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","file":"js/app.283b932c.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/analyseOTA/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadComposition.vue?vue&type=style&index=0&id=44b569bd&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport 'vuetify/lib/styles/main.sass'\nimport { createVuetify } from 'vuetify'\nimport * as components from 'vuetify/lib/components'\nimport * as directives from 'vuetify/lib/directives'\n\nexport default createVuetify({\n components,\n directives,\n theme: {\n defaultTheme: 'dark'\n }\n})\n","\n\n\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=ee415730\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n label: {\n type: String,\n default: ''\n }\n },\n emits: {\n 'file-select': null\n },\n data() {\n return {\n fileName: '',\n url: ''\n }\n },\n computed: {\n parsedURL(): URL | null {\n try {\n return new URL(this.url)\n } catch {\n return null\n }\n }\n },\n\n methods: {\n handleFileChange(event: any) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (target.files == null || target.files.length < 1) {\n return\n }\n const selectedFile = target.files![0]\n this.$emit('file-select', selectedFile)\n // If user selects a file, clear the URL component\n this.url = ''\n this.fileName = target.files![0].name\n },\n dragover(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!target.classList.contains('file-hover')) {\n target.classList.add('file-hover')\n }\n },\n dragleave(event: DragEvent) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n target.classList.remove('file-hover')\n },\n drop(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!event.dataTransfer || event.dataTransfer.files.length == 0) {\n return\n }\n target.files = event.dataTransfer.files\n this.handleFileChange(event)\n target.classList.remove('file-hover')\n },\n urlKeyup(event: KeyboardEvent) {\n console.log(this.url)\n if (event.key == 'Enter') {\n const target = event.target as HTMLInputElement\n if (this.parsedURL == null) {\n console.error(`${target.value} is an invalid URL`)\n return\n }\n this.$emit('file-select', this.parsedURL)\n }\n }\n }\n})\n","import { render } from \"./BaseFile.vue?vue&type=template&id=0630c5ec&scoped=true\"\nimport script from \"./BaseFile.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseFile.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-0630c5ec\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\nimport * as $protobuf from \"protobufjs/minimal\";\n\n// Common aliases\nconst $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nconst $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\nexport const chromeos_update_engine = $root.chromeos_update_engine = (() => {\n\n /**\n * Namespace chromeos_update_engine.\n * @exports chromeos_update_engine\n * @namespace\n */\n const chromeos_update_engine = {};\n\n chromeos_update_engine.Extent = (function() {\n\n /**\n * Properties of an Extent.\n * @memberof chromeos_update_engine\n * @interface IExtent\n * @property {number|Long|null} [startBlock] Extent startBlock\n * @property {number|Long|null} [numBlocks] Extent numBlocks\n */\n\n /**\n * Constructs a new Extent.\n * @memberof chromeos_update_engine\n * @classdesc Represents an Extent.\n * @implements IExtent\n * @constructor\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n */\n function Extent(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Extent startBlock.\n * @member {number|Long} startBlock\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.startBlock = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Extent numBlocks.\n * @member {number|Long} numBlocks\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.numBlocks = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new Extent instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n * @returns {chromeos_update_engine.Extent} Extent instance\n */\n Extent.create = function create(properties) {\n return new Extent(properties);\n };\n\n /**\n * Encodes the specified Extent message. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startBlock != null && Object.hasOwnProperty.call(message, \"startBlock\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.startBlock);\n if (message.numBlocks != null && Object.hasOwnProperty.call(message, \"numBlocks\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.numBlocks);\n return writer;\n };\n\n /**\n * Encodes the specified Extent message, length delimited. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Extent();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.startBlock = reader.uint64();\n break;\n case 2:\n message.numBlocks = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an Extent message.\n * @function verify\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Extent.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (!$util.isInteger(message.startBlock) && !(message.startBlock && $util.isInteger(message.startBlock.low) && $util.isInteger(message.startBlock.high)))\n return \"startBlock: integer|Long expected\";\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (!$util.isInteger(message.numBlocks) && !(message.numBlocks && $util.isInteger(message.numBlocks.low) && $util.isInteger(message.numBlocks.high)))\n return \"numBlocks: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an Extent message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Extent} Extent\n */\n Extent.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Extent)\n return object;\n let message = new $root.chromeos_update_engine.Extent();\n if (object.startBlock != null)\n if ($util.Long)\n (message.startBlock = $util.Long.fromValue(object.startBlock)).unsigned = true;\n else if (typeof object.startBlock === \"string\")\n message.startBlock = parseInt(object.startBlock, 10);\n else if (typeof object.startBlock === \"number\")\n message.startBlock = object.startBlock;\n else if (typeof object.startBlock === \"object\")\n message.startBlock = new $util.LongBits(object.startBlock.low >>> 0, object.startBlock.high >>> 0).toNumber(true);\n if (object.numBlocks != null)\n if ($util.Long)\n (message.numBlocks = $util.Long.fromValue(object.numBlocks)).unsigned = true;\n else if (typeof object.numBlocks === \"string\")\n message.numBlocks = parseInt(object.numBlocks, 10);\n else if (typeof object.numBlocks === \"number\")\n message.numBlocks = object.numBlocks;\n else if (typeof object.numBlocks === \"object\")\n message.numBlocks = new $util.LongBits(object.numBlocks.low >>> 0, object.numBlocks.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from an Extent message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.Extent} message Extent\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Extent.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.startBlock = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.startBlock = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.numBlocks = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.numBlocks = options.longs === String ? \"0\" : 0;\n }\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (typeof message.startBlock === \"number\")\n object.startBlock = options.longs === String ? String(message.startBlock) : message.startBlock;\n else\n object.startBlock = options.longs === String ? $util.Long.prototype.toString.call(message.startBlock) : options.longs === Number ? new $util.LongBits(message.startBlock.low >>> 0, message.startBlock.high >>> 0).toNumber(true) : message.startBlock;\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (typeof message.numBlocks === \"number\")\n object.numBlocks = options.longs === String ? String(message.numBlocks) : message.numBlocks;\n else\n object.numBlocks = options.longs === String ? $util.Long.prototype.toString.call(message.numBlocks) : options.longs === Number ? new $util.LongBits(message.numBlocks.low >>> 0, message.numBlocks.high >>> 0).toNumber(true) : message.numBlocks;\n return object;\n };\n\n /**\n * Converts this Extent to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Extent\n * @instance\n * @returns {Object.} JSON object\n */\n Extent.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Extent;\n })();\n\n chromeos_update_engine.Signatures = (function() {\n\n /**\n * Properties of a Signatures.\n * @memberof chromeos_update_engine\n * @interface ISignatures\n * @property {Array.|null} [signatures] Signatures signatures\n */\n\n /**\n * Constructs a new Signatures.\n * @memberof chromeos_update_engine\n * @classdesc Represents a Signatures.\n * @implements ISignatures\n * @constructor\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n */\n function Signatures(properties) {\n this.signatures = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signatures signatures.\n * @member {Array.} signatures\n * @memberof chromeos_update_engine.Signatures\n * @instance\n */\n Signatures.prototype.signatures = $util.emptyArray;\n\n /**\n * Creates a new Signatures instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures} Signatures instance\n */\n Signatures.create = function create(properties) {\n return new Signatures(properties);\n };\n\n /**\n * Encodes the specified Signatures message. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.signatures != null && message.signatures.length)\n for (let i = 0; i < message.signatures.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.signatures[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Signatures message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.signatures && message.signatures.length))\n message.signatures = [];\n message.signatures.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signatures message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signatures.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.signatures != null && message.hasOwnProperty(\"signatures\")) {\n if (!Array.isArray(message.signatures))\n return \"signatures: array expected\";\n for (let i = 0; i < message.signatures.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.signatures[i]);\n if (error)\n return \"signatures.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a Signatures message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures} Signatures\n */\n Signatures.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures)\n return object;\n let message = new $root.chromeos_update_engine.Signatures();\n if (object.signatures) {\n if (!Array.isArray(object.signatures))\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: array expected\");\n message.signatures = [];\n for (let i = 0; i < object.signatures.length; ++i) {\n if (typeof object.signatures[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: object expected\");\n message.signatures[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.signatures[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Signatures message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.Signatures} message Signatures\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signatures.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.signatures = [];\n if (message.signatures && message.signatures.length) {\n object.signatures = [];\n for (let j = 0; j < message.signatures.length; ++j)\n object.signatures[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.signatures[j], options);\n }\n return object;\n };\n\n /**\n * Converts this Signatures to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures\n * @instance\n * @returns {Object.} JSON object\n */\n Signatures.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n Signatures.Signature = (function() {\n\n /**\n * Properties of a Signature.\n * @memberof chromeos_update_engine.Signatures\n * @interface ISignature\n * @property {number|null} [version] Signature version\n * @property {Uint8Array|null} [data] Signature data\n * @property {number|null} [unpaddedSignatureSize] Signature unpaddedSignatureSize\n */\n\n /**\n * Constructs a new Signature.\n * @memberof chromeos_update_engine.Signatures\n * @classdesc Represents a Signature.\n * @implements ISignature\n * @constructor\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n */\n function Signature(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signature version.\n * @member {number} version\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.version = 0;\n\n /**\n * Signature data.\n * @member {Uint8Array} data\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.data = $util.newBuffer([]);\n\n /**\n * Signature unpaddedSignatureSize.\n * @member {number} unpaddedSignatureSize\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.unpaddedSignatureSize = 0;\n\n /**\n * Creates a new Signature instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures.Signature} Signature instance\n */\n Signature.create = function create(properties) {\n return new Signature(properties);\n };\n\n /**\n * Encodes the specified Signature message. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.version);\n if (message.data != null && Object.hasOwnProperty.call(message, \"data\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.data);\n if (message.unpaddedSignatureSize != null && Object.hasOwnProperty.call(message, \"unpaddedSignatureSize\"))\n writer.uint32(/* id 3, wireType 5 =*/29).fixed32(message.unpaddedSignatureSize);\n return writer;\n };\n\n /**\n * Encodes the specified Signature message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures.Signature();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.version = reader.uint32();\n break;\n case 2:\n message.data = reader.bytes();\n break;\n case 3:\n message.unpaddedSignatureSize = reader.fixed32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signature message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signature.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version))\n return \"version: integer expected\";\n if (message.data != null && message.hasOwnProperty(\"data\"))\n if (!(message.data && typeof message.data.length === \"number\" || $util.isString(message.data)))\n return \"data: buffer expected\";\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n if (!$util.isInteger(message.unpaddedSignatureSize))\n return \"unpaddedSignatureSize: integer expected\";\n return null;\n };\n\n /**\n * Creates a Signature message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n */\n Signature.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures.Signature)\n return object;\n let message = new $root.chromeos_update_engine.Signatures.Signature();\n if (object.version != null)\n message.version = object.version >>> 0;\n if (object.data != null)\n if (typeof object.data === \"string\")\n $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);\n else if (object.data.length)\n message.data = object.data;\n if (object.unpaddedSignatureSize != null)\n message.unpaddedSignatureSize = object.unpaddedSignatureSize >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a Signature message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.Signature} message Signature\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signature.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.version = 0;\n if (options.bytes === String)\n object.data = \"\";\n else {\n object.data = [];\n if (options.bytes !== Array)\n object.data = $util.newBuffer(object.data);\n }\n object.unpaddedSignatureSize = 0;\n }\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.data != null && message.hasOwnProperty(\"data\"))\n object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n object.unpaddedSignatureSize = message.unpaddedSignatureSize;\n return object;\n };\n\n /**\n * Converts this Signature to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n * @returns {Object.} JSON object\n */\n Signature.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Signature;\n })();\n\n return Signatures;\n })();\n\n chromeos_update_engine.PartitionInfo = (function() {\n\n /**\n * Properties of a PartitionInfo.\n * @memberof chromeos_update_engine\n * @interface IPartitionInfo\n * @property {number|Long|null} [size] PartitionInfo size\n * @property {Uint8Array|null} [hash] PartitionInfo hash\n */\n\n /**\n * Constructs a new PartitionInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionInfo.\n * @implements IPartitionInfo\n * @constructor\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n */\n function PartitionInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionInfo size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * PartitionInfo hash.\n * @member {Uint8Array} hash\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.hash = $util.newBuffer([]);\n\n /**\n * Creates a new PartitionInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo instance\n */\n PartitionInfo.create = function create(properties) {\n return new PartitionInfo(properties);\n };\n\n /**\n * Encodes the specified PartitionInfo message. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.size);\n if (message.hash != null && Object.hasOwnProperty.call(message, \"hash\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.hash);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.size = reader.uint64();\n break;\n case 2:\n message.hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionInfo message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n if (!(message.hash && typeof message.hash.length === \"number\" || $util.isString(message.hash)))\n return \"hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates a PartitionInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n */\n PartitionInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionInfo)\n return object;\n let message = new $root.chromeos_update_engine.PartitionInfo();\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.hash != null)\n if (typeof object.hash === \"string\")\n $util.base64.decode(object.hash, message.hash = $util.newBuffer($util.base64.length(object.hash)), 0);\n else if (object.hash.length)\n message.hash = object.hash;\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.PartitionInfo} message PartitionInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.hash = \"\";\n else {\n object.hash = [];\n if (options.bytes !== Array)\n object.hash = $util.newBuffer(object.hash);\n }\n }\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n object.hash = options.bytes === String ? $util.base64.encode(message.hash, 0, message.hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.hash) : message.hash;\n return object;\n };\n\n /**\n * Converts this PartitionInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionInfo;\n })();\n\n chromeos_update_engine.InstallOperation = (function() {\n\n /**\n * Properties of an InstallOperation.\n * @memberof chromeos_update_engine\n * @interface IInstallOperation\n * @property {chromeos_update_engine.InstallOperation.Type} type InstallOperation type\n * @property {number|Long|null} [dataOffset] InstallOperation dataOffset\n * @property {number|Long|null} [dataLength] InstallOperation dataLength\n * @property {Array.|null} [srcExtents] InstallOperation srcExtents\n * @property {number|Long|null} [srcLength] InstallOperation srcLength\n * @property {Array.|null} [dstExtents] InstallOperation dstExtents\n * @property {number|Long|null} [dstLength] InstallOperation dstLength\n * @property {Uint8Array|null} [dataSha256Hash] InstallOperation dataSha256Hash\n * @property {Uint8Array|null} [srcSha256Hash] InstallOperation srcSha256Hash\n */\n\n /**\n * Constructs a new InstallOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents an InstallOperation.\n * @implements IInstallOperation\n * @constructor\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n */\n function InstallOperation(properties) {\n this.srcExtents = [];\n this.dstExtents = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * InstallOperation type.\n * @member {chromeos_update_engine.InstallOperation.Type} type\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.type = 0;\n\n /**\n * InstallOperation dataOffset.\n * @member {number|Long} dataOffset\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataLength.\n * @member {number|Long} dataLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation srcExtents.\n * @member {Array.} srcExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcExtents = $util.emptyArray;\n\n /**\n * InstallOperation srcLength.\n * @member {number|Long} srcLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dstExtents.\n * @member {Array.} dstExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstExtents = $util.emptyArray;\n\n /**\n * InstallOperation dstLength.\n * @member {number|Long} dstLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataSha256Hash.\n * @member {Uint8Array} dataSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataSha256Hash = $util.newBuffer([]);\n\n /**\n * InstallOperation srcSha256Hash.\n * @member {Uint8Array} srcSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcSha256Hash = $util.newBuffer([]);\n\n /**\n * Creates a new InstallOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation instance\n */\n InstallOperation.create = function create(properties) {\n return new InstallOperation(properties);\n };\n\n /**\n * Encodes the specified InstallOperation message. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.dataOffset != null && Object.hasOwnProperty.call(message, \"dataOffset\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.dataOffset);\n if (message.dataLength != null && Object.hasOwnProperty.call(message, \"dataLength\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.dataLength);\n if (message.srcExtents != null && message.srcExtents.length)\n for (let i = 0; i < message.srcExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.srcExtents[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.srcLength != null && Object.hasOwnProperty.call(message, \"srcLength\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.srcLength);\n if (message.dstExtents != null && message.dstExtents.length)\n for (let i = 0; i < message.dstExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.dstExtents[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.dstLength != null && Object.hasOwnProperty.call(message, \"dstLength\"))\n writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.dstLength);\n if (message.dataSha256Hash != null && Object.hasOwnProperty.call(message, \"dataSha256Hash\"))\n writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.dataSha256Hash);\n if (message.srcSha256Hash != null && Object.hasOwnProperty.call(message, \"srcSha256Hash\"))\n writer.uint32(/* id 9, wireType 2 =*/74).bytes(message.srcSha256Hash);\n return writer;\n };\n\n /**\n * Encodes the specified InstallOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.InstallOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.dataOffset = reader.uint64();\n break;\n case 3:\n message.dataLength = reader.uint64();\n break;\n case 4:\n if (!(message.srcExtents && message.srcExtents.length))\n message.srcExtents = [];\n message.srcExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 5:\n message.srcLength = reader.uint64();\n break;\n case 6:\n if (!(message.dstExtents && message.dstExtents.length))\n message.dstExtents = [];\n message.dstExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 7:\n message.dstLength = reader.uint64();\n break;\n case 8:\n message.dataSha256Hash = reader.bytes();\n break;\n case 9:\n message.srcSha256Hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"type\"))\n throw $util.ProtocolError(\"missing required 'type'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an InstallOperation message.\n * @function verify\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n InstallOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 8:\n case 6:\n case 7:\n case 10:\n case 9:\n case 11:\n case 12:\n case 13:\n break;\n }\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (!$util.isInteger(message.dataOffset) && !(message.dataOffset && $util.isInteger(message.dataOffset.low) && $util.isInteger(message.dataOffset.high)))\n return \"dataOffset: integer|Long expected\";\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (!$util.isInteger(message.dataLength) && !(message.dataLength && $util.isInteger(message.dataLength.low) && $util.isInteger(message.dataLength.high)))\n return \"dataLength: integer|Long expected\";\n if (message.srcExtents != null && message.hasOwnProperty(\"srcExtents\")) {\n if (!Array.isArray(message.srcExtents))\n return \"srcExtents: array expected\";\n for (let i = 0; i < message.srcExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtents[i]);\n if (error)\n return \"srcExtents.\" + error;\n }\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (!$util.isInteger(message.srcLength) && !(message.srcLength && $util.isInteger(message.srcLength.low) && $util.isInteger(message.srcLength.high)))\n return \"srcLength: integer|Long expected\";\n if (message.dstExtents != null && message.hasOwnProperty(\"dstExtents\")) {\n if (!Array.isArray(message.dstExtents))\n return \"dstExtents: array expected\";\n for (let i = 0; i < message.dstExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtents[i]);\n if (error)\n return \"dstExtents.\" + error;\n }\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (!$util.isInteger(message.dstLength) && !(message.dstLength && $util.isInteger(message.dstLength.low) && $util.isInteger(message.dstLength.high)))\n return \"dstLength: integer|Long expected\";\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n if (!(message.dataSha256Hash && typeof message.dataSha256Hash.length === \"number\" || $util.isString(message.dataSha256Hash)))\n return \"dataSha256Hash: buffer expected\";\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n if (!(message.srcSha256Hash && typeof message.srcSha256Hash.length === \"number\" || $util.isString(message.srcSha256Hash)))\n return \"srcSha256Hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates an InstallOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n */\n InstallOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.InstallOperation)\n return object;\n let message = new $root.chromeos_update_engine.InstallOperation();\n switch (object.type) {\n case \"REPLACE\":\n case 0:\n message.type = 0;\n break;\n case \"REPLACE_BZ\":\n case 1:\n message.type = 1;\n break;\n case \"MOVE\":\n case 2:\n message.type = 2;\n break;\n case \"BSDIFF\":\n case 3:\n message.type = 3;\n break;\n case \"SOURCE_COPY\":\n case 4:\n message.type = 4;\n break;\n case \"SOURCE_BSDIFF\":\n case 5:\n message.type = 5;\n break;\n case \"REPLACE_XZ\":\n case 8:\n message.type = 8;\n break;\n case \"ZERO\":\n case 6:\n message.type = 6;\n break;\n case \"DISCARD\":\n case 7:\n message.type = 7;\n break;\n case \"BROTLI_BSDIFF\":\n case 10:\n message.type = 10;\n break;\n case \"PUFFDIFF\":\n case 9:\n message.type = 9;\n break;\n case \"ZUCCHINI\":\n case 11:\n message.type = 11;\n break;\n case \"LZ4DIFF_BSDIFF\":\n case 12:\n message.type = 12;\n break;\n case \"LZ4DIFF_PUFFDIFF\":\n case 13:\n message.type = 13;\n break;\n }\n if (object.dataOffset != null)\n if ($util.Long)\n (message.dataOffset = $util.Long.fromValue(object.dataOffset)).unsigned = true;\n else if (typeof object.dataOffset === \"string\")\n message.dataOffset = parseInt(object.dataOffset, 10);\n else if (typeof object.dataOffset === \"number\")\n message.dataOffset = object.dataOffset;\n else if (typeof object.dataOffset === \"object\")\n message.dataOffset = new $util.LongBits(object.dataOffset.low >>> 0, object.dataOffset.high >>> 0).toNumber(true);\n if (object.dataLength != null)\n if ($util.Long)\n (message.dataLength = $util.Long.fromValue(object.dataLength)).unsigned = true;\n else if (typeof object.dataLength === \"string\")\n message.dataLength = parseInt(object.dataLength, 10);\n else if (typeof object.dataLength === \"number\")\n message.dataLength = object.dataLength;\n else if (typeof object.dataLength === \"object\")\n message.dataLength = new $util.LongBits(object.dataLength.low >>> 0, object.dataLength.high >>> 0).toNumber(true);\n if (object.srcExtents) {\n if (!Array.isArray(object.srcExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: array expected\");\n message.srcExtents = [];\n for (let i = 0; i < object.srcExtents.length; ++i) {\n if (typeof object.srcExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: object expected\");\n message.srcExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.srcExtents[i]);\n }\n }\n if (object.srcLength != null)\n if ($util.Long)\n (message.srcLength = $util.Long.fromValue(object.srcLength)).unsigned = true;\n else if (typeof object.srcLength === \"string\")\n message.srcLength = parseInt(object.srcLength, 10);\n else if (typeof object.srcLength === \"number\")\n message.srcLength = object.srcLength;\n else if (typeof object.srcLength === \"object\")\n message.srcLength = new $util.LongBits(object.srcLength.low >>> 0, object.srcLength.high >>> 0).toNumber(true);\n if (object.dstExtents) {\n if (!Array.isArray(object.dstExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: array expected\");\n message.dstExtents = [];\n for (let i = 0; i < object.dstExtents.length; ++i) {\n if (typeof object.dstExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: object expected\");\n message.dstExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.dstExtents[i]);\n }\n }\n if (object.dstLength != null)\n if ($util.Long)\n (message.dstLength = $util.Long.fromValue(object.dstLength)).unsigned = true;\n else if (typeof object.dstLength === \"string\")\n message.dstLength = parseInt(object.dstLength, 10);\n else if (typeof object.dstLength === \"number\")\n message.dstLength = object.dstLength;\n else if (typeof object.dstLength === \"object\")\n message.dstLength = new $util.LongBits(object.dstLength.low >>> 0, object.dstLength.high >>> 0).toNumber(true);\n if (object.dataSha256Hash != null)\n if (typeof object.dataSha256Hash === \"string\")\n $util.base64.decode(object.dataSha256Hash, message.dataSha256Hash = $util.newBuffer($util.base64.length(object.dataSha256Hash)), 0);\n else if (object.dataSha256Hash.length)\n message.dataSha256Hash = object.dataSha256Hash;\n if (object.srcSha256Hash != null)\n if (typeof object.srcSha256Hash === \"string\")\n $util.base64.decode(object.srcSha256Hash, message.srcSha256Hash = $util.newBuffer($util.base64.length(object.srcSha256Hash)), 0);\n else if (object.srcSha256Hash.length)\n message.srcSha256Hash = object.srcSha256Hash;\n return message;\n };\n\n /**\n * Creates a plain object from an InstallOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.InstallOperation} message InstallOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n InstallOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.srcExtents = [];\n object.dstExtents = [];\n }\n if (options.defaults) {\n object.type = options.enums === String ? \"REPLACE\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.srcLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.srcLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dstLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dstLength = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.dataSha256Hash = \"\";\n else {\n object.dataSha256Hash = [];\n if (options.bytes !== Array)\n object.dataSha256Hash = $util.newBuffer(object.dataSha256Hash);\n }\n if (options.bytes === String)\n object.srcSha256Hash = \"\";\n else {\n object.srcSha256Hash = [];\n if (options.bytes !== Array)\n object.srcSha256Hash = $util.newBuffer(object.srcSha256Hash);\n }\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.InstallOperation.Type[message.type] : message.type;\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (typeof message.dataOffset === \"number\")\n object.dataOffset = options.longs === String ? String(message.dataOffset) : message.dataOffset;\n else\n object.dataOffset = options.longs === String ? $util.Long.prototype.toString.call(message.dataOffset) : options.longs === Number ? new $util.LongBits(message.dataOffset.low >>> 0, message.dataOffset.high >>> 0).toNumber(true) : message.dataOffset;\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (typeof message.dataLength === \"number\")\n object.dataLength = options.longs === String ? String(message.dataLength) : message.dataLength;\n else\n object.dataLength = options.longs === String ? $util.Long.prototype.toString.call(message.dataLength) : options.longs === Number ? new $util.LongBits(message.dataLength.low >>> 0, message.dataLength.high >>> 0).toNumber(true) : message.dataLength;\n if (message.srcExtents && message.srcExtents.length) {\n object.srcExtents = [];\n for (let j = 0; j < message.srcExtents.length; ++j)\n object.srcExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.srcExtents[j], options);\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (typeof message.srcLength === \"number\")\n object.srcLength = options.longs === String ? String(message.srcLength) : message.srcLength;\n else\n object.srcLength = options.longs === String ? $util.Long.prototype.toString.call(message.srcLength) : options.longs === Number ? new $util.LongBits(message.srcLength.low >>> 0, message.srcLength.high >>> 0).toNumber(true) : message.srcLength;\n if (message.dstExtents && message.dstExtents.length) {\n object.dstExtents = [];\n for (let j = 0; j < message.dstExtents.length; ++j)\n object.dstExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.dstExtents[j], options);\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (typeof message.dstLength === \"number\")\n object.dstLength = options.longs === String ? String(message.dstLength) : message.dstLength;\n else\n object.dstLength = options.longs === String ? $util.Long.prototype.toString.call(message.dstLength) : options.longs === Number ? new $util.LongBits(message.dstLength.low >>> 0, message.dstLength.high >>> 0).toNumber(true) : message.dstLength;\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n object.dataSha256Hash = options.bytes === String ? $util.base64.encode(message.dataSha256Hash, 0, message.dataSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.dataSha256Hash) : message.dataSha256Hash;\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n object.srcSha256Hash = options.bytes === String ? $util.base64.encode(message.srcSha256Hash, 0, message.srcSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.srcSha256Hash) : message.srcSha256Hash;\n return object;\n };\n\n /**\n * Converts this InstallOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n * @returns {Object.} JSON object\n */\n InstallOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.InstallOperation.Type\n * @enum {number}\n * @property {number} REPLACE=0 REPLACE value\n * @property {number} REPLACE_BZ=1 REPLACE_BZ value\n * @property {number} MOVE=2 MOVE value\n * @property {number} BSDIFF=3 BSDIFF value\n * @property {number} SOURCE_COPY=4 SOURCE_COPY value\n * @property {number} SOURCE_BSDIFF=5 SOURCE_BSDIFF value\n * @property {number} REPLACE_XZ=8 REPLACE_XZ value\n * @property {number} ZERO=6 ZERO value\n * @property {number} DISCARD=7 DISCARD value\n * @property {number} BROTLI_BSDIFF=10 BROTLI_BSDIFF value\n * @property {number} PUFFDIFF=9 PUFFDIFF value\n * @property {number} ZUCCHINI=11 ZUCCHINI value\n * @property {number} LZ4DIFF_BSDIFF=12 LZ4DIFF_BSDIFF value\n * @property {number} LZ4DIFF_PUFFDIFF=13 LZ4DIFF_PUFFDIFF value\n */\n InstallOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"REPLACE\"] = 0;\n values[valuesById[1] = \"REPLACE_BZ\"] = 1;\n values[valuesById[2] = \"MOVE\"] = 2;\n values[valuesById[3] = \"BSDIFF\"] = 3;\n values[valuesById[4] = \"SOURCE_COPY\"] = 4;\n values[valuesById[5] = \"SOURCE_BSDIFF\"] = 5;\n values[valuesById[8] = \"REPLACE_XZ\"] = 8;\n values[valuesById[6] = \"ZERO\"] = 6;\n values[valuesById[7] = \"DISCARD\"] = 7;\n values[valuesById[10] = \"BROTLI_BSDIFF\"] = 10;\n values[valuesById[9] = \"PUFFDIFF\"] = 9;\n values[valuesById[11] = \"ZUCCHINI\"] = 11;\n values[valuesById[12] = \"LZ4DIFF_BSDIFF\"] = 12;\n values[valuesById[13] = \"LZ4DIFF_PUFFDIFF\"] = 13;\n return values;\n })();\n\n return InstallOperation;\n })();\n\n chromeos_update_engine.CowMergeOperation = (function() {\n\n /**\n * Properties of a CowMergeOperation.\n * @memberof chromeos_update_engine\n * @interface ICowMergeOperation\n * @property {chromeos_update_engine.CowMergeOperation.Type|null} [type] CowMergeOperation type\n * @property {chromeos_update_engine.IExtent|null} [srcExtent] CowMergeOperation srcExtent\n * @property {chromeos_update_engine.IExtent|null} [dstExtent] CowMergeOperation dstExtent\n * @property {number|null} [srcOffset] CowMergeOperation srcOffset\n */\n\n /**\n * Constructs a new CowMergeOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents a CowMergeOperation.\n * @implements ICowMergeOperation\n * @constructor\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n */\n function CowMergeOperation(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * CowMergeOperation type.\n * @member {chromeos_update_engine.CowMergeOperation.Type} type\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.type = 0;\n\n /**\n * CowMergeOperation srcExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} srcExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcExtent = null;\n\n /**\n * CowMergeOperation dstExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} dstExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.dstExtent = null;\n\n /**\n * CowMergeOperation srcOffset.\n * @member {number} srcOffset\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcOffset = 0;\n\n /**\n * Creates a new CowMergeOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation instance\n */\n CowMergeOperation.create = function create(properties) {\n return new CowMergeOperation(properties);\n };\n\n /**\n * Encodes the specified CowMergeOperation message. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.srcExtent != null && Object.hasOwnProperty.call(message, \"srcExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.srcExtent, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.dstExtent != null && Object.hasOwnProperty.call(message, \"dstExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.dstExtent, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.srcOffset != null && Object.hasOwnProperty.call(message, \"srcOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.srcOffset);\n return writer;\n };\n\n /**\n * Encodes the specified CowMergeOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.CowMergeOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.srcExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 3:\n message.dstExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 4:\n message.srcOffset = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a CowMergeOperation message.\n * @function verify\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n CowMergeOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtent);\n if (error)\n return \"srcExtent.\" + error;\n }\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtent);\n if (error)\n return \"dstExtent.\" + error;\n }\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n if (!$util.isInteger(message.srcOffset))\n return \"srcOffset: integer expected\";\n return null;\n };\n\n /**\n * Creates a CowMergeOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n */\n CowMergeOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.CowMergeOperation)\n return object;\n let message = new $root.chromeos_update_engine.CowMergeOperation();\n switch (object.type) {\n case \"COW_COPY\":\n case 0:\n message.type = 0;\n break;\n case \"COW_XOR\":\n case 1:\n message.type = 1;\n break;\n case \"COW_REPLACE\":\n case 2:\n message.type = 2;\n break;\n }\n if (object.srcExtent != null) {\n if (typeof object.srcExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.srcExtent: object expected\");\n message.srcExtent = $root.chromeos_update_engine.Extent.fromObject(object.srcExtent);\n }\n if (object.dstExtent != null) {\n if (typeof object.dstExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.dstExtent: object expected\");\n message.dstExtent = $root.chromeos_update_engine.Extent.fromObject(object.dstExtent);\n }\n if (object.srcOffset != null)\n message.srcOffset = object.srcOffset >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a CowMergeOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.CowMergeOperation} message CowMergeOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n CowMergeOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"COW_COPY\" : 0;\n object.srcExtent = null;\n object.dstExtent = null;\n object.srcOffset = 0;\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.CowMergeOperation.Type[message.type] : message.type;\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\"))\n object.srcExtent = $root.chromeos_update_engine.Extent.toObject(message.srcExtent, options);\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\"))\n object.dstExtent = $root.chromeos_update_engine.Extent.toObject(message.dstExtent, options);\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n object.srcOffset = message.srcOffset;\n return object;\n };\n\n /**\n * Converts this CowMergeOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n * @returns {Object.} JSON object\n */\n CowMergeOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.CowMergeOperation.Type\n * @enum {number}\n * @property {number} COW_COPY=0 COW_COPY value\n * @property {number} COW_XOR=1 COW_XOR value\n * @property {number} COW_REPLACE=2 COW_REPLACE value\n */\n CowMergeOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"COW_COPY\"] = 0;\n values[valuesById[1] = \"COW_XOR\"] = 1;\n values[valuesById[2] = \"COW_REPLACE\"] = 2;\n return values;\n })();\n\n return CowMergeOperation;\n })();\n\n chromeos_update_engine.PartitionUpdate = (function() {\n\n /**\n * Properties of a PartitionUpdate.\n * @memberof chromeos_update_engine\n * @interface IPartitionUpdate\n * @property {string} partitionName PartitionUpdate partitionName\n * @property {boolean|null} [runPostinstall] PartitionUpdate runPostinstall\n * @property {string|null} [postinstallPath] PartitionUpdate postinstallPath\n * @property {string|null} [filesystemType] PartitionUpdate filesystemType\n * @property {Array.|null} [newPartitionSignature] PartitionUpdate newPartitionSignature\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldPartitionInfo] PartitionUpdate oldPartitionInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newPartitionInfo] PartitionUpdate newPartitionInfo\n * @property {Array.|null} [operations] PartitionUpdate operations\n * @property {boolean|null} [postinstallOptional] PartitionUpdate postinstallOptional\n * @property {chromeos_update_engine.IExtent|null} [hashTreeDataExtent] PartitionUpdate hashTreeDataExtent\n * @property {chromeos_update_engine.IExtent|null} [hashTreeExtent] PartitionUpdate hashTreeExtent\n * @property {string|null} [hashTreeAlgorithm] PartitionUpdate hashTreeAlgorithm\n * @property {Uint8Array|null} [hashTreeSalt] PartitionUpdate hashTreeSalt\n * @property {chromeos_update_engine.IExtent|null} [fecDataExtent] PartitionUpdate fecDataExtent\n * @property {chromeos_update_engine.IExtent|null} [fecExtent] PartitionUpdate fecExtent\n * @property {number|null} [fecRoots] PartitionUpdate fecRoots\n * @property {string|null} [version] PartitionUpdate version\n * @property {Array.|null} [mergeOperations] PartitionUpdate mergeOperations\n * @property {number|Long|null} [estimateCowSize] PartitionUpdate estimateCowSize\n */\n\n /**\n * Constructs a new PartitionUpdate.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionUpdate.\n * @implements IPartitionUpdate\n * @constructor\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n */\n function PartitionUpdate(properties) {\n this.newPartitionSignature = [];\n this.operations = [];\n this.mergeOperations = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionUpdate partitionName.\n * @member {string} partitionName\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.partitionName = \"\";\n\n /**\n * PartitionUpdate runPostinstall.\n * @member {boolean} runPostinstall\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.runPostinstall = false;\n\n /**\n * PartitionUpdate postinstallPath.\n * @member {string} postinstallPath\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallPath = \"\";\n\n /**\n * PartitionUpdate filesystemType.\n * @member {string} filesystemType\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.filesystemType = \"\";\n\n /**\n * PartitionUpdate newPartitionSignature.\n * @member {Array.} newPartitionSignature\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionSignature = $util.emptyArray;\n\n /**\n * PartitionUpdate oldPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.oldPartitionInfo = null;\n\n /**\n * PartitionUpdate newPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionInfo = null;\n\n /**\n * PartitionUpdate operations.\n * @member {Array.} operations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.operations = $util.emptyArray;\n\n /**\n * PartitionUpdate postinstallOptional.\n * @member {boolean} postinstallOptional\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallOptional = false;\n\n /**\n * PartitionUpdate hashTreeDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeDataExtent = null;\n\n /**\n * PartitionUpdate hashTreeExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeExtent = null;\n\n /**\n * PartitionUpdate hashTreeAlgorithm.\n * @member {string} hashTreeAlgorithm\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeAlgorithm = \"\";\n\n /**\n * PartitionUpdate hashTreeSalt.\n * @member {Uint8Array} hashTreeSalt\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeSalt = $util.newBuffer([]);\n\n /**\n * PartitionUpdate fecDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecDataExtent = null;\n\n /**\n * PartitionUpdate fecExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecExtent = null;\n\n /**\n * PartitionUpdate fecRoots.\n * @member {number} fecRoots\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecRoots = 2;\n\n /**\n * PartitionUpdate version.\n * @member {string} version\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.version = \"\";\n\n /**\n * PartitionUpdate mergeOperations.\n * @member {Array.} mergeOperations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.mergeOperations = $util.emptyArray;\n\n /**\n * PartitionUpdate estimateCowSize.\n * @member {number|Long} estimateCowSize\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.estimateCowSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new PartitionUpdate instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate instance\n */\n PartitionUpdate.create = function create(properties) {\n return new PartitionUpdate(properties);\n };\n\n /**\n * Encodes the specified PartitionUpdate message. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.partitionName);\n if (message.runPostinstall != null && Object.hasOwnProperty.call(message, \"runPostinstall\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.runPostinstall);\n if (message.postinstallPath != null && Object.hasOwnProperty.call(message, \"postinstallPath\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.postinstallPath);\n if (message.filesystemType != null && Object.hasOwnProperty.call(message, \"filesystemType\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.filesystemType);\n if (message.newPartitionSignature != null && message.newPartitionSignature.length)\n for (let i = 0; i < message.newPartitionSignature.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.newPartitionSignature[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.oldPartitionInfo != null && Object.hasOwnProperty.call(message, \"oldPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldPartitionInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newPartitionInfo != null && Object.hasOwnProperty.call(message, \"newPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newPartitionInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.operations != null && message.operations.length)\n for (let i = 0; i < message.operations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.operations[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.postinstallOptional != null && Object.hasOwnProperty.call(message, \"postinstallOptional\"))\n writer.uint32(/* id 9, wireType 0 =*/72).bool(message.postinstallOptional);\n if (message.hashTreeDataExtent != null && Object.hasOwnProperty.call(message, \"hashTreeDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeDataExtent, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.hashTreeExtent != null && Object.hasOwnProperty.call(message, \"hashTreeExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeExtent, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.hashTreeAlgorithm != null && Object.hasOwnProperty.call(message, \"hashTreeAlgorithm\"))\n writer.uint32(/* id 12, wireType 2 =*/98).string(message.hashTreeAlgorithm);\n if (message.hashTreeSalt != null && Object.hasOwnProperty.call(message, \"hashTreeSalt\"))\n writer.uint32(/* id 13, wireType 2 =*/106).bytes(message.hashTreeSalt);\n if (message.fecDataExtent != null && Object.hasOwnProperty.call(message, \"fecDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecDataExtent, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.fecExtent != null && Object.hasOwnProperty.call(message, \"fecExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecExtent, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.fecRoots != null && Object.hasOwnProperty.call(message, \"fecRoots\"))\n writer.uint32(/* id 16, wireType 0 =*/128).uint32(message.fecRoots);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 17, wireType 2 =*/138).string(message.version);\n if (message.mergeOperations != null && message.mergeOperations.length)\n for (let i = 0; i < message.mergeOperations.length; ++i)\n $root.chromeos_update_engine.CowMergeOperation.encode(message.mergeOperations[i], writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n if (message.estimateCowSize != null && Object.hasOwnProperty.call(message, \"estimateCowSize\"))\n writer.uint32(/* id 19, wireType 0 =*/152).uint64(message.estimateCowSize);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionUpdate message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionUpdate();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.partitionName = reader.string();\n break;\n case 2:\n message.runPostinstall = reader.bool();\n break;\n case 3:\n message.postinstallPath = reader.string();\n break;\n case 4:\n message.filesystemType = reader.string();\n break;\n case 5:\n if (!(message.newPartitionSignature && message.newPartitionSignature.length))\n message.newPartitionSignature = [];\n message.newPartitionSignature.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n case 6:\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n if (!(message.operations && message.operations.length))\n message.operations = [];\n message.operations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 9:\n message.postinstallOptional = reader.bool();\n break;\n case 10:\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 11:\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 12:\n message.hashTreeAlgorithm = reader.string();\n break;\n case 13:\n message.hashTreeSalt = reader.bytes();\n break;\n case 14:\n message.fecDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 15:\n message.fecExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 16:\n message.fecRoots = reader.uint32();\n break;\n case 17:\n message.version = reader.string();\n break;\n case 18:\n if (!(message.mergeOperations && message.mergeOperations.length))\n message.mergeOperations = [];\n message.mergeOperations.push($root.chromeos_update_engine.CowMergeOperation.decode(reader, reader.uint32()));\n break;\n case 19:\n message.estimateCowSize = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"partitionName\"))\n throw $util.ProtocolError(\"missing required 'partitionName'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionUpdate message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionUpdate.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.partitionName))\n return \"partitionName: string expected\";\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n if (typeof message.runPostinstall !== \"boolean\")\n return \"runPostinstall: boolean expected\";\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n if (!$util.isString(message.postinstallPath))\n return \"postinstallPath: string expected\";\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n if (!$util.isString(message.filesystemType))\n return \"filesystemType: string expected\";\n if (message.newPartitionSignature != null && message.hasOwnProperty(\"newPartitionSignature\")) {\n if (!Array.isArray(message.newPartitionSignature))\n return \"newPartitionSignature: array expected\";\n for (let i = 0; i < message.newPartitionSignature.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.newPartitionSignature[i]);\n if (error)\n return \"newPartitionSignature.\" + error;\n }\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldPartitionInfo);\n if (error)\n return \"oldPartitionInfo.\" + error;\n }\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newPartitionInfo);\n if (error)\n return \"newPartitionInfo.\" + error;\n }\n if (message.operations != null && message.hasOwnProperty(\"operations\")) {\n if (!Array.isArray(message.operations))\n return \"operations: array expected\";\n for (let i = 0; i < message.operations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.operations[i]);\n if (error)\n return \"operations.\" + error;\n }\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n if (typeof message.postinstallOptional !== \"boolean\")\n return \"postinstallOptional: boolean expected\";\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeDataExtent);\n if (error)\n return \"hashTreeDataExtent.\" + error;\n }\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeExtent);\n if (error)\n return \"hashTreeExtent.\" + error;\n }\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n if (!$util.isString(message.hashTreeAlgorithm))\n return \"hashTreeAlgorithm: string expected\";\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n if (!(message.hashTreeSalt && typeof message.hashTreeSalt.length === \"number\" || $util.isString(message.hashTreeSalt)))\n return \"hashTreeSalt: buffer expected\";\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecDataExtent);\n if (error)\n return \"fecDataExtent.\" + error;\n }\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecExtent);\n if (error)\n return \"fecExtent.\" + error;\n }\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n if (!$util.isInteger(message.fecRoots))\n return \"fecRoots: integer expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.mergeOperations != null && message.hasOwnProperty(\"mergeOperations\")) {\n if (!Array.isArray(message.mergeOperations))\n return \"mergeOperations: array expected\";\n for (let i = 0; i < message.mergeOperations.length; ++i) {\n let error = $root.chromeos_update_engine.CowMergeOperation.verify(message.mergeOperations[i]);\n if (error)\n return \"mergeOperations.\" + error;\n }\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (!$util.isInteger(message.estimateCowSize) && !(message.estimateCowSize && $util.isInteger(message.estimateCowSize.low) && $util.isInteger(message.estimateCowSize.high)))\n return \"estimateCowSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a PartitionUpdate message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n */\n PartitionUpdate.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionUpdate)\n return object;\n let message = new $root.chromeos_update_engine.PartitionUpdate();\n if (object.partitionName != null)\n message.partitionName = String(object.partitionName);\n if (object.runPostinstall != null)\n message.runPostinstall = Boolean(object.runPostinstall);\n if (object.postinstallPath != null)\n message.postinstallPath = String(object.postinstallPath);\n if (object.filesystemType != null)\n message.filesystemType = String(object.filesystemType);\n if (object.newPartitionSignature) {\n if (!Array.isArray(object.newPartitionSignature))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: array expected\");\n message.newPartitionSignature = [];\n for (let i = 0; i < object.newPartitionSignature.length; ++i) {\n if (typeof object.newPartitionSignature[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: object expected\");\n message.newPartitionSignature[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.newPartitionSignature[i]);\n }\n }\n if (object.oldPartitionInfo != null) {\n if (typeof object.oldPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.oldPartitionInfo: object expected\");\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldPartitionInfo);\n }\n if (object.newPartitionInfo != null) {\n if (typeof object.newPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionInfo: object expected\");\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newPartitionInfo);\n }\n if (object.operations) {\n if (!Array.isArray(object.operations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: array expected\");\n message.operations = [];\n for (let i = 0; i < object.operations.length; ++i) {\n if (typeof object.operations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: object expected\");\n message.operations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.operations[i]);\n }\n }\n if (object.postinstallOptional != null)\n message.postinstallOptional = Boolean(object.postinstallOptional);\n if (object.hashTreeDataExtent != null) {\n if (typeof object.hashTreeDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeDataExtent: object expected\");\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeDataExtent);\n }\n if (object.hashTreeExtent != null) {\n if (typeof object.hashTreeExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeExtent: object expected\");\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeExtent);\n }\n if (object.hashTreeAlgorithm != null)\n message.hashTreeAlgorithm = String(object.hashTreeAlgorithm);\n if (object.hashTreeSalt != null)\n if (typeof object.hashTreeSalt === \"string\")\n $util.base64.decode(object.hashTreeSalt, message.hashTreeSalt = $util.newBuffer($util.base64.length(object.hashTreeSalt)), 0);\n else if (object.hashTreeSalt.length)\n message.hashTreeSalt = object.hashTreeSalt;\n if (object.fecDataExtent != null) {\n if (typeof object.fecDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecDataExtent: object expected\");\n message.fecDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecDataExtent);\n }\n if (object.fecExtent != null) {\n if (typeof object.fecExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecExtent: object expected\");\n message.fecExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecExtent);\n }\n if (object.fecRoots != null)\n message.fecRoots = object.fecRoots >>> 0;\n if (object.version != null)\n message.version = String(object.version);\n if (object.mergeOperations) {\n if (!Array.isArray(object.mergeOperations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected\");\n message.mergeOperations = [];\n for (let i = 0; i < object.mergeOperations.length; ++i) {\n if (typeof object.mergeOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: object expected\");\n message.mergeOperations[i] = $root.chromeos_update_engine.CowMergeOperation.fromObject(object.mergeOperations[i]);\n }\n }\n if (object.estimateCowSize != null)\n if ($util.Long)\n (message.estimateCowSize = $util.Long.fromValue(object.estimateCowSize)).unsigned = true;\n else if (typeof object.estimateCowSize === \"string\")\n message.estimateCowSize = parseInt(object.estimateCowSize, 10);\n else if (typeof object.estimateCowSize === \"number\")\n message.estimateCowSize = object.estimateCowSize;\n else if (typeof object.estimateCowSize === \"object\")\n message.estimateCowSize = new $util.LongBits(object.estimateCowSize.low >>> 0, object.estimateCowSize.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionUpdate message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.PartitionUpdate} message PartitionUpdate\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionUpdate.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.newPartitionSignature = [];\n object.operations = [];\n object.mergeOperations = [];\n }\n if (options.defaults) {\n object.partitionName = \"\";\n object.runPostinstall = false;\n object.postinstallPath = \"\";\n object.filesystemType = \"\";\n object.oldPartitionInfo = null;\n object.newPartitionInfo = null;\n object.postinstallOptional = false;\n object.hashTreeDataExtent = null;\n object.hashTreeExtent = null;\n object.hashTreeAlgorithm = \"\";\n if (options.bytes === String)\n object.hashTreeSalt = \"\";\n else {\n object.hashTreeSalt = [];\n if (options.bytes !== Array)\n object.hashTreeSalt = $util.newBuffer(object.hashTreeSalt);\n }\n object.fecDataExtent = null;\n object.fecExtent = null;\n object.fecRoots = 2;\n object.version = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.estimateCowSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.estimateCowSize = options.longs === String ? \"0\" : 0;\n }\n if (message.partitionName != null && message.hasOwnProperty(\"partitionName\"))\n object.partitionName = message.partitionName;\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n object.runPostinstall = message.runPostinstall;\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n object.postinstallPath = message.postinstallPath;\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n object.filesystemType = message.filesystemType;\n if (message.newPartitionSignature && message.newPartitionSignature.length) {\n object.newPartitionSignature = [];\n for (let j = 0; j < message.newPartitionSignature.length; ++j)\n object.newPartitionSignature[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.newPartitionSignature[j], options);\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\"))\n object.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldPartitionInfo, options);\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\"))\n object.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newPartitionInfo, options);\n if (message.operations && message.operations.length) {\n object.operations = [];\n for (let j = 0; j < message.operations.length; ++j)\n object.operations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.operations[j], options);\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n object.postinstallOptional = message.postinstallOptional;\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\"))\n object.hashTreeDataExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeDataExtent, options);\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\"))\n object.hashTreeExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeExtent, options);\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n object.hashTreeAlgorithm = message.hashTreeAlgorithm;\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n object.hashTreeSalt = options.bytes === String ? $util.base64.encode(message.hashTreeSalt, 0, message.hashTreeSalt.length) : options.bytes === Array ? Array.prototype.slice.call(message.hashTreeSalt) : message.hashTreeSalt;\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\"))\n object.fecDataExtent = $root.chromeos_update_engine.Extent.toObject(message.fecDataExtent, options);\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\"))\n object.fecExtent = $root.chromeos_update_engine.Extent.toObject(message.fecExtent, options);\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n object.fecRoots = message.fecRoots;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.mergeOperations && message.mergeOperations.length) {\n object.mergeOperations = [];\n for (let j = 0; j < message.mergeOperations.length; ++j)\n object.mergeOperations[j] = $root.chromeos_update_engine.CowMergeOperation.toObject(message.mergeOperations[j], options);\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (typeof message.estimateCowSize === \"number\")\n object.estimateCowSize = options.longs === String ? String(message.estimateCowSize) : message.estimateCowSize;\n else\n object.estimateCowSize = options.longs === String ? $util.Long.prototype.toString.call(message.estimateCowSize) : options.longs === Number ? new $util.LongBits(message.estimateCowSize.low >>> 0, message.estimateCowSize.high >>> 0).toNumber(true) : message.estimateCowSize;\n return object;\n };\n\n /**\n * Converts this PartitionUpdate to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionUpdate.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionUpdate;\n })();\n\n chromeos_update_engine.DynamicPartitionGroup = (function() {\n\n /**\n * Properties of a DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionGroup\n * @property {string} name DynamicPartitionGroup name\n * @property {number|Long|null} [size] DynamicPartitionGroup size\n * @property {Array.|null} [partitionNames] DynamicPartitionGroup partitionNames\n */\n\n /**\n * Constructs a new DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionGroup.\n * @implements IDynamicPartitionGroup\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n */\n function DynamicPartitionGroup(properties) {\n this.partitionNames = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionGroup name.\n * @member {string} name\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.name = \"\";\n\n /**\n * DynamicPartitionGroup size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DynamicPartitionGroup partitionNames.\n * @member {Array.} partitionNames\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.partitionNames = $util.emptyArray;\n\n /**\n * Creates a new DynamicPartitionGroup instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup instance\n */\n DynamicPartitionGroup.create = function create(properties) {\n return new DynamicPartitionGroup(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.size);\n if (message.partitionNames != null && message.partitionNames.length)\n for (let i = 0; i < message.partitionNames.length; ++i)\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.partitionNames[i]);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.name = reader.string();\n break;\n case 2:\n message.size = reader.uint64();\n break;\n case 3:\n if (!(message.partitionNames && message.partitionNames.length))\n message.partitionNames = [];\n message.partitionNames.push(reader.string());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"name\"))\n throw $util.ProtocolError(\"missing required 'name'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionGroup message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionGroup.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.partitionNames != null && message.hasOwnProperty(\"partitionNames\")) {\n if (!Array.isArray(message.partitionNames))\n return \"partitionNames: array expected\";\n for (let i = 0; i < message.partitionNames.length; ++i)\n if (!$util.isString(message.partitionNames[i]))\n return \"partitionNames: string[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a DynamicPartitionGroup message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n */\n DynamicPartitionGroup.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionGroup)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n if (object.name != null)\n message.name = String(object.name);\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.partitionNames) {\n if (!Array.isArray(object.partitionNames))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected\");\n message.partitionNames = [];\n for (let i = 0; i < object.partitionNames.length; ++i)\n message.partitionNames[i] = String(object.partitionNames[i]);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionGroup message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.DynamicPartitionGroup} message DynamicPartitionGroup\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionGroup.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.partitionNames = [];\n if (options.defaults) {\n object.name = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.partitionNames && message.partitionNames.length) {\n object.partitionNames = [];\n for (let j = 0; j < message.partitionNames.length; ++j)\n object.partitionNames[j] = message.partitionNames[j];\n }\n return object;\n };\n\n /**\n * Converts this DynamicPartitionGroup to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionGroup.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionGroup;\n })();\n\n chromeos_update_engine.DynamicPartitionMetadata = (function() {\n\n /**\n * Properties of a DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionMetadata\n * @property {Array.|null} [groups] DynamicPartitionMetadata groups\n * @property {boolean|null} [snapshotEnabled] DynamicPartitionMetadata snapshotEnabled\n * @property {boolean|null} [vabcEnabled] DynamicPartitionMetadata vabcEnabled\n * @property {string|null} [vabcCompressionParam] DynamicPartitionMetadata vabcCompressionParam\n * @property {number|null} [cowVersion] DynamicPartitionMetadata cowVersion\n */\n\n /**\n * Constructs a new DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionMetadata.\n * @implements IDynamicPartitionMetadata\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n */\n function DynamicPartitionMetadata(properties) {\n this.groups = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionMetadata groups.\n * @member {Array.} groups\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.groups = $util.emptyArray;\n\n /**\n * DynamicPartitionMetadata snapshotEnabled.\n * @member {boolean} snapshotEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.snapshotEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcEnabled.\n * @member {boolean} vabcEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcCompressionParam.\n * @member {string} vabcCompressionParam\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcCompressionParam = \"\";\n\n /**\n * DynamicPartitionMetadata cowVersion.\n * @member {number} cowVersion\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.cowVersion = 0;\n\n /**\n * Creates a new DynamicPartitionMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata instance\n */\n DynamicPartitionMetadata.create = function create(properties) {\n return new DynamicPartitionMetadata(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.groups != null && message.groups.length)\n for (let i = 0; i < message.groups.length; ++i)\n $root.chromeos_update_engine.DynamicPartitionGroup.encode(message.groups[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.snapshotEnabled != null && Object.hasOwnProperty.call(message, \"snapshotEnabled\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.snapshotEnabled);\n if (message.vabcEnabled != null && Object.hasOwnProperty.call(message, \"vabcEnabled\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.vabcEnabled);\n if (message.vabcCompressionParam != null && Object.hasOwnProperty.call(message, \"vabcCompressionParam\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.vabcCompressionParam);\n if (message.cowVersion != null && Object.hasOwnProperty.call(message, \"cowVersion\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.cowVersion);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.groups && message.groups.length))\n message.groups = [];\n message.groups.push($root.chromeos_update_engine.DynamicPartitionGroup.decode(reader, reader.uint32()));\n break;\n case 2:\n message.snapshotEnabled = reader.bool();\n break;\n case 3:\n message.vabcEnabled = reader.bool();\n break;\n case 4:\n message.vabcCompressionParam = reader.string();\n break;\n case 5:\n message.cowVersion = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.groups != null && message.hasOwnProperty(\"groups\")) {\n if (!Array.isArray(message.groups))\n return \"groups: array expected\";\n for (let i = 0; i < message.groups.length; ++i) {\n let error = $root.chromeos_update_engine.DynamicPartitionGroup.verify(message.groups[i]);\n if (error)\n return \"groups.\" + error;\n }\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n if (typeof message.snapshotEnabled !== \"boolean\")\n return \"snapshotEnabled: boolean expected\";\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n if (typeof message.vabcEnabled !== \"boolean\")\n return \"vabcEnabled: boolean expected\";\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n if (!$util.isString(message.vabcCompressionParam))\n return \"vabcCompressionParam: string expected\";\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n if (!$util.isInteger(message.cowVersion))\n return \"cowVersion: integer expected\";\n return null;\n };\n\n /**\n * Creates a DynamicPartitionMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n */\n DynamicPartitionMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionMetadata)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n if (object.groups) {\n if (!Array.isArray(object.groups))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: array expected\");\n message.groups = [];\n for (let i = 0; i < object.groups.length; ++i) {\n if (typeof object.groups[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: object expected\");\n message.groups[i] = $root.chromeos_update_engine.DynamicPartitionGroup.fromObject(object.groups[i]);\n }\n }\n if (object.snapshotEnabled != null)\n message.snapshotEnabled = Boolean(object.snapshotEnabled);\n if (object.vabcEnabled != null)\n message.vabcEnabled = Boolean(object.vabcEnabled);\n if (object.vabcCompressionParam != null)\n message.vabcCompressionParam = String(object.vabcCompressionParam);\n if (object.cowVersion != null)\n message.cowVersion = object.cowVersion >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.DynamicPartitionMetadata} message DynamicPartitionMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.groups = [];\n if (options.defaults) {\n object.snapshotEnabled = false;\n object.vabcEnabled = false;\n object.vabcCompressionParam = \"\";\n object.cowVersion = 0;\n }\n if (message.groups && message.groups.length) {\n object.groups = [];\n for (let j = 0; j < message.groups.length; ++j)\n object.groups[j] = $root.chromeos_update_engine.DynamicPartitionGroup.toObject(message.groups[j], options);\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n object.snapshotEnabled = message.snapshotEnabled;\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n object.vabcEnabled = message.vabcEnabled;\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n object.vabcCompressionParam = message.vabcCompressionParam;\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n object.cowVersion = message.cowVersion;\n return object;\n };\n\n /**\n * Converts this DynamicPartitionMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionMetadata;\n })();\n\n chromeos_update_engine.ApexInfo = (function() {\n\n /**\n * Properties of an ApexInfo.\n * @memberof chromeos_update_engine\n * @interface IApexInfo\n * @property {string|null} [packageName] ApexInfo packageName\n * @property {number|Long|null} [version] ApexInfo version\n * @property {boolean|null} [isCompressed] ApexInfo isCompressed\n * @property {number|Long|null} [decompressedSize] ApexInfo decompressedSize\n */\n\n /**\n * Constructs a new ApexInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexInfo.\n * @implements IApexInfo\n * @constructor\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n */\n function ApexInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexInfo packageName.\n * @member {string} packageName\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.packageName = \"\";\n\n /**\n * ApexInfo version.\n * @member {number|Long} version\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * ApexInfo isCompressed.\n * @member {boolean} isCompressed\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.isCompressed = false;\n\n /**\n * ApexInfo decompressedSize.\n * @member {number|Long} decompressedSize\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.decompressedSize = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * Creates a new ApexInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo instance\n */\n ApexInfo.create = function create(properties) {\n return new ApexInfo(properties);\n };\n\n /**\n * Encodes the specified ApexInfo message. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.packageName != null && Object.hasOwnProperty.call(message, \"packageName\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.packageName);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.version);\n if (message.isCompressed != null && Object.hasOwnProperty.call(message, \"isCompressed\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isCompressed);\n if (message.decompressedSize != null && Object.hasOwnProperty.call(message, \"decompressedSize\"))\n writer.uint32(/* id 4, wireType 0 =*/32).int64(message.decompressedSize);\n return writer;\n };\n\n /**\n * Encodes the specified ApexInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.packageName = reader.string();\n break;\n case 2:\n message.version = reader.int64();\n break;\n case 3:\n message.isCompressed = reader.bool();\n break;\n case 4:\n message.decompressedSize = reader.int64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n if (!$util.isString(message.packageName))\n return \"packageName: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high)))\n return \"version: integer|Long expected\";\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n if (typeof message.isCompressed !== \"boolean\")\n return \"isCompressed: boolean expected\";\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (!$util.isInteger(message.decompressedSize) && !(message.decompressedSize && $util.isInteger(message.decompressedSize.low) && $util.isInteger(message.decompressedSize.high)))\n return \"decompressedSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an ApexInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n */\n ApexInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexInfo)\n return object;\n let message = new $root.chromeos_update_engine.ApexInfo();\n if (object.packageName != null)\n message.packageName = String(object.packageName);\n if (object.version != null)\n if ($util.Long)\n (message.version = $util.Long.fromValue(object.version)).unsigned = false;\n else if (typeof object.version === \"string\")\n message.version = parseInt(object.version, 10);\n else if (typeof object.version === \"number\")\n message.version = object.version;\n else if (typeof object.version === \"object\")\n message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber();\n if (object.isCompressed != null)\n message.isCompressed = Boolean(object.isCompressed);\n if (object.decompressedSize != null)\n if ($util.Long)\n (message.decompressedSize = $util.Long.fromValue(object.decompressedSize)).unsigned = false;\n else if (typeof object.decompressedSize === \"string\")\n message.decompressedSize = parseInt(object.decompressedSize, 10);\n else if (typeof object.decompressedSize === \"number\")\n message.decompressedSize = object.decompressedSize;\n else if (typeof object.decompressedSize === \"object\")\n message.decompressedSize = new $util.LongBits(object.decompressedSize.low >>> 0, object.decompressedSize.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from an ApexInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.ApexInfo} message ApexInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.packageName = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.version = options.longs === String ? \"0\" : 0;\n object.isCompressed = false;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.decompressedSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.decompressedSize = options.longs === String ? \"0\" : 0;\n }\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n object.packageName = message.packageName;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (typeof message.version === \"number\")\n object.version = options.longs === String ? String(message.version) : message.version;\n else\n object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version;\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n object.isCompressed = message.isCompressed;\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (typeof message.decompressedSize === \"number\")\n object.decompressedSize = options.longs === String ? String(message.decompressedSize) : message.decompressedSize;\n else\n object.decompressedSize = options.longs === String ? $util.Long.prototype.toString.call(message.decompressedSize) : options.longs === Number ? new $util.LongBits(message.decompressedSize.low >>> 0, message.decompressedSize.high >>> 0).toNumber() : message.decompressedSize;\n return object;\n };\n\n /**\n * Converts this ApexInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ApexInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexInfo;\n })();\n\n chromeos_update_engine.ApexMetadata = (function() {\n\n /**\n * Properties of an ApexMetadata.\n * @memberof chromeos_update_engine\n * @interface IApexMetadata\n * @property {Array.|null} [apexInfo] ApexMetadata apexInfo\n */\n\n /**\n * Constructs a new ApexMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexMetadata.\n * @implements IApexMetadata\n * @constructor\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n */\n function ApexMetadata(properties) {\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexMetadata apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n */\n ApexMetadata.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new ApexMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata instance\n */\n ApexMetadata.create = function create(properties) {\n return new ApexMetadata(properties);\n };\n\n /**\n * Encodes the specified ApexMetadata message. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified ApexMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates an ApexMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n */\n ApexMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexMetadata)\n return object;\n let message = new $root.chromeos_update_engine.ApexMetadata();\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from an ApexMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.ApexMetadata} message ApexMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.apexInfo = [];\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this ApexMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n ApexMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexMetadata;\n })();\n\n chromeos_update_engine.DeltaArchiveManifest = (function() {\n\n /**\n * Properties of a DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @interface IDeltaArchiveManifest\n * @property {number|null} [blockSize] DeltaArchiveManifest blockSize\n * @property {number|Long|null} [signaturesOffset] DeltaArchiveManifest signaturesOffset\n * @property {number|Long|null} [signaturesSize] DeltaArchiveManifest signaturesSize\n * @property {number|null} [minorVersion] DeltaArchiveManifest minorVersion\n * @property {Array.|null} [partitions] DeltaArchiveManifest partitions\n * @property {number|Long|null} [maxTimestamp] DeltaArchiveManifest maxTimestamp\n * @property {chromeos_update_engine.IDynamicPartitionMetadata|null} [dynamicPartitionMetadata] DeltaArchiveManifest dynamicPartitionMetadata\n * @property {boolean|null} [partialUpdate] DeltaArchiveManifest partialUpdate\n * @property {Array.|null} [apexInfo] DeltaArchiveManifest apexInfo\n * @property {string|null} [securityPatchLevel] DeltaArchiveManifest securityPatchLevel\n */\n\n /**\n * Constructs a new DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DeltaArchiveManifest.\n * @implements IDeltaArchiveManifest\n * @constructor\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n */\n function DeltaArchiveManifest(properties) {\n this.partitions = [];\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DeltaArchiveManifest blockSize.\n * @member {number} blockSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.blockSize = 4096;\n\n /**\n * DeltaArchiveManifest signaturesOffset.\n * @member {number|Long} signaturesOffset\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest signaturesSize.\n * @member {number|Long} signaturesSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest minorVersion.\n * @member {number} minorVersion\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.minorVersion = 0;\n\n /**\n * DeltaArchiveManifest partitions.\n * @member {Array.} partitions\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partitions = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest maxTimestamp.\n * @member {number|Long} maxTimestamp\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.maxTimestamp = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * DeltaArchiveManifest dynamicPartitionMetadata.\n * @member {chromeos_update_engine.IDynamicPartitionMetadata|null|undefined} dynamicPartitionMetadata\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.dynamicPartitionMetadata = null;\n\n /**\n * DeltaArchiveManifest partialUpdate.\n * @member {boolean} partialUpdate\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partialUpdate = false;\n\n /**\n * DeltaArchiveManifest apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.apexInfo = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest securityPatchLevel.\n * @member {string} securityPatchLevel\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.securityPatchLevel = \"\";\n\n /**\n * Creates a new DeltaArchiveManifest instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest instance\n */\n DeltaArchiveManifest.create = function create(properties) {\n return new DeltaArchiveManifest(properties);\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.blockSize != null && Object.hasOwnProperty.call(message, \"blockSize\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.blockSize);\n if (message.signaturesOffset != null && Object.hasOwnProperty.call(message, \"signaturesOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.signaturesOffset);\n if (message.signaturesSize != null && Object.hasOwnProperty.call(message, \"signaturesSize\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.signaturesSize);\n if (message.minorVersion != null && Object.hasOwnProperty.call(message, \"minorVersion\"))\n writer.uint32(/* id 12, wireType 0 =*/96).uint32(message.minorVersion);\n if (message.partitions != null && message.partitions.length)\n for (let i = 0; i < message.partitions.length; ++i)\n $root.chromeos_update_engine.PartitionUpdate.encode(message.partitions[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();\n if (message.maxTimestamp != null && Object.hasOwnProperty.call(message, \"maxTimestamp\"))\n writer.uint32(/* id 14, wireType 0 =*/112).int64(message.maxTimestamp);\n if (message.dynamicPartitionMetadata != null && Object.hasOwnProperty.call(message, \"dynamicPartitionMetadata\"))\n $root.chromeos_update_engine.DynamicPartitionMetadata.encode(message.dynamicPartitionMetadata, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.partialUpdate != null && Object.hasOwnProperty.call(message, \"partialUpdate\"))\n writer.uint32(/* id 16, wireType 0 =*/128).bool(message.partialUpdate);\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();\n if (message.securityPatchLevel != null && Object.hasOwnProperty.call(message, \"securityPatchLevel\"))\n writer.uint32(/* id 18, wireType 2 =*/146).string(message.securityPatchLevel);\n return writer;\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message, length delimited. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 3:\n message.blockSize = reader.uint32();\n break;\n case 4:\n message.signaturesOffset = reader.uint64();\n break;\n case 5:\n message.signaturesSize = reader.uint64();\n break;\n case 12:\n message.minorVersion = reader.uint32();\n break;\n case 13:\n if (!(message.partitions && message.partitions.length))\n message.partitions = [];\n message.partitions.push($root.chromeos_update_engine.PartitionUpdate.decode(reader, reader.uint32()));\n break;\n case 14:\n message.maxTimestamp = reader.int64();\n break;\n case 15:\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.decode(reader, reader.uint32());\n break;\n case 16:\n message.partialUpdate = reader.bool();\n break;\n case 17:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n case 18:\n message.securityPatchLevel = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DeltaArchiveManifest message.\n * @function verify\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DeltaArchiveManifest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n if (!$util.isInteger(message.blockSize))\n return \"blockSize: integer expected\";\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (!$util.isInteger(message.signaturesOffset) && !(message.signaturesOffset && $util.isInteger(message.signaturesOffset.low) && $util.isInteger(message.signaturesOffset.high)))\n return \"signaturesOffset: integer|Long expected\";\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (!$util.isInteger(message.signaturesSize) && !(message.signaturesSize && $util.isInteger(message.signaturesSize.low) && $util.isInteger(message.signaturesSize.high)))\n return \"signaturesSize: integer|Long expected\";\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n if (!$util.isInteger(message.minorVersion))\n return \"minorVersion: integer expected\";\n if (message.partitions != null && message.hasOwnProperty(\"partitions\")) {\n if (!Array.isArray(message.partitions))\n return \"partitions: array expected\";\n for (let i = 0; i < message.partitions.length; ++i) {\n let error = $root.chromeos_update_engine.PartitionUpdate.verify(message.partitions[i]);\n if (error)\n return \"partitions.\" + error;\n }\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (!$util.isInteger(message.maxTimestamp) && !(message.maxTimestamp && $util.isInteger(message.maxTimestamp.low) && $util.isInteger(message.maxTimestamp.high)))\n return \"maxTimestamp: integer|Long expected\";\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\")) {\n let error = $root.chromeos_update_engine.DynamicPartitionMetadata.verify(message.dynamicPartitionMetadata);\n if (error)\n return \"dynamicPartitionMetadata.\" + error;\n }\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n if (typeof message.partialUpdate !== \"boolean\")\n return \"partialUpdate: boolean expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n if (!$util.isString(message.securityPatchLevel))\n return \"securityPatchLevel: string expected\";\n return null;\n };\n\n /**\n * Creates a DeltaArchiveManifest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n */\n DeltaArchiveManifest.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DeltaArchiveManifest)\n return object;\n let message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n if (object.blockSize != null)\n message.blockSize = object.blockSize >>> 0;\n if (object.signaturesOffset != null)\n if ($util.Long)\n (message.signaturesOffset = $util.Long.fromValue(object.signaturesOffset)).unsigned = true;\n else if (typeof object.signaturesOffset === \"string\")\n message.signaturesOffset = parseInt(object.signaturesOffset, 10);\n else if (typeof object.signaturesOffset === \"number\")\n message.signaturesOffset = object.signaturesOffset;\n else if (typeof object.signaturesOffset === \"object\")\n message.signaturesOffset = new $util.LongBits(object.signaturesOffset.low >>> 0, object.signaturesOffset.high >>> 0).toNumber(true);\n if (object.signaturesSize != null)\n if ($util.Long)\n (message.signaturesSize = $util.Long.fromValue(object.signaturesSize)).unsigned = true;\n else if (typeof object.signaturesSize === \"string\")\n message.signaturesSize = parseInt(object.signaturesSize, 10);\n else if (typeof object.signaturesSize === \"number\")\n message.signaturesSize = object.signaturesSize;\n else if (typeof object.signaturesSize === \"object\")\n message.signaturesSize = new $util.LongBits(object.signaturesSize.low >>> 0, object.signaturesSize.high >>> 0).toNumber(true);\n if (object.minorVersion != null)\n message.minorVersion = object.minorVersion >>> 0;\n if (object.partitions) {\n if (!Array.isArray(object.partitions))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected\");\n message.partitions = [];\n for (let i = 0; i < object.partitions.length; ++i) {\n if (typeof object.partitions[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: object expected\");\n message.partitions[i] = $root.chromeos_update_engine.PartitionUpdate.fromObject(object.partitions[i]);\n }\n }\n if (object.maxTimestamp != null)\n if ($util.Long)\n (message.maxTimestamp = $util.Long.fromValue(object.maxTimestamp)).unsigned = false;\n else if (typeof object.maxTimestamp === \"string\")\n message.maxTimestamp = parseInt(object.maxTimestamp, 10);\n else if (typeof object.maxTimestamp === \"number\")\n message.maxTimestamp = object.maxTimestamp;\n else if (typeof object.maxTimestamp === \"object\")\n message.maxTimestamp = new $util.LongBits(object.maxTimestamp.low >>> 0, object.maxTimestamp.high >>> 0).toNumber();\n if (object.dynamicPartitionMetadata != null) {\n if (typeof object.dynamicPartitionMetadata !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected\");\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.fromObject(object.dynamicPartitionMetadata);\n }\n if (object.partialUpdate != null)\n message.partialUpdate = Boolean(object.partialUpdate);\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n if (object.securityPatchLevel != null)\n message.securityPatchLevel = String(object.securityPatchLevel);\n return message;\n };\n\n /**\n * Creates a plain object from a DeltaArchiveManifest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.DeltaArchiveManifest} message DeltaArchiveManifest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DeltaArchiveManifest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.partitions = [];\n object.apexInfo = [];\n }\n if (options.defaults) {\n object.blockSize = 4096;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesSize = options.longs === String ? \"0\" : 0;\n object.minorVersion = 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.maxTimestamp = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.maxTimestamp = options.longs === String ? \"0\" : 0;\n object.dynamicPartitionMetadata = null;\n object.partialUpdate = false;\n object.securityPatchLevel = \"\";\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n object.blockSize = message.blockSize;\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (typeof message.signaturesOffset === \"number\")\n object.signaturesOffset = options.longs === String ? String(message.signaturesOffset) : message.signaturesOffset;\n else\n object.signaturesOffset = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesOffset) : options.longs === Number ? new $util.LongBits(message.signaturesOffset.low >>> 0, message.signaturesOffset.high >>> 0).toNumber(true) : message.signaturesOffset;\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (typeof message.signaturesSize === \"number\")\n object.signaturesSize = options.longs === String ? String(message.signaturesSize) : message.signaturesSize;\n else\n object.signaturesSize = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesSize) : options.longs === Number ? new $util.LongBits(message.signaturesSize.low >>> 0, message.signaturesSize.high >>> 0).toNumber(true) : message.signaturesSize;\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n object.minorVersion = message.minorVersion;\n if (message.partitions && message.partitions.length) {\n object.partitions = [];\n for (let j = 0; j < message.partitions.length; ++j)\n object.partitions[j] = $root.chromeos_update_engine.PartitionUpdate.toObject(message.partitions[j], options);\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (typeof message.maxTimestamp === \"number\")\n object.maxTimestamp = options.longs === String ? String(message.maxTimestamp) : message.maxTimestamp;\n else\n object.maxTimestamp = options.longs === String ? $util.Long.prototype.toString.call(message.maxTimestamp) : options.longs === Number ? new $util.LongBits(message.maxTimestamp.low >>> 0, message.maxTimestamp.high >>> 0).toNumber() : message.maxTimestamp;\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\"))\n object.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.toObject(message.dynamicPartitionMetadata, options);\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n object.partialUpdate = message.partialUpdate;\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n object.securityPatchLevel = message.securityPatchLevel;\n return object;\n };\n\n /**\n * Converts this DeltaArchiveManifest to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n * @returns {Object.} JSON object\n */\n DeltaArchiveManifest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DeltaArchiveManifest;\n })();\n\n return chromeos_update_engine;\n})();\n\nexport { $root as default };\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TextWriter, ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { chromeos_update_engine } from './update_metadata_pb.js'\n\n/**\n * Parse the non-A/B OTA package and return it as a DeltaArchiveManifest\n * @param {ZipReader} packedFile\n */\nexport class PayloadNonAB extends chromeos_update_engine.DeltaArchiveManifest {\n nonAB: boolean = true\n Blocksize: number = 4096\n packedFile: ZipReader\n constructor(packedFile: ZipReader) {\n super()\n this.packedFile = packedFile\n }\n\n async init() {\n this.Blocksize = 4096\n this.partialUpdate = false\n this.dynamicPartitionMetadata = new chromeos_update_engine.DynamicPartitionMetadata(\n { snapshotEnabled: false, vabcEnabled: false }\n )\n this.partitions = []\n\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.transfer.list)/g\n const /** Array */ entries = await this.packedFile.getEntries()\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n const match = entry.filename.match(regexName)![0]\n let newPartition: any = new chromeos_update_engine.PartitionUpdate({\n partitionName: match\n })\n newPartition.rawText = await entry.getData!(new TextWriter())\n await this.parseTransferList(newPartition)\n this.partitions.push(newPartition)\n }\n }\n }\n\n async parseTransferList(partition: chromeos_update_engine.PartitionUpdate | any) {\n let lines = (partition as any).rawText.split('\\n')\n // First four line in header: version, total blocks,\n // number of stashed entries, maximum used memory for stash\n if (lines.length < 4) {\n throw 'At least 4 lines in header should be provided.'\n }\n partition.version = lines[0]\n partition.totalBlocks = parseInt(lines[1])\n partition.entryStashed = parseInt(lines[2])\n partition.maxStashed = parseInt(lines[3])\n partition.newPartitionInfo = new chromeos_update_engine.PartitionInfo()\n partition.newPartitionInfo.hash = new Uint8Array()\n partition.newPartitionInfo.size = 'unknown'\n /**\n * The main body have 8 different ops:\n * zero [rangeset] : fill zeros\n * new [rangeset] : fill with new data from \n * erase [rangeset] : mark given blocks as empty\n * move <...>\n * bsdiff <...>\n * imgdiff <...> :\n * Read the source blocks and apply (not for move op) to the target blocks\n * stash : load the given source range to memory\n * free : free the given \n * format:\n * [rangeset]: <# of pairs>, , , ...\n * : a hex number with length of 40\n * <...>: We expect to parse the remainder of the parameter tokens as one of:\n * (loads data from source image only)\n * - <[stash_id:stash_range] ...> (loads data from stashes only)\n * <[stash_id:stash_range] ...>\n * (loads data from both source image and stashes)\n */\n partition.operations = new Array()\n let newDataSize = await this.sizeNewData(partition.partitionName)\n for (const line of lines.slice(4)) {\n let op = new chromeos_update_engine.InstallOperation()\n let elements = line.split(' ')\n op.type = elements[0]\n switch ((op.type as unknown) as string) {\n case 'zero':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'new':\n // unlike an A/B OTA, the payload only exists in the payload.bin,\n // in an non-A/B OTA, the payload exists in both .new.data and .patch.data.\n // The new ops do not have any information about data length.\n // what we do here is: read in the size of .new.data, assume the first new\n // op have the data length of the size of .new.data.\n op.dataLength = newDataSize\n newDataSize = 0\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'erase':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'move':\n op.dstExtents = parseRange([], elements[2])\n break\n case 'bsdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'imgdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'stash':\n break\n case 'free':\n break\n }\n partition.operations.push(op)\n }\n }\n\n /**\n * Return the size of .new.data.*\n * @param {String} partitionName\n * @return {Number}\n */\n async sizeNewData(partitionName: string) {\n const /** Array */ entries = await this.packedFile.getEntries()\n const /** RegExp */ regexName = new RegExp(partitionName + '.new.dat.*')\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n return entry.uncompressedSize\n }\n }\n }\n}\n\n/**\n * Parse the range string and return it as an array of extents\n * @param {extents} Array\n * @param {String} rangeset\n * @return Array\n */\nfunction parseRange(extents: Object[], rangeset: string) {\n const regexRange = new RegExp('[d,]+')\n if (rangeset.match(regexRange)) {\n let elements = rangeset.split(',')\n for (let i = 1; i < elements.length; i = i + 2) {\n let extent = new Object({\n startBlock: parseInt(elements[i]),\n numBlocks: parseInt(elements[i + 1]) - parseInt(elements[i])\n })\n extents.push(extent)\n }\n }\n return extents\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class paypload is used to read in and\n * parse the payload.bin file from a OTA.zip file.\n * Class OpType creates a Map that can resolve the\n * operation type.\n * @package zip.js\n * @package protobufjs\n */\n\nimport {\n BlobReader,\n TextWriter,\n Writer,\n ZipReader,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\n// import '@zip.js/zip.js'\nimport { chromeos_update_engine as update_metadata_pb } from './update_metadata_pb'\nimport { PayloadNonAB } from './payload_nonab'\nimport { ZipFile } from './trim_zip'\n// import { Zip_js } from 'zip.js'\n\nconst /** String */ _MAGIC = 'CrAU'\nconst /** Number */ _VERSION_SIZE = 8\nconst /** Number */ _MANIFEST_LEN_SIZE = 8\nconst /** Number */ _METADATA_SIGNATURE_LEN_SIZE = 4\n\nconst /** Number */ _PAYLOAD_HEADER_SIZE =\n _MAGIC.length +\n _VERSION_SIZE +\n _MANIFEST_LEN_SIZE +\n _METADATA_SIGNATURE_LEN_SIZE\n\nconst /** Number */ _BRILLO_MAJOR_PAYLOAD_VERSION = 2\nexport const /** Array */ MetadataFormat = [\n {\n prefix: 'pre-build',\n key: 'preBuild',\n name: 'Pre-build'\n },\n {\n prefix: 'pre-build-incremental',\n key: 'preBuildVersion',\n name: 'Pre-build version'\n },\n {\n prefix: 'post-build',\n key: 'postBuild',\n name: 'Post-build'\n },\n {\n prefix: 'post-build-incremental',\n key: 'postBuildVersion',\n name: 'Post-build version'\n },\n {\n prefix: 'post-security-patch-level',\n key: 'postSecurityPatchLevel',\n name: 'Post-build SPL'\n },\n {\n prefix: 'post-timestamp',\n key: 'postTimestamp',\n name: 'Post-build timestamp'\n },\n ]\n\nclass StopIteration extends Error {}\n\nclass AbPayloadHeader {\n constructor(\n public magic: string,\n public version: number,\n public manifest_len: number,\n public metadata_signature_len: number\n ) {}\n}\n\n/**\n * Read in an integer from binary bufferArray.\n * @param {Int} size the size of a integer being read in\n * @return {Int} an integer.\n */\nasync function readIntAt(buffer: Blob, position: number, size: number) {\n let /** DataView */ view = new DataView(\n await buffer!.slice(position, position + size).arrayBuffer()\n )\n if (typeof view.getBigUint64 !== 'function') {\n view.getBigUint64 = function(offset) {\n const a = BigInt(view.getUint32(offset))\n const b = BigInt(view.getUint32(offset + 4))\n const bigNumber = a * 4294967296n + b\n return bigNumber\n }\n }\n switch (size) {\n case 2:\n return view.getUint16(0)\n case 4:\n return view.getUint32(0)\n case 8:\n return Number(view.getBigUint64(0))\n default:\n throw 'Cannot read this integer with size ' + size\n }\n}\n\nclass OTAPayloadBlobWriter extends Writer {\n offset: number\n contentType: string\n blob: Blob\n prefixLength: number\n\n header?: AbPayloadHeader\n\n async readHeader(blob: Blob) {\n let cursor = 0\n const readInt = (size: number) => {\n const ret = readIntAt(blob, cursor, size)\n cursor += size\n return ret\n }\n let buffer = await blob.slice(0, _PAYLOAD_HEADER_SIZE).arrayBuffer()\n let /** TextDecoder */ decoder = new TextDecoder()\n let magicBytes = buffer.slice(0, _MAGIC.length)\n const magic = decoder.decode(magicBytes)\n if (magic != _MAGIC) {\n throw new Error(\n `MAGIC is not correct, expected: ${_MAGIC} actual: ${magic}`\n )\n }\n cursor += _MAGIC.length\n const header_version = await readInt(_VERSION_SIZE)\n const manifest_len = await readInt(_MANIFEST_LEN_SIZE)\n if (header_version != _BRILLO_MAJOR_PAYLOAD_VERSION) {\n throw new Error(`Unexpected major version number: ${header_version}`)\n }\n const metadata_signature_len = await readInt(_METADATA_SIGNATURE_LEN_SIZE)\n this.header = new AbPayloadHeader(\n magic,\n header_version,\n manifest_len,\n metadata_signature_len\n )\n }\n /**\n * A zip.Writer that is tailored for OTA payload.bin read-in.\n * Instead of reading in all the contents in payload.bin, this writer will\n * throw an 'StopIteration' error when the header is read in.\n * The header will be stored into the .\n * @param {Payload} payload\n * @param {String} contentType\n */\n constructor(contentType = '') {\n super()\n this.offset = 0\n this.contentType = contentType\n this.blob = new Blob([], { type: contentType })\n this.prefixLength = 0\n }\n\n async writeUint8Array(array: Uint8Array) {\n super.writeUint8Array(array)\n this.blob = new Blob([this.blob, array.buffer], { type: this.contentType })\n this.offset = this.blob.size\n // Once the prefixLength is non-zero, the address of manifest and signature\n // become known and can be read in. Otherwise the header needs to be read\n // in first to determine the prefixLength.\n if (this.offset >= _PAYLOAD_HEADER_SIZE && this.prefixLength == 0) {\n console.log('Parsing header!')\n await this.readHeader(this.blob)\n this.prefixLength =\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n console.log(`Computed metadata length: ${this.prefixLength}`)\n }\n if (this.prefixLength > 0) {\n console.log(`${this.offset}/${this.prefixLength}`)\n if (this.offset >= this.prefixLength) {\n // The prefix has everything we need (header, manifest, signature). Once\n // the offset is beyond the prefix, no need to move on.\n this.blob = this.blob.slice(0, this.prefixLength)\n throw new StopIteration()\n }\n }\n }\n\n getData() {\n return this.blob\n }\n}\n\nexport class Payload {\n zipreader: ZipReader\n buffer: Blob | undefined\n private metadata: any\n manifest: update_metadata_pb.DeltaArchiveManifest | undefined\n metadata_signature!: update_metadata_pb.Signatures\n\n header?: AbPayloadHeader\n\n /**\n * This class parses the metadata of a OTA package.\n * @param {File} file A OTA.zip file read from user's machine.\n */\n constructor(file: File | URL | ZipFile) {\n if (file instanceof File) {\n this.zipreader = new ZipReader(new BlobReader(file))\n } else if (file instanceof URL) {\n this.zipreader = new ZipReader(new HttpReader(file.href))\n } else {\n this.zipreader = file.reader\n }\n }\n\n getMetadataLength(): number {\n return (\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n )\n }\n\n /**\n * Unzip the OTA package, get payload.bin and metadata\n */\n async unzip() {\n let entries = await this.zipreader.getEntries()\n for (let entry of entries) {\n if (entry.filename == 'payload.bin') {\n let writer = new OTAPayloadBlobWriter('')\n try {\n await entry.getData!(writer)\n } catch (e) {\n if (e instanceof StopIteration) {\n // Exception used as a hack to stop reading from zip. NO need to do anything\n // Ideally zip.js would provide an API to partialll read a zip\n // entry, but they don't. So this is what we get\n } else {\n console.log(e)\n throw e\n }\n }\n this.buffer = writer.getData()\n await this.readManifest(this.buffer, writer.header!)\n console.log('AB OTA manifest parsed')\n } else if (entry.filename == 'META-INF/com/android/metadata') {\n this.metadata = await entry.getData!(new TextWriter())\n console.log('OTA Package metadata parsed')\n }\n }\n if (!this.manifest) {\n console.log('Failed to parse AB OTA package, falling back to non-AB')\n try {\n // The temporary variable manifest has to be used here, to prevent the html page\n // being rendered before everything is read in properly\n let manifest = new PayloadNonAB(this.zipreader)\n await manifest.init()\n manifest.nonAB = true\n this.manifest = manifest\n } catch (error) {\n alert('Please select a legit OTA package')\n return\n }\n }\n }\n\n /**\n * Read the header of payload.bin, including the magic, header_version,\n * manifest_len, metadata_signature_len.\n */\n /**\n * Read in the manifest in an OTA.zip file.\n * The structure of the manifest can be found in:\n * aosp/system/update_engine/update_metadata.proto\n */\n async readManifest(buffer: Blob, header: AbPayloadHeader) {\n this.header = header\n let cursor = _PAYLOAD_HEADER_SIZE\n let manifestBlob = await buffer\n .slice(cursor, cursor + header.manifest_len)\n .arrayBuffer()\n cursor += header.manifest_len\n this.manifest = update_metadata_pb.DeltaArchiveManifest.decode(\n new Uint8Array(manifestBlob)\n )\n let signatureBlob = await buffer\n .slice(cursor, cursor + header.metadata_signature_len)\n .arrayBuffer()\n cursor += header.metadata_signature_len\n this.metadata_signature = update_metadata_pb.Signatures.decode(\n new Uint8Array(signatureBlob)\n );\n (this.manifest! as any).nonAB = false\n }\n\n parseMetadata() {\n for (let formatter of MetadataFormat) {\n let regex = new RegExp(formatter.prefix + '.+')\n if (this.metadata.match(regex)) {\n ;(this as any)[formatter.key] = trimEntry(\n this.metadata.match(regex)[0],\n formatter.prefix\n )\n } else {\n ;(this as any)[formatter.key] = ''\n }\n }\n }\n\n async init() {\n await this.unzip()\n this.parseMetadata()\n }\n}\n\nexport class DefaultMap extends Map {\n /** Reload the original get method. Return the original key value if\n * the key does not exist.\n * @param {Any} key\n */\n getWithDefault(key: any) {\n if (!this.has(key)) return key\n return this.get(key)\n }\n}\n\nexport class OpType {\n mapType: DefaultMap\n /**\n * OpType.mapType create a map that could resolve the operation\n * types. The operation types are encoded as numbers in\n * update_metadata.proto and must be decoded before any usage.\n */\n constructor() {\n let types = update_metadata_pb.InstallOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport class MergeOpType {\n mapType: DefaultMap\n /**\n * MergeOpType create a map that could resolve the COW merge operation\n * types. This is very similar to OpType class except that one is for\n * installation operations.\n */\n constructor() {\n let /** Array<{String: Number}>*/ types =\n update_metadata_pb.CowMergeOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport function octToHex(bufferArray: Uint8Array, space = true, maxLine = 16) {\n let hex_table = ''\n for (let i = 0; i < bufferArray.length; i++) {\n const hex /** String **/ = bufferArray[i].toString(16).toUpperCase()\n if (hex.length === 2) {\n hex_table += hex + (space ? ' ' : '')\n } else {\n hex_table += '0' + hex + (space ? ' ' : '')\n }\n if ((i + 1) % maxLine == 0 && space) {\n hex_table += '\\n'\n }\n }\n return hex_table\n}\n\n/**\n * Trim the prefix in an entry. This is required because the lookbehind\n * regular expression is not supported in safari yet.\n * @param {String} entry\n * @param {String} prefix\n * @return String\n */\nfunction trimEntry(entry: string, prefix: string) {\n return entry.slice(prefix.length + 1, entry.length)\n}\n","\n\n\n\n\n\n\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EChartsOption } from 'echarts'\n\nexport class EchartsData {\n statisticData: Map\n trimmedData: Map\n title: string\n unit: string\n maximumEntries: number\n /**\n * Given a set of [key, value] pairs and title, create an object for further\n * usage in Vue-Echarts.\n * @param {Map} statisticData\n * @param {String} title\n * @param {String} unit\n * @param {Number} maximumEntries\n */\n constructor(\n statisticData: Map,\n title: string,\n unit: string,\n maximumEntries = 15\n ) {\n this.statisticData = statisticData\n this.trimmedData = trimMap(statisticData, maximumEntries)\n this.title = title\n this.unit = unit\n this.maximumEntries = maximumEntries\n }\n\n /**\n * Convert the raw data into a string.\n * @return {String} A list of [key, value].\n */\n listData() {\n let /** String */ table = ''\n for (let [key, value] of this.statisticData) {\n table += key + ' : ' + value.toString() + ' Blocks' + '\\n'\n }\n return table\n }\n\n /**\n * Generate necessary parameters (option) for vue-echarts.\n * Format of the parameters can be found here:\n * https://echarts.apache.org/en/option.html\n * @param {String} unit\n * @return {Object} an ECharts option object.\n */\n getEchartsOption(): EChartsOption {\n let /** Object */ option: EChartsOption = {}\n option.title = {\n text: this.title,\n left: 'center'\n }\n option.tooltip = {\n trigger: 'item',\n formatter: '{a}
{b} : {c} ' + this.unit + ' ({d}%)'\n }\n option.legend = {\n orient: 'horizontal',\n left: 'top',\n top: '10%',\n data: Array.from(this.trimmedData.keys())\n }\n option.series = [\n {\n name: this.title,\n type: 'pie',\n radius: '55%',\n center: ['50%', '60%'],\n data: Array.from(this.trimmedData).map((pair: any) => {\n return { value: pair[1], name: pair[0] }\n }),\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)'\n }\n }\n }\n ]\n return option\n }\n}\n\n/**\n * When there are too many entries in the map, the pie chart can be very\n * crowded. This function will return the entries that have high values.\n * Specifically, the top will be stored and the others\n * will be added into an entry called 'other'.\n * @param {Map} map\n * @param {Number} maximumEntries\n * @return {Map}\n */\nfunction trimMap(map: Map, maximumEntries: number) {\n if (map.size <= maximumEntries) return map\n let /** Map */ new_map = new Map()\n for (let i = 0; i < maximumEntries; i++) {\n let /** Number */ curr = 0\n let /** String */ currKey = ''\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n if (value > curr) {\n curr = value\n currKey = key\n }\n }\n }\n new_map.set(currKey, curr)\n }\n let /** Number */ restTotal = 0\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n restTotal += value\n }\n }\n new_map.set('other', restTotal)\n return new_map\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class MapParser will take in a Android build and construct\n * several file name maps (physical address: file name) according to it.\n * The map of each partitions is added by calling MapParser.add(partitionName).\n * You can query the file name being operated by calling\n * MapParser.query(address, datalength).\n */\n\nimport {\n ZipReader,\n BlobReader,\n TextWriter,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\nimport { chromeos_update_engine } from './update_metadata_pb'\n\nexport class MapParser {\n build: ZipReader\n mapFiles: Map\n maps: Map\n /**\n * This class will take in a .zip Android build and construct a file type map\n * @param {File} targetFile\n */\n constructor(targetFile: File | URL) {\n if (targetFile instanceof File) {\n this.build = new ZipReader(new BlobReader(targetFile))\n } else {\n this.build = new ZipReader(new HttpReader(targetFile.href))\n }\n this.mapFiles = new Map()\n this.maps = new Map()\n }\n\n /**\n * Find the .map entries in the .zip build file. Store them as a map with\n * pairs of (partition name: zip.js entry).\n */\n async init() {\n let /** Array */ entries = await this.build.getEntries()\n const /** RegExp*/ regexPath = /IMAGES\\/[a-z_]*\\.map/g\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.map)/g\n entries.forEach(entry => {\n if (entry.filename.match(regexPath)) {\n this.mapFiles.set(entry.filename.match(regexName)![0], entry)\n }\n })\n }\n\n /**\n * According to the .map in the build, build a map for later query.\n * @param {String} partitionName\n * @param {Number} totalLength\n */\n async add(partitionName: string, totalLength: number) {\n let /** Array */ map = []\n const /** RegExp */ regexNumber = /\\d+/g\n const /** Reg */ regexRange = /\\d+\\-\\d+/g\n for (let i = 0; i < totalLength; i++) map[i] = `<${partitionName}>`\n if (this.mapFiles.get(partitionName)) {\n let /** String */ mapText = await this.mapFiles\n .get(partitionName)\n .getData(new TextWriter())\n let /** Array */ fileEntries = mapText.split('\\n')\n // Each line of the .map file in Android build starts with the filename\n // Followed by the block address, either a number or a range, for example:\n // //system/apex/com.android.adbd.apex 54-66 66 66-2663\n for (let entry of fileEntries) {\n let /** Array */ elements = entry.split(' ')\n for (let j = 1; j < elements.length; j++) {\n let /** Number */ left = 0\n let /** Number */ right = 0\n if (elements[j].match(regexRange)) {\n left = parseInt(elements[j].match(/\\d+/g)[0])\n right = parseInt(elements[j].match(/\\d+/g)[1])\n } else {\n left = parseInt(elements[j].match(regexNumber))\n right = parseInt(elements[j].match(regexNumber))\n }\n InsertMap(map, elements[0], left, right)\n }\n }\n this.maps.set(partitionName, map)\n } else {\n this.maps.set(partitionName, map)\n }\n }\n\n /**\n * Return the filename of given address.\n * @param {String} partitionName\n * @param {Array} extents\n * @return {Array}\n */\n query(partitionName: string, extents: Array) {\n let /** Array */ names = []\n let /** Array */ map = this.maps.get(partitionName)\n for (let ext of extents) {\n names.push(queryMap(map, ext.startBlock, ext.startBlock + ext.numBlocks))\n }\n return names\n }\n}\n\n/**\n * Fill in the hashtable from to using .\n * @param {Array} map\n * @param {String} name\n * @param {Number} left\n * @param {Number} right\n */\nfunction InsertMap(\n map: Array,\n name: string,\n left: number,\n right: number\n) {\n for (let i = left; i <= right; i++) {\n map[i] = name\n }\n}\n\n/**\n * Query the hashtable using index
.\n * @param {Array} map\n * @param {Number} left\n * @param {Number} right\n */\nfunction queryMap(map: Array, left: number, right: number) {\n // Assuming the consecutive blocks belong to the same file\n // Only the start block is queried here.\n if (!map[left]) {\n return 'unknown'\n }\n return map[left]\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Offer functions that can be used to parse the partitionUpdate\n * and then do statistics over it. One can use analysePartitions to specify the\n * partitions been analysed and metrics.\n */\n\nimport { OpType, MergeOpType } from './payload'\nimport { EchartsData } from './echarts_data'\nimport { MapParser } from './map_parser'\nimport { chromeos_update_engine } from './update_metadata_pb'\n\n/**\n * Add a to a element associated to . If the element dose not\n * exists than its value will be initialized to zero.\n * @param {Map} map\n * @param {String} key\n * @param {Number} value\n */\nfunction addNumberToMap(map: Map, key: String, value: number) {\n if (!map.get(key)) {\n map.set(key, 0)\n }\n map.set(key, map.get(key)! + value)\n}\n\n/**\n * Return a statistics over the numbers of blocks (in destination) that are\n * being operated by different installation operation (e.g. REPLACE, BSDIFF).\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedBlockStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n operatedBlocks,\n operationType,\n numBlocks(operation.dstExtents)\n )\n }\n }\n return operatedBlocks\n}\n\nexport function mergeOperationStatistics(\n partitions: Array,\n blockSize: number\n) {\n let /** Map */ mergeOperations = new Map()\n let /** MergeOpType */ opType = new MergeOpType()\n let /** Number */ totalBlocks = 0\n for (let partition of partitions) {\n for (let operation of partition.mergeOperations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n mergeOperations,\n operationType,\n operation.dstExtent!.numBlocks\n )\n }\n // The total blocks number should be rounded up\n if (partition.newPartitionInfo == null) {\n throw new Error(\n `Partition ${partition.partitionName} doesn't have new_partition_info field.`\n )\n }\n totalBlocks += Math.ceil(partition.newPartitionInfo.size / blockSize)\n }\n // The COW merge operation is default to be COW_replace and not shown in\n // the manifest info. We have to mannually add that part of operations,\n // by subtracting the total blocks with other blocks.\n mergeOperations.forEach((value, key) => (totalBlocks -= value))\n mergeOperations.set('COW_REPLACE', totalBlocks)\n return mergeOperations\n}\n\n/**\n * Return a statistics over the disk usage of payload.bin, based on the type of\n * installation operations. Only partitions that are being passed in will be\n * included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedPayloadStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(operatedBlocks, operationType, operation.dataLength)\n }\n }\n return operatedBlocks\n}\n/**\n * Return a statistics over the disk usage of each file types in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFileExtensionsStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let filenameStats = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n const fileExtenstionStats = new Map()\n filenameStats.forEach((size, filename) => {\n addNumberToMap(fileExtenstionStats, name2Extension(filename), size)\n })\n return fileExtenstionStats\n}\n\n/**\n * Return a statistics over the disk usage of each file name in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFilenamesStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let /** Map */ operatedFilenames = new Map()\n if (!targetFile) {\n return operatedFilenames\n }\n let buildMap = new MapParser(targetFile)\n await buildMap.init()\n for (let partition of partitions) {\n await buildMap.add(\n partition.partitionName,\n Math.ceil(partition.newPartitionInfo!.size / blockSize)\n )\n for (let operation of partition.operations!) {\n if (!operation.hasOwnProperty('dataLength')) continue\n let operatedFileNames = buildMap.query(\n partition.partitionName,\n operation.dstExtents!\n )\n let extentDataLength = distributeFilenames(\n operatedFileNames,\n operation.dstExtents!,\n operation.dataLength\n )\n extentDataLength!.forEach((value, key) => {\n addNumberToMap(operatedFilenames, key, value)\n })\n }\n }\n return operatedFilenames\n}\n\n/**\n * Analyse the given partitions using the given metrics.\n * @param {String} metrics\n * @param {Array} partitions\n * @return {EchartsData}\n */\nexport async function analysePartitions(\n metrics: String,\n partitions: Array,\n blockSize = 4096,\n targetFile: File | null | URL = null\n) {\n let /** Map */ statisticsData\n let /** Echartsdata */ echartsData\n switch (metrics) {\n case 'blocks':\n statisticsData = operatedBlockStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Operated blocks in target build',\n 'blocks'\n )\n break\n case 'payload':\n statisticsData = operatedPayloadStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Payload disk usage',\n 'bytes'\n )\n break\n case 'COWmerge':\n statisticsData = mergeOperationStatistics(partitions, blockSize)\n echartsData = new EchartsData(\n statisticsData,\n 'COW merge operations',\n 'blocks'\n )\n break\n case 'filenames':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated filenames',\n 'bytes'\n )\n break\n case 'extensions':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFileExtensionsStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated extensions',\n 'bytes'\n )\n break\n }\n if (echartsData) {\n return echartsData\n } else {\n throw 'Please double check if this is a proper AB OTA package.'\n }\n}\n\n/**\n * Calculate the number of blocks being operated\n * @param {Array} exts\n * @return {number}\n */\nexport function numBlocks(\n exts: Array | null | undefined\n) {\n if (!exts) {\n return 0\n }\n const accumulator = (total: number, ext: chromeos_update_engine.IExtent) =>\n total + ext.numBlocks\n return exts.reduce(accumulator, 0)\n}\n\n/**\n * Return a string that indicates the blocks being operated\n * in the manner of (start_block, block_length)\n * @param {Array} exts\n * @return {string}\n */\nexport function displayBlocks(exts: Array) {\n const accumulator = (total: string, ext: chromeos_update_engine.Extent) =>\n total + '(' + ext.startBlock + ',' + ext.numBlocks + ')'\n return exts.reduce(accumulator, '')\n}\n\n/**\n * Return a map with pairs of (file extension, data length used by this\n * extension). The total data length will be distributed by the blocks ratio\n * of each extent.\n * @param {Array} filenames\n * @param {Array} exts\n * @param {Number} length\n * @return {Map}\n */\nexport function distributeFilenames(\n filenames: Array,\n exts: Array,\n length: number\n): Map {\n let totalBlocks = numBlocks(exts)\n let distributedLengths = new Map()\n for (let i = 0; i < filenames.length; i++) {\n addNumberToMap(\n distributedLengths,\n filenames[i],\n Math.round((length * exts[i].numBlocks) / totalBlocks)\n )\n }\n return distributedLengths\n}\n\n/**\n * convert a filename into extension, for example:\n * '//system/apex/com.android.adbd.apex' => 'apex'\n * @param {String} filename\n * @return {String}\n */\nexport function name2Extension(filename: string) {\n let elements = filename.split('.')\n if (elements.length > 1) {\n return elements[elements.length - 1]\n } else if (elements[0] === 'unknown') {\n return 'unknown'\n } else if (filename[0] == '<' && filename.endsWith('>')) {\n return filename\n } else {\n return 'no-extension'\n }\n}\n","\nimport { numBlocks, displayBlocks } from '../services/payload_composition'\nimport { DefaultMap } from '../services/payload'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n operation: {\n type: Object,\n required: true\n },\n mapType: {\n type: DefaultMap,\n required: true\n }\n },\n data() {\n return {\n srcTotalBlocks: 0,\n srcBlocks: '',\n dstTotalBlocks: 0,\n dstBlocks: ''\n }\n },\n mounted() {\n if (this.operation.srcExtents) {\n this.srcTotalBlocks = numBlocks(this.operation.srcExtents)\n this.srcBlocks = displayBlocks(this.operation.srcExtents)\n }\n if (this.operation.dstExtents) {\n this.dstTotalBlocks = numBlocks(this.operation.dstExtents)\n this.dstBlocks = displayBlocks(this.operation.dstExtents)\n }\n }\n})\n","import { render } from \"./OperationDetail.vue?vue&type=template&id=44174082&scoped=true\"\nimport script from \"./OperationDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./OperationDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-44174082\"\n\nexport default script","\nimport { chromeos_update_engine } from '@/services/update_metadata_pb'\nimport { defineComponent } from 'vue'\nimport { OpType, octToHex } from '../services/payload'\nimport OperationDetail from './OperationDetail.vue'\n\nexport default defineComponent({\n components: {\n OperationDetail\n },\n props: {\n partition: {\n type: chromeos_update_engine.PartitionUpdate,\n required: true\n },\n dynamicPartitionList: {\n type: Array,\n required: true\n }\n },\n data() {\n return {\n showOPs: false,\n showInfo: false,\n opType: new OpType()\n }\n },\n methods: {\n toggle(key: string) {\n ;(this as any)[key] = !(this as any)[key]\n },\n octToHex: octToHex\n },\n computed: {\n readableTimestamp() {\n const unixTimestamp = parseInt(this.partition.version)\n if (isNaN(unixTimestamp)) {\n return ''\n }\n // Unix timestamp is in seconds, but js want milliseconds. So *1000\n return new Date(unixTimestamp * 1000).toString()\n },\n isDynamicPartition(): boolean {\n return (\n this.dynamicPartitionList.indexOf(this.partition.partitionName) >= 0\n )\n }\n }\n})\n","import { render } from \"./PartitionDetail.vue?vue&type=template&id=6dba348a&scoped=true\"\nimport script from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PartitionDetail.vue?vue&type=style&index=0&id=6dba348a&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-6dba348a\"\n\nexport default script","\n\n\n\n\n\n\n","import * as zip from '@zip.js/zip.js/dist/zip.js'\nimport { ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { Payload } from './payload'\n\nexport class ZipFile {\n public reader: ZipReader\n\n constructor(private file: File | URL) {\n this.reader = getZipReader(file)\n }\n getFileName() {\n return getFileName(this.file)\n }\n getFileSize() {\n if (this.file instanceof File) {\n return this.file.size\n } else {\n // TODO(zhangkelvin) Support getting file size from URL\n return 0\n }\n }\n}\n\nexport async function trimZip(\n file: ZipReader,\n p: (entry: zip.Entry) => boolean\n): Promise {\n const reader = file\n const writer = new zip.ZipWriter(new zip.BlobWriter('application/zip'))\n const entries = await reader.getEntries()\n for (const entry of entries.filter(entry => !!entry && p(entry))) {\n const blobWriter = new zip.BlobWriter()\n const data = (await entry.getData!(blobWriter)) as Blob\n console.log(`Adding ${entry.filename}, ${data.size}`)\n writer.add(entry.filename, new zip.BlobReader(blobWriter.getData()), {\n level: 0 // no compression\n })\n }\n return writer\n}\n\nfunction getZipReader(file: File | URL) {\n if (file instanceof File) {\n return new zip.ZipReader(new zip.BlobReader(file))\n } else {\n return new zip.ZipReader(new zip.HttpReader(file.href))\n }\n}\n\nexport function getFileName(file: File | URL) {\n if (file instanceof File) {\n return file.name\n } else {\n return file.pathname\n }\n}\n\nexport async function trimTargetFiles(file: File | URL): Promise {\n const writer = await trimZip(getZipReader(file), entry => {\n return entry.filename.startsWith('META/') || entry.filename.endsWith('.map')\n })\n return await writer.close()\n}\n\nexport async function trimOTAPackage(payload: Payload): Promise {\n const writer = await trimZip(payload.zipreader, entry => {\n return entry.filename != 'payload.bin'\n })\n await writer.add(\n 'payload.bin',\n new zip.BlobReader(payload.buffer!.slice(0, payload.getMetadataLength())),\n // Most toolings assume that payload.bin and other entries are not\n // compressed, so use level 0\n {\n level: 0\n }\n )\n const blob: Blob = await writer.close()\n return blob\n}\n\nexport function downloadFile(\n blob: Blob,\n downloadNode: HTMLAnchorElement,\n filename: string\n) {\n const url = window.URL.createObjectURL(blob)\n downloadNode.href = url\n downloadNode.download = filename\n downloadNode.click()\n window.URL.revokeObjectURL(url)\n}\n\nexport function ensureSuffix(str: string, suffix: string) {\n if (str.endsWith(suffix)) {\n return str\n } else {\n return str + suffix\n }\n}\n","\nimport { Payload, MetadataFormat } from '../services/payload'\nimport { ZipFile } from '@/services/trim_zip'\n\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n zipFile: {\n type: ZipFile,\n required: true\n },\n payload: {\n type: Payload,\n required: true\n }\n },\n data() {\n return {\n MetadataFormat\n }\n },\n computed: {\n otaMetadata(): {\n prefix: string\n key: string\n name: string\n }[] {\n return MetadataFormat.filter(formatter =>\n String((this.payload as any)[formatter.key]).length > 0\n );\n },\n totalCOWSize(): number {\n const cowSizes = this.payload?.manifest?.partitions.map(p => p.estimateCowSize || 0);\n if (!cowSizes) {\n return 0;\n }\n return cowSizes.reduce((a, b) => a + b);\n },\n securityPatchLevel(): string {\n const spl = this.payload?.manifest?.securityPatchLevel;\n if (!spl) {\n return \"\";\n }\n return spl;\n },\n totalDynamicPartitionSize(): number {\n const groups = this.payload?.manifest?.dynamicPartitionMetadata?.groups\n if (!groups) {\n return 0\n }\n const dynamicPartitionNamess = new Set(\n groups.flatMap(g => g.partitionNames)\n )\n const dynamicPartitions =\n this.payload.manifest?.partitions.filter(p =>\n dynamicPartitionNamess.has(p.partitionName)\n ) || []\n if (dynamicPartitions.length <= 0) {\n return 0\n }\n return dynamicPartitions\n .map(p => p.newPartitionInfo?.size || 0)\n .reduce((acc, cur) => acc + cur)\n }\n }\n})\n","import { render } from \"./BasicInfo.vue?vue&type=template&id=62f2be1b&scoped=true\"\nimport script from \"./BasicInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./BasicInfo.vue?vue&type=script&lang=ts\"\n\nimport \"./BasicInfo.vue?vue&type=style&index=0&id=62f2be1b&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-62f2be1b\"\n\nexport default script","\nimport PartitionDetail from './PartitionDetail.vue'\nimport BasicInfo from './BasicInfo.vue'\nimport { Payload, octToHex } from '../services/payload'\nimport {\n downloadFile,\n ensureSuffix,\n trimOTAPackage,\n ZipFile\n} from '@/services/trim_zip'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n components: {\n PartitionDetail,\n BasicInfo\n },\n props: {\n zipFile: {\n type: ZipFile,\n default: null\n },\n payload: {\n type: Payload,\n default: null\n }\n },\n methods: {\n octToHex: octToHex,\n async exportOTAPackage() {\n const blob = await trimOTAPackage(this.payload as Payload)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(this.zipFile.getFileName(), '.zip')\n )\n }\n },\n computed: {\n dynamicPartitions(): string[] {\n return (\n this.payload.manifest?.dynamicPartitionMetadata?.groups?.flatMap(\n g => g.partitionNames || []\n ) || []\n )\n }\n }\n})\n","import { render } from \"./PayloadDetail.vue?vue&type=template&id=05db67f2&scoped=true\"\nimport script from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-05db67f2\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n labels: {\n type: Array,\n default: new Array()\n },\n modelValue: {\n type: Map,\n default: new Map()\n }\n },\n data() {\n return {\n selectAll: 1,\n selectAllText: ['Select All', 'Unselect All']\n }\n },\n mounted() {\n // Set the default value to be true once mounted\n for (let key of this.labels) {\n this.modelValue.set(key, true)\n }\n },\n methods: {\n updateSelected(newSelect: string) {\n this.modelValue.set(newSelect, !this.modelValue.get(newSelect))\n this.$emit('update:modelValue', this.modelValue)\n },\n revertAllSelection() {\n this.selectAll = 1 - this.selectAll\n for (let key of this.modelValue.keys()) {\n this.modelValue.set(key, Boolean(this.selectAll))\n }\n }\n }\n})\n","import { render } from \"./PartialCheckbox.vue?vue&type=template&id=533f2336&scoped=true\"\nimport script from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\n\nimport \"./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-533f2336\"\n\nexport default script","\n\n\n\n\n\n\n","import { render } from \"./PieChart.vue?vue&type=template&id=5d1cb486&scoped=true\"\nimport script from \"./PieChart.vue?vue&type=script&lang=js\"\nexport * from \"./PieChart.vue?vue&type=script&lang=js\"\n\nimport \"./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-5d1cb486\"\n\nexport default script","\nimport axios from 'axios'\nimport PartialCheckbox from './PartialCheckbox.vue'\nimport PieChart from './PieChart.vue'\nimport BaseFile from './BaseFile.vue'\nimport { analysePartitions } from '../services/payload_composition'\nimport { chromeos_update_engine as update_metadata_pb } from '../services/update_metadata_pb'\nimport { TooltipComponentPositionCallbackParams } from 'echarts'\nimport { EchartsData } from '@/services/echarts_data'\nimport { defineComponent } from 'vue'\nimport {\n downloadFile,\n ensureSuffix,\n getFileName,\n trimTargetFiles\n} from '@/services/trim_zip'\n\ninterface ComponentState {\n partitionInclude: Map\n echartsData: EchartsData | null\n listData: string\n targetFile: File | URL | null\n}\n\nexport default defineComponent({\n components: {\n PartialCheckbox,\n PieChart,\n BaseFile\n },\n props: {\n manifest: {\n type: update_metadata_pb.DeltaArchiveManifest,\n default: () => []\n },\n demo: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n partitionInclude: new Map(),\n echartsData: null,\n listData: '',\n targetFile: null\n } as ComponentState\n },\n computed: {\n updatePartitions(): string[] {\n return this.manifest.partitions.map(\n (partition: update_metadata_pb.IPartitionUpdate) => {\n return partition.partitionName\n }\n )\n }\n },\n async mounted() {\n if (this.demo) {\n try {\n const download = await axios.get(\n './files/cf_x86_target_file_demo.zip',\n { responseType: 'blob' }\n )\n this.targetFile = new File([download.data], 'target_demo.zip')\n } catch (err) {\n console.log('Please put a proper example target file in /public/files/')\n }\n }\n },\n methods: {\n piechartClick(param: TooltipComponentPositionCallbackParams) {\n console.log(param)\n },\n async updateChart(metrics: string) {\n let partitionSelected = this.manifest.partitions.filter(partition =>\n this.partitionInclude.get(partition.partitionName)\n )\n try {\n this.echartsData = await analysePartitions(\n metrics,\n partitionSelected,\n this.manifest.blockSize,\n this.targetFile\n )\n } catch (err) {\n alert(`Cannot be processed for the following issue: ${err}`)\n }\n },\n selectBuild(file: File | URL) {\n //TODO(lishutong) check the version of target file is same to the OTA target\n this.targetFile = file\n },\n async exportTargetFileMetadata() {\n const blob = await trimTargetFiles(this.targetFile!)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(getFileName(this.targetFile!), '.zip')\n )\n }\n }\n})\n","import { render } from \"./PayloadComposition.vue?vue&type=template&id=44b569bd&scoped=true\"\nimport script from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadComposition.vue?vue&type=style&index=0&id=44b569bd&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-44b569bd\"\n\nexport default script","\nimport BaseFile from '../components/BaseFile.vue'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n BaseFile,\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return ({\n zipFile: null,\n payload: null\n } as unknown) as {\n zipFile: ZipFile\n payload: Payload\n }\n },\n methods: {\n async unpackOTA(file: File | URL) {\n this.zipFile = new ZipFile(file)\n try {\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n alert(`Please check if this is a correct OTA package (.zip). ${err}`)\n console.log(err)\n }\n }\n }\n})\n","import { render } from \"./PackageAnalysis.vue?vue&type=template&id=4cbf2b67\"\nimport script from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nexport * from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\nimport axios from 'axios'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return {\n zipFile: null,\n payload: null\n } as {\n zipFile: ZipFile | null\n payload: Payload | null\n }\n },\n async created() {\n // put cf_x86_demo.zip and cf_x86_target_file_demo into\n // this directory: /public/files\n try {\n const download = await axios.get('./files/cf_x86_demo.zip', {\n responseType: 'blob'\n })\n this.zipFile = new ZipFile(new File([download.data], 'ota_demo.zip'))\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n console.log('Please put a proper example OTA in /public/files/')\n }\n }\n})\n","import { render } from \"./Demo.vue?vue&type=template&id=1e5d071a\"\nimport script from \"./Demo.vue?vue&type=script&lang=ts\"\nexport * from \"./Demo.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n","import { render } from \"./About.vue?vue&type=template&id=67ed0bf6\"\nconst script = {}\nscript.render = render\n\nexport default script","\n\n\n\n","import { render } from \"./NotFound.vue?vue&type=template&id=50c6f348&scoped=true\"\nconst script = {}\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-50c6f348\"\n\nexport default script","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createRouter, createWebHistory } from 'vue-router'\nimport PackageAnalysis from '@/views/PackageAnalysis.vue'\nimport Demo from'@/views/Demo.vue'\nimport About from '@/views/About.vue'\nimport NotFound from '@/views/NotFound.vue'\n\nconst routes = [\n {\n path: '/',\n name: 'Analysis',\n component: PackageAnalysis,\n meta: {\n title: 'Analyse OTA package - from AOSP'\n }\n },\n {\n path: '/demo',\n name: 'Demo',\n component: Demo\n },\n {\n path: '/about',\n name: 'About',\n component: About\n },\n {\n path: '/:catchAll(.*)',\n name: 'Not Found',\n component: NotFound\n }\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes\n})\n\n// This callback runs before every route change, including on page load.\nrouter.beforeEach((to, from, next) => {\n // This goes through the matched routes from last to first, finding the closest route with a title.\n // e.g., if we have `/some/deep/nested/route` and `/some`, `/deep`, and `/nested` have titles,\n // `/nested`'s will be chosen.\n const nearestWithTitle = to.matched.slice().reverse().find(r => r.meta && r.meta.title);\n\n // Find the nearest route element with meta tags.\n const nearestWithMeta = to.matched.slice().reverse().find(r => r.meta && r.meta.metaTags)!;\n\n const previousNearestWithMeta = from.matched.slice().reverse().find(r => r.meta && r.meta.metaTags);\n\n // If a route with a title was found, set the document (page) title to that value.\n if(nearestWithTitle) {\n document.title = nearestWithTitle.meta.title as string;\n } else if(previousNearestWithMeta) {\n document.title = previousNearestWithMeta.meta.title as string;\n }\n\n // Remove any stale meta tags from the document using the key attribute we set below.\n Array.from(document.querySelectorAll('[data-vue-router-controlled]')).map(el => el.parentNode!.removeChild(el));\n\n next();\n});\n\nexport default router\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createStore } from 'vuex'\n\nexport default createStore({\n state: {},\n mutations: {},\n actions: {},\n modules: {}\n})\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createApp } from 'vue'\nimport vuetify from './plugins/vuetify'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nconst app = createApp(App)\napp.use(router)\napp.use(store)\napp.use(vuetify)\n\napp.mount('#app')","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartitionDetail.vue?vue&type=style&index=0&id=6dba348a&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BasicInfo.vue?vue&type=style&index=0&id=62f2be1b&scoped=true&lang=css\""],"sourceRoot":""} \ No newline at end of file diff --git a/analyseOTA/js/app.59ec6394.js b/analyseOTA/js/app.59ec6394.js new file mode 100644 index 0000000..4b5b6b7 --- /dev/null +++ b/analyseOTA/js/app.59ec6394.js @@ -0,0 +1,2 @@ +(function(){"use strict";var e={6758:function(e,t,n){var a=n(9963),r=(n(1778),n(6784)),o=n(515),i=n(1731),s=(0,r.R)({components:o,directives:i,theme:{defaultTheme:"dark"}}),l=n(6252),c=n(3577);const p=(0,l.Uk)(" OTA Analyzer ");function u(e,t,n,a,r,o){const i=(0,l.up)("v-app-bar-title"),s=(0,l.up)("v-spacer"),u=(0,l.up)("v-btn"),d=(0,l.up)("v-app-bar"),f=(0,l.up)("router-view"),h=(0,l.up)("v-container"),g=(0,l.up)("v-main"),m=(0,l.up)("v-app");return(0,l.wg)(),(0,l.j4)(m,null,{default:(0,l.w5)((()=>[(0,l.Wm)(d,{rounded:"",color:"primary"},{default:(0,l.w5)((()=>[(0,l.Wm)(i,null,{default:(0,l.w5)((()=>[p])),_:1}),(0,l.Wm)(s),((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(r.links,(e=>((0,l.wg)(),(0,l.j4)(u,{key:`${e}-header-link`,to:{name:e},class:"ml-5",color:"primary"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,c.zw)(e),1)])),_:2},1032,["to"])))),128))])),_:1}),(0,l.Wm)(g,null,{default:(0,l.w5)((()=>[(0,l.Wm)(h,{fluid:""},{default:(0,l.w5)((()=>[(0,l.Wm)(f)])),_:1})])),_:1})])),_:1})}var d={data(){return{links:["Analysis","Demo","About"]}}},f=n(3744);const h=(0,f.Z)(d,[["render",u]]);var g=h,m=n(2119);const y=(0,l.Uk)("This tool does not upload your package anywhere. All analysis are done in the frontend using Javascript.");function w(e,t,n,a,r,o){const i=(0,l.up)("v-alert"),s=(0,l.up)("v-row"),c=(0,l.up)("BaseFile"),p=(0,l.up)("PayloadDetail"),u=(0,l.up)("v-col"),d=(0,l.up)("v-divider"),f=(0,l.up)("PayloadComposition");return(0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l.Wm)(s,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i,{style:{color:"yellow"}},{default:(0,l.w5)((()=>[y])),_:1})])),_:1}),(0,l.Wm)(s,null,{default:(0,l.w5)((()=>[(0,l.Wm)(u,{cols:"12",md:"6"},{default:(0,l.w5)((()=>[(0,l.Wm)(c,{label:"Please drag and drop an OTA package or select one",onFileSelect:e.unpackOTA},null,8,["onFileSelect"]),e.zipFile&&e.payload?((0,l.wg)(),(0,l.j4)(p,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):(0,l.kq)("",!0)])),_:1}),(0,l.Wm)(d,{vertical:""}),(0,l.Wm)(u,{cols:"12",md:"6"},{default:(0,l.w5)((()=>[e.zipFile&&e.payload.manifest?((0,l.wg)(),(0,l.j4)(f,{key:0,manifest:e.payload.manifest},null,8,["manifest"])):(0,l.kq)("",!0)])),_:1})])),_:1})],64)}const b={class:"file-select ma-5"},O={key:0},_={key:1},k={key:2};function S(e,t,n,r,o,i){return(0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l._)("label",b,[(0,l._)("div",{class:"select-button",onDragover:t[0]||(t[0]=(...t)=>e.dragover&&e.dragover(...t)),onDragleave:t[1]||(t[1]=(...t)=>e.dragleave&&e.dragleave(...t)),onDrop:t[2]||(t[2]=(...t)=>e.drop&&e.drop(...t))},[e.label?((0,l.wg)(),(0,l.iD)("span",O,(0,c.zw)(e.fileName?"":e.label),1)):((0,l.wg)(),(0,l.iD)("span",_,"Select File")),e.fileName?((0,l.wg)(),(0,l.iD)("div",k,"File selected: "+(0,c.zw)(e.fileName),1)):(0,l.kq)("",!0)],32),(0,l._)("input",{ref:"file",type:"file",accept:".zip",onChange:t[3]||(t[3]=(...t)=>e.handleFileChange&&e.handleFileChange(...t))},null,544)]),(0,l.wy)((0,l._)("input",{class:(0,c.C_)(["url-input",{"url-invalid":!e.parsedURL&&""!=e.url,"url-valid":e.parsedURL||""==e.url}]),ref:"url_input",type:"url",placeholder:"type a URL","onUpdate:modelValue":t[4]||(t[4]=t=>e.url=t),onKeyup:t[5]||(t[5]=(...t)=>e.urlKeyup&&e.urlKeyup(...t))},null,34),[[a.nr,e.url]])],64)}var x=(0,l.aZ)({props:{label:{type:String,default:""}},emits:{"file-select":null},data(){return{fileName:"",url:""}},computed:{parsedURL(){try{return new URL(this.url)}catch{return null}}},methods:{handleFileChange(e){if(!e.currentTarget)return;let t=e.currentTarget;if(null==t.files||t.files.length<1)return;const n=t.files[0];this.$emit("file-select",n),this.url="",this.fileName=t.files[0].name},dragover(e){if(e.preventDefault(),!e.currentTarget)return;let t=e.currentTarget;t.classList.contains("file-hover")||t.classList.add("file-hover")},dragleave(e){if(!e.currentTarget)return;let t=e.currentTarget;t.classList.remove("file-hover")},drop(e){if(e.preventDefault(),!e.currentTarget)return;let t=e.currentTarget;e.dataTransfer&&0!=e.dataTransfer.files.length&&(t.files=e.dataTransfer.files,this.handleFileChange(e),t.classList.remove("file-hover"))},urlKeyup(e){if(console.log(this.url),"Enter"==e.key){const t=e.target;if(null==this.parsedURL)return void console.error(`${t.value} is an invalid URL`);this.$emit("file-select",this.parsedURL)}}}});const P=(0,f.Z)(x,[["render",S],["__scopeId","data-v-0630c5ec"]]);var I=P;const v=e=>((0,l.dD)("data-v-05db67f2"),e=e(),(0,l.Cn)(),e),E=(0,l.Uk)("Export Metadata"),z={ref:"download"},L={key:1},T=v((()=>(0,l._)("h3",null,"Partition List",-1))),j={key:1,class:"signature"},D=v((()=>(0,l._)("h3",null,"Metadata Signature",-1))),A={style:{"white-space":"pre-wrap"}};function B(e,t,n,a,r,o){const i=(0,l.up)("v-btn"),s=(0,l.up)("BasicInfo"),p=(0,l.up)("v-divider"),u=(0,l.up)("PartitionDetail"),d=(0,l.up)("v-card"),f=(0,l.up)("v-col"),h=(0,l.up)("v-row");return(0,l.wg)(),(0,l.iD)(l.HY,null,[e.zipFile&&e.payload?((0,l.wg)(),(0,l.j4)(i,{key:0,class:"download-btn",onClick:e.exportOTAPackage},{default:(0,l.w5)((()=>[E])),_:1},8,["onClick"])):(0,l.kq)("",!0),(0,l._)("a",z,null,512),(0,l.Wm)(s,{zipFile:e.zipFile,payload:e.payload,class:"mb-5"},null,8,["zipFile","payload"]),(0,l.Wm)(p),e.payload?((0,l.wg)(),(0,l.iD)("div",L,[T,e.payload.manifest?((0,l.wg)(),(0,l.j4)(h,{key:0,class:"mb-5"},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.payload.manifest.partitions,(t=>((0,l.wg)(),(0,l.j4)(f,{key:t.partitionName,cols:"12",md:"4"},{default:(0,l.w5)((()=>[(0,l.Wm)(d,{elevation:"5",hover:"",shaped:"",class:"partial-info"},{default:(0,l.w5)((()=>[(0,l.Wm)(u,{partition:t,dynamicPartitionList:e.dynamicPartitions},null,8,["partition","dynamicPartitionList"])])),_:2},1024)])),_:2},1024)))),128))])),_:1})):(0,l.kq)("",!0),(0,l.Wm)(p),e.payload.metadata_signature&&!e.payload.manifest.nonAB?((0,l.wg)(),(0,l.iD)("div",j,[D,(0,l._)("span",A,(0,c.zw)(e.octToHex(e.payload.metadata_signature.signatures[0].data)),1)])):(0,l.kq)("",!0)])):(0,l.kq)("",!0)],64)}const C=e=>((0,l.dD)("data-v-6dba348a"),e=e(),(0,l.Cn)(),e),N={key:0},M={key:1},F=C((()=>(0,l._)("strong",null," Estimate COW Size: ",-1))),U={key:2},R=C((()=>(0,l._)("strong",null," Postinstall Script: ",-1))),V={class:"toggle"},H={key:0},W={key:0},Z=C((()=>(0,l._)("strong",null," Old Partition Size: ",-1))),q={key:1},K=C((()=>(0,l._)("strong",null," Old Partition Hash: ",-1))),J={class:"hex"},$=C((()=>(0,l._)("strong",null," New Partition Size: ",-1))),Y={key:2},G=C((()=>(0,l._)("strong",null," New Partition Hash: ",-1))),X={class:"hex"},Q={key:3},ee=C((()=>(0,l._)("strong",null," Version: ",-1))),te={key:4},ne=C((()=>(0,l._)("strong",null," Version: ",-1))),ae={class:"toggle"},re={key:0};function oe(e,t,n,a,r,o){const i=(0,l.up)("OperationDetail");return(0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l._)("h4",{class:(0,c.C_)({"new-partition":!e.partition.oldPartitionInfo})},(0,c.zw)(e.partition.partitionName),3),e.isDynamicPartition?((0,l.wg)(),(0,l.iD)("p",N," Dynamic: ✅ ")):(0,l.kq)("",!0),e.partition.estimateCowSize?((0,l.wg)(),(0,l.iD)("p",M,[F,(0,l.Uk)(" "+(0,c.zw)(e.partition.estimateCowSize)+" Bytes ",1)])):(0,l.kq)("",!0),e.partition.postinstallPath?((0,l.wg)(),(0,l.iD)("p",U,[R,(0,l.Uk)(" "+(0,c.zw)(e.partition.postinstallPath),1)])):(0,l.kq)("",!0),(0,l._)("div",V,[(0,l._)("h4",{onClick:t[0]||(t[0]=t=>e.toggle("showInfo")),class:(0,c.C_)({active:e.showInfo,inactive:!e.showInfo})}," Partition Infos ",2),e.showInfo?((0,l.wg)(),(0,l.iD)("ul",H,[e.partition.oldPartitionInfo?((0,l.wg)(),(0,l.iD)("li",W,[Z,(0,l.Uk)(" "+(0,c.zw)(e.partition.oldPartitionInfo.size)+" Bytes ",1)])):(0,l.kq)("",!0),e.partition.oldPartitionInfo?((0,l.wg)(),(0,l.iD)("li",q,[K,(0,l._)("div",J,(0,c.zw)(e.octToHex(e.partition.oldPartitionInfo.hash,!1,16)),1)])):(0,l.kq)("",!0),(0,l._)("li",null,[$,(0,l.Uk)(" "+(0,c.zw)(e.partition.newPartitionInfo.size)+" Bytes ",1)]),e.partition.newPartitionInfo.hash?((0,l.wg)(),(0,l.iD)("li",Y,[G,(0,l._)("div",X,(0,c.zw)(e.octToHex(e.partition.newPartitionInfo.hash,!1,16)),1)])):(0,l.kq)("",!0),e.partition.version?((0,l.wg)(),(0,l.iD)("li",Q,[ee,(0,l.Uk)(" "+(0,c.zw)(e.partition.version),1)])):(0,l.kq)("",!0),e.readableTimestamp?((0,l.wg)(),(0,l.iD)("li",te,[ne,(0,l.Uk)(" "+(0,c.zw)(e.readableTimestamp),1)])):(0,l.kq)("",!0)])):(0,l.kq)("",!0)]),(0,l._)("div",ae,[(0,l._)("h4",{onClick:t[1]||(t[1]=t=>e.toggle("showOPs")),class:(0,c.C_)({active:e.showOPs,inactive:!e.showOPs})}," Total Operations: "+(0,c.zw)(e.partition.operations.length),3),e.showOPs?((0,l.wg)(),(0,l.iD)("ul",re,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.partition.operations,(t=>((0,l.wg)(),(0,l.iD)("li",{key:t.dataSha256Hash},[(0,l.Wm)(i,{operation:t,mapType:e.opType.mapType},null,8,["operation","mapType"])])))),128))])):(0,l.kq)("",!0)])],64)}var ie=n(2100);const se=ie.Reader,le=ie.Writer,ce=ie.util,pe=ie.roots["default"]||(ie.roots["default"]={}),ue=pe.chromeos_update_engine=(()=>{const e={};return e.Extent=function(){function e(e){if(e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.startBlock=e.uint64();break;case 2:a.numBlocks=e.uint64();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==typeof e||null===e?"object expected":null==e.startBlock||!e.hasOwnProperty("startBlock")||ce.isInteger(e.startBlock)||e.startBlock&&ce.isInteger(e.startBlock.low)&&ce.isInteger(e.startBlock.high)?null==e.numBlocks||!e.hasOwnProperty("numBlocks")||ce.isInteger(e.numBlocks)||e.numBlocks&&ce.isInteger(e.numBlocks.low)&&ce.isInteger(e.numBlocks.high)?null:"numBlocks: integer|Long expected":"startBlock: integer|Long expected"},e.fromObject=function(e){if(e instanceof pe.chromeos_update_engine.Extent)return e;let t=new pe.chromeos_update_engine.Extent;return null!=e.startBlock&&(ce.Long?(t.startBlock=ce.Long.fromValue(e.startBlock)).unsigned=!0:"string"===typeof e.startBlock?t.startBlock=parseInt(e.startBlock,10):"number"===typeof e.startBlock?t.startBlock=e.startBlock:"object"===typeof e.startBlock&&(t.startBlock=new ce.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0))),null!=e.numBlocks&&(ce.Long?(t.numBlocks=ce.Long.fromValue(e.numBlocks)).unsigned=!0:"string"===typeof e.numBlocks?t.numBlocks=parseInt(e.numBlocks,10):"number"===typeof e.numBlocks?t.numBlocks=e.numBlocks:"object"===typeof e.numBlocks&&(t.numBlocks=new ce.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});let n={};if(t.defaults){if(ce.Long){let e=new ce.Long(0,0,!0);n.startBlock=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.startBlock=t.longs===String?"0":0;if(ce.Long){let e=new ce.Long(0,0,!0);n.numBlocks=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.numBlocks=t.longs===String?"0":0}return null!=e.startBlock&&e.hasOwnProperty("startBlock")&&("number"===typeof e.startBlock?n.startBlock=t.longs===String?String(e.startBlock):e.startBlock:n.startBlock=t.longs===String?ce.Long.prototype.toString.call(e.startBlock):t.longs===Number?new ce.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0):e.startBlock),null!=e.numBlocks&&e.hasOwnProperty("numBlocks")&&("number"===typeof e.numBlocks?n.numBlocks=t.longs===String?String(e.numBlocks):e.numBlocks:n.numBlocks=t.longs===String?ce.Long.prototype.toString.call(e.numBlocks):t.longs===Number?new ce.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0):e.numBlocks),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ie.util.toJSONOptions)},e}(),e.Signatures=function(){function e(e){if(this.signatures=[],e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.signatures&&a.signatures.length||(a.signatures=[]),a.signatures.push(pe.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(null!=e.signatures&&e.hasOwnProperty("signatures")){if(!Array.isArray(e.signatures))return"signatures: array expected";for(let t=0;t>>3){case 1:a.version=e.uint32();break;case 2:a.data=e.bytes();break;case 3:a.unpaddedSignatureSize=e.fixed32();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==typeof e||null===e?"object expected":null!=e.version&&e.hasOwnProperty("version")&&!ce.isInteger(e.version)?"version: integer expected":null!=e.data&&e.hasOwnProperty("data")&&!(e.data&&"number"===typeof e.data.length||ce.isString(e.data))?"data: buffer expected":null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&!ce.isInteger(e.unpaddedSignatureSize)?"unpaddedSignatureSize: integer expected":null},e.fromObject=function(e){if(e instanceof pe.chromeos_update_engine.Signatures.Signature)return e;let t=new pe.chromeos_update_engine.Signatures.Signature;return null!=e.version&&(t.version=e.version>>>0),null!=e.data&&("string"===typeof e.data?ce.base64.decode(e.data,t.data=ce.newBuffer(ce.base64.length(e.data)),0):e.data.length&&(t.data=e.data)),null!=e.unpaddedSignatureSize&&(t.unpaddedSignatureSize=e.unpaddedSignatureSize>>>0),t},e.toObject=function(e,t){t||(t={});let n={};return t.defaults&&(n.version=0,t.bytes===String?n.data="":(n.data=[],t.bytes!==Array&&(n.data=ce.newBuffer(n.data))),n.unpaddedSignatureSize=0),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.data&&e.hasOwnProperty("data")&&(n.data=t.bytes===String?ce.base64.encode(e.data,0,e.data.length):t.bytes===Array?Array.prototype.slice.call(e.data):e.data),null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&(n.unpaddedSignatureSize=e.unpaddedSignatureSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ie.util.toJSONOptions)},e}(),e}(),e.PartitionInfo=function(){function e(e){if(e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.size=e.uint64();break;case 2:a.hash=e.bytes();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==typeof e||null===e?"object expected":null==e.size||!e.hasOwnProperty("size")||ce.isInteger(e.size)||e.size&&ce.isInteger(e.size.low)&&ce.isInteger(e.size.high)?null!=e.hash&&e.hasOwnProperty("hash")&&!(e.hash&&"number"===typeof e.hash.length||ce.isString(e.hash))?"hash: buffer expected":null:"size: integer|Long expected"},e.fromObject=function(e){if(e instanceof pe.chromeos_update_engine.PartitionInfo)return e;let t=new pe.chromeos_update_engine.PartitionInfo;return null!=e.size&&(ce.Long?(t.size=ce.Long.fromValue(e.size)).unsigned=!0:"string"===typeof e.size?t.size=parseInt(e.size,10):"number"===typeof e.size?t.size=e.size:"object"===typeof e.size&&(t.size=new ce.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0))),null!=e.hash&&("string"===typeof e.hash?ce.base64.decode(e.hash,t.hash=ce.newBuffer(ce.base64.length(e.hash)),0):e.hash.length&&(t.hash=e.hash)),t},e.toObject=function(e,t){t||(t={});let n={};if(t.defaults){if(ce.Long){let e=new ce.Long(0,0,!0);n.size=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.size=t.longs===String?"0":0;t.bytes===String?n.hash="":(n.hash=[],t.bytes!==Array&&(n.hash=ce.newBuffer(n.hash)))}return null!=e.size&&e.hasOwnProperty("size")&&("number"===typeof e.size?n.size=t.longs===String?String(e.size):e.size:n.size=t.longs===String?ce.Long.prototype.toString.call(e.size):t.longs===Number?new ce.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0):e.size),null!=e.hash&&e.hasOwnProperty("hash")&&(n.hash=t.bytes===String?ce.base64.encode(e.hash,0,e.hash.length):t.bytes===Array?Array.prototype.slice.call(e.hash):e.hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ie.util.toJSONOptions)},e}(),e.ImageInfo=function(){function e(e){if(e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.board=e.string();break;case 2:a.key=e.string();break;case 3:a.channel=e.string();break;case 4:a.version=e.string();break;case 5:a.buildChannel=e.string();break;case 6:a.buildVersion=e.string();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==typeof e||null===e?"object expected":null!=e.board&&e.hasOwnProperty("board")&&!ce.isString(e.board)?"board: string expected":null!=e.key&&e.hasOwnProperty("key")&&!ce.isString(e.key)?"key: string expected":null!=e.channel&&e.hasOwnProperty("channel")&&!ce.isString(e.channel)?"channel: string expected":null!=e.version&&e.hasOwnProperty("version")&&!ce.isString(e.version)?"version: string expected":null!=e.buildChannel&&e.hasOwnProperty("buildChannel")&&!ce.isString(e.buildChannel)?"buildChannel: string expected":null!=e.buildVersion&&e.hasOwnProperty("buildVersion")&&!ce.isString(e.buildVersion)?"buildVersion: string expected":null},e.fromObject=function(e){if(e instanceof pe.chromeos_update_engine.ImageInfo)return e;let t=new pe.chromeos_update_engine.ImageInfo;return null!=e.board&&(t.board=String(e.board)),null!=e.key&&(t.key=String(e.key)),null!=e.channel&&(t.channel=String(e.channel)),null!=e.version&&(t.version=String(e.version)),null!=e.buildChannel&&(t.buildChannel=String(e.buildChannel)),null!=e.buildVersion&&(t.buildVersion=String(e.buildVersion)),t},e.toObject=function(e,t){t||(t={});let n={};return t.defaults&&(n.board="",n.key="",n.channel="",n.version="",n.buildChannel="",n.buildVersion=""),null!=e.board&&e.hasOwnProperty("board")&&(n.board=e.board),null!=e.key&&e.hasOwnProperty("key")&&(n.key=e.key),null!=e.channel&&e.hasOwnProperty("channel")&&(n.channel=e.channel),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.buildChannel&&e.hasOwnProperty("buildChannel")&&(n.buildChannel=e.buildChannel),null!=e.buildVersion&&e.hasOwnProperty("buildVersion")&&(n.buildVersion=e.buildVersion),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ie.util.toJSONOptions)},e}(),e.InstallOperation=function(){function e(e){if(this.srcExtents=[],this.dstExtents=[],e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.type=e.int32();break;case 2:a.dataOffset=e.uint64();break;case 3:a.dataLength=e.uint64();break;case 4:a.srcExtents&&a.srcExtents.length||(a.srcExtents=[]),a.srcExtents.push(pe.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 5:a.srcLength=e.uint64();break;case 6:a.dstExtents&&a.dstExtents.length||(a.dstExtents=[]),a.dstExtents.push(pe.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 7:a.dstLength=e.uint64();break;case 8:a.dataSha256Hash=e.bytes();break;case 9:a.srcSha256Hash=e.bytes();break;default:e.skipType(7&t);break}}if(!a.hasOwnProperty("type"))throw ce.ProtocolError("missing required 'type'",{instance:a});return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 8:case 6:case 7:case 10:case 9:case 11:case 12:case 13:break}if(null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&!ce.isInteger(e.dataOffset)&&!(e.dataOffset&&ce.isInteger(e.dataOffset.low)&&ce.isInteger(e.dataOffset.high)))return"dataOffset: integer|Long expected";if(null!=e.dataLength&&e.hasOwnProperty("dataLength")&&!ce.isInteger(e.dataLength)&&!(e.dataLength&&ce.isInteger(e.dataLength.low)&&ce.isInteger(e.dataLength.high)))return"dataLength: integer|Long expected";if(null!=e.srcExtents&&e.hasOwnProperty("srcExtents")){if(!Array.isArray(e.srcExtents))return"srcExtents: array expected";for(let t=0;t>>0,e.dataOffset.high>>>0).toNumber(!0))),null!=e.dataLength&&(ce.Long?(t.dataLength=ce.Long.fromValue(e.dataLength)).unsigned=!0:"string"===typeof e.dataLength?t.dataLength=parseInt(e.dataLength,10):"number"===typeof e.dataLength?t.dataLength=e.dataLength:"object"===typeof e.dataLength&&(t.dataLength=new ce.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0))),e.srcExtents){if(!Array.isArray(e.srcExtents))throw TypeError(".chromeos_update_engine.InstallOperation.srcExtents: array expected");t.srcExtents=[];for(let n=0;n>>0,e.srcLength.high>>>0).toNumber(!0))),e.dstExtents){if(!Array.isArray(e.dstExtents))throw TypeError(".chromeos_update_engine.InstallOperation.dstExtents: array expected");t.dstExtents=[];for(let n=0;n>>0,e.dstLength.high>>>0).toNumber(!0))),null!=e.dataSha256Hash&&("string"===typeof e.dataSha256Hash?ce.base64.decode(e.dataSha256Hash,t.dataSha256Hash=ce.newBuffer(ce.base64.length(e.dataSha256Hash)),0):e.dataSha256Hash.length&&(t.dataSha256Hash=e.dataSha256Hash)),null!=e.srcSha256Hash&&("string"===typeof e.srcSha256Hash?ce.base64.decode(e.srcSha256Hash,t.srcSha256Hash=ce.newBuffer(ce.base64.length(e.srcSha256Hash)),0):e.srcSha256Hash.length&&(t.srcSha256Hash=e.srcSha256Hash)),t},e.toObject=function(e,t){t||(t={});let n={};if((t.arrays||t.defaults)&&(n.srcExtents=[],n.dstExtents=[]),t.defaults){if(n.type=t.enums===String?"REPLACE":0,ce.Long){let e=new ce.Long(0,0,!0);n.dataOffset=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.dataOffset=t.longs===String?"0":0;if(ce.Long){let e=new ce.Long(0,0,!0);n.dataLength=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.dataLength=t.longs===String?"0":0;if(ce.Long){let e=new ce.Long(0,0,!0);n.srcLength=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.srcLength=t.longs===String?"0":0;if(ce.Long){let e=new ce.Long(0,0,!0);n.dstLength=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.dstLength=t.longs===String?"0":0;t.bytes===String?n.dataSha256Hash="":(n.dataSha256Hash=[],t.bytes!==Array&&(n.dataSha256Hash=ce.newBuffer(n.dataSha256Hash))),t.bytes===String?n.srcSha256Hash="":(n.srcSha256Hash=[],t.bytes!==Array&&(n.srcSha256Hash=ce.newBuffer(n.srcSha256Hash)))}if(null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?pe.chromeos_update_engine.InstallOperation.Type[e.type]:e.type),null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&("number"===typeof e.dataOffset?n.dataOffset=t.longs===String?String(e.dataOffset):e.dataOffset:n.dataOffset=t.longs===String?ce.Long.prototype.toString.call(e.dataOffset):t.longs===Number?new ce.LongBits(e.dataOffset.low>>>0,e.dataOffset.high>>>0).toNumber(!0):e.dataOffset),null!=e.dataLength&&e.hasOwnProperty("dataLength")&&("number"===typeof e.dataLength?n.dataLength=t.longs===String?String(e.dataLength):e.dataLength:n.dataLength=t.longs===String?ce.Long.prototype.toString.call(e.dataLength):t.longs===Number?new ce.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0):e.dataLength),e.srcExtents&&e.srcExtents.length){n.srcExtents=[];for(let a=0;a>>0,e.srcLength.high>>>0).toNumber(!0):e.srcLength),e.dstExtents&&e.dstExtents.length){n.dstExtents=[];for(let a=0;a>>0,e.dstLength.high>>>0).toNumber(!0):e.dstLength),null!=e.dataSha256Hash&&e.hasOwnProperty("dataSha256Hash")&&(n.dataSha256Hash=t.bytes===String?ce.base64.encode(e.dataSha256Hash,0,e.dataSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.dataSha256Hash):e.dataSha256Hash),null!=e.srcSha256Hash&&e.hasOwnProperty("srcSha256Hash")&&(n.srcSha256Hash=t.bytes===String?ce.base64.encode(e.srcSha256Hash,0,e.srcSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.srcSha256Hash):e.srcSha256Hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ie.util.toJSONOptions)},e.Type=function(){const e={},t=Object.create(e);return t[e[0]="REPLACE"]=0,t[e[1]="REPLACE_BZ"]=1,t[e[2]="MOVE"]=2,t[e[3]="BSDIFF"]=3,t[e[4]="SOURCE_COPY"]=4,t[e[5]="SOURCE_BSDIFF"]=5,t[e[8]="REPLACE_XZ"]=8,t[e[6]="ZERO"]=6,t[e[7]="DISCARD"]=7,t[e[10]="BROTLI_BSDIFF"]=10,t[e[9]="PUFFDIFF"]=9,t[e[11]="ZUCCHINI"]=11,t[e[12]="LZ4DIFF_BSDIFF"]=12,t[e[13]="LZ4DIFF_PUFFDIFF"]=13,t}(),e}(),e.CowMergeOperation=function(){function e(e){if(e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.type=e.int32();break;case 2:a.srcExtent=pe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 3:a.dstExtent=pe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 4:a.srcOffset=e.uint32();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:break}if(null!=e.srcExtent&&e.hasOwnProperty("srcExtent")){let t=pe.chromeos_update_engine.Extent.verify(e.srcExtent);if(t)return"srcExtent."+t}if(null!=e.dstExtent&&e.hasOwnProperty("dstExtent")){let t=pe.chromeos_update_engine.Extent.verify(e.dstExtent);if(t)return"dstExtent."+t}return null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&!ce.isInteger(e.srcOffset)?"srcOffset: integer expected":null},e.fromObject=function(e){if(e instanceof pe.chromeos_update_engine.CowMergeOperation)return e;let t=new pe.chromeos_update_engine.CowMergeOperation;switch(e.type){case"COW_COPY":case 0:t.type=0;break;case"COW_XOR":case 1:t.type=1;break;case"COW_REPLACE":case 2:t.type=2;break}if(null!=e.srcExtent){if("object"!==typeof e.srcExtent)throw TypeError(".chromeos_update_engine.CowMergeOperation.srcExtent: object expected");t.srcExtent=pe.chromeos_update_engine.Extent.fromObject(e.srcExtent)}if(null!=e.dstExtent){if("object"!==typeof e.dstExtent)throw TypeError(".chromeos_update_engine.CowMergeOperation.dstExtent: object expected");t.dstExtent=pe.chromeos_update_engine.Extent.fromObject(e.dstExtent)}return null!=e.srcOffset&&(t.srcOffset=e.srcOffset>>>0),t},e.toObject=function(e,t){t||(t={});let n={};return t.defaults&&(n.type=t.enums===String?"COW_COPY":0,n.srcExtent=null,n.dstExtent=null,n.srcOffset=0),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?pe.chromeos_update_engine.CowMergeOperation.Type[e.type]:e.type),null!=e.srcExtent&&e.hasOwnProperty("srcExtent")&&(n.srcExtent=pe.chromeos_update_engine.Extent.toObject(e.srcExtent,t)),null!=e.dstExtent&&e.hasOwnProperty("dstExtent")&&(n.dstExtent=pe.chromeos_update_engine.Extent.toObject(e.dstExtent,t)),null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&(n.srcOffset=e.srcOffset),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ie.util.toJSONOptions)},e.Type=function(){const e={},t=Object.create(e);return t[e[0]="COW_COPY"]=0,t[e[1]="COW_XOR"]=1,t[e[2]="COW_REPLACE"]=2,t}(),e}(),e.PartitionUpdate=function(){function e(e){if(this.newPartitionSignature=[],this.operations=[],this.mergeOperations=[],e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.partitionName=e.string();break;case 2:a.runPostinstall=e.bool();break;case 3:a.postinstallPath=e.string();break;case 4:a.filesystemType=e.string();break;case 5:a.newPartitionSignature&&a.newPartitionSignature.length||(a.newPartitionSignature=[]),a.newPartitionSignature.push(pe.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;case 6:a.oldPartitionInfo=pe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:a.newPartitionInfo=pe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:a.operations&&a.operations.length||(a.operations=[]),a.operations.push(pe.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 9:a.postinstallOptional=e.bool();break;case 10:a.hashTreeDataExtent=pe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 11:a.hashTreeExtent=pe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 12:a.hashTreeAlgorithm=e.string();break;case 13:a.hashTreeSalt=e.bytes();break;case 14:a.fecDataExtent=pe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 15:a.fecExtent=pe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 16:a.fecRoots=e.uint32();break;case 17:a.version=e.string();break;case 18:a.mergeOperations&&a.mergeOperations.length||(a.mergeOperations=[]),a.mergeOperations.push(pe.chromeos_update_engine.CowMergeOperation.decode(e,e.uint32()));break;case 19:a.estimateCowSize=e.uint64();break;default:e.skipType(7&t);break}}if(!a.hasOwnProperty("partitionName"))throw ce.ProtocolError("missing required 'partitionName'",{instance:a});return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(!ce.isString(e.partitionName))return"partitionName: string expected";if(null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&"boolean"!==typeof e.runPostinstall)return"runPostinstall: boolean expected";if(null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&!ce.isString(e.postinstallPath))return"postinstallPath: string expected";if(null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&!ce.isString(e.filesystemType))return"filesystemType: string expected";if(null!=e.newPartitionSignature&&e.hasOwnProperty("newPartitionSignature")){if(!Array.isArray(e.newPartitionSignature))return"newPartitionSignature: array expected";for(let t=0;t>>0),null!=e.version&&(t.version=String(e.version)),e.mergeOperations){if(!Array.isArray(e.mergeOperations))throw TypeError(".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected");t.mergeOperations=[];for(let n=0;n>>0,e.estimateCowSize.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});let n={};if((t.arrays||t.defaults)&&(n.newPartitionSignature=[],n.operations=[],n.mergeOperations=[]),t.defaults)if(n.partitionName="",n.runPostinstall=!1,n.postinstallPath="",n.filesystemType="",n.oldPartitionInfo=null,n.newPartitionInfo=null,n.postinstallOptional=!1,n.hashTreeDataExtent=null,n.hashTreeExtent=null,n.hashTreeAlgorithm="",t.bytes===String?n.hashTreeSalt="":(n.hashTreeSalt=[],t.bytes!==Array&&(n.hashTreeSalt=ce.newBuffer(n.hashTreeSalt))),n.fecDataExtent=null,n.fecExtent=null,n.fecRoots=2,n.version="",ce.Long){let e=new ce.Long(0,0,!0);n.estimateCowSize=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.estimateCowSize=t.longs===String?"0":0;if(null!=e.partitionName&&e.hasOwnProperty("partitionName")&&(n.partitionName=e.partitionName),null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&(n.runPostinstall=e.runPostinstall),null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&(n.postinstallPath=e.postinstallPath),null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&(n.filesystemType=e.filesystemType),e.newPartitionSignature&&e.newPartitionSignature.length){n.newPartitionSignature=[];for(let a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0):e.estimateCowSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ie.util.toJSONOptions)},e}(),e.DynamicPartitionGroup=function(){function e(e){if(this.partitionNames=[],e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.name=e.string();break;case 2:a.size=e.uint64();break;case 3:a.partitionNames&&a.partitionNames.length||(a.partitionNames=[]),a.partitionNames.push(e.string());break;default:e.skipType(7&t);break}}if(!a.hasOwnProperty("name"))throw ce.ProtocolError("missing required 'name'",{instance:a});return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(!ce.isString(e.name))return"name: string expected";if(null!=e.size&&e.hasOwnProperty("size")&&!ce.isInteger(e.size)&&!(e.size&&ce.isInteger(e.size.low)&&ce.isInteger(e.size.high)))return"size: integer|Long expected";if(null!=e.partitionNames&&e.hasOwnProperty("partitionNames")){if(!Array.isArray(e.partitionNames))return"partitionNames: array expected";for(let t=0;t>>0,e.size.high>>>0).toNumber(!0))),e.partitionNames){if(!Array.isArray(e.partitionNames))throw TypeError(".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected");t.partitionNames=[];for(let n=0;n>>0,e.size.high>>>0).toNumber(!0):e.size),e.partitionNames&&e.partitionNames.length){n.partitionNames=[];for(let t=0;t>>3){case 1:a.groups&&a.groups.length||(a.groups=[]),a.groups.push(pe.chromeos_update_engine.DynamicPartitionGroup.decode(e,e.uint32()));break;case 2:a.snapshotEnabled=e.bool();break;case 3:a.vabcEnabled=e.bool();break;case 4:a.vabcCompressionParam=e.string();break;case 5:a.cowVersion=e.uint32();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(null!=e.groups&&e.hasOwnProperty("groups")){if(!Array.isArray(e.groups))return"groups: array expected";for(let t=0;t>>0),t},e.toObject=function(e,t){t||(t={});let n={};if((t.arrays||t.defaults)&&(n.groups=[]),t.defaults&&(n.snapshotEnabled=!1,n.vabcEnabled=!1,n.vabcCompressionParam="",n.cowVersion=0),e.groups&&e.groups.length){n.groups=[];for(let a=0;a>>3){case 1:a.packageName=e.string();break;case 2:a.version=e.int64();break;case 3:a.isCompressed=e.bool();break;case 4:a.decompressedSize=e.int64();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==typeof e||null===e?"object expected":null!=e.packageName&&e.hasOwnProperty("packageName")&&!ce.isString(e.packageName)?"packageName: string expected":null==e.version||!e.hasOwnProperty("version")||ce.isInteger(e.version)||e.version&&ce.isInteger(e.version.low)&&ce.isInteger(e.version.high)?null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&"boolean"!==typeof e.isCompressed?"isCompressed: boolean expected":null==e.decompressedSize||!e.hasOwnProperty("decompressedSize")||ce.isInteger(e.decompressedSize)||e.decompressedSize&&ce.isInteger(e.decompressedSize.low)&&ce.isInteger(e.decompressedSize.high)?null:"decompressedSize: integer|Long expected":"version: integer|Long expected"},e.fromObject=function(e){if(e instanceof pe.chromeos_update_engine.ApexInfo)return e;let t=new pe.chromeos_update_engine.ApexInfo;return null!=e.packageName&&(t.packageName=String(e.packageName)),null!=e.version&&(ce.Long?(t.version=ce.Long.fromValue(e.version)).unsigned=!1:"string"===typeof e.version?t.version=parseInt(e.version,10):"number"===typeof e.version?t.version=e.version:"object"===typeof e.version&&(t.version=new ce.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber())),null!=e.isCompressed&&(t.isCompressed=Boolean(e.isCompressed)),null!=e.decompressedSize&&(ce.Long?(t.decompressedSize=ce.Long.fromValue(e.decompressedSize)).unsigned=!1:"string"===typeof e.decompressedSize?t.decompressedSize=parseInt(e.decompressedSize,10):"number"===typeof e.decompressedSize?t.decompressedSize=e.decompressedSize:"object"===typeof e.decompressedSize&&(t.decompressedSize=new ce.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber())),t},e.toObject=function(e,t){t||(t={});let n={};if(t.defaults){if(n.packageName="",ce.Long){let e=new ce.Long(0,0,!1);n.version=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.version=t.longs===String?"0":0;if(n.isCompressed=!1,ce.Long){let e=new ce.Long(0,0,!1);n.decompressedSize=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.decompressedSize=t.longs===String?"0":0}return null!=e.packageName&&e.hasOwnProperty("packageName")&&(n.packageName=e.packageName),null!=e.version&&e.hasOwnProperty("version")&&("number"===typeof e.version?n.version=t.longs===String?String(e.version):e.version:n.version=t.longs===String?ce.Long.prototype.toString.call(e.version):t.longs===Number?new ce.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber():e.version),null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&(n.isCompressed=e.isCompressed),null!=e.decompressedSize&&e.hasOwnProperty("decompressedSize")&&("number"===typeof e.decompressedSize?n.decompressedSize=t.longs===String?String(e.decompressedSize):e.decompressedSize:n.decompressedSize=t.longs===String?ce.Long.prototype.toString.call(e.decompressedSize):t.longs===Number?new ce.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber():e.decompressedSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ie.util.toJSONOptions)},e}(),e.ApexMetadata=function(){function e(e){if(this.apexInfo=[],e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.apexInfo&&a.apexInfo.length||(a.apexInfo=[]),a.apexInfo.push(pe.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(null!=e.apexInfo&&e.hasOwnProperty("apexInfo")){if(!Array.isArray(e.apexInfo))return"apexInfo: array expected";for(let t=0;t>>3){case 1:a.installOperations&&a.installOperations.length||(a.installOperations=[]),a.installOperations.push(pe.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 2:a.kernelInstallOperations&&a.kernelInstallOperations.length||(a.kernelInstallOperations=[]),a.kernelInstallOperations.push(pe.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 3:a.blockSize=e.uint32();break;case 4:a.signaturesOffset=e.uint64();break;case 5:a.signaturesSize=e.uint64();break;case 6:a.oldKernelInfo=pe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:a.newKernelInfo=pe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:a.oldRootfsInfo=pe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 9:a.newRootfsInfo=pe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 10:a.oldImageInfo=pe.chromeos_update_engine.ImageInfo.decode(e,e.uint32());break;case 11:a.newImageInfo=pe.chromeos_update_engine.ImageInfo.decode(e,e.uint32());break;case 12:a.minorVersion=e.uint32();break;case 13:a.partitions&&a.partitions.length||(a.partitions=[]),a.partitions.push(pe.chromeos_update_engine.PartitionUpdate.decode(e,e.uint32()));break;case 14:a.maxTimestamp=e.int64();break;case 15:a.dynamicPartitionMetadata=pe.chromeos_update_engine.DynamicPartitionMetadata.decode(e,e.uint32());break;case 16:a.partialUpdate=e.bool();break;case 17:a.apexInfo&&a.apexInfo.length||(a.apexInfo=[]),a.apexInfo.push(pe.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(null!=e.installOperations&&e.hasOwnProperty("installOperations")){if(!Array.isArray(e.installOperations))return"installOperations: array expected";for(let t=0;t>>0),null!=e.signaturesOffset&&(ce.Long?(t.signaturesOffset=ce.Long.fromValue(e.signaturesOffset)).unsigned=!0:"string"===typeof e.signaturesOffset?t.signaturesOffset=parseInt(e.signaturesOffset,10):"number"===typeof e.signaturesOffset?t.signaturesOffset=e.signaturesOffset:"object"===typeof e.signaturesOffset&&(t.signaturesOffset=new ce.LongBits(e.signaturesOffset.low>>>0,e.signaturesOffset.high>>>0).toNumber(!0))),null!=e.signaturesSize&&(ce.Long?(t.signaturesSize=ce.Long.fromValue(e.signaturesSize)).unsigned=!0:"string"===typeof e.signaturesSize?t.signaturesSize=parseInt(e.signaturesSize,10):"number"===typeof e.signaturesSize?t.signaturesSize=e.signaturesSize:"object"===typeof e.signaturesSize&&(t.signaturesSize=new ce.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0))),null!=e.oldKernelInfo){if("object"!==typeof e.oldKernelInfo)throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.oldKernelInfo: object expected");t.oldKernelInfo=pe.chromeos_update_engine.PartitionInfo.fromObject(e.oldKernelInfo)}if(null!=e.newKernelInfo){if("object"!==typeof e.newKernelInfo)throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.newKernelInfo: object expected");t.newKernelInfo=pe.chromeos_update_engine.PartitionInfo.fromObject(e.newKernelInfo)}if(null!=e.oldRootfsInfo){if("object"!==typeof e.oldRootfsInfo)throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.oldRootfsInfo: object expected");t.oldRootfsInfo=pe.chromeos_update_engine.PartitionInfo.fromObject(e.oldRootfsInfo)}if(null!=e.newRootfsInfo){if("object"!==typeof e.newRootfsInfo)throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.newRootfsInfo: object expected");t.newRootfsInfo=pe.chromeos_update_engine.PartitionInfo.fromObject(e.newRootfsInfo)}if(null!=e.oldImageInfo){if("object"!==typeof e.oldImageInfo)throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.oldImageInfo: object expected");t.oldImageInfo=pe.chromeos_update_engine.ImageInfo.fromObject(e.oldImageInfo)}if(null!=e.newImageInfo){if("object"!==typeof e.newImageInfo)throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.newImageInfo: object expected");t.newImageInfo=pe.chromeos_update_engine.ImageInfo.fromObject(e.newImageInfo)}if(null!=e.minorVersion&&(t.minorVersion=e.minorVersion>>>0),e.partitions){if(!Array.isArray(e.partitions))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected");t.partitions=[];for(let n=0;n>>0,e.maxTimestamp.high>>>0).toNumber())),null!=e.dynamicPartitionMetadata){if("object"!==typeof e.dynamicPartitionMetadata)throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected");t.dynamicPartitionMetadata=pe.chromeos_update_engine.DynamicPartitionMetadata.fromObject(e.dynamicPartitionMetadata)}if(null!=e.partialUpdate&&(t.partialUpdate=Boolean(e.partialUpdate)),e.apexInfo){if(!Array.isArray(e.apexInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected");t.apexInfo=[];for(let n=0;n>>0,e.signaturesOffset.high>>>0).toNumber(!0):e.signaturesOffset),null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&("number"===typeof e.signaturesSize?n.signaturesSize=t.longs===String?String(e.signaturesSize):e.signaturesSize:n.signaturesSize=t.longs===String?ce.Long.prototype.toString.call(e.signaturesSize):t.longs===Number?new ce.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0):e.signaturesSize),null!=e.oldKernelInfo&&e.hasOwnProperty("oldKernelInfo")&&(n.oldKernelInfo=pe.chromeos_update_engine.PartitionInfo.toObject(e.oldKernelInfo,t)),null!=e.newKernelInfo&&e.hasOwnProperty("newKernelInfo")&&(n.newKernelInfo=pe.chromeos_update_engine.PartitionInfo.toObject(e.newKernelInfo,t)),null!=e.oldRootfsInfo&&e.hasOwnProperty("oldRootfsInfo")&&(n.oldRootfsInfo=pe.chromeos_update_engine.PartitionInfo.toObject(e.oldRootfsInfo,t)),null!=e.newRootfsInfo&&e.hasOwnProperty("newRootfsInfo")&&(n.newRootfsInfo=pe.chromeos_update_engine.PartitionInfo.toObject(e.newRootfsInfo,t)),null!=e.oldImageInfo&&e.hasOwnProperty("oldImageInfo")&&(n.oldImageInfo=pe.chromeos_update_engine.ImageInfo.toObject(e.oldImageInfo,t)),null!=e.newImageInfo&&e.hasOwnProperty("newImageInfo")&&(n.newImageInfo=pe.chromeos_update_engine.ImageInfo.toObject(e.newImageInfo,t)),null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&(n.minorVersion=e.minorVersion),e.partitions&&e.partitions.length){n.partitions=[];for(let a=0;a>>0,e.maxTimestamp.high>>>0).toNumber():e.maxTimestamp),null!=e.dynamicPartitionMetadata&&e.hasOwnProperty("dynamicPartitionMetadata")&&(n.dynamicPartitionMetadata=pe.chromeos_update_engine.DynamicPartitionMetadata.toObject(e.dynamicPartitionMetadata,t)),null!=e.partialUpdate&&e.hasOwnProperty("partialUpdate")&&(n.partialUpdate=e.partialUpdate),e.apexInfo&&e.apexInfo.length){n.apexInfo=[];for(let a=0;a{const a=Pe(e,t,n);return t+=n,a};let a=await e.slice(0,Oe).arrayBuffer(),r=new TextDecoder,o=a.slice(0,me.length);const i=r.decode(o);if(i!=me)throw new Error(`MAGIC is not correct, expected: ${me} actual: ${i}`);t+=me.length;const s=await n(ye),l=await n(we);if(s!=_e)throw new Error(`Unexpected major version number: ${s}`);const c=await n(be);this.header=new xe(i,s,l,c)}constructor(e=""){super(),(0,de.Z)(this,"offset",void 0),(0,de.Z)(this,"contentType",void 0),(0,de.Z)(this,"blob",void 0),(0,de.Z)(this,"prefixLength",void 0),(0,de.Z)(this,"header",void 0),this.offset=0,this.contentType=e,this.blob=new Blob([],{type:e}),this.prefixLength=0}async writeUint8Array(e){if(super.writeUint8Array(e),this.blob=new Blob([this.blob,e.buffer],{type:this.contentType}),this.offset=this.blob.size,this.offset>=Oe&&0==this.prefixLength&&(console.log("Parsing header!"),await this.readHeader(this.blob),this.prefixLength=Oe+this.header.manifest_len+this.header.metadata_signature_len,console.log(`Computed metadata length: ${this.prefixLength}`)),this.prefixLength>0&&(console.log(`${this.offset}/${this.prefixLength}`),this.offset>=this.prefixLength))throw this.blob=this.blob.slice(0,this.prefixLength),new Se}getData(){return this.blob}}class ve{constructor(e){(0,de.Z)(this,"zipreader",void 0),(0,de.Z)(this,"buffer",void 0),(0,de.Z)(this,"metadata",void 0),(0,de.Z)(this,"manifest",void 0),(0,de.Z)(this,"metadata_signature",void 0),(0,de.Z)(this,"header",void 0),e instanceof File?this.zipreader=new fe.Mr(new fe.Nt(e)):e instanceof URL?this.zipreader=new fe.Mr(new fe.pE(e.href)):this.zipreader=e.reader}getMetadataLength(){return Oe+this.header.manifest_len+this.header.metadata_signature_len}async unzip(){let e=await this.zipreader.getEntries();for(let a of e)if("payload.bin"==a.filename){let e=new Ie("");try{await a.getData(e)}catch(t){if(!(t instanceof Se))throw console.log(t),t}this.buffer=e.getData(),await this.readManifest(this.buffer,e.header),console.log("AB OTA manifest parsed")}else"META-INF/com/android/metadata"==a.filename&&(this.metadata=await a.getData(new fe.Ek),console.log("OTA Package metadata parsed"));if(!this.manifest){console.log("Failed to parse AB OTA package, falling back to non-AB");try{let e=new he(this.zipreader);await e.init(),e.nonAB=!0,this.manifest=e}catch(n){return void alert("Please select a legit OTA package")}}}async readManifest(e,t){this.header=t;let n=Oe,a=await e.slice(n,n+t.manifest_len).arrayBuffer();n+=t.manifest_len,this.manifest=ue.DeltaArchiveManifest.decode(new Uint8Array(a));let r=await e.slice(n,n+t.metadata_signature_len).arrayBuffer();n+=t.metadata_signature_len,this.metadata_signature=ue.Signatures.decode(new Uint8Array(r)),this.manifest.nonAB=!1}parseMetadata(){for(let e of ke){let t=new RegExp(e.prefix+".+");this.metadata.match(t)?this[e.key]=je(this.metadata.match(t)[0],e.prefix):this[e.key]=""}}async init(){await this.unzip(),this.parseMetadata()}}class Ee extends Map{getWithDefault(e){return this.has(e)?this.get(e):e}}class ze{constructor(){(0,de.Z)(this,"mapType",void 0);let e=ue.InstallOperation.Type;this.mapType=new Ee;for(let t of Object.keys(e))this.mapType.set(e[t],t)}}class Le{constructor(){(0,de.Z)(this,"mapType",void 0);let e=ue.CowMergeOperation.Type;this.mapType=new Ee;for(let t of Object.keys(e))this.mapType.set(e[t],t)}}function Te(e,t=!0,n=16){let a="";for(let r=0;r((0,l.dD)("data-v-44174082"),e=e(),(0,l.Cn)(),e),Ae={key:0},Be=De((()=>(0,l._)("strong",null," Data offset: ",-1))),Ce={key:1},Ne=De((()=>(0,l._)("strong",null," Data length: ",-1))),Me={key:2},Fe=De((()=>(0,l._)("strong",null," Source: ",-1))),Ue=De((()=>(0,l._)("br",null,null,-1))),Re={key:3},Ve=De((()=>(0,l._)("strong",null," Destination: ",-1))),He=De((()=>(0,l._)("br",null,null,-1)));function We(e,t,n,a,r,o){const i=(0,l.up)("v-divider");return(0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l._)("ul",null,[(0,l._)("h5",null,(0,c.zw)(e.mapType.getWithDefault(e.operation.type)),1),e.operation.hasOwnProperty("dataOffset")?((0,l.wg)(),(0,l.iD)("li",Ae,[Be,(0,l.Uk)(" "+(0,c.zw)(e.operation.dataOffset),1)])):(0,l.kq)("",!0),e.operation.hasOwnProperty("dataLength")?((0,l.wg)(),(0,l.iD)("li",Ce,[Ne,(0,l.Uk)(" "+(0,c.zw)(e.operation.dataLength),1)])):(0,l.kq)("",!0),e.operation.hasOwnProperty("srcExtents")?((0,l.wg)(),(0,l.iD)("li",Me,[Fe,(0,l.Uk)(" "+(0,c.zw)(e.operation.srcExtents.length)+" extents ("+(0,c.zw)(e.srcTotalBlocks)+" blocks) ",1),Ue,(0,l.Uk)(" "+(0,c.zw)(e.srcBlocks),1)])):(0,l.kq)("",!0),e.operation.hasOwnProperty("dstExtents")?((0,l.wg)(),(0,l.iD)("li",Re,[Ve,(0,l.Uk)(" "+(0,c.zw)(e.operation.dstExtents.length)+" extents ("+(0,c.zw)(e.dstTotalBlocks)+" blocks) ",1),He,(0,l.Uk)(" "+(0,c.zw)(e.dstBlocks),1)])):(0,l.kq)("",!0)]),(0,l.Wm)(i)],64)}class Ze{constructor(e,t,n,a=15){(0,de.Z)(this,"statisticData",void 0),(0,de.Z)(this,"trimmedData",void 0),(0,de.Z)(this,"title",void 0),(0,de.Z)(this,"unit",void 0),(0,de.Z)(this,"maximumEntries",void 0),this.statisticData=e,this.trimmedData=qe(e,a),this.title=t,this.unit=n,this.maximumEntries=a}listData(){let e="";for(let[t,n]of this.statisticData)e+=t+" : "+n.toString()+" Blocks\n";return e}getEchartsOption(){let e={};return e.title={text:this.title,left:"center"},e.tooltip={trigger:"item",formatter:"{a}
{b} : {c} "+this.unit+" ({d}%)"},e.legend={orient:"horizontal",left:"top",top:"10%",data:Array.from(this.trimmedData.keys())},e.series=[{name:this.title,type:"pie",radius:"55%",center:["50%","60%"],data:Array.from(this.trimmedData).map((e=>({value:e[1],name:e[0]}))),emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],e}}function qe(e,t){if(e.size<=t)return e;let n=new Map;for(let r=0;rt&&(t=o,a=r);n.set(a,t)}let a=0;for(let[r,o]of e)n.get(r)||(a+=o);return n.set("other",a),n}class Ke{constructor(e){(0,de.Z)(this,"build",void 0),(0,de.Z)(this,"mapFiles",void 0),(0,de.Z)(this,"maps",void 0),e instanceof File?this.build=new fe.Mr(new fe.Nt(e)):this.build=new fe.Mr(new fe.pE(e.href)),this.mapFiles=new Map,this.maps=new Map}async init(){let e=await this.build.getEntries();const t=/IMAGES\/[a-z_]*\.map/g,n=/[\w_]+(?=\.map)/g;e.forEach((e=>{e.filename.match(t)&&this.mapFiles.set(e.filename.match(n)[0],e)}))}async add(e,t){let n=[];const a=/\d+/g,r=/\d+\-\d+/g;for(let o=0;o`;if(this.mapFiles.get(e)){let t=await this.mapFiles.get(e).getData(new fe.Ek),o=t.split("\n");for(let e of o){let t=e.split(" ");for(let e=1;er-=e)),n.set("COW_REPLACE",r),n}function Qe(e){let t=new Map,n=new ze;for(let a of e)for(let e of a.operations){let a=n.mapType.getWithDefault(e.type);Ye(t,a,e.dataLength)}return t}async function et(e,t,n){let a=await tt(e,t,n);const r=new Map;return a.forEach(((e,t)=>{Ye(r,it(t),e)})),r}async function tt(e,t,n){let a=new Map;if(!n)return a;let r=new Ke(n);await r.init();for(let o of e){await r.add(o.partitionName,Math.ceil(o.newPartitionInfo.size/t));for(let e of o.operations){if(!e.hasOwnProperty("dataLength"))continue;let t=r.query(o.partitionName,e.dstExtents),n=ot(t,e.dstExtents,e.dataLength);n.forEach(((e,t)=>{Ye(a,t,e)}))}}return a}async function nt(e,t,n=4096,a=null){let r,o;switch(e){case"blocks":r=Ge(t),o=new Ze(r,"Operated blocks in target build","blocks");break;case"payload":r=Qe(t),o=new Ze(r,"Payload disk usage","bytes");break;case"COWmerge":r=Xe(t,n),o=new Ze(r,"COW merge operations","blocks");break;case"filenames":if(null==a)throw new Error("Target file is required for filenames analysis");r=await tt(t,n,a),o=new Ze(r,"Size of operated filenames","bytes");break;case"extensions":if(null==a)throw new Error("Target file is required for filenames analysis");r=await et(t,n,a),o=new Ze(r,"Size of operated extensions","bytes");break}if(o)return o;throw"Please double check if this is a proper AB OTA package."}function at(e){if(!e)return 0;const t=(e,t)=>e+t.numBlocks;return e.reduce(t,0)}function rt(e){const t=(e,t)=>e+"("+t.startBlock+","+t.numBlocks+")";return e.reduce(t,"")}function ot(e,t,n){let a=at(t),r=new Map;for(let o=0;o1?t[t.length-1]:"unknown"===t[0]?"unknown":"<"==e[0]&&e.endsWith(">")?e:"no-extension"}var st=(0,l.aZ)({props:{operation:{type:Object,required:!0},mapType:{type:Ee,required:!0}},data(){return{srcTotalBlocks:0,srcBlocks:"",dstTotalBlocks:0,dstBlocks:""}},mounted(){this.operation.srcExtents&&(this.srcTotalBlocks=at(this.operation.srcExtents),this.srcBlocks=rt(this.operation.srcExtents)),this.operation.dstExtents&&(this.dstTotalBlocks=at(this.operation.dstExtents),this.dstBlocks=rt(this.operation.dstExtents))}});const lt=(0,f.Z)(st,[["render",We],["__scopeId","data-v-44174082"]]);var ct=lt,pt=(0,l.aZ)({components:{OperationDetail:ct},props:{partition:{type:ue.PartitionUpdate,required:!0},dynamicPartitionList:{type:Array,required:!0}},data(){return{showOPs:!1,showInfo:!1,opType:new ze}},methods:{toggle(e){this[e]=!this[e]},octToHex:Te},computed:{readableTimestamp(){const e=parseInt(this.partition.version);return isNaN(e)?"":new Date(1e3*e).toString()},isDynamicPartition(){return this.dynamicPartitionList.indexOf(this.partition.partitionName)>=0}}});const ut=(0,f.Z)(pt,[["render",oe],["__scopeId","data-v-6dba348a"]]);var dt=ut;const ft=e=>((0,l.dD)("data-v-0514c264"),e=e(),(0,l.Cn)(),e),ht=ft((()=>(0,l._)("h3",null,"Basic infos",-1))),gt={class:"align"},mt=ft((()=>(0,l._)("strong",null," File name ",-1))),yt=ft((()=>(0,l._)("strong",null," File size ",-1))),wt={class:"align"},bt={class:"wrap"},Ot={key:2},_t={class:"align"},kt=ft((()=>(0,l._)("strong",null," Incremental ",-1))),St={key:0},xt={key:1},Pt=ft((()=>(0,l._)("strong",null," Partial ",-1))),It={key:0},vt={key:1},Et=ft((()=>(0,l._)("strong",null," A/B update ",-1))),zt={key:0},Lt={key:1},Tt=ft((()=>(0,l._)("strong",null," VAB ",-1))),jt={key:0},Dt={key:1},At=ft((()=>(0,l._)("strong",null," VABC ",-1))),Bt={key:0},Ct={key:1},Nt={key:0},Mt=ft((()=>(0,l._)("strong",null," Total Dynamic Partition Size ",-1))),Ft={key:1},Ut=ft((()=>(0,l._)("strong",null," Total VABC COW Size ",-1)));function Rt(e,t,n,a,r,o){return(0,l.wg)(),(0,l.iD)(l.HY,null,[ht,e.zipFile?((0,l.wg)(),(0,l.iD)("div",(0,c.vs)((0,l.dG)({key:0},e.$attrs)),[(0,l._)("ul",gt,[(0,l._)("li",null,[mt,(0,l.Uk)(" "+(0,c.zw)(e.zipFile.getFileName()),1)]),(0,l._)("li",null,[yt,(0,l.Uk)(" "+(0,c.zw)(e.zipFile.getFileSize())+" Bytes",1)])])],16)):(0,l.kq)("",!0),e.payload&&e.payload.metadata?((0,l.wg)(),(0,l.iD)("div",(0,c.vs)((0,l.dG)({key:1},e.$attrs)),[(0,l._)("ul",wt,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.otaMetadata,(t=>((0,l.wg)(),(0,l.iD)("li",{key:t.name},[(0,l._)("strong",null,(0,c.zw)(t.name.trim()+" "),1),(0,l._)("p",bt,(0,c.zw)(String(e.payload[t.key]).trim()),1)])))),128))])],16)):(0,l.kq)("",!0),e.payload&&e.payload.manifest?((0,l.wg)(),(0,l.iD)("div",Ot,[(0,l._)("ul",_t,[(0,l._)("li",null,[kt,e.payload.preBuild?((0,l.wg)(),(0,l.iD)("span",St," ✅ ")):((0,l.wg)(),(0,l.iD)("span",xt," ❌ "))]),(0,l._)("li",null,[Pt,e.payload.manifest.partialUpdate?((0,l.wg)(),(0,l.iD)("span",It," ✅ ")):((0,l.wg)(),(0,l.iD)("span",vt," ❌ "))]),(0,l._)("li",null,[Et,e.payload.manifest.nonAB?((0,l.wg)(),(0,l.iD)("span",Lt," ❌ ")):((0,l.wg)(),(0,l.iD)("span",zt," ✅ "))]),(0,l._)("li",null,[Tt,e.payload.manifest.dynamicPartitionMetadata.snapshotEnabled?((0,l.wg)(),(0,l.iD)("span",jt," ✅ ")):((0,l.wg)(),(0,l.iD)("span",Dt," ❌ "))]),(0,l._)("li",null,[At,e.payload.manifest.dynamicPartitionMetadata.vabcEnabled?((0,l.wg)(),(0,l.iD)("span",Bt," ✅ ")):((0,l.wg)(),(0,l.iD)("span",Ct," ❌ "))]),e.totalDynamicPartitionSize?((0,l.wg)(),(0,l.iD)("li",Nt,[Mt,(0,l.Uk)(" "+(0,c.zw)(e.totalDynamicPartitionSize),1)])):(0,l.kq)("",!0),e.totalCOWSize?((0,l.wg)(),(0,l.iD)("li",Ft,[Ut,(0,l.Uk)(" "+(0,c.zw)(e.totalCOWSize),1)])):(0,l.kq)("",!0)])])):(0,l.kq)("",!0)],64)}class Vt{constructor(e){(0,de.Z)(this,"file",void 0),(0,de.Z)(this,"reader",void 0),this.file=e,this.reader=Wt(e)}getFileName(){return Zt(this.file)}getFileSize(){return this.file instanceof File?this.file.size:0}}async function Ht(e,t){const n=e,a=new fe._Q(new fe.U5("application/zip")),r=await n.getEntries();for(const o of r.filter((e=>!!e&&t(e)))){const e=new fe.U5,t=await o.getData(e);console.log(`Adding ${o.filename}, ${t.size}`),a.add(o.filename,new fe.Nt(e.getData()),{level:0})}return a}function Wt(e){return e instanceof File?new fe.Mr(new fe.Nt(e)):new fe.Mr(new fe.pE(e.href))}function Zt(e){return e instanceof File?e.name:e.pathname}async function qt(e){const t=await Ht(Wt(e),(e=>e.filename.startsWith("META/")||e.filename.endsWith(".map")));return await t.close()}async function Kt(e){const t=await Ht(e.zipreader,(e=>"payload.bin"!=e.filename));await t.add("payload.bin",new fe.Nt(e.buffer.slice(0,e.getMetadataLength())),{level:0});const n=await t.close();return n}function Jt(e,t,n){const a=window.URL.createObjectURL(e);t.href=a,t.download=n,t.click(),window.URL.revokeObjectURL(a)}function $t(e,t){return e.endsWith(t)?e:e+t}var Yt=(0,l.aZ)({props:{zipFile:{type:Vt,required:!0},payload:{type:ve,required:!0}},data(){return{MetadataFormat:ke}},computed:{otaMetadata(){return ke.filter((e=>String(this.payload[e.key]).length>0))},totalCOWSize(){const e=this.payload?.manifest?.partitions.map((e=>e.estimateCowSize||0));return e?e.reduce(((e,t)=>e+t)):0},totalDynamicPartitionSize(){const e=this.payload?.manifest?.dynamicPartitionMetadata?.groups;if(!e)return 0;const t=new Set(e.flatMap((e=>e.partitionNames))),n=this.payload.manifest?.partitions.filter((e=>t.has(e.partitionName)))||[];return n.length<=0?0:n.map((e=>e.newPartitionInfo?.size||0)).reduce(((e,t)=>e+t))}}});const Gt=(0,f.Z)(Yt,[["render",Rt],["__scopeId","data-v-0514c264"]]);var Xt=Gt,Qt=(0,l.aZ)({components:{PartitionDetail:dt,BasicInfo:Xt},props:{zipFile:{type:Vt,default:null},payload:{type:ve,default:null}},methods:{octToHex:Te,async exportOTAPackage(){const e=await Kt(this.payload),t=this.$refs["download"];Jt(e,t,"trimmed_"+$t(this.zipFile.getFileName(),".zip"))}},computed:{dynamicPartitions(){return this.payload.manifest?.dynamicPartitionMetadata?.groups?.flatMap((e=>e.partitionNames||[]))||[]}}});const en=(0,f.Z)(Qt,[["render",B],["__scopeId","data-v-05db67f2"]]);var tn=en;const nn=(0,l.Uk)("Export Target File Metadata"),an={ref:"download"},rn={key:1},on=(0,l.Uk)(" Analyse Installed Blocks (in target build) "),sn=(0,l.Uk)(" Analyse Payload Composition "),ln=(0,l.Uk)(" Analyse COW Merge Operations "),cn={key:0,class:"tooltiptext"},pn=(0,l.Uk)(" Analyse Filenames "),un=(0,l.Uk)(" Analyse File Extensions ");function dn(e,t,n,a,r,o){const i=(0,l.up)("v-btn"),s=(0,l.up)("PartialCheckbox"),c=(0,l.up)("PieChart"),p=(0,l.up)("v-divider"),u=(0,l.up)("v-col"),d=(0,l.up)("v-row"),f=(0,l.up)("BaseFile");return(0,l.wg)(),(0,l.iD)(l.HY,null,[e.targetFile?((0,l.wg)(),(0,l.j4)(i,{key:0,block:"",class:"md-6",onClick:e.exportTargetFileMetadata},{default:(0,l.w5)((()=>[nn])),_:1},8,["onClick"])):(0,l.kq)("",!0),(0,l._)("a",an,null,512),(0,l.Wm)(s,{modelValue:e.partitionInclude,"onUpdate:modelValue":t[0]||(t[0]=t=>e.partitionInclude=t),labels:e.updatePartitions},null,8,["modelValue","labels"]),e.echartsData?((0,l.wg)(),(0,l.iD)("div",rn,[(0,l.Wm)(c,{echartsData:e.echartsData,onClick:e.piechartClick},null,8,["echartsData","onClick"])])):(0,l.kq)("",!0),(0,l.Wm)(p),(0,l.Wm)(d,null,{default:(0,l.w5)((()=>[(0,l.Wm)(u,{cols:"12",md:"6"},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{block:"",onClick:t[1]||(t[1]=t=>e.updateChart("blocks"))},{default:(0,l.w5)((()=>[on])),_:1})])),_:1}),(0,l.Wm)(u,{cols:"12",md:"6"},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{block:"",onClick:t[2]||(t[2]=t=>e.updateChart("payload"))},{default:(0,l.w5)((()=>[sn])),_:1})])),_:1})])),_:1}),(0,l.Wm)(d,null,{default:(0,l.w5)((()=>[(0,l.Wm)(u,{cols:"12",md:"6",class:"tooltip"},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{disabled:e.manifest.nonAB||!e.manifest.dynamicPartitionMetadata.vabcEnabled,title:"Only available for VABC update",block:"",onClick:t[3]||(t[3]=t=>e.updateChart("COWmerge"))},{default:(0,l.w5)((()=>[ln])),_:1},8,["disabled"]),e.manifest.nonAB?((0,l.wg)(),(0,l.iD)("span",cn," This function is only supported in A/B OTA ")):(0,l.kq)("",!0)])),_:1}),(0,l.Wm)(u,{cols:"12",md:"6"},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{block:"",disabled:!e.targetFile,onClick:t[4]||(t[4]=t=>e.updateChart("filenames"))},{default:(0,l.w5)((()=>[pn])),_:1},8,["disabled"])])),_:1})])),_:1}),(0,l.Wm)(d,null,{default:(0,l.w5)((()=>[(0,l.Wm)(u,{cols:"12",md:"6"},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{block:"",disabled:!e.targetFile,onClick:t[5]||(t[5]=t=>e.updateChart("extensions"))},{default:(0,l.w5)((()=>[un])),_:1},8,["disabled"])])),_:1})])),_:1}),(0,l.Wm)(d,null,{default:(0,l.w5)((()=>[(0,l.Wm)(u,{cols:"12",md:"6"}),(0,l.Wm)(u,{cols:"12",md:"6"},{default:(0,l.w5)((()=>[e.demo?(0,l.kq)("",!0):((0,l.wg)(),(0,l.j4)(f,{key:0,label:"Drag and drop or Select The target Android build",onFileSelect:e.selectBuild},null,8,["onFileSelect"]))])),_:1})])),_:1})],64)}var fn=n(9669),hn=n.n(fn);const gn=["value","checked"],mn={key:0};function yn(e,t,n,a,r,o){const i=(0,l.up)("v-btn"),s=(0,l.up)("v-col"),p=(0,l.up)("v-row");return(0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l.Wm)(i,{block:"",type:"button",class:"my-5",onClick:e.revertAllSelection},{default:(0,l.w5)((()=>[(0,l.Uk)((0,c.zw)(e.selectAllText[e.selectAll]),1)])),_:1},8,["onClick"]),(0,l.Wm)(p,{class:"mb-5"},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.labels,(n=>((0,l.wg)(),(0,l.j4)(s,{key:n,cols:"12",md:"4"},{default:(0,l.w5)((()=>[(0,l._)("input",{type:"checkbox",value:n,checked:e.modelValue.get(n),onChange:t[0]||(t[0]=t=>e.updateSelected(t.target.value))},null,40,gn),n?((0,l.wg)(),(0,l.iD)("label",mn,(0,c.zw)(n),1)):(0,l.kq)("",!0)])),_:2},1024)))),128))])),_:1})],64)}var wn=(0,l.aZ)({props:{labels:{type:Array,default:new Array},modelValue:{type:Map,default:new Map}},data(){return{selectAll:1,selectAllText:["Select All","Unselect All"]}},mounted(){for(let e of this.labels)this.modelValue.set(e,!0)},methods:{updateSelected(e){this.modelValue.set(e,!this.modelValue.get(e)),this.$emit("update:modelValue",this.modelValue)},revertAllSelection(){this.selectAll=1-this.selectAll;for(let e of this.modelValue.keys())this.modelValue.set(e,Boolean(this.selectAll))}}});const bn=(0,f.Z)(wn,[["render",yn],["__scopeId","data-v-533f2336"]]);var On=bn;function _n(e,t,n,a,r,o){const i=(0,l.up)("v-chart");return(0,l.wg)(),(0,l.j4)(i,{class:"chart",option:o.getEchartsOption,onClick:t[0]||(t[0]=t=>e.$emit("click",...arguments))},null,8,["option"])}var kn=n(8023),Sn=n(1416),xn=n(8650),Pn=n(8690),In=n(3703),vn=n(6179),En=n(487);(0,kn.D)([Sn.N,xn.N,Pn.N,In.N,vn.N]);var zn={components:{VChart:En.ZP},provide:{[En.bw]:"dark"},props:{echartsData:{type:Ze,required:!0}},computed:{getEchartsOption(){return this.echartsData.getEchartsOption()}}};const Ln=(0,f.Z)(zn,[["render",_n],["__scopeId","data-v-5d1cb486"]]);var Tn=Ln,jn=(0,l.aZ)({components:{PartialCheckbox:On,PieChart:Tn,BaseFile:I},props:{manifest:{type:ue.DeltaArchiveManifest,default:()=>[]},demo:{type:Boolean,default:!1}},data(){return{partitionInclude:new Map,echartsData:null,listData:"",targetFile:null}},computed:{updatePartitions(){return this.manifest.partitions.map((e=>e.partitionName))}},async mounted(){if(this.demo)try{const e=await hn().get("./files/cf_x86_target_file_demo.zip",{responseType:"blob"});this.targetFile=new File([e.data],"target_demo.zip")}catch(e){console.log("Please put a proper example target file in /public/files/")}},methods:{piechartClick(e){console.log(e)},async updateChart(e){let t=this.manifest.partitions.filter((e=>this.partitionInclude.get(e.partitionName)));try{this.echartsData=await nt(e,t,this.manifest.blockSize,this.targetFile)}catch(n){alert(`Cannot be processed for the following issue: ${n}`)}},selectBuild(e){this.targetFile=e},async exportTargetFileMetadata(){const e=await qt(this.targetFile),t=this.$refs["download"];Jt(e,t,"trimmed_"+$t(Zt(this.targetFile),".zip"))}}});const Dn=(0,f.Z)(jn,[["render",dn],["__scopeId","data-v-44b569bd"]]);var An=Dn,Bn=(0,l.aZ)({components:{BaseFile:I,PayloadDetail:tn,PayloadComposition:An},data(){return{zipFile:null,payload:null}},methods:{async unpackOTA(e){this.zipFile=new Vt(e);try{this.payload=new ve(this.zipFile),await this.payload.init()}catch(t){alert(`Please check if this is a correct OTA package (.zip). ${t}`),console.log(t)}}}});const Cn=(0,f.Z)(Bn,[["render",w]]);var Nn=Cn;function Mn(e,t,n,a,r,o){const i=(0,l.up)("PayloadDetail"),s=(0,l.up)("v-col"),c=(0,l.up)("v-divider"),p=(0,l.up)("PayloadComposition"),u=(0,l.up)("v-row");return(0,l.wg)(),(0,l.j4)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(s,{cols:"12",md:"6"},{default:(0,l.w5)((()=>[e.zipFile&&e.payload?((0,l.wg)(),(0,l.j4)(i,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):(0,l.kq)("",!0)])),_:1}),(0,l.Wm)(c,{vertical:""}),(0,l.Wm)(s,{cols:"12",md:"6"},{default:(0,l.w5)((()=>[e.zipFile&&e.payload.manifest?((0,l.wg)(),(0,l.j4)(p,{key:0,manifest:e.payload.manifest,demo:!0},null,8,["manifest"])):(0,l.kq)("",!0)])),_:1})])),_:1})}var Fn=(0,l.aZ)({components:{PayloadDetail:tn,PayloadComposition:An},data(){return{zipFile:null,payload:null}},async created(){try{const e=await hn().get("./files/cf_x86_demo.zip",{responseType:"blob"});this.zipFile=new Vt(new File([e.data],"ota_demo.zip")),this.payload=new ve(this.zipFile),await this.payload.init()}catch(e){console.log("Please put a proper example OTA in /public/files/")}}});const Un=(0,f.Z)(Fn,[["render",Mn]]);var Rn=Un;const Vn={class:"about"},Hn=(0,l._)("p",null,"A web based tool to inspect Android OTA packages.",-1),Wn=[Hn];function Zn(e,t){return(0,l.wg)(),(0,l.iD)("div",Vn,Wn)}const qn={},Kn=(0,f.Z)(qn,[["render",Zn]]);var Jn=Kn;const $n=e=>((0,l.dD)("data-v-50c6f348"),e=e(),(0,l.Cn)(),e),Yn=$n((()=>(0,l._)("h1",null,"Not Found!",-1))),Gn=$n((()=>(0,l._)("p",null,[(0,l._)("a",{href:"/"},"Go home?")],-1)));function Xn(e,t){const n=(0,l.up)("center");return(0,l.wg)(),(0,l.j4)(n,null,{default:(0,l.w5)((()=>[Yn,Gn])),_:1})}const Qn={},ea=(0,f.Z)(Qn,[["render",Xn],["__scopeId","data-v-50c6f348"]]);var ta=ea;const na=[{path:"/",name:"Analysis",component:Nn,meta:{title:"Analyse OTA package - from AOSP"}},{path:"/demo",name:"Demo",component:Rn},{path:"/about",name:"About",component:Jn},{path:"/:catchAll(.*)",name:"Not Found",component:ta}],aa=(0,m.p7)({history:(0,m.PO)("/analyseOTA/"),routes:na});aa.beforeEach(((e,t,n)=>{const a=e.matched.slice().reverse().find((e=>e.meta&&e.meta.title)),r=(e.matched.slice().reverse().find((e=>e.meta&&e.meta.metaTags)),t.matched.slice().reverse().find((e=>e.meta&&e.meta.metaTags)));a?document.title=a.meta.title:r&&(document.title=r.meta.title),Array.from(document.querySelectorAll("[data-vue-router-controlled]")).map((e=>e.parentNode.removeChild(e))),n()}));var ra=aa,oa=n(8410),ia=(0,oa.MT)({state:{},mutations:{},actions:{},modules:{}});const sa=(0,a.ri)(g);sa.use(ra),sa.use(ia),sa.use(s),sa.mount("#app")}},t={};function n(a){var r=t[a];if(void 0!==r)return r.exports;var o=t[a]={exports:{}};return e[a].call(o.exports,o,o.exports,n),o.exports}n.m=e,function(){var e=[];n.O=function(t,a,r,o){if(!a){var i=1/0;for(p=0;p=o)&&Object.keys(n.O).every((function(e){return n.O[e](a[l])}))?a.splice(l--,1):(s=!1,o0&&e[p-1][2]>o;p--)e[p]=e[p-1];e[p]=[a,r,o]}}(),function(){n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,{a:t}),t}}(),function(){n.d=function(e,t){for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}}(),function(){var e={143:0};n.O.j=function(t){return 0===e[t]};var t=function(t,a){var r,o,i=a[0],s=a[1],l=a[2],c=0;if(i.some((function(t){return 0!==e[t]}))){for(r in s)n.o(s,r)&&(n.m[r]=s[r]);if(l)var p=l(n)}for(t&&t(a);c\n\n\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=ee415730\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createTextVNode(\"This tool does not upload your package anywhere. All analysis are done in the frontend using Javascript.\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_alert = _resolveComponent(\"v-alert\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n const _component_BaseFile = _resolveComponent(\"BaseFile\")!\n const _component_PayloadDetail = _resolveComponent(\"PayloadDetail\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n const _component_PayloadComposition = _resolveComponent(\"PayloadComposition\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_alert, { style: {\"color\":\"yellow\"} }, {\n default: _withCtx(() => [\n _hoisted_1\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_BaseFile, {\n label: \"Please drag and drop an OTA package or select one\",\n onFileSelect: _ctx.unpackOTA\n }, null, 8, [\"onFileSelect\"]),\n (_ctx.zipFile && _ctx.payload)\n ? (_openBlock(), _createBlock(_component_PayloadDetail, {\n key: 0,\n zipFile: _ctx.zipFile,\n payload: _ctx.payload\n }, null, 8, [\"zipFile\", \"payload\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_component_v_divider, { vertical: \"\" }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n (_ctx.zipFile && _ctx.payload.manifest)\n ? (_openBlock(), _createBlock(_component_PayloadComposition, {\n key: 0,\n manifest: _ctx.payload.manifest\n }, null, 8, [\"manifest\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ], 64))\n}","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, vModelText as _vModelText, normalizeClass as _normalizeClass, withDirectives as _withDirectives, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0630c5ec\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"file-select ma-5\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = { key: 2 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"label\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"select-button\",\n onDragover: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.dragover && _ctx.dragover(...args))),\n onDragleave: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.dragleave && _ctx.dragleave(...args))),\n onDrop: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.drop && _ctx.drop(...args)))\n }, [\n (_ctx.label)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_2, _toDisplayString(!_ctx.fileName ? _ctx.label : ''), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_3, \"Select File\")),\n (_ctx.fileName)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, \"File selected: \" + _toDisplayString(_ctx.fileName), 1))\n : _createCommentVNode(\"\", true)\n ], 32),\n _createElementVNode(\"input\", {\n ref: \"file\",\n type: \"file\",\n accept: \".zip\",\n onChange: _cache[3] || (_cache[3] = \n//@ts-ignore\n(...args) => (_ctx.handleFileChange && _ctx.handleFileChange(...args)))\n }, null, 544)\n ]),\n _withDirectives(_createElementVNode(\"input\", {\n class: _normalizeClass([\"url-input\", {\n 'url-invalid': !_ctx.parsedURL && _ctx.url != '',\n 'url-valid': _ctx.parsedURL || _ctx.url == ''\n }]),\n ref: \"url_input\",\n type: \"url\",\n placeholder: \"type a URL\",\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.url) = $event)),\n onKeyup: _cache[5] || (_cache[5] = \n//@ts-ignore\n(...args) => (_ctx.urlKeyup && _ctx.urlKeyup(...args)))\n }, null, 34), [\n [_vModelText, _ctx.url]\n ])\n ], 64))\n}","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n label: {\n type: String,\n default: ''\n }\n },\n emits: {\n 'file-select': null\n },\n data() {\n return {\n fileName: '',\n url: ''\n }\n },\n computed: {\n parsedURL(): URL | null {\n try {\n return new URL(this.url)\n } catch {\n return null\n }\n }\n },\n\n methods: {\n handleFileChange(event: any) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (target.files == null || target.files.length < 1) {\n return\n }\n const selectedFile = target.files![0]\n this.$emit('file-select', selectedFile)\n // If user selects a file, clear the URL component\n this.url = ''\n this.fileName = target.files![0].name\n },\n dragover(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!target.classList.contains('file-hover')) {\n target.classList.add('file-hover')\n }\n },\n dragleave(event: DragEvent) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n target.classList.remove('file-hover')\n },\n drop(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!event.dataTransfer || event.dataTransfer.files.length == 0) {\n return\n }\n target.files = event.dataTransfer.files\n this.handleFileChange(event)\n target.classList.remove('file-hover')\n },\n urlKeyup(event: KeyboardEvent) {\n console.log(this.url)\n if (event.key == 'Enter') {\n const target = event.target as HTMLInputElement\n if (this.parsedURL == null) {\n console.error(`${target.value} is an invalid URL`)\n return\n }\n this.$emit('file-select', this.parsedURL)\n }\n }\n }\n})\n","import { render } from \"./BaseFile.vue?vue&type=template&id=0630c5ec&scoped=true&ts=true\"\nimport script from \"./BaseFile.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseFile.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0630c5ec\"]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-05db67f2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/_createTextVNode(\"Export Metadata\")\nconst _hoisted_2 = { ref: \"download\" }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h3\", null, \"Partition List\", -1))\nconst _hoisted_5 = {\n key: 1,\n class: \"signature\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h3\", null, \"Metadata Signature\", -1))\nconst _hoisted_7 = { style: {\"white-space\":\"pre-wrap\"} }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_btn = _resolveComponent(\"v-btn\")!\n const _component_BasicInfo = _resolveComponent(\"BasicInfo\")!\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n const _component_PartitionDetail = _resolveComponent(\"PartitionDetail\")!\n const _component_v_card = _resolveComponent(\"v-card\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (_ctx.zipFile && _ctx.payload)\n ? (_openBlock(), _createBlock(_component_v_btn, {\n key: 0,\n class: \"download-btn\",\n onClick: _ctx.exportOTAPackage\n }, {\n default: _withCtx(() => [\n _hoisted_1\n ]),\n _: 1\n }, 8, [\"onClick\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"a\", _hoisted_2, null, 512),\n _createVNode(_component_BasicInfo, {\n zipFile: _ctx.zipFile,\n payload: _ctx.payload,\n class: \"mb-5\"\n }, null, 8, [\"zipFile\", \"payload\"]),\n _createVNode(_component_v_divider),\n (_ctx.payload)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _hoisted_4,\n (_ctx.payload.manifest)\n ? (_openBlock(), _createBlock(_component_v_row, {\n key: 0,\n class: \"mb-5\"\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.payload.manifest.partitions, (partition) => {\n return (_openBlock(), _createBlock(_component_v_col, {\n key: partition.partitionName,\n cols: \"12\",\n md: \"4\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_card, {\n elevation: \"5\",\n hover: \"\",\n shaped: \"\",\n class: \"partial-info\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_PartitionDetail, {\n partition: partition,\n dynamicPartitionList: _ctx.dynamicPartitions\n }, null, 8, [\"partition\", \"dynamicPartitionList\"])\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1024))\n }), 128))\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_v_divider),\n (_ctx.payload.metadata_signature && !_ctx.payload.manifest.nonAB)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _hoisted_6,\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.octToHex(_ctx.payload.metadata_signature.signatures[0].data)), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6dba348a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = { key: 1 }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Estimate COW Size: \", -1))\nconst _hoisted_4 = { key: 2 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Postinstall Script: \", -1))\nconst _hoisted_6 = { class: \"toggle\" }\nconst _hoisted_7 = { key: 0 }\nconst _hoisted_8 = { key: 0 }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Old Partition Size: \", -1))\nconst _hoisted_10 = { key: 1 }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Old Partition Hash: \", -1))\nconst _hoisted_12 = { class: \"hex\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" New Partition Size: \", -1))\nconst _hoisted_14 = { key: 2 }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" New Partition Hash: \", -1))\nconst _hoisted_16 = { class: \"hex\" }\nconst _hoisted_17 = { key: 3 }\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Version: \", -1))\nconst _hoisted_19 = { key: 4 }\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Version: \", -1))\nconst _hoisted_21 = { class: \"toggle\" }\nconst _hoisted_22 = { key: 0 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_OperationDetail = _resolveComponent(\"OperationDetail\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"h4\", {\n class: _normalizeClass({ 'new-partition': !_ctx.partition.oldPartitionInfo })\n }, _toDisplayString(_ctx.partition.partitionName), 3),\n (_ctx.isDynamicPartition)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_1, \" Dynamic: ✅ \"))\n : _createCommentVNode(\"\", true),\n (_ctx.partition.estimateCowSize)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_2, [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.estimateCowSize) + \" Bytes \", 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.partition.postinstallPath)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_4, [\n _hoisted_5,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.postinstallPath), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"h4\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.toggle('showInfo'))),\n class: _normalizeClass({ active: _ctx.showInfo, inactive: !_ctx.showInfo })\n }, \" Partition Infos \", 2),\n (_ctx.showInfo)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_7, [\n (_ctx.partition.oldPartitionInfo)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_8, [\n _hoisted_9,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.oldPartitionInfo.size) + \" Bytes \", 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.partition.oldPartitionInfo)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"div\", _hoisted_12, _toDisplayString(_ctx.octToHex(_ctx.partition.oldPartitionInfo.hash, false, 16)), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"li\", null, [\n _hoisted_13,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.newPartitionInfo.size) + \" Bytes \", 1)\n ]),\n (_ctx.partition.newPartitionInfo.hash)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_14, [\n _hoisted_15,\n _createElementVNode(\"div\", _hoisted_16, _toDisplayString(_ctx.octToHex(_ctx.partition.newPartitionInfo.hash, false, 16)), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.partition.version)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_17, [\n _hoisted_18,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.version), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.readableTimestamp)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_19, [\n _hoisted_20,\n _createTextVNode(\" \" + _toDisplayString(_ctx.readableTimestamp), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"h4\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.toggle('showOPs'))),\n class: _normalizeClass({ active: _ctx.showOPs, inactive: !_ctx.showOPs })\n }, \" Total Operations: \" + _toDisplayString(_ctx.partition.operations.length), 3),\n (_ctx.showOPs)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_22, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.partition.operations, (operation) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: operation.dataSha256Hash\n }, [\n _createVNode(_component_OperationDetail, {\n operation: operation,\n mapType: _ctx.opType.mapType\n }, null, 8, [\"operation\", \"mapType\"])\n ]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ], 64))\n}","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\nimport * as $protobuf from \"protobufjs/minimal\";\n\n// Common aliases\nconst $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nconst $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\nexport const chromeos_update_engine = $root.chromeos_update_engine = (() => {\n\n /**\n * Namespace chromeos_update_engine.\n * @exports chromeos_update_engine\n * @namespace\n */\n const chromeos_update_engine = {};\n\n chromeos_update_engine.Extent = (function() {\n\n /**\n * Properties of an Extent.\n * @memberof chromeos_update_engine\n * @interface IExtent\n * @property {number|Long|null} [startBlock] Extent startBlock\n * @property {number|Long|null} [numBlocks] Extent numBlocks\n */\n\n /**\n * Constructs a new Extent.\n * @memberof chromeos_update_engine\n * @classdesc Represents an Extent.\n * @implements IExtent\n * @constructor\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n */\n function Extent(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Extent startBlock.\n * @member {number|Long} startBlock\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.startBlock = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Extent numBlocks.\n * @member {number|Long} numBlocks\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.numBlocks = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new Extent instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n * @returns {chromeos_update_engine.Extent} Extent instance\n */\n Extent.create = function create(properties) {\n return new Extent(properties);\n };\n\n /**\n * Encodes the specified Extent message. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startBlock != null && Object.hasOwnProperty.call(message, \"startBlock\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.startBlock);\n if (message.numBlocks != null && Object.hasOwnProperty.call(message, \"numBlocks\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.numBlocks);\n return writer;\n };\n\n /**\n * Encodes the specified Extent message, length delimited. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Extent();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.startBlock = reader.uint64();\n break;\n case 2:\n message.numBlocks = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an Extent message.\n * @function verify\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Extent.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (!$util.isInteger(message.startBlock) && !(message.startBlock && $util.isInteger(message.startBlock.low) && $util.isInteger(message.startBlock.high)))\n return \"startBlock: integer|Long expected\";\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (!$util.isInteger(message.numBlocks) && !(message.numBlocks && $util.isInteger(message.numBlocks.low) && $util.isInteger(message.numBlocks.high)))\n return \"numBlocks: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an Extent message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Extent} Extent\n */\n Extent.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Extent)\n return object;\n let message = new $root.chromeos_update_engine.Extent();\n if (object.startBlock != null)\n if ($util.Long)\n (message.startBlock = $util.Long.fromValue(object.startBlock)).unsigned = true;\n else if (typeof object.startBlock === \"string\")\n message.startBlock = parseInt(object.startBlock, 10);\n else if (typeof object.startBlock === \"number\")\n message.startBlock = object.startBlock;\n else if (typeof object.startBlock === \"object\")\n message.startBlock = new $util.LongBits(object.startBlock.low >>> 0, object.startBlock.high >>> 0).toNumber(true);\n if (object.numBlocks != null)\n if ($util.Long)\n (message.numBlocks = $util.Long.fromValue(object.numBlocks)).unsigned = true;\n else if (typeof object.numBlocks === \"string\")\n message.numBlocks = parseInt(object.numBlocks, 10);\n else if (typeof object.numBlocks === \"number\")\n message.numBlocks = object.numBlocks;\n else if (typeof object.numBlocks === \"object\")\n message.numBlocks = new $util.LongBits(object.numBlocks.low >>> 0, object.numBlocks.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from an Extent message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.Extent} message Extent\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Extent.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.startBlock = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.startBlock = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.numBlocks = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.numBlocks = options.longs === String ? \"0\" : 0;\n }\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (typeof message.startBlock === \"number\")\n object.startBlock = options.longs === String ? String(message.startBlock) : message.startBlock;\n else\n object.startBlock = options.longs === String ? $util.Long.prototype.toString.call(message.startBlock) : options.longs === Number ? new $util.LongBits(message.startBlock.low >>> 0, message.startBlock.high >>> 0).toNumber(true) : message.startBlock;\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (typeof message.numBlocks === \"number\")\n object.numBlocks = options.longs === String ? String(message.numBlocks) : message.numBlocks;\n else\n object.numBlocks = options.longs === String ? $util.Long.prototype.toString.call(message.numBlocks) : options.longs === Number ? new $util.LongBits(message.numBlocks.low >>> 0, message.numBlocks.high >>> 0).toNumber(true) : message.numBlocks;\n return object;\n };\n\n /**\n * Converts this Extent to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Extent\n * @instance\n * @returns {Object.} JSON object\n */\n Extent.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Extent;\n })();\n\n chromeos_update_engine.Signatures = (function() {\n\n /**\n * Properties of a Signatures.\n * @memberof chromeos_update_engine\n * @interface ISignatures\n * @property {Array.|null} [signatures] Signatures signatures\n */\n\n /**\n * Constructs a new Signatures.\n * @memberof chromeos_update_engine\n * @classdesc Represents a Signatures.\n * @implements ISignatures\n * @constructor\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n */\n function Signatures(properties) {\n this.signatures = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signatures signatures.\n * @member {Array.} signatures\n * @memberof chromeos_update_engine.Signatures\n * @instance\n */\n Signatures.prototype.signatures = $util.emptyArray;\n\n /**\n * Creates a new Signatures instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures} Signatures instance\n */\n Signatures.create = function create(properties) {\n return new Signatures(properties);\n };\n\n /**\n * Encodes the specified Signatures message. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.signatures != null && message.signatures.length)\n for (let i = 0; i < message.signatures.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.signatures[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Signatures message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.signatures && message.signatures.length))\n message.signatures = [];\n message.signatures.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signatures message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signatures.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.signatures != null && message.hasOwnProperty(\"signatures\")) {\n if (!Array.isArray(message.signatures))\n return \"signatures: array expected\";\n for (let i = 0; i < message.signatures.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.signatures[i]);\n if (error)\n return \"signatures.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a Signatures message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures} Signatures\n */\n Signatures.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures)\n return object;\n let message = new $root.chromeos_update_engine.Signatures();\n if (object.signatures) {\n if (!Array.isArray(object.signatures))\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: array expected\");\n message.signatures = [];\n for (let i = 0; i < object.signatures.length; ++i) {\n if (typeof object.signatures[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: object expected\");\n message.signatures[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.signatures[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Signatures message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.Signatures} message Signatures\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signatures.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.signatures = [];\n if (message.signatures && message.signatures.length) {\n object.signatures = [];\n for (let j = 0; j < message.signatures.length; ++j)\n object.signatures[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.signatures[j], options);\n }\n return object;\n };\n\n /**\n * Converts this Signatures to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures\n * @instance\n * @returns {Object.} JSON object\n */\n Signatures.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n Signatures.Signature = (function() {\n\n /**\n * Properties of a Signature.\n * @memberof chromeos_update_engine.Signatures\n * @interface ISignature\n * @property {number|null} [version] Signature version\n * @property {Uint8Array|null} [data] Signature data\n * @property {number|null} [unpaddedSignatureSize] Signature unpaddedSignatureSize\n */\n\n /**\n * Constructs a new Signature.\n * @memberof chromeos_update_engine.Signatures\n * @classdesc Represents a Signature.\n * @implements ISignature\n * @constructor\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n */\n function Signature(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signature version.\n * @member {number} version\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.version = 0;\n\n /**\n * Signature data.\n * @member {Uint8Array} data\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.data = $util.newBuffer([]);\n\n /**\n * Signature unpaddedSignatureSize.\n * @member {number} unpaddedSignatureSize\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.unpaddedSignatureSize = 0;\n\n /**\n * Creates a new Signature instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures.Signature} Signature instance\n */\n Signature.create = function create(properties) {\n return new Signature(properties);\n };\n\n /**\n * Encodes the specified Signature message. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.version);\n if (message.data != null && Object.hasOwnProperty.call(message, \"data\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.data);\n if (message.unpaddedSignatureSize != null && Object.hasOwnProperty.call(message, \"unpaddedSignatureSize\"))\n writer.uint32(/* id 3, wireType 5 =*/29).fixed32(message.unpaddedSignatureSize);\n return writer;\n };\n\n /**\n * Encodes the specified Signature message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures.Signature();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.version = reader.uint32();\n break;\n case 2:\n message.data = reader.bytes();\n break;\n case 3:\n message.unpaddedSignatureSize = reader.fixed32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signature message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signature.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version))\n return \"version: integer expected\";\n if (message.data != null && message.hasOwnProperty(\"data\"))\n if (!(message.data && typeof message.data.length === \"number\" || $util.isString(message.data)))\n return \"data: buffer expected\";\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n if (!$util.isInteger(message.unpaddedSignatureSize))\n return \"unpaddedSignatureSize: integer expected\";\n return null;\n };\n\n /**\n * Creates a Signature message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n */\n Signature.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures.Signature)\n return object;\n let message = new $root.chromeos_update_engine.Signatures.Signature();\n if (object.version != null)\n message.version = object.version >>> 0;\n if (object.data != null)\n if (typeof object.data === \"string\")\n $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);\n else if (object.data.length)\n message.data = object.data;\n if (object.unpaddedSignatureSize != null)\n message.unpaddedSignatureSize = object.unpaddedSignatureSize >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a Signature message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.Signature} message Signature\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signature.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.version = 0;\n if (options.bytes === String)\n object.data = \"\";\n else {\n object.data = [];\n if (options.bytes !== Array)\n object.data = $util.newBuffer(object.data);\n }\n object.unpaddedSignatureSize = 0;\n }\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.data != null && message.hasOwnProperty(\"data\"))\n object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n object.unpaddedSignatureSize = message.unpaddedSignatureSize;\n return object;\n };\n\n /**\n * Converts this Signature to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n * @returns {Object.} JSON object\n */\n Signature.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Signature;\n })();\n\n return Signatures;\n })();\n\n chromeos_update_engine.PartitionInfo = (function() {\n\n /**\n * Properties of a PartitionInfo.\n * @memberof chromeos_update_engine\n * @interface IPartitionInfo\n * @property {number|Long|null} [size] PartitionInfo size\n * @property {Uint8Array|null} [hash] PartitionInfo hash\n */\n\n /**\n * Constructs a new PartitionInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionInfo.\n * @implements IPartitionInfo\n * @constructor\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n */\n function PartitionInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionInfo size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * PartitionInfo hash.\n * @member {Uint8Array} hash\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.hash = $util.newBuffer([]);\n\n /**\n * Creates a new PartitionInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo instance\n */\n PartitionInfo.create = function create(properties) {\n return new PartitionInfo(properties);\n };\n\n /**\n * Encodes the specified PartitionInfo message. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.size);\n if (message.hash != null && Object.hasOwnProperty.call(message, \"hash\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.hash);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.size = reader.uint64();\n break;\n case 2:\n message.hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionInfo message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n if (!(message.hash && typeof message.hash.length === \"number\" || $util.isString(message.hash)))\n return \"hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates a PartitionInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n */\n PartitionInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionInfo)\n return object;\n let message = new $root.chromeos_update_engine.PartitionInfo();\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.hash != null)\n if (typeof object.hash === \"string\")\n $util.base64.decode(object.hash, message.hash = $util.newBuffer($util.base64.length(object.hash)), 0);\n else if (object.hash.length)\n message.hash = object.hash;\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.PartitionInfo} message PartitionInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.hash = \"\";\n else {\n object.hash = [];\n if (options.bytes !== Array)\n object.hash = $util.newBuffer(object.hash);\n }\n }\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n object.hash = options.bytes === String ? $util.base64.encode(message.hash, 0, message.hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.hash) : message.hash;\n return object;\n };\n\n /**\n * Converts this PartitionInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionInfo;\n })();\n\n chromeos_update_engine.ImageInfo = (function() {\n\n /**\n * Properties of an ImageInfo.\n * @memberof chromeos_update_engine\n * @interface IImageInfo\n * @property {string|null} [board] ImageInfo board\n * @property {string|null} [key] ImageInfo key\n * @property {string|null} [channel] ImageInfo channel\n * @property {string|null} [version] ImageInfo version\n * @property {string|null} [buildChannel] ImageInfo buildChannel\n * @property {string|null} [buildVersion] ImageInfo buildVersion\n */\n\n /**\n * Constructs a new ImageInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ImageInfo.\n * @implements IImageInfo\n * @constructor\n * @param {chromeos_update_engine.IImageInfo=} [properties] Properties to set\n */\n function ImageInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ImageInfo board.\n * @member {string} board\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.board = \"\";\n\n /**\n * ImageInfo key.\n * @member {string} key\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.key = \"\";\n\n /**\n * ImageInfo channel.\n * @member {string} channel\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.channel = \"\";\n\n /**\n * ImageInfo version.\n * @member {string} version\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.version = \"\";\n\n /**\n * ImageInfo buildChannel.\n * @member {string} buildChannel\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.buildChannel = \"\";\n\n /**\n * ImageInfo buildVersion.\n * @member {string} buildVersion\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.buildVersion = \"\";\n\n /**\n * Creates a new ImageInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.IImageInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo instance\n */\n ImageInfo.create = function create(properties) {\n return new ImageInfo(properties);\n };\n\n /**\n * Encodes the specified ImageInfo message. Does not implicitly {@link chromeos_update_engine.ImageInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.IImageInfo} message ImageInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ImageInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.board != null && Object.hasOwnProperty.call(message, \"board\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.board);\n if (message.key != null && Object.hasOwnProperty.call(message, \"key\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.key);\n if (message.channel != null && Object.hasOwnProperty.call(message, \"channel\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.channel);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.version);\n if (message.buildChannel != null && Object.hasOwnProperty.call(message, \"buildChannel\"))\n writer.uint32(/* id 5, wireType 2 =*/42).string(message.buildChannel);\n if (message.buildVersion != null && Object.hasOwnProperty.call(message, \"buildVersion\"))\n writer.uint32(/* id 6, wireType 2 =*/50).string(message.buildVersion);\n return writer;\n };\n\n /**\n * Encodes the specified ImageInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ImageInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.IImageInfo} message ImageInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ImageInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ImageInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ImageInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ImageInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.board = reader.string();\n break;\n case 2:\n message.key = reader.string();\n break;\n case 3:\n message.channel = reader.string();\n break;\n case 4:\n message.version = reader.string();\n break;\n case 5:\n message.buildChannel = reader.string();\n break;\n case 6:\n message.buildVersion = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ImageInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ImageInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ImageInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ImageInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.board != null && message.hasOwnProperty(\"board\"))\n if (!$util.isString(message.board))\n return \"board: string expected\";\n if (message.key != null && message.hasOwnProperty(\"key\"))\n if (!$util.isString(message.key))\n return \"key: string expected\";\n if (message.channel != null && message.hasOwnProperty(\"channel\"))\n if (!$util.isString(message.channel))\n return \"channel: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.buildChannel != null && message.hasOwnProperty(\"buildChannel\"))\n if (!$util.isString(message.buildChannel))\n return \"buildChannel: string expected\";\n if (message.buildVersion != null && message.hasOwnProperty(\"buildVersion\"))\n if (!$util.isString(message.buildVersion))\n return \"buildVersion: string expected\";\n return null;\n };\n\n /**\n * Creates an ImageInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo\n */\n ImageInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ImageInfo)\n return object;\n let message = new $root.chromeos_update_engine.ImageInfo();\n if (object.board != null)\n message.board = String(object.board);\n if (object.key != null)\n message.key = String(object.key);\n if (object.channel != null)\n message.channel = String(object.channel);\n if (object.version != null)\n message.version = String(object.version);\n if (object.buildChannel != null)\n message.buildChannel = String(object.buildChannel);\n if (object.buildVersion != null)\n message.buildVersion = String(object.buildVersion);\n return message;\n };\n\n /**\n * Creates a plain object from an ImageInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.ImageInfo} message ImageInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ImageInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.board = \"\";\n object.key = \"\";\n object.channel = \"\";\n object.version = \"\";\n object.buildChannel = \"\";\n object.buildVersion = \"\";\n }\n if (message.board != null && message.hasOwnProperty(\"board\"))\n object.board = message.board;\n if (message.key != null && message.hasOwnProperty(\"key\"))\n object.key = message.key;\n if (message.channel != null && message.hasOwnProperty(\"channel\"))\n object.channel = message.channel;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.buildChannel != null && message.hasOwnProperty(\"buildChannel\"))\n object.buildChannel = message.buildChannel;\n if (message.buildVersion != null && message.hasOwnProperty(\"buildVersion\"))\n object.buildVersion = message.buildVersion;\n return object;\n };\n\n /**\n * Converts this ImageInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ImageInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ImageInfo;\n })();\n\n chromeos_update_engine.InstallOperation = (function() {\n\n /**\n * Properties of an InstallOperation.\n * @memberof chromeos_update_engine\n * @interface IInstallOperation\n * @property {chromeos_update_engine.InstallOperation.Type} type InstallOperation type\n * @property {number|Long|null} [dataOffset] InstallOperation dataOffset\n * @property {number|Long|null} [dataLength] InstallOperation dataLength\n * @property {Array.|null} [srcExtents] InstallOperation srcExtents\n * @property {number|Long|null} [srcLength] InstallOperation srcLength\n * @property {Array.|null} [dstExtents] InstallOperation dstExtents\n * @property {number|Long|null} [dstLength] InstallOperation dstLength\n * @property {Uint8Array|null} [dataSha256Hash] InstallOperation dataSha256Hash\n * @property {Uint8Array|null} [srcSha256Hash] InstallOperation srcSha256Hash\n */\n\n /**\n * Constructs a new InstallOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents an InstallOperation.\n * @implements IInstallOperation\n * @constructor\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n */\n function InstallOperation(properties) {\n this.srcExtents = [];\n this.dstExtents = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * InstallOperation type.\n * @member {chromeos_update_engine.InstallOperation.Type} type\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.type = 0;\n\n /**\n * InstallOperation dataOffset.\n * @member {number|Long} dataOffset\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataLength.\n * @member {number|Long} dataLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation srcExtents.\n * @member {Array.} srcExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcExtents = $util.emptyArray;\n\n /**\n * InstallOperation srcLength.\n * @member {number|Long} srcLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dstExtents.\n * @member {Array.} dstExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstExtents = $util.emptyArray;\n\n /**\n * InstallOperation dstLength.\n * @member {number|Long} dstLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataSha256Hash.\n * @member {Uint8Array} dataSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataSha256Hash = $util.newBuffer([]);\n\n /**\n * InstallOperation srcSha256Hash.\n * @member {Uint8Array} srcSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcSha256Hash = $util.newBuffer([]);\n\n /**\n * Creates a new InstallOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation instance\n */\n InstallOperation.create = function create(properties) {\n return new InstallOperation(properties);\n };\n\n /**\n * Encodes the specified InstallOperation message. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.dataOffset != null && Object.hasOwnProperty.call(message, \"dataOffset\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.dataOffset);\n if (message.dataLength != null && Object.hasOwnProperty.call(message, \"dataLength\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.dataLength);\n if (message.srcExtents != null && message.srcExtents.length)\n for (let i = 0; i < message.srcExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.srcExtents[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.srcLength != null && Object.hasOwnProperty.call(message, \"srcLength\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.srcLength);\n if (message.dstExtents != null && message.dstExtents.length)\n for (let i = 0; i < message.dstExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.dstExtents[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.dstLength != null && Object.hasOwnProperty.call(message, \"dstLength\"))\n writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.dstLength);\n if (message.dataSha256Hash != null && Object.hasOwnProperty.call(message, \"dataSha256Hash\"))\n writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.dataSha256Hash);\n if (message.srcSha256Hash != null && Object.hasOwnProperty.call(message, \"srcSha256Hash\"))\n writer.uint32(/* id 9, wireType 2 =*/74).bytes(message.srcSha256Hash);\n return writer;\n };\n\n /**\n * Encodes the specified InstallOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.InstallOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.dataOffset = reader.uint64();\n break;\n case 3:\n message.dataLength = reader.uint64();\n break;\n case 4:\n if (!(message.srcExtents && message.srcExtents.length))\n message.srcExtents = [];\n message.srcExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 5:\n message.srcLength = reader.uint64();\n break;\n case 6:\n if (!(message.dstExtents && message.dstExtents.length))\n message.dstExtents = [];\n message.dstExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 7:\n message.dstLength = reader.uint64();\n break;\n case 8:\n message.dataSha256Hash = reader.bytes();\n break;\n case 9:\n message.srcSha256Hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"type\"))\n throw $util.ProtocolError(\"missing required 'type'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an InstallOperation message.\n * @function verify\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n InstallOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 8:\n case 6:\n case 7:\n case 10:\n case 9:\n case 11:\n case 12:\n case 13:\n break;\n }\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (!$util.isInteger(message.dataOffset) && !(message.dataOffset && $util.isInteger(message.dataOffset.low) && $util.isInteger(message.dataOffset.high)))\n return \"dataOffset: integer|Long expected\";\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (!$util.isInteger(message.dataLength) && !(message.dataLength && $util.isInteger(message.dataLength.low) && $util.isInteger(message.dataLength.high)))\n return \"dataLength: integer|Long expected\";\n if (message.srcExtents != null && message.hasOwnProperty(\"srcExtents\")) {\n if (!Array.isArray(message.srcExtents))\n return \"srcExtents: array expected\";\n for (let i = 0; i < message.srcExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtents[i]);\n if (error)\n return \"srcExtents.\" + error;\n }\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (!$util.isInteger(message.srcLength) && !(message.srcLength && $util.isInteger(message.srcLength.low) && $util.isInteger(message.srcLength.high)))\n return \"srcLength: integer|Long expected\";\n if (message.dstExtents != null && message.hasOwnProperty(\"dstExtents\")) {\n if (!Array.isArray(message.dstExtents))\n return \"dstExtents: array expected\";\n for (let i = 0; i < message.dstExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtents[i]);\n if (error)\n return \"dstExtents.\" + error;\n }\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (!$util.isInteger(message.dstLength) && !(message.dstLength && $util.isInteger(message.dstLength.low) && $util.isInteger(message.dstLength.high)))\n return \"dstLength: integer|Long expected\";\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n if (!(message.dataSha256Hash && typeof message.dataSha256Hash.length === \"number\" || $util.isString(message.dataSha256Hash)))\n return \"dataSha256Hash: buffer expected\";\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n if (!(message.srcSha256Hash && typeof message.srcSha256Hash.length === \"number\" || $util.isString(message.srcSha256Hash)))\n return \"srcSha256Hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates an InstallOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n */\n InstallOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.InstallOperation)\n return object;\n let message = new $root.chromeos_update_engine.InstallOperation();\n switch (object.type) {\n case \"REPLACE\":\n case 0:\n message.type = 0;\n break;\n case \"REPLACE_BZ\":\n case 1:\n message.type = 1;\n break;\n case \"MOVE\":\n case 2:\n message.type = 2;\n break;\n case \"BSDIFF\":\n case 3:\n message.type = 3;\n break;\n case \"SOURCE_COPY\":\n case 4:\n message.type = 4;\n break;\n case \"SOURCE_BSDIFF\":\n case 5:\n message.type = 5;\n break;\n case \"REPLACE_XZ\":\n case 8:\n message.type = 8;\n break;\n case \"ZERO\":\n case 6:\n message.type = 6;\n break;\n case \"DISCARD\":\n case 7:\n message.type = 7;\n break;\n case \"BROTLI_BSDIFF\":\n case 10:\n message.type = 10;\n break;\n case \"PUFFDIFF\":\n case 9:\n message.type = 9;\n break;\n case \"ZUCCHINI\":\n case 11:\n message.type = 11;\n break;\n case \"LZ4DIFF_BSDIFF\":\n case 12:\n message.type = 12;\n break;\n case \"LZ4DIFF_PUFFDIFF\":\n case 13:\n message.type = 13;\n break;\n }\n if (object.dataOffset != null)\n if ($util.Long)\n (message.dataOffset = $util.Long.fromValue(object.dataOffset)).unsigned = true;\n else if (typeof object.dataOffset === \"string\")\n message.dataOffset = parseInt(object.dataOffset, 10);\n else if (typeof object.dataOffset === \"number\")\n message.dataOffset = object.dataOffset;\n else if (typeof object.dataOffset === \"object\")\n message.dataOffset = new $util.LongBits(object.dataOffset.low >>> 0, object.dataOffset.high >>> 0).toNumber(true);\n if (object.dataLength != null)\n if ($util.Long)\n (message.dataLength = $util.Long.fromValue(object.dataLength)).unsigned = true;\n else if (typeof object.dataLength === \"string\")\n message.dataLength = parseInt(object.dataLength, 10);\n else if (typeof object.dataLength === \"number\")\n message.dataLength = object.dataLength;\n else if (typeof object.dataLength === \"object\")\n message.dataLength = new $util.LongBits(object.dataLength.low >>> 0, object.dataLength.high >>> 0).toNumber(true);\n if (object.srcExtents) {\n if (!Array.isArray(object.srcExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: array expected\");\n message.srcExtents = [];\n for (let i = 0; i < object.srcExtents.length; ++i) {\n if (typeof object.srcExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: object expected\");\n message.srcExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.srcExtents[i]);\n }\n }\n if (object.srcLength != null)\n if ($util.Long)\n (message.srcLength = $util.Long.fromValue(object.srcLength)).unsigned = true;\n else if (typeof object.srcLength === \"string\")\n message.srcLength = parseInt(object.srcLength, 10);\n else if (typeof object.srcLength === \"number\")\n message.srcLength = object.srcLength;\n else if (typeof object.srcLength === \"object\")\n message.srcLength = new $util.LongBits(object.srcLength.low >>> 0, object.srcLength.high >>> 0).toNumber(true);\n if (object.dstExtents) {\n if (!Array.isArray(object.dstExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: array expected\");\n message.dstExtents = [];\n for (let i = 0; i < object.dstExtents.length; ++i) {\n if (typeof object.dstExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: object expected\");\n message.dstExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.dstExtents[i]);\n }\n }\n if (object.dstLength != null)\n if ($util.Long)\n (message.dstLength = $util.Long.fromValue(object.dstLength)).unsigned = true;\n else if (typeof object.dstLength === \"string\")\n message.dstLength = parseInt(object.dstLength, 10);\n else if (typeof object.dstLength === \"number\")\n message.dstLength = object.dstLength;\n else if (typeof object.dstLength === \"object\")\n message.dstLength = new $util.LongBits(object.dstLength.low >>> 0, object.dstLength.high >>> 0).toNumber(true);\n if (object.dataSha256Hash != null)\n if (typeof object.dataSha256Hash === \"string\")\n $util.base64.decode(object.dataSha256Hash, message.dataSha256Hash = $util.newBuffer($util.base64.length(object.dataSha256Hash)), 0);\n else if (object.dataSha256Hash.length)\n message.dataSha256Hash = object.dataSha256Hash;\n if (object.srcSha256Hash != null)\n if (typeof object.srcSha256Hash === \"string\")\n $util.base64.decode(object.srcSha256Hash, message.srcSha256Hash = $util.newBuffer($util.base64.length(object.srcSha256Hash)), 0);\n else if (object.srcSha256Hash.length)\n message.srcSha256Hash = object.srcSha256Hash;\n return message;\n };\n\n /**\n * Creates a plain object from an InstallOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.InstallOperation} message InstallOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n InstallOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.srcExtents = [];\n object.dstExtents = [];\n }\n if (options.defaults) {\n object.type = options.enums === String ? \"REPLACE\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.srcLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.srcLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dstLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dstLength = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.dataSha256Hash = \"\";\n else {\n object.dataSha256Hash = [];\n if (options.bytes !== Array)\n object.dataSha256Hash = $util.newBuffer(object.dataSha256Hash);\n }\n if (options.bytes === String)\n object.srcSha256Hash = \"\";\n else {\n object.srcSha256Hash = [];\n if (options.bytes !== Array)\n object.srcSha256Hash = $util.newBuffer(object.srcSha256Hash);\n }\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.InstallOperation.Type[message.type] : message.type;\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (typeof message.dataOffset === \"number\")\n object.dataOffset = options.longs === String ? String(message.dataOffset) : message.dataOffset;\n else\n object.dataOffset = options.longs === String ? $util.Long.prototype.toString.call(message.dataOffset) : options.longs === Number ? new $util.LongBits(message.dataOffset.low >>> 0, message.dataOffset.high >>> 0).toNumber(true) : message.dataOffset;\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (typeof message.dataLength === \"number\")\n object.dataLength = options.longs === String ? String(message.dataLength) : message.dataLength;\n else\n object.dataLength = options.longs === String ? $util.Long.prototype.toString.call(message.dataLength) : options.longs === Number ? new $util.LongBits(message.dataLength.low >>> 0, message.dataLength.high >>> 0).toNumber(true) : message.dataLength;\n if (message.srcExtents && message.srcExtents.length) {\n object.srcExtents = [];\n for (let j = 0; j < message.srcExtents.length; ++j)\n object.srcExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.srcExtents[j], options);\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (typeof message.srcLength === \"number\")\n object.srcLength = options.longs === String ? String(message.srcLength) : message.srcLength;\n else\n object.srcLength = options.longs === String ? $util.Long.prototype.toString.call(message.srcLength) : options.longs === Number ? new $util.LongBits(message.srcLength.low >>> 0, message.srcLength.high >>> 0).toNumber(true) : message.srcLength;\n if (message.dstExtents && message.dstExtents.length) {\n object.dstExtents = [];\n for (let j = 0; j < message.dstExtents.length; ++j)\n object.dstExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.dstExtents[j], options);\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (typeof message.dstLength === \"number\")\n object.dstLength = options.longs === String ? String(message.dstLength) : message.dstLength;\n else\n object.dstLength = options.longs === String ? $util.Long.prototype.toString.call(message.dstLength) : options.longs === Number ? new $util.LongBits(message.dstLength.low >>> 0, message.dstLength.high >>> 0).toNumber(true) : message.dstLength;\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n object.dataSha256Hash = options.bytes === String ? $util.base64.encode(message.dataSha256Hash, 0, message.dataSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.dataSha256Hash) : message.dataSha256Hash;\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n object.srcSha256Hash = options.bytes === String ? $util.base64.encode(message.srcSha256Hash, 0, message.srcSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.srcSha256Hash) : message.srcSha256Hash;\n return object;\n };\n\n /**\n * Converts this InstallOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n * @returns {Object.} JSON object\n */\n InstallOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.InstallOperation.Type\n * @enum {number}\n * @property {number} REPLACE=0 REPLACE value\n * @property {number} REPLACE_BZ=1 REPLACE_BZ value\n * @property {number} MOVE=2 MOVE value\n * @property {number} BSDIFF=3 BSDIFF value\n * @property {number} SOURCE_COPY=4 SOURCE_COPY value\n * @property {number} SOURCE_BSDIFF=5 SOURCE_BSDIFF value\n * @property {number} REPLACE_XZ=8 REPLACE_XZ value\n * @property {number} ZERO=6 ZERO value\n * @property {number} DISCARD=7 DISCARD value\n * @property {number} BROTLI_BSDIFF=10 BROTLI_BSDIFF value\n * @property {number} PUFFDIFF=9 PUFFDIFF value\n * @property {number} ZUCCHINI=11 ZUCCHINI value\n * @property {number} LZ4DIFF_BSDIFF=12 LZ4DIFF_BSDIFF value\n * @property {number} LZ4DIFF_PUFFDIFF=13 LZ4DIFF_PUFFDIFF value\n */\n InstallOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"REPLACE\"] = 0;\n values[valuesById[1] = \"REPLACE_BZ\"] = 1;\n values[valuesById[2] = \"MOVE\"] = 2;\n values[valuesById[3] = \"BSDIFF\"] = 3;\n values[valuesById[4] = \"SOURCE_COPY\"] = 4;\n values[valuesById[5] = \"SOURCE_BSDIFF\"] = 5;\n values[valuesById[8] = \"REPLACE_XZ\"] = 8;\n values[valuesById[6] = \"ZERO\"] = 6;\n values[valuesById[7] = \"DISCARD\"] = 7;\n values[valuesById[10] = \"BROTLI_BSDIFF\"] = 10;\n values[valuesById[9] = \"PUFFDIFF\"] = 9;\n values[valuesById[11] = \"ZUCCHINI\"] = 11;\n values[valuesById[12] = \"LZ4DIFF_BSDIFF\"] = 12;\n values[valuesById[13] = \"LZ4DIFF_PUFFDIFF\"] = 13;\n return values;\n })();\n\n return InstallOperation;\n })();\n\n chromeos_update_engine.CowMergeOperation = (function() {\n\n /**\n * Properties of a CowMergeOperation.\n * @memberof chromeos_update_engine\n * @interface ICowMergeOperation\n * @property {chromeos_update_engine.CowMergeOperation.Type|null} [type] CowMergeOperation type\n * @property {chromeos_update_engine.IExtent|null} [srcExtent] CowMergeOperation srcExtent\n * @property {chromeos_update_engine.IExtent|null} [dstExtent] CowMergeOperation dstExtent\n * @property {number|null} [srcOffset] CowMergeOperation srcOffset\n */\n\n /**\n * Constructs a new CowMergeOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents a CowMergeOperation.\n * @implements ICowMergeOperation\n * @constructor\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n */\n function CowMergeOperation(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * CowMergeOperation type.\n * @member {chromeos_update_engine.CowMergeOperation.Type} type\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.type = 0;\n\n /**\n * CowMergeOperation srcExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} srcExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcExtent = null;\n\n /**\n * CowMergeOperation dstExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} dstExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.dstExtent = null;\n\n /**\n * CowMergeOperation srcOffset.\n * @member {number} srcOffset\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcOffset = 0;\n\n /**\n * Creates a new CowMergeOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation instance\n */\n CowMergeOperation.create = function create(properties) {\n return new CowMergeOperation(properties);\n };\n\n /**\n * Encodes the specified CowMergeOperation message. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.srcExtent != null && Object.hasOwnProperty.call(message, \"srcExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.srcExtent, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.dstExtent != null && Object.hasOwnProperty.call(message, \"dstExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.dstExtent, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.srcOffset != null && Object.hasOwnProperty.call(message, \"srcOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.srcOffset);\n return writer;\n };\n\n /**\n * Encodes the specified CowMergeOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.CowMergeOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.srcExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 3:\n message.dstExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 4:\n message.srcOffset = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a CowMergeOperation message.\n * @function verify\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n CowMergeOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtent);\n if (error)\n return \"srcExtent.\" + error;\n }\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtent);\n if (error)\n return \"dstExtent.\" + error;\n }\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n if (!$util.isInteger(message.srcOffset))\n return \"srcOffset: integer expected\";\n return null;\n };\n\n /**\n * Creates a CowMergeOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n */\n CowMergeOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.CowMergeOperation)\n return object;\n let message = new $root.chromeos_update_engine.CowMergeOperation();\n switch (object.type) {\n case \"COW_COPY\":\n case 0:\n message.type = 0;\n break;\n case \"COW_XOR\":\n case 1:\n message.type = 1;\n break;\n case \"COW_REPLACE\":\n case 2:\n message.type = 2;\n break;\n }\n if (object.srcExtent != null) {\n if (typeof object.srcExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.srcExtent: object expected\");\n message.srcExtent = $root.chromeos_update_engine.Extent.fromObject(object.srcExtent);\n }\n if (object.dstExtent != null) {\n if (typeof object.dstExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.dstExtent: object expected\");\n message.dstExtent = $root.chromeos_update_engine.Extent.fromObject(object.dstExtent);\n }\n if (object.srcOffset != null)\n message.srcOffset = object.srcOffset >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a CowMergeOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.CowMergeOperation} message CowMergeOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n CowMergeOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"COW_COPY\" : 0;\n object.srcExtent = null;\n object.dstExtent = null;\n object.srcOffset = 0;\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.CowMergeOperation.Type[message.type] : message.type;\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\"))\n object.srcExtent = $root.chromeos_update_engine.Extent.toObject(message.srcExtent, options);\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\"))\n object.dstExtent = $root.chromeos_update_engine.Extent.toObject(message.dstExtent, options);\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n object.srcOffset = message.srcOffset;\n return object;\n };\n\n /**\n * Converts this CowMergeOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n * @returns {Object.} JSON object\n */\n CowMergeOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.CowMergeOperation.Type\n * @enum {number}\n * @property {number} COW_COPY=0 COW_COPY value\n * @property {number} COW_XOR=1 COW_XOR value\n * @property {number} COW_REPLACE=2 COW_REPLACE value\n */\n CowMergeOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"COW_COPY\"] = 0;\n values[valuesById[1] = \"COW_XOR\"] = 1;\n values[valuesById[2] = \"COW_REPLACE\"] = 2;\n return values;\n })();\n\n return CowMergeOperation;\n })();\n\n chromeos_update_engine.PartitionUpdate = (function() {\n\n /**\n * Properties of a PartitionUpdate.\n * @memberof chromeos_update_engine\n * @interface IPartitionUpdate\n * @property {string} partitionName PartitionUpdate partitionName\n * @property {boolean|null} [runPostinstall] PartitionUpdate runPostinstall\n * @property {string|null} [postinstallPath] PartitionUpdate postinstallPath\n * @property {string|null} [filesystemType] PartitionUpdate filesystemType\n * @property {Array.|null} [newPartitionSignature] PartitionUpdate newPartitionSignature\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldPartitionInfo] PartitionUpdate oldPartitionInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newPartitionInfo] PartitionUpdate newPartitionInfo\n * @property {Array.|null} [operations] PartitionUpdate operations\n * @property {boolean|null} [postinstallOptional] PartitionUpdate postinstallOptional\n * @property {chromeos_update_engine.IExtent|null} [hashTreeDataExtent] PartitionUpdate hashTreeDataExtent\n * @property {chromeos_update_engine.IExtent|null} [hashTreeExtent] PartitionUpdate hashTreeExtent\n * @property {string|null} [hashTreeAlgorithm] PartitionUpdate hashTreeAlgorithm\n * @property {Uint8Array|null} [hashTreeSalt] PartitionUpdate hashTreeSalt\n * @property {chromeos_update_engine.IExtent|null} [fecDataExtent] PartitionUpdate fecDataExtent\n * @property {chromeos_update_engine.IExtent|null} [fecExtent] PartitionUpdate fecExtent\n * @property {number|null} [fecRoots] PartitionUpdate fecRoots\n * @property {string|null} [version] PartitionUpdate version\n * @property {Array.|null} [mergeOperations] PartitionUpdate mergeOperations\n * @property {number|Long|null} [estimateCowSize] PartitionUpdate estimateCowSize\n */\n\n /**\n * Constructs a new PartitionUpdate.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionUpdate.\n * @implements IPartitionUpdate\n * @constructor\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n */\n function PartitionUpdate(properties) {\n this.newPartitionSignature = [];\n this.operations = [];\n this.mergeOperations = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionUpdate partitionName.\n * @member {string} partitionName\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.partitionName = \"\";\n\n /**\n * PartitionUpdate runPostinstall.\n * @member {boolean} runPostinstall\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.runPostinstall = false;\n\n /**\n * PartitionUpdate postinstallPath.\n * @member {string} postinstallPath\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallPath = \"\";\n\n /**\n * PartitionUpdate filesystemType.\n * @member {string} filesystemType\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.filesystemType = \"\";\n\n /**\n * PartitionUpdate newPartitionSignature.\n * @member {Array.} newPartitionSignature\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionSignature = $util.emptyArray;\n\n /**\n * PartitionUpdate oldPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.oldPartitionInfo = null;\n\n /**\n * PartitionUpdate newPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionInfo = null;\n\n /**\n * PartitionUpdate operations.\n * @member {Array.} operations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.operations = $util.emptyArray;\n\n /**\n * PartitionUpdate postinstallOptional.\n * @member {boolean} postinstallOptional\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallOptional = false;\n\n /**\n * PartitionUpdate hashTreeDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeDataExtent = null;\n\n /**\n * PartitionUpdate hashTreeExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeExtent = null;\n\n /**\n * PartitionUpdate hashTreeAlgorithm.\n * @member {string} hashTreeAlgorithm\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeAlgorithm = \"\";\n\n /**\n * PartitionUpdate hashTreeSalt.\n * @member {Uint8Array} hashTreeSalt\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeSalt = $util.newBuffer([]);\n\n /**\n * PartitionUpdate fecDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecDataExtent = null;\n\n /**\n * PartitionUpdate fecExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecExtent = null;\n\n /**\n * PartitionUpdate fecRoots.\n * @member {number} fecRoots\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecRoots = 2;\n\n /**\n * PartitionUpdate version.\n * @member {string} version\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.version = \"\";\n\n /**\n * PartitionUpdate mergeOperations.\n * @member {Array.} mergeOperations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.mergeOperations = $util.emptyArray;\n\n /**\n * PartitionUpdate estimateCowSize.\n * @member {number|Long} estimateCowSize\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.estimateCowSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new PartitionUpdate instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate instance\n */\n PartitionUpdate.create = function create(properties) {\n return new PartitionUpdate(properties);\n };\n\n /**\n * Encodes the specified PartitionUpdate message. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.partitionName);\n if (message.runPostinstall != null && Object.hasOwnProperty.call(message, \"runPostinstall\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.runPostinstall);\n if (message.postinstallPath != null && Object.hasOwnProperty.call(message, \"postinstallPath\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.postinstallPath);\n if (message.filesystemType != null && Object.hasOwnProperty.call(message, \"filesystemType\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.filesystemType);\n if (message.newPartitionSignature != null && message.newPartitionSignature.length)\n for (let i = 0; i < message.newPartitionSignature.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.newPartitionSignature[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.oldPartitionInfo != null && Object.hasOwnProperty.call(message, \"oldPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldPartitionInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newPartitionInfo != null && Object.hasOwnProperty.call(message, \"newPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newPartitionInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.operations != null && message.operations.length)\n for (let i = 0; i < message.operations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.operations[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.postinstallOptional != null && Object.hasOwnProperty.call(message, \"postinstallOptional\"))\n writer.uint32(/* id 9, wireType 0 =*/72).bool(message.postinstallOptional);\n if (message.hashTreeDataExtent != null && Object.hasOwnProperty.call(message, \"hashTreeDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeDataExtent, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.hashTreeExtent != null && Object.hasOwnProperty.call(message, \"hashTreeExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeExtent, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.hashTreeAlgorithm != null && Object.hasOwnProperty.call(message, \"hashTreeAlgorithm\"))\n writer.uint32(/* id 12, wireType 2 =*/98).string(message.hashTreeAlgorithm);\n if (message.hashTreeSalt != null && Object.hasOwnProperty.call(message, \"hashTreeSalt\"))\n writer.uint32(/* id 13, wireType 2 =*/106).bytes(message.hashTreeSalt);\n if (message.fecDataExtent != null && Object.hasOwnProperty.call(message, \"fecDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecDataExtent, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.fecExtent != null && Object.hasOwnProperty.call(message, \"fecExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecExtent, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.fecRoots != null && Object.hasOwnProperty.call(message, \"fecRoots\"))\n writer.uint32(/* id 16, wireType 0 =*/128).uint32(message.fecRoots);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 17, wireType 2 =*/138).string(message.version);\n if (message.mergeOperations != null && message.mergeOperations.length)\n for (let i = 0; i < message.mergeOperations.length; ++i)\n $root.chromeos_update_engine.CowMergeOperation.encode(message.mergeOperations[i], writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n if (message.estimateCowSize != null && Object.hasOwnProperty.call(message, \"estimateCowSize\"))\n writer.uint32(/* id 19, wireType 0 =*/152).uint64(message.estimateCowSize);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionUpdate message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionUpdate();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.partitionName = reader.string();\n break;\n case 2:\n message.runPostinstall = reader.bool();\n break;\n case 3:\n message.postinstallPath = reader.string();\n break;\n case 4:\n message.filesystemType = reader.string();\n break;\n case 5:\n if (!(message.newPartitionSignature && message.newPartitionSignature.length))\n message.newPartitionSignature = [];\n message.newPartitionSignature.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n case 6:\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n if (!(message.operations && message.operations.length))\n message.operations = [];\n message.operations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 9:\n message.postinstallOptional = reader.bool();\n break;\n case 10:\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 11:\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 12:\n message.hashTreeAlgorithm = reader.string();\n break;\n case 13:\n message.hashTreeSalt = reader.bytes();\n break;\n case 14:\n message.fecDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 15:\n message.fecExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 16:\n message.fecRoots = reader.uint32();\n break;\n case 17:\n message.version = reader.string();\n break;\n case 18:\n if (!(message.mergeOperations && message.mergeOperations.length))\n message.mergeOperations = [];\n message.mergeOperations.push($root.chromeos_update_engine.CowMergeOperation.decode(reader, reader.uint32()));\n break;\n case 19:\n message.estimateCowSize = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"partitionName\"))\n throw $util.ProtocolError(\"missing required 'partitionName'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionUpdate message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionUpdate.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.partitionName))\n return \"partitionName: string expected\";\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n if (typeof message.runPostinstall !== \"boolean\")\n return \"runPostinstall: boolean expected\";\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n if (!$util.isString(message.postinstallPath))\n return \"postinstallPath: string expected\";\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n if (!$util.isString(message.filesystemType))\n return \"filesystemType: string expected\";\n if (message.newPartitionSignature != null && message.hasOwnProperty(\"newPartitionSignature\")) {\n if (!Array.isArray(message.newPartitionSignature))\n return \"newPartitionSignature: array expected\";\n for (let i = 0; i < message.newPartitionSignature.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.newPartitionSignature[i]);\n if (error)\n return \"newPartitionSignature.\" + error;\n }\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldPartitionInfo);\n if (error)\n return \"oldPartitionInfo.\" + error;\n }\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newPartitionInfo);\n if (error)\n return \"newPartitionInfo.\" + error;\n }\n if (message.operations != null && message.hasOwnProperty(\"operations\")) {\n if (!Array.isArray(message.operations))\n return \"operations: array expected\";\n for (let i = 0; i < message.operations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.operations[i]);\n if (error)\n return \"operations.\" + error;\n }\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n if (typeof message.postinstallOptional !== \"boolean\")\n return \"postinstallOptional: boolean expected\";\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeDataExtent);\n if (error)\n return \"hashTreeDataExtent.\" + error;\n }\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeExtent);\n if (error)\n return \"hashTreeExtent.\" + error;\n }\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n if (!$util.isString(message.hashTreeAlgorithm))\n return \"hashTreeAlgorithm: string expected\";\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n if (!(message.hashTreeSalt && typeof message.hashTreeSalt.length === \"number\" || $util.isString(message.hashTreeSalt)))\n return \"hashTreeSalt: buffer expected\";\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecDataExtent);\n if (error)\n return \"fecDataExtent.\" + error;\n }\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecExtent);\n if (error)\n return \"fecExtent.\" + error;\n }\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n if (!$util.isInteger(message.fecRoots))\n return \"fecRoots: integer expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.mergeOperations != null && message.hasOwnProperty(\"mergeOperations\")) {\n if (!Array.isArray(message.mergeOperations))\n return \"mergeOperations: array expected\";\n for (let i = 0; i < message.mergeOperations.length; ++i) {\n let error = $root.chromeos_update_engine.CowMergeOperation.verify(message.mergeOperations[i]);\n if (error)\n return \"mergeOperations.\" + error;\n }\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (!$util.isInteger(message.estimateCowSize) && !(message.estimateCowSize && $util.isInteger(message.estimateCowSize.low) && $util.isInteger(message.estimateCowSize.high)))\n return \"estimateCowSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a PartitionUpdate message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n */\n PartitionUpdate.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionUpdate)\n return object;\n let message = new $root.chromeos_update_engine.PartitionUpdate();\n if (object.partitionName != null)\n message.partitionName = String(object.partitionName);\n if (object.runPostinstall != null)\n message.runPostinstall = Boolean(object.runPostinstall);\n if (object.postinstallPath != null)\n message.postinstallPath = String(object.postinstallPath);\n if (object.filesystemType != null)\n message.filesystemType = String(object.filesystemType);\n if (object.newPartitionSignature) {\n if (!Array.isArray(object.newPartitionSignature))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: array expected\");\n message.newPartitionSignature = [];\n for (let i = 0; i < object.newPartitionSignature.length; ++i) {\n if (typeof object.newPartitionSignature[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: object expected\");\n message.newPartitionSignature[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.newPartitionSignature[i]);\n }\n }\n if (object.oldPartitionInfo != null) {\n if (typeof object.oldPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.oldPartitionInfo: object expected\");\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldPartitionInfo);\n }\n if (object.newPartitionInfo != null) {\n if (typeof object.newPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionInfo: object expected\");\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newPartitionInfo);\n }\n if (object.operations) {\n if (!Array.isArray(object.operations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: array expected\");\n message.operations = [];\n for (let i = 0; i < object.operations.length; ++i) {\n if (typeof object.operations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: object expected\");\n message.operations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.operations[i]);\n }\n }\n if (object.postinstallOptional != null)\n message.postinstallOptional = Boolean(object.postinstallOptional);\n if (object.hashTreeDataExtent != null) {\n if (typeof object.hashTreeDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeDataExtent: object expected\");\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeDataExtent);\n }\n if (object.hashTreeExtent != null) {\n if (typeof object.hashTreeExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeExtent: object expected\");\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeExtent);\n }\n if (object.hashTreeAlgorithm != null)\n message.hashTreeAlgorithm = String(object.hashTreeAlgorithm);\n if (object.hashTreeSalt != null)\n if (typeof object.hashTreeSalt === \"string\")\n $util.base64.decode(object.hashTreeSalt, message.hashTreeSalt = $util.newBuffer($util.base64.length(object.hashTreeSalt)), 0);\n else if (object.hashTreeSalt.length)\n message.hashTreeSalt = object.hashTreeSalt;\n if (object.fecDataExtent != null) {\n if (typeof object.fecDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecDataExtent: object expected\");\n message.fecDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecDataExtent);\n }\n if (object.fecExtent != null) {\n if (typeof object.fecExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecExtent: object expected\");\n message.fecExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecExtent);\n }\n if (object.fecRoots != null)\n message.fecRoots = object.fecRoots >>> 0;\n if (object.version != null)\n message.version = String(object.version);\n if (object.mergeOperations) {\n if (!Array.isArray(object.mergeOperations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected\");\n message.mergeOperations = [];\n for (let i = 0; i < object.mergeOperations.length; ++i) {\n if (typeof object.mergeOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: object expected\");\n message.mergeOperations[i] = $root.chromeos_update_engine.CowMergeOperation.fromObject(object.mergeOperations[i]);\n }\n }\n if (object.estimateCowSize != null)\n if ($util.Long)\n (message.estimateCowSize = $util.Long.fromValue(object.estimateCowSize)).unsigned = true;\n else if (typeof object.estimateCowSize === \"string\")\n message.estimateCowSize = parseInt(object.estimateCowSize, 10);\n else if (typeof object.estimateCowSize === \"number\")\n message.estimateCowSize = object.estimateCowSize;\n else if (typeof object.estimateCowSize === \"object\")\n message.estimateCowSize = new $util.LongBits(object.estimateCowSize.low >>> 0, object.estimateCowSize.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionUpdate message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.PartitionUpdate} message PartitionUpdate\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionUpdate.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.newPartitionSignature = [];\n object.operations = [];\n object.mergeOperations = [];\n }\n if (options.defaults) {\n object.partitionName = \"\";\n object.runPostinstall = false;\n object.postinstallPath = \"\";\n object.filesystemType = \"\";\n object.oldPartitionInfo = null;\n object.newPartitionInfo = null;\n object.postinstallOptional = false;\n object.hashTreeDataExtent = null;\n object.hashTreeExtent = null;\n object.hashTreeAlgorithm = \"\";\n if (options.bytes === String)\n object.hashTreeSalt = \"\";\n else {\n object.hashTreeSalt = [];\n if (options.bytes !== Array)\n object.hashTreeSalt = $util.newBuffer(object.hashTreeSalt);\n }\n object.fecDataExtent = null;\n object.fecExtent = null;\n object.fecRoots = 2;\n object.version = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.estimateCowSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.estimateCowSize = options.longs === String ? \"0\" : 0;\n }\n if (message.partitionName != null && message.hasOwnProperty(\"partitionName\"))\n object.partitionName = message.partitionName;\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n object.runPostinstall = message.runPostinstall;\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n object.postinstallPath = message.postinstallPath;\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n object.filesystemType = message.filesystemType;\n if (message.newPartitionSignature && message.newPartitionSignature.length) {\n object.newPartitionSignature = [];\n for (let j = 0; j < message.newPartitionSignature.length; ++j)\n object.newPartitionSignature[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.newPartitionSignature[j], options);\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\"))\n object.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldPartitionInfo, options);\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\"))\n object.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newPartitionInfo, options);\n if (message.operations && message.operations.length) {\n object.operations = [];\n for (let j = 0; j < message.operations.length; ++j)\n object.operations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.operations[j], options);\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n object.postinstallOptional = message.postinstallOptional;\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\"))\n object.hashTreeDataExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeDataExtent, options);\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\"))\n object.hashTreeExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeExtent, options);\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n object.hashTreeAlgorithm = message.hashTreeAlgorithm;\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n object.hashTreeSalt = options.bytes === String ? $util.base64.encode(message.hashTreeSalt, 0, message.hashTreeSalt.length) : options.bytes === Array ? Array.prototype.slice.call(message.hashTreeSalt) : message.hashTreeSalt;\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\"))\n object.fecDataExtent = $root.chromeos_update_engine.Extent.toObject(message.fecDataExtent, options);\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\"))\n object.fecExtent = $root.chromeos_update_engine.Extent.toObject(message.fecExtent, options);\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n object.fecRoots = message.fecRoots;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.mergeOperations && message.mergeOperations.length) {\n object.mergeOperations = [];\n for (let j = 0; j < message.mergeOperations.length; ++j)\n object.mergeOperations[j] = $root.chromeos_update_engine.CowMergeOperation.toObject(message.mergeOperations[j], options);\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (typeof message.estimateCowSize === \"number\")\n object.estimateCowSize = options.longs === String ? String(message.estimateCowSize) : message.estimateCowSize;\n else\n object.estimateCowSize = options.longs === String ? $util.Long.prototype.toString.call(message.estimateCowSize) : options.longs === Number ? new $util.LongBits(message.estimateCowSize.low >>> 0, message.estimateCowSize.high >>> 0).toNumber(true) : message.estimateCowSize;\n return object;\n };\n\n /**\n * Converts this PartitionUpdate to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionUpdate.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionUpdate;\n })();\n\n chromeos_update_engine.DynamicPartitionGroup = (function() {\n\n /**\n * Properties of a DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionGroup\n * @property {string} name DynamicPartitionGroup name\n * @property {number|Long|null} [size] DynamicPartitionGroup size\n * @property {Array.|null} [partitionNames] DynamicPartitionGroup partitionNames\n */\n\n /**\n * Constructs a new DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionGroup.\n * @implements IDynamicPartitionGroup\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n */\n function DynamicPartitionGroup(properties) {\n this.partitionNames = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionGroup name.\n * @member {string} name\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.name = \"\";\n\n /**\n * DynamicPartitionGroup size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DynamicPartitionGroup partitionNames.\n * @member {Array.} partitionNames\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.partitionNames = $util.emptyArray;\n\n /**\n * Creates a new DynamicPartitionGroup instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup instance\n */\n DynamicPartitionGroup.create = function create(properties) {\n return new DynamicPartitionGroup(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.size);\n if (message.partitionNames != null && message.partitionNames.length)\n for (let i = 0; i < message.partitionNames.length; ++i)\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.partitionNames[i]);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.name = reader.string();\n break;\n case 2:\n message.size = reader.uint64();\n break;\n case 3:\n if (!(message.partitionNames && message.partitionNames.length))\n message.partitionNames = [];\n message.partitionNames.push(reader.string());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"name\"))\n throw $util.ProtocolError(\"missing required 'name'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionGroup message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionGroup.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.partitionNames != null && message.hasOwnProperty(\"partitionNames\")) {\n if (!Array.isArray(message.partitionNames))\n return \"partitionNames: array expected\";\n for (let i = 0; i < message.partitionNames.length; ++i)\n if (!$util.isString(message.partitionNames[i]))\n return \"partitionNames: string[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a DynamicPartitionGroup message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n */\n DynamicPartitionGroup.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionGroup)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n if (object.name != null)\n message.name = String(object.name);\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.partitionNames) {\n if (!Array.isArray(object.partitionNames))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected\");\n message.partitionNames = [];\n for (let i = 0; i < object.partitionNames.length; ++i)\n message.partitionNames[i] = String(object.partitionNames[i]);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionGroup message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.DynamicPartitionGroup} message DynamicPartitionGroup\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionGroup.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.partitionNames = [];\n if (options.defaults) {\n object.name = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.partitionNames && message.partitionNames.length) {\n object.partitionNames = [];\n for (let j = 0; j < message.partitionNames.length; ++j)\n object.partitionNames[j] = message.partitionNames[j];\n }\n return object;\n };\n\n /**\n * Converts this DynamicPartitionGroup to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionGroup.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionGroup;\n })();\n\n chromeos_update_engine.DynamicPartitionMetadata = (function() {\n\n /**\n * Properties of a DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionMetadata\n * @property {Array.|null} [groups] DynamicPartitionMetadata groups\n * @property {boolean|null} [snapshotEnabled] DynamicPartitionMetadata snapshotEnabled\n * @property {boolean|null} [vabcEnabled] DynamicPartitionMetadata vabcEnabled\n * @property {string|null} [vabcCompressionParam] DynamicPartitionMetadata vabcCompressionParam\n * @property {number|null} [cowVersion] DynamicPartitionMetadata cowVersion\n */\n\n /**\n * Constructs a new DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionMetadata.\n * @implements IDynamicPartitionMetadata\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n */\n function DynamicPartitionMetadata(properties) {\n this.groups = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionMetadata groups.\n * @member {Array.} groups\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.groups = $util.emptyArray;\n\n /**\n * DynamicPartitionMetadata snapshotEnabled.\n * @member {boolean} snapshotEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.snapshotEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcEnabled.\n * @member {boolean} vabcEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcCompressionParam.\n * @member {string} vabcCompressionParam\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcCompressionParam = \"\";\n\n /**\n * DynamicPartitionMetadata cowVersion.\n * @member {number} cowVersion\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.cowVersion = 0;\n\n /**\n * Creates a new DynamicPartitionMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata instance\n */\n DynamicPartitionMetadata.create = function create(properties) {\n return new DynamicPartitionMetadata(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.groups != null && message.groups.length)\n for (let i = 0; i < message.groups.length; ++i)\n $root.chromeos_update_engine.DynamicPartitionGroup.encode(message.groups[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.snapshotEnabled != null && Object.hasOwnProperty.call(message, \"snapshotEnabled\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.snapshotEnabled);\n if (message.vabcEnabled != null && Object.hasOwnProperty.call(message, \"vabcEnabled\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.vabcEnabled);\n if (message.vabcCompressionParam != null && Object.hasOwnProperty.call(message, \"vabcCompressionParam\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.vabcCompressionParam);\n if (message.cowVersion != null && Object.hasOwnProperty.call(message, \"cowVersion\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.cowVersion);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.groups && message.groups.length))\n message.groups = [];\n message.groups.push($root.chromeos_update_engine.DynamicPartitionGroup.decode(reader, reader.uint32()));\n break;\n case 2:\n message.snapshotEnabled = reader.bool();\n break;\n case 3:\n message.vabcEnabled = reader.bool();\n break;\n case 4:\n message.vabcCompressionParam = reader.string();\n break;\n case 5:\n message.cowVersion = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.groups != null && message.hasOwnProperty(\"groups\")) {\n if (!Array.isArray(message.groups))\n return \"groups: array expected\";\n for (let i = 0; i < message.groups.length; ++i) {\n let error = $root.chromeos_update_engine.DynamicPartitionGroup.verify(message.groups[i]);\n if (error)\n return \"groups.\" + error;\n }\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n if (typeof message.snapshotEnabled !== \"boolean\")\n return \"snapshotEnabled: boolean expected\";\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n if (typeof message.vabcEnabled !== \"boolean\")\n return \"vabcEnabled: boolean expected\";\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n if (!$util.isString(message.vabcCompressionParam))\n return \"vabcCompressionParam: string expected\";\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n if (!$util.isInteger(message.cowVersion))\n return \"cowVersion: integer expected\";\n return null;\n };\n\n /**\n * Creates a DynamicPartitionMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n */\n DynamicPartitionMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionMetadata)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n if (object.groups) {\n if (!Array.isArray(object.groups))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: array expected\");\n message.groups = [];\n for (let i = 0; i < object.groups.length; ++i) {\n if (typeof object.groups[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: object expected\");\n message.groups[i] = $root.chromeos_update_engine.DynamicPartitionGroup.fromObject(object.groups[i]);\n }\n }\n if (object.snapshotEnabled != null)\n message.snapshotEnabled = Boolean(object.snapshotEnabled);\n if (object.vabcEnabled != null)\n message.vabcEnabled = Boolean(object.vabcEnabled);\n if (object.vabcCompressionParam != null)\n message.vabcCompressionParam = String(object.vabcCompressionParam);\n if (object.cowVersion != null)\n message.cowVersion = object.cowVersion >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.DynamicPartitionMetadata} message DynamicPartitionMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.groups = [];\n if (options.defaults) {\n object.snapshotEnabled = false;\n object.vabcEnabled = false;\n object.vabcCompressionParam = \"\";\n object.cowVersion = 0;\n }\n if (message.groups && message.groups.length) {\n object.groups = [];\n for (let j = 0; j < message.groups.length; ++j)\n object.groups[j] = $root.chromeos_update_engine.DynamicPartitionGroup.toObject(message.groups[j], options);\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n object.snapshotEnabled = message.snapshotEnabled;\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n object.vabcEnabled = message.vabcEnabled;\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n object.vabcCompressionParam = message.vabcCompressionParam;\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n object.cowVersion = message.cowVersion;\n return object;\n };\n\n /**\n * Converts this DynamicPartitionMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionMetadata;\n })();\n\n chromeos_update_engine.ApexInfo = (function() {\n\n /**\n * Properties of an ApexInfo.\n * @memberof chromeos_update_engine\n * @interface IApexInfo\n * @property {string|null} [packageName] ApexInfo packageName\n * @property {number|Long|null} [version] ApexInfo version\n * @property {boolean|null} [isCompressed] ApexInfo isCompressed\n * @property {number|Long|null} [decompressedSize] ApexInfo decompressedSize\n */\n\n /**\n * Constructs a new ApexInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexInfo.\n * @implements IApexInfo\n * @constructor\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n */\n function ApexInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexInfo packageName.\n * @member {string} packageName\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.packageName = \"\";\n\n /**\n * ApexInfo version.\n * @member {number|Long} version\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * ApexInfo isCompressed.\n * @member {boolean} isCompressed\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.isCompressed = false;\n\n /**\n * ApexInfo decompressedSize.\n * @member {number|Long} decompressedSize\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.decompressedSize = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * Creates a new ApexInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo instance\n */\n ApexInfo.create = function create(properties) {\n return new ApexInfo(properties);\n };\n\n /**\n * Encodes the specified ApexInfo message. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.packageName != null && Object.hasOwnProperty.call(message, \"packageName\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.packageName);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.version);\n if (message.isCompressed != null && Object.hasOwnProperty.call(message, \"isCompressed\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isCompressed);\n if (message.decompressedSize != null && Object.hasOwnProperty.call(message, \"decompressedSize\"))\n writer.uint32(/* id 4, wireType 0 =*/32).int64(message.decompressedSize);\n return writer;\n };\n\n /**\n * Encodes the specified ApexInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.packageName = reader.string();\n break;\n case 2:\n message.version = reader.int64();\n break;\n case 3:\n message.isCompressed = reader.bool();\n break;\n case 4:\n message.decompressedSize = reader.int64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n if (!$util.isString(message.packageName))\n return \"packageName: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high)))\n return \"version: integer|Long expected\";\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n if (typeof message.isCompressed !== \"boolean\")\n return \"isCompressed: boolean expected\";\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (!$util.isInteger(message.decompressedSize) && !(message.decompressedSize && $util.isInteger(message.decompressedSize.low) && $util.isInteger(message.decompressedSize.high)))\n return \"decompressedSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an ApexInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n */\n ApexInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexInfo)\n return object;\n let message = new $root.chromeos_update_engine.ApexInfo();\n if (object.packageName != null)\n message.packageName = String(object.packageName);\n if (object.version != null)\n if ($util.Long)\n (message.version = $util.Long.fromValue(object.version)).unsigned = false;\n else if (typeof object.version === \"string\")\n message.version = parseInt(object.version, 10);\n else if (typeof object.version === \"number\")\n message.version = object.version;\n else if (typeof object.version === \"object\")\n message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber();\n if (object.isCompressed != null)\n message.isCompressed = Boolean(object.isCompressed);\n if (object.decompressedSize != null)\n if ($util.Long)\n (message.decompressedSize = $util.Long.fromValue(object.decompressedSize)).unsigned = false;\n else if (typeof object.decompressedSize === \"string\")\n message.decompressedSize = parseInt(object.decompressedSize, 10);\n else if (typeof object.decompressedSize === \"number\")\n message.decompressedSize = object.decompressedSize;\n else if (typeof object.decompressedSize === \"object\")\n message.decompressedSize = new $util.LongBits(object.decompressedSize.low >>> 0, object.decompressedSize.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from an ApexInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.ApexInfo} message ApexInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.packageName = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.version = options.longs === String ? \"0\" : 0;\n object.isCompressed = false;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.decompressedSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.decompressedSize = options.longs === String ? \"0\" : 0;\n }\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n object.packageName = message.packageName;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (typeof message.version === \"number\")\n object.version = options.longs === String ? String(message.version) : message.version;\n else\n object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version;\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n object.isCompressed = message.isCompressed;\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (typeof message.decompressedSize === \"number\")\n object.decompressedSize = options.longs === String ? String(message.decompressedSize) : message.decompressedSize;\n else\n object.decompressedSize = options.longs === String ? $util.Long.prototype.toString.call(message.decompressedSize) : options.longs === Number ? new $util.LongBits(message.decompressedSize.low >>> 0, message.decompressedSize.high >>> 0).toNumber() : message.decompressedSize;\n return object;\n };\n\n /**\n * Converts this ApexInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ApexInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexInfo;\n })();\n\n chromeos_update_engine.ApexMetadata = (function() {\n\n /**\n * Properties of an ApexMetadata.\n * @memberof chromeos_update_engine\n * @interface IApexMetadata\n * @property {Array.|null} [apexInfo] ApexMetadata apexInfo\n */\n\n /**\n * Constructs a new ApexMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexMetadata.\n * @implements IApexMetadata\n * @constructor\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n */\n function ApexMetadata(properties) {\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexMetadata apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n */\n ApexMetadata.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new ApexMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata instance\n */\n ApexMetadata.create = function create(properties) {\n return new ApexMetadata(properties);\n };\n\n /**\n * Encodes the specified ApexMetadata message. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified ApexMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates an ApexMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n */\n ApexMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexMetadata)\n return object;\n let message = new $root.chromeos_update_engine.ApexMetadata();\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from an ApexMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.ApexMetadata} message ApexMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.apexInfo = [];\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this ApexMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n ApexMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexMetadata;\n })();\n\n chromeos_update_engine.DeltaArchiveManifest = (function() {\n\n /**\n * Properties of a DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @interface IDeltaArchiveManifest\n * @property {Array.|null} [installOperations] DeltaArchiveManifest installOperations\n * @property {Array.|null} [kernelInstallOperations] DeltaArchiveManifest kernelInstallOperations\n * @property {number|null} [blockSize] DeltaArchiveManifest blockSize\n * @property {number|Long|null} [signaturesOffset] DeltaArchiveManifest signaturesOffset\n * @property {number|Long|null} [signaturesSize] DeltaArchiveManifest signaturesSize\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldKernelInfo] DeltaArchiveManifest oldKernelInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newKernelInfo] DeltaArchiveManifest newKernelInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldRootfsInfo] DeltaArchiveManifest oldRootfsInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newRootfsInfo] DeltaArchiveManifest newRootfsInfo\n * @property {chromeos_update_engine.IImageInfo|null} [oldImageInfo] DeltaArchiveManifest oldImageInfo\n * @property {chromeos_update_engine.IImageInfo|null} [newImageInfo] DeltaArchiveManifest newImageInfo\n * @property {number|null} [minorVersion] DeltaArchiveManifest minorVersion\n * @property {Array.|null} [partitions] DeltaArchiveManifest partitions\n * @property {number|Long|null} [maxTimestamp] DeltaArchiveManifest maxTimestamp\n * @property {chromeos_update_engine.IDynamicPartitionMetadata|null} [dynamicPartitionMetadata] DeltaArchiveManifest dynamicPartitionMetadata\n * @property {boolean|null} [partialUpdate] DeltaArchiveManifest partialUpdate\n * @property {Array.|null} [apexInfo] DeltaArchiveManifest apexInfo\n */\n\n /**\n * Constructs a new DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DeltaArchiveManifest.\n * @implements IDeltaArchiveManifest\n * @constructor\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n */\n function DeltaArchiveManifest(properties) {\n this.installOperations = [];\n this.kernelInstallOperations = [];\n this.partitions = [];\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DeltaArchiveManifest installOperations.\n * @member {Array.} installOperations\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.installOperations = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest kernelInstallOperations.\n * @member {Array.} kernelInstallOperations\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.kernelInstallOperations = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest blockSize.\n * @member {number} blockSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.blockSize = 4096;\n\n /**\n * DeltaArchiveManifest signaturesOffset.\n * @member {number|Long} signaturesOffset\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest signaturesSize.\n * @member {number|Long} signaturesSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest oldKernelInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldKernelInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.oldKernelInfo = null;\n\n /**\n * DeltaArchiveManifest newKernelInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newKernelInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.newKernelInfo = null;\n\n /**\n * DeltaArchiveManifest oldRootfsInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldRootfsInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.oldRootfsInfo = null;\n\n /**\n * DeltaArchiveManifest newRootfsInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newRootfsInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.newRootfsInfo = null;\n\n /**\n * DeltaArchiveManifest oldImageInfo.\n * @member {chromeos_update_engine.IImageInfo|null|undefined} oldImageInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.oldImageInfo = null;\n\n /**\n * DeltaArchiveManifest newImageInfo.\n * @member {chromeos_update_engine.IImageInfo|null|undefined} newImageInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.newImageInfo = null;\n\n /**\n * DeltaArchiveManifest minorVersion.\n * @member {number} minorVersion\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.minorVersion = 0;\n\n /**\n * DeltaArchiveManifest partitions.\n * @member {Array.} partitions\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partitions = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest maxTimestamp.\n * @member {number|Long} maxTimestamp\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.maxTimestamp = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * DeltaArchiveManifest dynamicPartitionMetadata.\n * @member {chromeos_update_engine.IDynamicPartitionMetadata|null|undefined} dynamicPartitionMetadata\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.dynamicPartitionMetadata = null;\n\n /**\n * DeltaArchiveManifest partialUpdate.\n * @member {boolean} partialUpdate\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partialUpdate = false;\n\n /**\n * DeltaArchiveManifest apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new DeltaArchiveManifest instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest instance\n */\n DeltaArchiveManifest.create = function create(properties) {\n return new DeltaArchiveManifest(properties);\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.installOperations != null && message.installOperations.length)\n for (let i = 0; i < message.installOperations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.installOperations[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.kernelInstallOperations != null && message.kernelInstallOperations.length)\n for (let i = 0; i < message.kernelInstallOperations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.kernelInstallOperations[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.blockSize != null && Object.hasOwnProperty.call(message, \"blockSize\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.blockSize);\n if (message.signaturesOffset != null && Object.hasOwnProperty.call(message, \"signaturesOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.signaturesOffset);\n if (message.signaturesSize != null && Object.hasOwnProperty.call(message, \"signaturesSize\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.signaturesSize);\n if (message.oldKernelInfo != null && Object.hasOwnProperty.call(message, \"oldKernelInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldKernelInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newKernelInfo != null && Object.hasOwnProperty.call(message, \"newKernelInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newKernelInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.oldRootfsInfo != null && Object.hasOwnProperty.call(message, \"oldRootfsInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldRootfsInfo, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.newRootfsInfo != null && Object.hasOwnProperty.call(message, \"newRootfsInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newRootfsInfo, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim();\n if (message.oldImageInfo != null && Object.hasOwnProperty.call(message, \"oldImageInfo\"))\n $root.chromeos_update_engine.ImageInfo.encode(message.oldImageInfo, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.newImageInfo != null && Object.hasOwnProperty.call(message, \"newImageInfo\"))\n $root.chromeos_update_engine.ImageInfo.encode(message.newImageInfo, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.minorVersion != null && Object.hasOwnProperty.call(message, \"minorVersion\"))\n writer.uint32(/* id 12, wireType 0 =*/96).uint32(message.minorVersion);\n if (message.partitions != null && message.partitions.length)\n for (let i = 0; i < message.partitions.length; ++i)\n $root.chromeos_update_engine.PartitionUpdate.encode(message.partitions[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();\n if (message.maxTimestamp != null && Object.hasOwnProperty.call(message, \"maxTimestamp\"))\n writer.uint32(/* id 14, wireType 0 =*/112).int64(message.maxTimestamp);\n if (message.dynamicPartitionMetadata != null && Object.hasOwnProperty.call(message, \"dynamicPartitionMetadata\"))\n $root.chromeos_update_engine.DynamicPartitionMetadata.encode(message.dynamicPartitionMetadata, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.partialUpdate != null && Object.hasOwnProperty.call(message, \"partialUpdate\"))\n writer.uint32(/* id 16, wireType 0 =*/128).bool(message.partialUpdate);\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message, length delimited. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.installOperations && message.installOperations.length))\n message.installOperations = [];\n message.installOperations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 2:\n if (!(message.kernelInstallOperations && message.kernelInstallOperations.length))\n message.kernelInstallOperations = [];\n message.kernelInstallOperations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 3:\n message.blockSize = reader.uint32();\n break;\n case 4:\n message.signaturesOffset = reader.uint64();\n break;\n case 5:\n message.signaturesSize = reader.uint64();\n break;\n case 6:\n message.oldKernelInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newKernelInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n message.oldRootfsInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 9:\n message.newRootfsInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 10:\n message.oldImageInfo = $root.chromeos_update_engine.ImageInfo.decode(reader, reader.uint32());\n break;\n case 11:\n message.newImageInfo = $root.chromeos_update_engine.ImageInfo.decode(reader, reader.uint32());\n break;\n case 12:\n message.minorVersion = reader.uint32();\n break;\n case 13:\n if (!(message.partitions && message.partitions.length))\n message.partitions = [];\n message.partitions.push($root.chromeos_update_engine.PartitionUpdate.decode(reader, reader.uint32()));\n break;\n case 14:\n message.maxTimestamp = reader.int64();\n break;\n case 15:\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.decode(reader, reader.uint32());\n break;\n case 16:\n message.partialUpdate = reader.bool();\n break;\n case 17:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DeltaArchiveManifest message.\n * @function verify\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DeltaArchiveManifest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.installOperations != null && message.hasOwnProperty(\"installOperations\")) {\n if (!Array.isArray(message.installOperations))\n return \"installOperations: array expected\";\n for (let i = 0; i < message.installOperations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.installOperations[i]);\n if (error)\n return \"installOperations.\" + error;\n }\n }\n if (message.kernelInstallOperations != null && message.hasOwnProperty(\"kernelInstallOperations\")) {\n if (!Array.isArray(message.kernelInstallOperations))\n return \"kernelInstallOperations: array expected\";\n for (let i = 0; i < message.kernelInstallOperations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.kernelInstallOperations[i]);\n if (error)\n return \"kernelInstallOperations.\" + error;\n }\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n if (!$util.isInteger(message.blockSize))\n return \"blockSize: integer expected\";\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (!$util.isInteger(message.signaturesOffset) && !(message.signaturesOffset && $util.isInteger(message.signaturesOffset.low) && $util.isInteger(message.signaturesOffset.high)))\n return \"signaturesOffset: integer|Long expected\";\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (!$util.isInteger(message.signaturesSize) && !(message.signaturesSize && $util.isInteger(message.signaturesSize.low) && $util.isInteger(message.signaturesSize.high)))\n return \"signaturesSize: integer|Long expected\";\n if (message.oldKernelInfo != null && message.hasOwnProperty(\"oldKernelInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldKernelInfo);\n if (error)\n return \"oldKernelInfo.\" + error;\n }\n if (message.newKernelInfo != null && message.hasOwnProperty(\"newKernelInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newKernelInfo);\n if (error)\n return \"newKernelInfo.\" + error;\n }\n if (message.oldRootfsInfo != null && message.hasOwnProperty(\"oldRootfsInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldRootfsInfo);\n if (error)\n return \"oldRootfsInfo.\" + error;\n }\n if (message.newRootfsInfo != null && message.hasOwnProperty(\"newRootfsInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newRootfsInfo);\n if (error)\n return \"newRootfsInfo.\" + error;\n }\n if (message.oldImageInfo != null && message.hasOwnProperty(\"oldImageInfo\")) {\n let error = $root.chromeos_update_engine.ImageInfo.verify(message.oldImageInfo);\n if (error)\n return \"oldImageInfo.\" + error;\n }\n if (message.newImageInfo != null && message.hasOwnProperty(\"newImageInfo\")) {\n let error = $root.chromeos_update_engine.ImageInfo.verify(message.newImageInfo);\n if (error)\n return \"newImageInfo.\" + error;\n }\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n if (!$util.isInteger(message.minorVersion))\n return \"minorVersion: integer expected\";\n if (message.partitions != null && message.hasOwnProperty(\"partitions\")) {\n if (!Array.isArray(message.partitions))\n return \"partitions: array expected\";\n for (let i = 0; i < message.partitions.length; ++i) {\n let error = $root.chromeos_update_engine.PartitionUpdate.verify(message.partitions[i]);\n if (error)\n return \"partitions.\" + error;\n }\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (!$util.isInteger(message.maxTimestamp) && !(message.maxTimestamp && $util.isInteger(message.maxTimestamp.low) && $util.isInteger(message.maxTimestamp.high)))\n return \"maxTimestamp: integer|Long expected\";\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\")) {\n let error = $root.chromeos_update_engine.DynamicPartitionMetadata.verify(message.dynamicPartitionMetadata);\n if (error)\n return \"dynamicPartitionMetadata.\" + error;\n }\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n if (typeof message.partialUpdate !== \"boolean\")\n return \"partialUpdate: boolean expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a DeltaArchiveManifest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n */\n DeltaArchiveManifest.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DeltaArchiveManifest)\n return object;\n let message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n if (object.installOperations) {\n if (!Array.isArray(object.installOperations))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.installOperations: array expected\");\n message.installOperations = [];\n for (let i = 0; i < object.installOperations.length; ++i) {\n if (typeof object.installOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.installOperations: object expected\");\n message.installOperations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.installOperations[i]);\n }\n }\n if (object.kernelInstallOperations) {\n if (!Array.isArray(object.kernelInstallOperations))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.kernelInstallOperations: array expected\");\n message.kernelInstallOperations = [];\n for (let i = 0; i < object.kernelInstallOperations.length; ++i) {\n if (typeof object.kernelInstallOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.kernelInstallOperations: object expected\");\n message.kernelInstallOperations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.kernelInstallOperations[i]);\n }\n }\n if (object.blockSize != null)\n message.blockSize = object.blockSize >>> 0;\n if (object.signaturesOffset != null)\n if ($util.Long)\n (message.signaturesOffset = $util.Long.fromValue(object.signaturesOffset)).unsigned = true;\n else if (typeof object.signaturesOffset === \"string\")\n message.signaturesOffset = parseInt(object.signaturesOffset, 10);\n else if (typeof object.signaturesOffset === \"number\")\n message.signaturesOffset = object.signaturesOffset;\n else if (typeof object.signaturesOffset === \"object\")\n message.signaturesOffset = new $util.LongBits(object.signaturesOffset.low >>> 0, object.signaturesOffset.high >>> 0).toNumber(true);\n if (object.signaturesSize != null)\n if ($util.Long)\n (message.signaturesSize = $util.Long.fromValue(object.signaturesSize)).unsigned = true;\n else if (typeof object.signaturesSize === \"string\")\n message.signaturesSize = parseInt(object.signaturesSize, 10);\n else if (typeof object.signaturesSize === \"number\")\n message.signaturesSize = object.signaturesSize;\n else if (typeof object.signaturesSize === \"object\")\n message.signaturesSize = new $util.LongBits(object.signaturesSize.low >>> 0, object.signaturesSize.high >>> 0).toNumber(true);\n if (object.oldKernelInfo != null) {\n if (typeof object.oldKernelInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.oldKernelInfo: object expected\");\n message.oldKernelInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldKernelInfo);\n }\n if (object.newKernelInfo != null) {\n if (typeof object.newKernelInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.newKernelInfo: object expected\");\n message.newKernelInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newKernelInfo);\n }\n if (object.oldRootfsInfo != null) {\n if (typeof object.oldRootfsInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.oldRootfsInfo: object expected\");\n message.oldRootfsInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldRootfsInfo);\n }\n if (object.newRootfsInfo != null) {\n if (typeof object.newRootfsInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.newRootfsInfo: object expected\");\n message.newRootfsInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newRootfsInfo);\n }\n if (object.oldImageInfo != null) {\n if (typeof object.oldImageInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.oldImageInfo: object expected\");\n message.oldImageInfo = $root.chromeos_update_engine.ImageInfo.fromObject(object.oldImageInfo);\n }\n if (object.newImageInfo != null) {\n if (typeof object.newImageInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.newImageInfo: object expected\");\n message.newImageInfo = $root.chromeos_update_engine.ImageInfo.fromObject(object.newImageInfo);\n }\n if (object.minorVersion != null)\n message.minorVersion = object.minorVersion >>> 0;\n if (object.partitions) {\n if (!Array.isArray(object.partitions))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected\");\n message.partitions = [];\n for (let i = 0; i < object.partitions.length; ++i) {\n if (typeof object.partitions[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: object expected\");\n message.partitions[i] = $root.chromeos_update_engine.PartitionUpdate.fromObject(object.partitions[i]);\n }\n }\n if (object.maxTimestamp != null)\n if ($util.Long)\n (message.maxTimestamp = $util.Long.fromValue(object.maxTimestamp)).unsigned = false;\n else if (typeof object.maxTimestamp === \"string\")\n message.maxTimestamp = parseInt(object.maxTimestamp, 10);\n else if (typeof object.maxTimestamp === \"number\")\n message.maxTimestamp = object.maxTimestamp;\n else if (typeof object.maxTimestamp === \"object\")\n message.maxTimestamp = new $util.LongBits(object.maxTimestamp.low >>> 0, object.maxTimestamp.high >>> 0).toNumber();\n if (object.dynamicPartitionMetadata != null) {\n if (typeof object.dynamicPartitionMetadata !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected\");\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.fromObject(object.dynamicPartitionMetadata);\n }\n if (object.partialUpdate != null)\n message.partialUpdate = Boolean(object.partialUpdate);\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DeltaArchiveManifest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.DeltaArchiveManifest} message DeltaArchiveManifest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DeltaArchiveManifest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.installOperations = [];\n object.kernelInstallOperations = [];\n object.partitions = [];\n object.apexInfo = [];\n }\n if (options.defaults) {\n object.blockSize = 4096;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesSize = options.longs === String ? \"0\" : 0;\n object.oldKernelInfo = null;\n object.newKernelInfo = null;\n object.oldRootfsInfo = null;\n object.newRootfsInfo = null;\n object.oldImageInfo = null;\n object.newImageInfo = null;\n object.minorVersion = 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.maxTimestamp = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.maxTimestamp = options.longs === String ? \"0\" : 0;\n object.dynamicPartitionMetadata = null;\n object.partialUpdate = false;\n }\n if (message.installOperations && message.installOperations.length) {\n object.installOperations = [];\n for (let j = 0; j < message.installOperations.length; ++j)\n object.installOperations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.installOperations[j], options);\n }\n if (message.kernelInstallOperations && message.kernelInstallOperations.length) {\n object.kernelInstallOperations = [];\n for (let j = 0; j < message.kernelInstallOperations.length; ++j)\n object.kernelInstallOperations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.kernelInstallOperations[j], options);\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n object.blockSize = message.blockSize;\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (typeof message.signaturesOffset === \"number\")\n object.signaturesOffset = options.longs === String ? String(message.signaturesOffset) : message.signaturesOffset;\n else\n object.signaturesOffset = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesOffset) : options.longs === Number ? new $util.LongBits(message.signaturesOffset.low >>> 0, message.signaturesOffset.high >>> 0).toNumber(true) : message.signaturesOffset;\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (typeof message.signaturesSize === \"number\")\n object.signaturesSize = options.longs === String ? String(message.signaturesSize) : message.signaturesSize;\n else\n object.signaturesSize = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesSize) : options.longs === Number ? new $util.LongBits(message.signaturesSize.low >>> 0, message.signaturesSize.high >>> 0).toNumber(true) : message.signaturesSize;\n if (message.oldKernelInfo != null && message.hasOwnProperty(\"oldKernelInfo\"))\n object.oldKernelInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldKernelInfo, options);\n if (message.newKernelInfo != null && message.hasOwnProperty(\"newKernelInfo\"))\n object.newKernelInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newKernelInfo, options);\n if (message.oldRootfsInfo != null && message.hasOwnProperty(\"oldRootfsInfo\"))\n object.oldRootfsInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldRootfsInfo, options);\n if (message.newRootfsInfo != null && message.hasOwnProperty(\"newRootfsInfo\"))\n object.newRootfsInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newRootfsInfo, options);\n if (message.oldImageInfo != null && message.hasOwnProperty(\"oldImageInfo\"))\n object.oldImageInfo = $root.chromeos_update_engine.ImageInfo.toObject(message.oldImageInfo, options);\n if (message.newImageInfo != null && message.hasOwnProperty(\"newImageInfo\"))\n object.newImageInfo = $root.chromeos_update_engine.ImageInfo.toObject(message.newImageInfo, options);\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n object.minorVersion = message.minorVersion;\n if (message.partitions && message.partitions.length) {\n object.partitions = [];\n for (let j = 0; j < message.partitions.length; ++j)\n object.partitions[j] = $root.chromeos_update_engine.PartitionUpdate.toObject(message.partitions[j], options);\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (typeof message.maxTimestamp === \"number\")\n object.maxTimestamp = options.longs === String ? String(message.maxTimestamp) : message.maxTimestamp;\n else\n object.maxTimestamp = options.longs === String ? $util.Long.prototype.toString.call(message.maxTimestamp) : options.longs === Number ? new $util.LongBits(message.maxTimestamp.low >>> 0, message.maxTimestamp.high >>> 0).toNumber() : message.maxTimestamp;\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\"))\n object.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.toObject(message.dynamicPartitionMetadata, options);\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n object.partialUpdate = message.partialUpdate;\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this DeltaArchiveManifest to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n * @returns {Object.} JSON object\n */\n DeltaArchiveManifest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DeltaArchiveManifest;\n })();\n\n return chromeos_update_engine;\n})();\n\nexport { $root as default };\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TextWriter, ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { chromeos_update_engine } from './update_metadata_pb.js'\n\n/**\n * Parse the non-A/B OTA package and return it as a DeltaArchiveManifest\n * @param {ZipReader} packedFile\n */\nexport class PayloadNonAB extends chromeos_update_engine.DeltaArchiveManifest {\n nonAB: boolean = true\n Blocksize: number = 4096\n packedFile: ZipReader\n constructor(packedFile: ZipReader) {\n super()\n this.packedFile = packedFile\n }\n\n async init() {\n this.Blocksize = 4096\n this.partialUpdate = false\n this.dynamicPartitionMetadata = new chromeos_update_engine.DynamicPartitionMetadata(\n { snapshotEnabled: false, vabcEnabled: false }\n )\n this.partitions = []\n\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.transfer.list)/g\n const /** Array */ entries = await this.packedFile.getEntries()\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n const match = entry.filename.match(regexName)![0]\n let newPartition = new chromeos_update_engine.PartitionUpdate({\n partitionName: match\n })\n newPartition.rawText = await entry.getData!(new TextWriter())\n await this.parseTransferList(newPartition)\n this.partitions.push(newPartition)\n }\n }\n }\n\n async parseTransferList(partition: chromeos_update_engine.PartitionUpdate) {\n let /** Array */ lines = partition.rawText.split('\\n')\n // First four line in header: version, total blocks,\n // number of stashed entries, maximum used memory for stash\n if (lines.length < 4) {\n throw 'At least 4 lines in header should be provided.'\n }\n partition.version = lines[0]\n partition.totalBlocks = parseInt(lines[1])\n partition.entryStashed = parseInt(lines[2])\n partition.maxStashed = parseInt(lines[3])\n partition.newPartitionInfo = new chromeos_update_engine.PartitionInfo()\n partition.newPartitionInfo.hash = new Uint8Array()\n partition.newPartitionInfo.size = 'unknown'\n /**\n * The main body have 8 different ops:\n * zero [rangeset] : fill zeros\n * new [rangeset] : fill with new data from \n * erase [rangeset] : mark given blocks as empty\n * move <...>\n * bsdiff <...>\n * imgdiff <...> :\n * Read the source blocks and apply (not for move op) to the target blocks\n * stash : load the given source range to memory\n * free : free the given \n * format:\n * [rangeset]: <# of pairs>, , , ...\n * : a hex number with length of 40\n * <...>: We expect to parse the remainder of the parameter tokens as one of:\n * (loads data from source image only)\n * - <[stash_id:stash_range] ...> (loads data from stashes only)\n * <[stash_id:stash_range] ...>\n * (loads data from both source image and stashes)\n */\n partition.operations = new Array()\n let newDataSize = await this.sizeNewData(partition.partitionName)\n for (const line of lines.slice(4)) {\n let op = new chromeos_update_engine.InstallOperation()\n let elements = line.split(' ')\n op.type = elements[0]\n switch ((op.type as unknown) as string) {\n case 'zero':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'new':\n // unlike an A/B OTA, the payload only exists in the payload.bin,\n // in an non-A/B OTA, the payload exists in both .new.data and .patch.data.\n // The new ops do not have any information about data length.\n // what we do here is: read in the size of .new.data, assume the first new\n // op have the data length of the size of .new.data.\n op.dataLength = newDataSize\n newDataSize = 0\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'erase':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'move':\n op.dstExtents = parseRange([], elements[2])\n break\n case 'bsdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'imgdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'stash':\n break\n case 'free':\n break\n }\n partition.operations.push(op)\n }\n }\n\n /**\n * Return the size of .new.data.*\n * @param {String} partitionName\n * @return {Number}\n */\n async sizeNewData(partitionName: string) {\n const /** Array */ entries = await this.packedFile.getEntries()\n const /** RegExp */ regexName = new RegExp(partitionName + '.new.dat.*')\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n return entry.uncompressedSize\n }\n }\n }\n}\n\n/**\n * Parse the range string and return it as an array of extents\n * @param {extents} Array\n * @param {String} rangeset\n * @return Array\n */\nfunction parseRange(extents: Object[], rangeset: string) {\n const regexRange = new RegExp('[d,]+')\n if (rangeset.match(regexRange)) {\n let elements = rangeset.split(',')\n for (let i = 1; i < elements.length; i = i + 2) {\n let extent = new Object({\n startBlock: parseInt(elements[i]),\n numBlocks: parseInt(elements[i + 1]) - parseInt(elements[i])\n })\n extents.push(extent)\n }\n }\n return extents\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class paypload is used to read in and\n * parse the payload.bin file from a OTA.zip file.\n * Class OpType creates a Map that can resolve the\n * operation type.\n * @package zip.js\n * @package protobufjs\n */\n\nimport {\n BlobReader,\n TextWriter,\n Writer,\n ZipReader,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\n// import '@zip.js/zip.js'\nimport { chromeos_update_engine as update_metadata_pb } from './update_metadata_pb'\nimport { PayloadNonAB } from './payload_nonab'\nimport { ZipFile } from './trim_zip'\n// import { Zip_js } from 'zip.js'\n\nconst /** String */ _MAGIC = 'CrAU'\nconst /** Number */ _VERSION_SIZE = 8\nconst /** Number */ _MANIFEST_LEN_SIZE = 8\nconst /** Number */ _METADATA_SIGNATURE_LEN_SIZE = 4\n\nconst /** Number */ _PAYLOAD_HEADER_SIZE =\n _MAGIC.length +\n _VERSION_SIZE +\n _MANIFEST_LEN_SIZE +\n _METADATA_SIGNATURE_LEN_SIZE\n\nconst /** Number */ _BRILLO_MAJOR_PAYLOAD_VERSION = 2\nexport const /** Array */ MetadataFormat = [\n {\n prefix: 'pre-build',\n key: 'preBuild',\n name: 'Pre-build'\n },\n {\n prefix: 'pre-build-incremental',\n key: 'preBuildVersion',\n name: 'Pre-build version'\n },\n {\n prefix: 'post-build',\n key: 'postBuild',\n name: 'Post-build'\n },\n {\n prefix: 'post-build-incremental',\n key: 'postBuildVersion',\n name: 'Post-build version'\n },\n {\n prefix: 'post-security-patch-level',\n key: 'postSecurityPatchLevel',\n name: 'Post-build SPL'\n },\n {\n prefix: 'post-timestamp',\n key: 'postTimestamp',\n name: 'Post-build timestamp'\n },\n ]\n\nclass StopIteration extends Error {}\n\nclass AbPayloadHeader {\n constructor(\n public magic: string,\n public version: number,\n public manifest_len: number,\n public metadata_signature_len: number\n ) {}\n}\n\n/**\n * Read in an integer from binary bufferArray.\n * @param {Int} size the size of a integer being read in\n * @return {Int} an integer.\n */\nasync function readIntAt(buffer: Blob, position: number, size: number) {\n let /** DataView */ view = new DataView(\n await buffer!.slice(position, position + size).arrayBuffer()\n )\n if (typeof view.getBigUint64 !== 'function') {\n view.getBigUint64 = function(offset) {\n const a = BigInt(view.getUint32(offset))\n const b = BigInt(view.getUint32(offset + 4))\n const bigNumber = a * 4294967296n + b\n return bigNumber\n }\n }\n switch (size) {\n case 2:\n return view.getUint16(0)\n case 4:\n return view.getUint32(0)\n case 8:\n return Number(view.getBigUint64(0))\n default:\n throw 'Cannot read this integer with size ' + size\n }\n}\n\nclass OTAPayloadBlobWriter extends Writer {\n offset: number\n contentType: string\n blob: Blob\n prefixLength: number\n\n header?: AbPayloadHeader\n\n async readHeader(blob: Blob) {\n let cursor = 0\n const readInt = (size: number) => {\n const ret = readIntAt(blob, cursor, size)\n cursor += size\n return ret\n }\n let buffer = await blob.slice(0, _PAYLOAD_HEADER_SIZE).arrayBuffer()\n let /** TextDecoder */ decoder = new TextDecoder()\n let magicBytes = buffer.slice(0, _MAGIC.length)\n const magic = decoder.decode(magicBytes)\n if (magic != _MAGIC) {\n throw new Error(\n `MAGIC is not correct, expected: ${_MAGIC} actual: ${magic}`\n )\n }\n cursor += _MAGIC.length\n const header_version = await readInt(_VERSION_SIZE)\n const manifest_len = await readInt(_MANIFEST_LEN_SIZE)\n if (header_version != _BRILLO_MAJOR_PAYLOAD_VERSION) {\n throw new Error(`Unexpected major version number: ${header_version}`)\n }\n const metadata_signature_len = await readInt(_METADATA_SIGNATURE_LEN_SIZE)\n this.header = new AbPayloadHeader(\n magic,\n header_version,\n manifest_len,\n metadata_signature_len\n )\n }\n /**\n * A zip.Writer that is tailored for OTA payload.bin read-in.\n * Instead of reading in all the contents in payload.bin, this writer will\n * throw an 'StopIteration' error when the header is read in.\n * The header will be stored into the .\n * @param {Payload} payload\n * @param {String} contentType\n */\n constructor(contentType = '') {\n super()\n this.offset = 0\n this.contentType = contentType\n this.blob = new Blob([], { type: contentType })\n this.prefixLength = 0\n }\n\n async writeUint8Array(array: Uint8Array) {\n super.writeUint8Array(array)\n this.blob = new Blob([this.blob, array.buffer], { type: this.contentType })\n this.offset = this.blob.size\n // Once the prefixLength is non-zero, the address of manifest and signature\n // become known and can be read in. Otherwise the header needs to be read\n // in first to determine the prefixLength.\n if (this.offset >= _PAYLOAD_HEADER_SIZE && this.prefixLength == 0) {\n console.log('Parsing header!')\n await this.readHeader(this.blob)\n this.prefixLength =\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n console.log(`Computed metadata length: ${this.prefixLength}`)\n }\n if (this.prefixLength > 0) {\n console.log(`${this.offset}/${this.prefixLength}`)\n if (this.offset >= this.prefixLength) {\n // The prefix has everything we need (header, manifest, signature). Once\n // the offset is beyond the prefix, no need to move on.\n this.blob = this.blob.slice(0, this.prefixLength)\n throw new StopIteration()\n }\n }\n }\n\n getData() {\n return this.blob\n }\n}\n\nexport class Payload {\n zipreader: ZipReader\n buffer: Blob | undefined\n private metadata: any\n manifest: update_metadata_pb.DeltaArchiveManifest | undefined\n metadata_signature!: update_metadata_pb.Signatures\n\n header?: AbPayloadHeader\n\n /**\n * This class parses the metadata of a OTA package.\n * @param {File} file A OTA.zip file read from user's machine.\n */\n constructor(file: File | URL | ZipFile) {\n if (file instanceof File) {\n this.zipreader = new ZipReader(new BlobReader(file))\n } else if (file instanceof URL) {\n this.zipreader = new ZipReader(new HttpReader(file.href))\n } else {\n this.zipreader = file.reader\n }\n }\n\n getMetadataLength(): number {\n return (\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n )\n }\n\n /**\n * Unzip the OTA package, get payload.bin and metadata\n */\n async unzip() {\n let entries = await this.zipreader.getEntries()\n for (let entry of entries) {\n if (entry.filename == 'payload.bin') {\n let writer = new OTAPayloadBlobWriter('')\n try {\n await entry.getData!(writer)\n } catch (e) {\n if (e instanceof StopIteration) {\n // Exception used as a hack to stop reading from zip. NO need to do anything\n // Ideally zip.js would provide an API to partialll read a zip\n // entry, but they don't. So this is what we get\n } else {\n console.log(e)\n throw e\n }\n }\n this.buffer = writer.getData()\n await this.readManifest(this.buffer, writer.header!)\n console.log('AB OTA manifest parsed')\n } else if (entry.filename == 'META-INF/com/android/metadata') {\n this.metadata = await entry.getData!(new TextWriter())\n console.log('OTA Package metadata parsed')\n }\n }\n if (!this.manifest) {\n console.log('Failed to parse AB OTA package, falling back to non-AB')\n try {\n // The temporary variable manifest has to be used here, to prevent the html page\n // being rendered before everything is read in properly\n let manifest = new PayloadNonAB(this.zipreader)\n await manifest.init()\n manifest.nonAB = true\n this.manifest = manifest\n } catch (error) {\n alert('Please select a legit OTA package')\n return\n }\n }\n }\n\n /**\n * Read the header of payload.bin, including the magic, header_version,\n * manifest_len, metadata_signature_len.\n */\n /**\n * Read in the manifest in an OTA.zip file.\n * The structure of the manifest can be found in:\n * aosp/system/update_engine/update_metadata.proto\n */\n async readManifest(buffer: Blob, header: AbPayloadHeader) {\n this.header = header\n let cursor = _PAYLOAD_HEADER_SIZE\n let manifestBlob = await buffer\n .slice(cursor, cursor + header.manifest_len)\n .arrayBuffer()\n cursor += header.manifest_len\n this.manifest = update_metadata_pb.DeltaArchiveManifest.decode(\n new Uint8Array(manifestBlob)\n )\n let signatureBlob = await buffer\n .slice(cursor, cursor + header.metadata_signature_len)\n .arrayBuffer()\n cursor += header.metadata_signature_len\n this.metadata_signature = update_metadata_pb.Signatures.decode(\n new Uint8Array(signatureBlob)\n )\n this.manifest!.nonAB = false\n }\n\n parseMetadata() {\n for (let formatter of MetadataFormat) {\n let regex = new RegExp(formatter.prefix + '.+')\n if (this.metadata.match(regex)) {\n ;(this as any)[formatter.key] = trimEntry(\n this.metadata.match(regex)[0],\n formatter.prefix\n )\n } else {\n ;(this as any)[formatter.key] = ''\n }\n }\n }\n\n async init() {\n await this.unzip()\n this.parseMetadata()\n }\n}\n\nexport class DefaultMap extends Map {\n /** Reload the original get method. Return the original key value if\n * the key does not exist.\n * @param {Any} key\n */\n getWithDefault(key: any) {\n if (!this.has(key)) return key\n return this.get(key)\n }\n}\n\nexport class OpType {\n mapType: DefaultMap\n /**\n * OpType.mapType create a map that could resolve the operation\n * types. The operation types are encoded as numbers in\n * update_metadata.proto and must be decoded before any usage.\n */\n constructor() {\n let types = update_metadata_pb.InstallOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport class MergeOpType {\n mapType: DefaultMap\n /**\n * MergeOpType create a map that could resolve the COW merge operation\n * types. This is very similar to OpType class except that one is for\n * installation operations.\n */\n constructor() {\n let /** Array<{String: Number}>*/ types =\n update_metadata_pb.CowMergeOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport function octToHex(bufferArray: Uint8Array, space = true, maxLine = 16) {\n let hex_table = ''\n for (let i = 0; i < bufferArray.length; i++) {\n const hex /** String **/ = bufferArray[i].toString(16).toUpperCase()\n if (hex.length === 2) {\n hex_table += hex + (space ? ' ' : '')\n } else {\n hex_table += '0' + hex + (space ? ' ' : '')\n }\n if ((i + 1) % maxLine == 0 && space) {\n hex_table += '\\n'\n }\n }\n return hex_table\n}\n\n/**\n * Trim the prefix in an entry. This is required because the lookbehind\n * regular expression is not supported in safari yet.\n * @param {String} entry\n * @param {String} prefix\n * @return String\n */\nfunction trimEntry(entry: string, prefix: string) {\n return entry.slice(prefix.length + 1, entry.length)\n}\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-44174082\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Data offset: \", -1))\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Data length: \", -1))\nconst _hoisted_5 = { key: 2 }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Source: \", -1))\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_8 = { key: 3 }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Destination: \", -1))\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"h5\", null, _toDisplayString(_ctx.mapType.getWithDefault(_ctx.operation.type)), 1),\n (_ctx.operation.hasOwnProperty('dataOffset'))\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_1, [\n _hoisted_2,\n _createTextVNode(\" \" + _toDisplayString(_ctx.operation.dataOffset), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.operation.hasOwnProperty('dataLength'))\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_3, [\n _hoisted_4,\n _createTextVNode(\" \" + _toDisplayString(_ctx.operation.dataLength), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.operation.hasOwnProperty('srcExtents'))\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.operation.srcExtents.length) + \" extents (\" + _toDisplayString(_ctx.srcTotalBlocks) + \" blocks) \", 1),\n _hoisted_7,\n _createTextVNode(\" \" + _toDisplayString(_ctx.srcBlocks), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.operation.hasOwnProperty('dstExtents'))\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_8, [\n _hoisted_9,\n _createTextVNode(\" \" + _toDisplayString(_ctx.operation.dstExtents.length) + \" extents (\" + _toDisplayString(_ctx.dstTotalBlocks) + \" blocks) \", 1),\n _hoisted_10,\n _createTextVNode(\" \" + _toDisplayString(_ctx.dstBlocks), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(_component_v_divider)\n ], 64))\n}","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EChartsOption } from 'echarts'\n\nexport class EchartsData {\n statisticData: Map\n trimmedData: Map\n title: string\n unit: string\n maximumEntries: number\n /**\n * Given a set of [key, value] pairs and title, create an object for further\n * usage in Vue-Echarts.\n * @param {Map} statisticData\n * @param {String} title\n * @param {String} unit\n * @param {Number} maximumEntries\n */\n constructor(\n statisticData: Map,\n title: string,\n unit: string,\n maximumEntries = 15\n ) {\n this.statisticData = statisticData\n this.trimmedData = trimMap(statisticData, maximumEntries)\n this.title = title\n this.unit = unit\n this.maximumEntries = maximumEntries\n }\n\n /**\n * Convert the raw data into a string.\n * @return {String} A list of [key, value].\n */\n listData() {\n let /** String */ table = ''\n for (let [key, value] of this.statisticData) {\n table += key + ' : ' + value.toString() + ' Blocks' + '\\n'\n }\n return table\n }\n\n /**\n * Generate necessary parameters (option) for vue-echarts.\n * Format of the parameters can be found here:\n * https://echarts.apache.org/en/option.html\n * @param {String} unit\n * @return {Object} an ECharts option object.\n */\n getEchartsOption(): EChartsOption {\n let /** Object */ option: EChartsOption = {}\n option.title = {\n text: this.title,\n left: 'center'\n }\n option.tooltip = {\n trigger: 'item',\n formatter: '{a}
{b} : {c} ' + this.unit + ' ({d}%)'\n }\n option.legend = {\n orient: 'horizontal',\n left: 'top',\n top: '10%',\n data: Array.from(this.trimmedData.keys())\n }\n option.series = [\n {\n name: this.title,\n type: 'pie',\n radius: '55%',\n center: ['50%', '60%'],\n data: Array.from(this.trimmedData).map((pair: any) => {\n return { value: pair[1], name: pair[0] }\n }),\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)'\n }\n }\n }\n ]\n return option\n }\n}\n\n/**\n * When there are too many entries in the map, the pie chart can be very\n * crowded. This function will return the entries that have high values.\n * Specifically, the top will be stored and the others\n * will be added into an entry called 'other'.\n * @param {Map} map\n * @param {Number} maximumEntries\n * @return {Map}\n */\nfunction trimMap(map: Map, maximumEntries: number) {\n if (map.size <= maximumEntries) return map\n let /** Map */ new_map = new Map()\n for (let i = 0; i < maximumEntries; i++) {\n let /** Number */ curr = 0\n let /** String */ currKey = ''\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n if (value > curr) {\n curr = value\n currKey = key\n }\n }\n }\n new_map.set(currKey, curr)\n }\n let /** Number */ restTotal = 0\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n restTotal += value\n }\n }\n new_map.set('other', restTotal)\n return new_map\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class MapParser will take in a Android build and construct\n * several file name maps (physical address: file name) according to it.\n * The map of each partitions is added by calling MapParser.add(partitionName).\n * You can query the file name being operated by calling\n * MapParser.query(address, datalength).\n */\n\nimport {\n ZipReader,\n BlobReader,\n TextWriter,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\nimport { chromeos_update_engine } from './update_metadata_pb'\n\nexport class MapParser {\n build: ZipReader\n mapFiles: Map\n maps: Map\n /**\n * This class will take in a .zip Android build and construct a file type map\n * @param {File} targetFile\n */\n constructor(targetFile: File | URL) {\n if (targetFile instanceof File) {\n this.build = new ZipReader(new BlobReader(targetFile))\n } else {\n this.build = new ZipReader(new HttpReader(targetFile.href))\n }\n this.mapFiles = new Map()\n this.maps = new Map()\n }\n\n /**\n * Find the .map entries in the .zip build file. Store them as a map with\n * pairs of (partition name: zip.js entry).\n */\n async init() {\n let /** Array */ entries = await this.build.getEntries()\n const /** RegExp*/ regexPath = /IMAGES\\/[a-z_]*\\.map/g\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.map)/g\n entries.forEach(entry => {\n if (entry.filename.match(regexPath)) {\n this.mapFiles.set(entry.filename.match(regexName)![0], entry)\n }\n })\n }\n\n /**\n * According to the .map in the build, build a map for later query.\n * @param {String} partitionName\n * @param {Number} totalLength\n */\n async add(partitionName: string, totalLength: number) {\n let /** Array */ map = []\n const /** RegExp */ regexNumber = /\\d+/g\n const /** Reg */ regexRange = /\\d+\\-\\d+/g\n for (let i = 0; i < totalLength; i++) map[i] = `<${partitionName}>`\n if (this.mapFiles.get(partitionName)) {\n let /** String */ mapText = await this.mapFiles\n .get(partitionName)\n .getData(new TextWriter())\n let /** Array */ fileEntries = mapText.split('\\n')\n // Each line of the .map file in Android build starts with the filename\n // Followed by the block address, either a number or a range, for example:\n // //system/apex/com.android.adbd.apex 54-66 66 66-2663\n for (let entry of fileEntries) {\n let /** Array */ elements = entry.split(' ')\n for (let j = 1; j < elements.length; j++) {\n let /** Number */ left = 0\n let /** Number */ right = 0\n if (elements[j].match(regexRange)) {\n left = parseInt(elements[j].match(/\\d+/g)[0])\n right = parseInt(elements[j].match(/\\d+/g)[1])\n } else {\n left = parseInt(elements[j].match(regexNumber))\n right = parseInt(elements[j].match(regexNumber))\n }\n InsertMap(map, elements[0], left, right)\n }\n }\n this.maps.set(partitionName, map)\n } else {\n this.maps.set(partitionName, map)\n }\n }\n\n /**\n * Return the filename of given address.\n * @param {String} partitionName\n * @param {Array} extents\n * @return {Array}\n */\n query(partitionName: string, extents: Array) {\n let /** Array */ names = []\n let /** Array */ map = this.maps.get(partitionName)\n for (let ext of extents) {\n names.push(queryMap(map, ext.startBlock, ext.startBlock + ext.numBlocks))\n }\n return names\n }\n}\n\n/**\n * Fill in the hashtable from to using .\n * @param {Array} map\n * @param {String} name\n * @param {Number} left\n * @param {Number} right\n */\nfunction InsertMap(\n map: Array,\n name: string,\n left: number,\n right: number\n) {\n for (let i = left; i <= right; i++) {\n map[i] = name\n }\n}\n\n/**\n * Query the hashtable using index
.\n * @param {Array} map\n * @param {Number} left\n * @param {Number} right\n */\nfunction queryMap(map: Array, left: number, right: number) {\n // Assuming the consecutive blocks belong to the same file\n // Only the start block is queried here.\n if (!map[left]) {\n return 'unknown'\n }\n return map[left]\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Offer functions that can be used to parse the partitionUpdate\n * and then do statistics over it. One can use analysePartitions to specify the\n * partitions been analysed and metrics.\n */\n\nimport { OpType, MergeOpType } from './payload'\nimport { EchartsData } from './echarts_data'\nimport { MapParser } from './map_parser'\nimport { chromeos_update_engine } from './update_metadata_pb'\n\n/**\n * Add a to a element associated to . If the element dose not\n * exists than its value will be initialized to zero.\n * @param {Map} map\n * @param {String} key\n * @param {Number} value\n */\nfunction addNumberToMap(map: Map, key: String, value: number) {\n if (!map.get(key)) {\n map.set(key, 0)\n }\n map.set(key, map.get(key)! + value)\n}\n\n/**\n * Return a statistics over the numbers of blocks (in destination) that are\n * being operated by different installation operation (e.g. REPLACE, BSDIFF).\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedBlockStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n operatedBlocks,\n operationType,\n numBlocks(operation.dstExtents)\n )\n }\n }\n return operatedBlocks\n}\n\nexport function mergeOperationStatistics(\n partitions: Array,\n blockSize: number\n) {\n let /** Map */ mergeOperations = new Map()\n let /** MergeOpType */ opType = new MergeOpType()\n let /** Number */ totalBlocks = 0\n for (let partition of partitions) {\n for (let operation of partition.mergeOperations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n mergeOperations,\n operationType,\n operation.dstExtent!.numBlocks\n )\n }\n // The total blocks number should be rounded up\n if (partition.newPartitionInfo == null) {\n throw new Error(\n `Partition ${partition.partitionName} doesn't have new_partition_info field.`\n )\n }\n totalBlocks += Math.ceil(partition.newPartitionInfo.size / blockSize)\n }\n // The COW merge operation is default to be COW_replace and not shown in\n // the manifest info. We have to mannually add that part of operations,\n // by subtracting the total blocks with other blocks.\n mergeOperations.forEach((value, key) => (totalBlocks -= value))\n mergeOperations.set('COW_REPLACE', totalBlocks)\n return mergeOperations\n}\n\n/**\n * Return a statistics over the disk usage of payload.bin, based on the type of\n * installation operations. Only partitions that are being passed in will be\n * included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedPayloadStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(operatedBlocks, operationType, operation.dataLength)\n }\n }\n return operatedBlocks\n}\n/**\n * Return a statistics over the disk usage of each file types in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFileExtensionsStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let filenameStats = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n const fileExtenstionStats = new Map()\n filenameStats.forEach((size, filename) => {\n addNumberToMap(fileExtenstionStats, name2Extension(filename), size)\n })\n return fileExtenstionStats\n}\n\n/**\n * Return a statistics over the disk usage of each file name in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFilenamesStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let /** Map */ operatedFilenames = new Map()\n if (!targetFile) {\n return operatedFilenames\n }\n let buildMap = new MapParser(targetFile)\n await buildMap.init()\n for (let partition of partitions) {\n await buildMap.add(\n partition.partitionName,\n Math.ceil(partition.newPartitionInfo!.size / blockSize)\n )\n for (let operation of partition.operations!) {\n if (!operation.hasOwnProperty('dataLength')) continue\n let operatedFileNames = buildMap.query(\n partition.partitionName,\n operation.dstExtents!\n )\n let extentDataLength = distributeFilenames(\n operatedFileNames,\n operation.dstExtents!,\n operation.dataLength\n )\n extentDataLength!.forEach((value, key) => {\n addNumberToMap(operatedFilenames, key, value)\n })\n }\n }\n return operatedFilenames\n}\n\n/**\n * Analyse the given partitions using the given metrics.\n * @param {String} metrics\n * @param {Array} partitions\n * @return {EchartsData}\n */\nexport async function analysePartitions(\n metrics: String,\n partitions: Array,\n blockSize = 4096,\n targetFile: File | null | URL = null\n) {\n let /** Map */ statisticsData\n let /** Echartsdata */ echartsData\n switch (metrics) {\n case 'blocks':\n statisticsData = operatedBlockStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Operated blocks in target build',\n 'blocks'\n )\n break\n case 'payload':\n statisticsData = operatedPayloadStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Payload disk usage',\n 'bytes'\n )\n break\n case 'COWmerge':\n statisticsData = mergeOperationStatistics(partitions, blockSize)\n echartsData = new EchartsData(\n statisticsData,\n 'COW merge operations',\n 'blocks'\n )\n break\n case 'filenames':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated filenames',\n 'bytes'\n )\n break\n case 'extensions':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFileExtensionsStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated extensions',\n 'bytes'\n )\n break\n }\n if (echartsData) {\n return echartsData\n } else {\n throw 'Please double check if this is a proper AB OTA package.'\n }\n}\n\n/**\n * Calculate the number of blocks being operated\n * @param {Array} exts\n * @return {number}\n */\nexport function numBlocks(\n exts: Array | null | undefined\n) {\n if (!exts) {\n return 0\n }\n const accumulator = (total: number, ext: chromeos_update_engine.IExtent) =>\n total + ext.numBlocks\n return exts.reduce(accumulator, 0)\n}\n\n/**\n * Return a string that indicates the blocks being operated\n * in the manner of (start_block, block_length)\n * @param {Array} exts\n * @return {string}\n */\nexport function displayBlocks(exts: Array) {\n const accumulator = (total: string, ext: chromeos_update_engine.Extent) =>\n total + '(' + ext.startBlock + ',' + ext.numBlocks + ')'\n return exts.reduce(accumulator, '')\n}\n\n/**\n * Return a map with pairs of (file extension, data length used by this\n * extension). The total data length will be distributed by the blocks ratio\n * of each extent.\n * @param {Array} filenames\n * @param {Array} exts\n * @param {Number} length\n * @return {Map}\n */\nexport function distributeFilenames(\n filenames: Array,\n exts: Array,\n length: number\n): Map {\n let totalBlocks = numBlocks(exts)\n let distributedLengths = new Map()\n for (let i = 0; i < filenames.length; i++) {\n addNumberToMap(\n distributedLengths,\n filenames[i],\n Math.round((length * exts[i].numBlocks) / totalBlocks)\n )\n }\n return distributedLengths\n}\n\n/**\n * convert a filename into extension, for example:\n * '//system/apex/com.android.adbd.apex' => 'apex'\n * @param {String} filename\n * @return {String}\n */\nexport function name2Extension(filename: string) {\n let elements = filename.split('.')\n if (elements.length > 1) {\n return elements[elements.length - 1]\n } else if (elements[0] === 'unknown') {\n return 'unknown'\n } else if (filename[0] == '<' && filename.endsWith('>')) {\n return filename\n } else {\n return 'no-extension'\n }\n}\n","\nimport { numBlocks, displayBlocks } from '../services/payload_composition'\nimport { DefaultMap } from '../services/payload'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n operation: {\n type: Object,\n required: true\n },\n mapType: {\n type: DefaultMap,\n required: true\n }\n },\n data() {\n return {\n srcTotalBlocks: 0,\n srcBlocks: '',\n dstTotalBlocks: 0,\n dstBlocks: ''\n }\n },\n mounted() {\n if (this.operation.srcExtents) {\n this.srcTotalBlocks = numBlocks(this.operation.srcExtents)\n this.srcBlocks = displayBlocks(this.operation.srcExtents)\n }\n if (this.operation.dstExtents) {\n this.dstTotalBlocks = numBlocks(this.operation.dstExtents)\n this.dstBlocks = displayBlocks(this.operation.dstExtents)\n }\n }\n})\n","import { render } from \"./OperationDetail.vue?vue&type=template&id=44174082&scoped=true&ts=true\"\nimport script from \"./OperationDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./OperationDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-44174082\"]])\n\nexport default __exports__","\nimport { chromeos_update_engine } from '@/services/update_metadata_pb'\nimport { defineComponent } from 'vue'\nimport { OpType, octToHex } from '../services/payload'\nimport OperationDetail from './OperationDetail.vue'\n\nexport default defineComponent({\n components: {\n OperationDetail\n },\n props: {\n partition: {\n type: chromeos_update_engine.PartitionUpdate,\n required: true\n },\n dynamicPartitionList: {\n type: Array,\n required: true\n }\n },\n data() {\n return {\n showOPs: false,\n showInfo: false,\n opType: new OpType()\n }\n },\n methods: {\n toggle(key: string) {\n ;(this as any)[key] = !(this as any)[key]\n },\n octToHex: octToHex\n },\n computed: {\n readableTimestamp() {\n const unixTimestamp = parseInt(this.partition.version)\n if (isNaN(unixTimestamp)) {\n return ''\n }\n // Unix timestamp is in seconds, but js want milliseconds. So *1000\n return new Date(unixTimestamp * 1000).toString()\n },\n isDynamicPartition(): boolean {\n return (\n this.dynamicPartitionList.indexOf(this.partition.partitionName) >= 0\n )\n }\n }\n})\n","import { render } from \"./PartitionDetail.vue?vue&type=template&id=6dba348a&scoped=true&ts=true\"\nimport script from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PartitionDetail.vue?vue&type=style&index=0&id=6dba348a&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6dba348a\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, openBlock as _openBlock, createElementBlock as _createElementBlock, mergeProps as _mergeProps, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0514c264\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h3\", null, \"Basic infos\", -1))\nconst _hoisted_2 = { class: \"align\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" File name \", -1))\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" File size \", -1))\nconst _hoisted_5 = { class: \"align\" }\nconst _hoisted_6 = { class: \"wrap\" }\nconst _hoisted_7 = { key: 2 }\nconst _hoisted_8 = { class: \"align\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Incremental \", -1))\nconst _hoisted_10 = { key: 0 }\nconst _hoisted_11 = { key: 1 }\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Partial \", -1))\nconst _hoisted_13 = { key: 0 }\nconst _hoisted_14 = { key: 1 }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" A/B update \", -1))\nconst _hoisted_16 = { key: 0 }\nconst _hoisted_17 = { key: 1 }\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" VAB \", -1))\nconst _hoisted_19 = { key: 0 }\nconst _hoisted_20 = { key: 1 }\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" VABC \", -1))\nconst _hoisted_22 = { key: 0 }\nconst _hoisted_23 = { key: 1 }\nconst _hoisted_24 = { key: 0 }\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Total Dynamic Partition Size \", -1))\nconst _hoisted_26 = { key: 1 }\nconst _hoisted_27 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Total VABC COW Size \", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n (_ctx.zipFile)\n ? (_openBlock(), _createElementBlock(\"div\", _normalizeProps(_mergeProps({ key: 0 }, _ctx.$attrs)), [\n _createElementVNode(\"ul\", _hoisted_2, [\n _createElementVNode(\"li\", null, [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(_ctx.zipFile.getFileName()), 1)\n ]),\n _createElementVNode(\"li\", null, [\n _hoisted_4,\n _createTextVNode(\" \" + _toDisplayString(_ctx.zipFile.getFileSize()) + \" Bytes\", 1)\n ])\n ])\n ], 16))\n : _createCommentVNode(\"\", true),\n (_ctx.payload && _ctx.payload.metadata)\n ? (_openBlock(), _createElementBlock(\"div\", _normalizeProps(_mergeProps({ key: 1 }, _ctx.$attrs)), [\n _createElementVNode(\"ul\", _hoisted_5, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.otaMetadata, (formatter) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: formatter.name\n }, [\n _createElementVNode(\"strong\", null, _toDisplayString(formatter.name.trim() + ' '), 1),\n _createElementVNode(\"p\", _hoisted_6, _toDisplayString(String(_ctx.payload[formatter.key]).trim()), 1)\n ]))\n }), 128))\n ])\n ], 16))\n : _createCommentVNode(\"\", true),\n (_ctx.payload && _ctx.payload.manifest)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createElementVNode(\"ul\", _hoisted_8, [\n _createElementVNode(\"li\", null, [\n _hoisted_9,\n (_ctx.payload.preBuild)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_10, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_11, \" ❌ \"))\n ]),\n _createElementVNode(\"li\", null, [\n _hoisted_12,\n (_ctx.payload.manifest.partialUpdate)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_13, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_14, \" ❌ \"))\n ]),\n _createElementVNode(\"li\", null, [\n _hoisted_15,\n (!_ctx.payload.manifest.nonAB)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_16, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_17, \" ❌ \"))\n ]),\n _createElementVNode(\"li\", null, [\n _hoisted_18,\n (_ctx.payload.manifest.dynamicPartitionMetadata.snapshotEnabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_19, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_20, \" ❌ \"))\n ]),\n _createElementVNode(\"li\", null, [\n _hoisted_21,\n (_ctx.payload.manifest.dynamicPartitionMetadata.vabcEnabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_22, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_23, \" ❌ \"))\n ]),\n (_ctx.totalDynamicPartitionSize)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_24, [\n _hoisted_25,\n _createTextVNode(\" \" + _toDisplayString(_ctx.totalDynamicPartitionSize), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.totalCOWSize)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_26, [\n _hoisted_27,\n _createTextVNode(\" \" + _toDisplayString(_ctx.totalCOWSize), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}","import * as zip from '@zip.js/zip.js/dist/zip.js'\nimport { ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { Payload } from './payload'\n\nexport class ZipFile {\n public reader: ZipReader\n\n constructor(private file: File | URL) {\n this.reader = getZipReader(file)\n }\n getFileName() {\n return getFileName(this.file)\n }\n getFileSize() {\n if (this.file instanceof File) {\n return this.file.size\n } else {\n // TODO(zhangkelvin) Support getting file size from URL\n return 0\n }\n }\n}\n\nexport async function trimZip(\n file: ZipReader,\n p: (entry: zip.Entry) => boolean\n): Promise {\n const reader = file\n const writer = new zip.ZipWriter(new zip.BlobWriter('application/zip'))\n const entries = await reader.getEntries()\n for (const entry of entries.filter(entry => !!entry && p(entry))) {\n const blobWriter = new zip.BlobWriter()\n const data = (await entry.getData!(blobWriter)) as Blob\n console.log(`Adding ${entry.filename}, ${data.size}`)\n writer.add(entry.filename, new zip.BlobReader(blobWriter.getData()), {\n level: 0 // no compression\n })\n }\n return writer\n}\n\nfunction getZipReader(file: File | URL) {\n if (file instanceof File) {\n return new zip.ZipReader(new zip.BlobReader(file))\n } else {\n return new zip.ZipReader(new zip.HttpReader(file.href))\n }\n}\n\nexport function getFileName(file: File | URL) {\n if (file instanceof File) {\n return file.name\n } else {\n return file.pathname\n }\n}\n\nexport async function trimTargetFiles(file: File | URL): Promise {\n const writer = await trimZip(getZipReader(file), entry => {\n return entry.filename.startsWith('META/') || entry.filename.endsWith('.map')\n })\n return await writer.close()\n}\n\nexport async function trimOTAPackage(payload: Payload): Promise {\n const writer = await trimZip(payload.zipreader, entry => {\n return entry.filename != 'payload.bin'\n })\n await writer.add(\n 'payload.bin',\n new zip.BlobReader(payload.buffer!.slice(0, payload.getMetadataLength())),\n // Most toolings assume that payload.bin and other entries are not\n // compressed, so use level 0\n {\n level: 0\n }\n )\n const blob: Blob = await writer.close()\n return blob\n}\n\nexport function downloadFile(\n blob: Blob,\n downloadNode: HTMLAnchorElement,\n filename: string\n) {\n const url = window.URL.createObjectURL(blob)\n downloadNode.href = url\n downloadNode.download = filename\n downloadNode.click()\n window.URL.revokeObjectURL(url)\n}\n\nexport function ensureSuffix(str: string, suffix: string) {\n if (str.endsWith(suffix)) {\n return str\n } else {\n return str + suffix\n }\n}\n","\nimport { Payload, MetadataFormat } from '../services/payload'\nimport { ZipFile } from '@/services/trim_zip'\n\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n zipFile: {\n type: ZipFile,\n required: true\n },\n payload: {\n type: Payload,\n required: true\n }\n },\n data() {\n return {\n MetadataFormat\n }\n },\n computed: {\n otaMetadata(): {\n prefix: string\n key: string\n name: string\n }[] {\n return MetadataFormat.filter(formatter =>\n String((this.payload as any)[formatter.key]).length > 0\n );\n },\n totalCOWSize(): number {\n const cowSizes = this.payload?.manifest?.partitions.map(p => p.estimateCowSize || 0);\n if (!cowSizes) {\n return 0;\n }\n return cowSizes.reduce((a, b) => a + b);\n },\n totalDynamicPartitionSize(): number {\n const groups = this.payload?.manifest?.dynamicPartitionMetadata?.groups\n if (!groups) {\n return 0\n }\n const dynamicPartitionNamess = new Set(\n groups.flatMap(g => g.partitionNames)\n )\n const dynamicPartitions =\n this.payload.manifest?.partitions.filter(p =>\n dynamicPartitionNamess.has(p.partitionName)\n ) || []\n if (dynamicPartitions.length <= 0) {\n return 0\n }\n return dynamicPartitions\n .map(p => p.newPartitionInfo?.size || 0)\n .reduce((acc, cur) => acc + cur)\n }\n }\n})\n","import { render } from \"./BasicInfo.vue?vue&type=template&id=0514c264&scoped=true&ts=true\"\nimport script from \"./BasicInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./BasicInfo.vue?vue&type=script&lang=ts\"\n\nimport \"./BasicInfo.vue?vue&type=style&index=0&id=0514c264&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0514c264\"]])\n\nexport default __exports__","\nimport PartitionDetail from './PartitionDetail.vue'\nimport BasicInfo from './BasicInfo.vue'\nimport { Payload, octToHex } from '../services/payload'\nimport {\n downloadFile,\n ensureSuffix,\n trimOTAPackage,\n ZipFile\n} from '@/services/trim_zip'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n components: {\n PartitionDetail,\n BasicInfo\n },\n props: {\n zipFile: {\n type: ZipFile,\n default: null\n },\n payload: {\n type: Payload,\n default: null\n }\n },\n methods: {\n octToHex: octToHex,\n async exportOTAPackage() {\n const blob = await trimOTAPackage(this.payload as Payload)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(this.zipFile.getFileName(), '.zip')\n )\n }\n },\n computed: {\n dynamicPartitions(): string[] {\n return (\n this.payload.manifest?.dynamicPartitionMetadata?.groups?.flatMap(\n g => g.partitionNames || []\n ) || []\n )\n }\n }\n})\n","import { render } from \"./PayloadDetail.vue?vue&type=template&id=05db67f2&scoped=true&ts=true\"\nimport script from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-05db67f2\"]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createVNode as _createVNode, createElementBlock as _createElementBlock, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-44b569bd\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/_createTextVNode(\"Export Target File Metadata\")\nconst _hoisted_2 = { ref: \"download\" }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\" Analyse Installed Blocks (in target build) \")\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\" Analyse Payload Composition \")\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\" Analyse COW Merge Operations \")\nconst _hoisted_7 = {\n key: 0,\n class: \"tooltiptext\"\n}\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\" Analyse Filenames \")\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\" Analyse File Extensions \")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_btn = _resolveComponent(\"v-btn\")!\n const _component_PartialCheckbox = _resolveComponent(\"PartialCheckbox\")!\n const _component_PieChart = _resolveComponent(\"PieChart\")!\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n const _component_BaseFile = _resolveComponent(\"BaseFile\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (_ctx.targetFile)\n ? (_openBlock(), _createBlock(_component_v_btn, {\n key: 0,\n block: \"\",\n class: \"md-6\",\n onClick: _ctx.exportTargetFileMetadata\n }, {\n default: _withCtx(() => [\n _hoisted_1\n ]),\n _: 1\n }, 8, [\"onClick\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"a\", _hoisted_2, null, 512),\n _createVNode(_component_PartialCheckbox, {\n modelValue: _ctx.partitionInclude,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.partitionInclude) = $event)),\n labels: _ctx.updatePartitions\n }, null, 8, [\"modelValue\", \"labels\"]),\n (_ctx.echartsData)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(_component_PieChart, {\n echartsData: _ctx.echartsData,\n onClick: _ctx.piechartClick\n }, null, 8, [\"echartsData\", \"onClick\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_v_divider),\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n block: \"\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.updateChart('blocks')))\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n block: \"\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.updateChart('payload')))\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\",\n class: \"tooltip\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n disabled: \n _ctx.manifest.nonAB || !_ctx.manifest.dynamicPartitionMetadata.vabcEnabled\n ,\n title: \"Only available for VABC update\",\n block: \"\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.updateChart('COWmerge')))\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n (_ctx.manifest.nonAB)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_7, \" This function is only supported in A/B OTA \"))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n block: \"\",\n disabled: !_ctx.targetFile,\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.updateChart('filenames')))\n }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n block: \"\",\n disabled: !_ctx.targetFile,\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.updateChart('extensions')))\n }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n (!_ctx.demo)\n ? (_openBlock(), _createBlock(_component_BaseFile, {\n key: 0,\n label: \"Drag and drop or Select The target Android build\",\n onFileSelect: _ctx.selectBuild\n }, null, 8, [\"onFileSelect\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ], 64))\n}","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-533f2336\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"value\", \"checked\"]\nconst _hoisted_2 = { key: 0 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_btn = _resolveComponent(\"v-btn\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_v_btn, {\n block: \"\",\n type: \"button\",\n class: \"my-5\",\n onClick: _ctx.revertAllSelection\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.selectAllText[_ctx.selectAll]), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _createVNode(_component_v_row, { class: \"mb-5\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.labels, (label) => {\n return (_openBlock(), _createBlock(_component_v_col, {\n key: label,\n cols: \"12\",\n md: \"4\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n value: label,\n checked: _ctx.modelValue.get(label),\n onChange: _cache[0] || (_cache[0] = ($event: any) => (_ctx.updateSelected($event.target.value)))\n }, null, 40, _hoisted_1),\n label\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_2, _toDisplayString(label), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, 1024))\n }), 128))\n ]),\n _: 1\n })\n ], 64))\n}","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n labels: {\n type: Array,\n default: new Array()\n },\n modelValue: {\n type: Map,\n default: new Map()\n }\n },\n data() {\n return {\n selectAll: 1,\n selectAllText: ['Select All', 'Unselect All']\n }\n },\n mounted() {\n // Set the default value to be true once mounted\n for (let key of this.labels) {\n this.modelValue.set(key, true)\n }\n },\n methods: {\n updateSelected(newSelect: string) {\n this.modelValue.set(newSelect, !this.modelValue.get(newSelect))\n this.$emit('update:modelValue', this.modelValue)\n },\n revertAllSelection() {\n this.selectAll = 1 - this.selectAll\n for (let key of this.modelValue.keys()) {\n this.modelValue.set(key, Boolean(this.selectAll))\n }\n }\n }\n})\n","import { render } from \"./PartialCheckbox.vue?vue&type=template&id=533f2336&scoped=true&ts=true\"\nimport script from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\n\nimport \"./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-533f2336\"]])\n\nexport default __exports__","\n\n\n\n\n\n\n","import { render } from \"./PieChart.vue?vue&type=template&id=5d1cb486&scoped=true\"\nimport script from \"./PieChart.vue?vue&type=script&lang=js\"\nexport * from \"./PieChart.vue?vue&type=script&lang=js\"\n\nimport \"./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5d1cb486\"]])\n\nexport default __exports__","\nimport axios from 'axios'\nimport PartialCheckbox from './PartialCheckbox.vue'\nimport PieChart from './PieChart.vue'\nimport BaseFile from './BaseFile.vue'\nimport { analysePartitions } from '../services/payload_composition'\nimport { chromeos_update_engine as update_metadata_pb } from '../services/update_metadata_pb'\nimport { TooltipComponentPositionCallbackParams } from 'echarts'\nimport { EchartsData } from '@/services/echarts_data'\nimport { defineComponent } from 'vue'\nimport {\n downloadFile,\n ensureSuffix,\n getFileName,\n trimTargetFiles\n} from '@/services/trim_zip'\n\ninterface ComponentState {\n partitionInclude: Map\n echartsData: EchartsData | null\n listData: string\n targetFile: File | URL | null\n}\n\nexport default defineComponent({\n components: {\n PartialCheckbox,\n PieChart,\n BaseFile\n },\n props: {\n manifest: {\n type: update_metadata_pb.DeltaArchiveManifest,\n default: () => []\n },\n demo: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n partitionInclude: new Map(),\n echartsData: null,\n listData: '',\n targetFile: null\n } as ComponentState\n },\n computed: {\n updatePartitions(): string[] {\n return this.manifest.partitions.map(\n (partition: update_metadata_pb.IPartitionUpdate) => {\n return partition.partitionName\n }\n )\n }\n },\n async mounted() {\n if (this.demo) {\n try {\n const download = await axios.get(\n './files/cf_x86_target_file_demo.zip',\n { responseType: 'blob' }\n )\n this.targetFile = new File([download.data], 'target_demo.zip')\n } catch (err) {\n console.log('Please put a proper example target file in /public/files/')\n }\n }\n },\n methods: {\n piechartClick(param: TooltipComponentPositionCallbackParams) {\n console.log(param)\n },\n async updateChart(metrics: string) {\n let partitionSelected = this.manifest.partitions.filter(partition =>\n this.partitionInclude.get(partition.partitionName)\n )\n try {\n this.echartsData = await analysePartitions(\n metrics,\n partitionSelected,\n this.manifest.blockSize,\n this.targetFile\n )\n } catch (err) {\n alert(`Cannot be processed for the following issue: ${err}`)\n }\n },\n selectBuild(file: File | URL) {\n //TODO(lishutong) check the version of target file is same to the OTA target\n this.targetFile = file\n },\n async exportTargetFileMetadata() {\n const blob = await trimTargetFiles(this.targetFile!)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(getFileName(this.targetFile!), '.zip')\n )\n }\n }\n})\n","import { render } from \"./PayloadComposition.vue?vue&type=template&id=44b569bd&scoped=true&ts=true\"\nimport script from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadComposition.vue?vue&type=style&index=0&id=44b569bd&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-44b569bd\"]])\n\nexport default __exports__","\nimport BaseFile from '../components/BaseFile.vue'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n BaseFile,\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return ({\n zipFile: null,\n payload: null\n } as unknown) as {\n zipFile: ZipFile\n payload: Payload\n }\n },\n methods: {\n async unpackOTA(file: File | URL) {\n this.zipFile = new ZipFile(file)\n try {\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n alert(`Please check if this is a correct OTA package (.zip). ${err}`)\n console.log(err)\n }\n }\n }\n})\n","import { render } from \"./PackageAnalysis.vue?vue&type=template&id=0c172053&ts=true\"\nimport script from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nexport * from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createVNode as _createVNode } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_PayloadDetail = _resolveComponent(\"PayloadDetail\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n const _component_PayloadComposition = _resolveComponent(\"PayloadComposition\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n\n return (_openBlock(), _createBlock(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n (_ctx.zipFile && _ctx.payload)\n ? (_openBlock(), _createBlock(_component_PayloadDetail, {\n key: 0,\n zipFile: _ctx.zipFile,\n payload: _ctx.payload\n }, null, 8, [\"zipFile\", \"payload\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_component_v_divider, { vertical: \"\" }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n (_ctx.zipFile && _ctx.payload.manifest)\n ? (_openBlock(), _createBlock(_component_PayloadComposition, {\n key: 0,\n manifest: _ctx.payload.manifest,\n demo: true\n }, null, 8, [\"manifest\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n}","\nimport axios from 'axios'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return {\n zipFile: null,\n payload: null\n } as {\n zipFile: ZipFile | null\n payload: Payload | null\n }\n },\n async created() {\n // put cf_x86_demo.zip and cf_x86_target_file_demo into\n // this directory: /public/files\n try {\n const download = await axios.get('./files/cf_x86_demo.zip', {\n responseType: 'blob'\n })\n this.zipFile = new ZipFile(new File([download.data], 'ota_demo.zip'))\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n console.log('Please put a proper example OTA in /public/files/')\n }\n }\n})\n","import { render } from \"./Demo.vue?vue&type=template&id=1e5d071a&ts=true\"\nimport script from \"./Demo.vue?vue&type=script&lang=ts\"\nexport * from \"./Demo.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./About.vue?vue&type=template&id=67ed0bf6\"\nconst script = {}\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n","import { render } from \"./NotFound.vue?vue&type=template&id=50c6f348&scoped=true\"\nconst script = {}\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-50c6f348\"]])\n\nexport default __exports__","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createRouter, createWebHistory } from 'vue-router'\nimport PackageAnalysis from '@/views/PackageAnalysis.vue'\nimport Demo from'@/views/Demo.vue'\nimport About from '@/views/About.vue'\nimport NotFound from '@/views/NotFound.vue'\n\nconst routes = [\n {\n path: '/',\n name: 'Analysis',\n component: PackageAnalysis,\n meta: {\n title: 'Analyse OTA package - from AOSP'\n }\n },\n {\n path: '/demo',\n name: 'Demo',\n component: Demo\n },\n {\n path: '/about',\n name: 'About',\n component: About\n },\n {\n path: '/:catchAll(.*)',\n name: 'Not Found',\n component: NotFound\n }\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes\n})\n\n// This callback runs before every route change, including on page load.\nrouter.beforeEach((to, from, next) => {\n // This goes through the matched routes from last to first, finding the closest route with a title.\n // e.g., if we have `/some/deep/nested/route` and `/some`, `/deep`, and `/nested` have titles,\n // `/nested`'s will be chosen.\n const nearestWithTitle = to.matched.slice().reverse().find(r => r.meta && r.meta.title);\n\n // Find the nearest route element with meta tags.\n const nearestWithMeta = to.matched.slice().reverse().find(r => r.meta && r.meta.metaTags)!;\n\n const previousNearestWithMeta = from.matched.slice().reverse().find(r => r.meta && r.meta.metaTags);\n\n // If a route with a title was found, set the document (page) title to that value.\n if(nearestWithTitle) {\n document.title = nearestWithTitle.meta.title as string;\n } else if(previousNearestWithMeta) {\n document.title = previousNearestWithMeta.meta.title as string;\n }\n\n // Remove any stale meta tags from the document using the key attribute we set below.\n Array.from(document.querySelectorAll('[data-vue-router-controlled]')).map(el => el.parentNode!.removeChild(el));\n\n next();\n});\n\nexport default router\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createStore } from 'vuex'\n\nexport default createStore({\n state: {},\n mutations: {},\n actions: {},\n modules: {}\n})\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createApp } from 'vue'\nimport vuetify from './plugins/vuetify'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nconst app = createApp(App)\napp.use(router)\napp.use(store)\napp.use(vuetify)\n\napp.mount('#app')","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkota_analyzer\"] = self[\"webpackChunkota_analyzer\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(6758); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["components","directives","theme","defaultTheme","rounded","color","links","link","key","to","class","fluid","data","__exports__","render","_ctx","_cache","$props","$setup","$data","$options","_component_v_alert","_component_v_row","_component_BaseFile","_component_PayloadDetail","_component_v_col","_component_v_divider","_component_PayloadComposition","default","style","_","cols","md","label","onFileSelect","unpackOTA","zipFile","payload","vertical","manifest","_hoisted_2","_hoisted_3","_hoisted_4","onDragover","args","dragover","onDragleave","dragleave","onDrop","drop","fileName","ref","type","accept","onChange","handleFileChange","parsedURL","url","placeholder","$event","onKeyup","urlKeyup","props","String","emits","computed","URL","this","methods","event","currentTarget","target","files","length","selectedFile","$emit","name","preventDefault","classList","contains","add","remove","dataTransfer","console","log","error","value","n","_hoisted_5","_hoisted_6","_hoisted_7","_component_v_btn","_component_BasicInfo","_component_PartitionDetail","_component_v_card","onClick","exportOTAPackage","partitions","partition","partitionName","elevation","hover","shaped","dynamicPartitionList","dynamicPartitions","metadata_signature","nonAB","octToHex","signatures","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_component_OperationDetail","oldPartitionInfo","isDynamicPartition","estimateCowSize","postinstallPath","toggle","active","showInfo","inactive","size","hash","newPartitionInfo","version","readableTimestamp","showOPs","operations","operation","dataSha256Hash","mapType","opType","$Reader","$protobuf","$Writer","$util","$root","chromeos_update_engine","Extent","properties","keys","Object","i","prototype","startBlock","Long","fromBits","numBlocks","create","encode","message","writer","hasOwnProperty","call","uint32","uint64","encodeDelimited","ldelim","decode","reader","end","undefined","len","pos","tag","skipType","decodeDelimited","verify","isInteger","low","high","fromObject","object","fromValue","unsigned","parseInt","LongBits","toNumber","toObject","options","defaults","long","longs","toString","Number","toJSON","constructor","Signatures","emptyArray","Signature","fork","push","Array","isArray","TypeError","arrays","j","newBuffer","unpaddedSignatureSize","bytes","fixed32","isString","base64","slice","PartitionInfo","ImageInfo","board","channel","buildChannel","buildVersion","string","InstallOperation","srcExtents","dstExtents","dataOffset","dataLength","srcLength","dstLength","srcSha256Hash","int32","ProtocolError","instance","enums","Type","valuesById","values","CowMergeOperation","srcExtent","dstExtent","srcOffset","PartitionUpdate","newPartitionSignature","mergeOperations","runPostinstall","filesystemType","postinstallOptional","hashTreeDataExtent","hashTreeExtent","hashTreeAlgorithm","hashTreeSalt","fecDataExtent","fecExtent","fecRoots","bool","Boolean","DynamicPartitionGroup","partitionNames","DynamicPartitionMetadata","groups","snapshotEnabled","vabcEnabled","vabcCompressionParam","cowVersion","ApexInfo","packageName","isCompressed","decompressedSize","int64","ApexMetadata","apexInfo","DeltaArchiveManifest","installOperations","kernelInstallOperations","blockSize","signaturesOffset","signaturesSize","oldKernelInfo","newKernelInfo","oldRootfsInfo","newRootfsInfo","oldImageInfo","newImageInfo","minorVersion","maxTimestamp","dynamicPartitionMetadata","partialUpdate","PayloadNonAB","packedFile","super","Blocksize","regexName","entries","getEntries","entry","filename","match","newPartition","rawText","getData","parseTransferList","lines","split","totalBlocks","entryStashed","maxStashed","Uint8Array","newDataSize","sizeNewData","line","op","elements","reduce","parseRange","RegExp","uncompressedSize","extents","rangeset","regexRange","extent","_MAGIC","_VERSION_SIZE","_MANIFEST_LEN_SIZE","_METADATA_SIGNATURE_LEN_SIZE","_PAYLOAD_HEADER_SIZE","_BRILLO_MAJOR_PAYLOAD_VERSION","MetadataFormat","prefix","StopIteration","Error","AbPayloadHeader","magic","manifest_len","metadata_signature_len","async","readIntAt","buffer","position","view","DataView","arrayBuffer","getBigUint64","offset","a","BigInt","getUint32","b","bigNumber","getUint16","OTAPayloadBlobWriter","blob","cursor","readInt","ret","decoder","TextDecoder","magicBytes","header_version","header","contentType","Blob","prefixLength","array","writeUint8Array","readHeader","Payload","file","File","zipreader","href","getMetadataLength","e","readManifest","metadata","init","alert","manifestBlob","signatureBlob","parseMetadata","formatter","regex","trimEntry","unzip","DefaultMap","Map","getWithDefault","has","get","OpType","types","set","MergeOpType","bufferArray","space","maxLine","hex_table","hex","toUpperCase","srcTotalBlocks","srcBlocks","dstTotalBlocks","dstBlocks","EchartsData","statisticData","title","unit","maximumEntries","trimmedData","trimMap","listData","table","getEchartsOption","option","text","left","tooltip","trigger","legend","orient","top","from","series","radius","center","map","pair","emphasis","itemStyle","shadowBlur","shadowOffsetX","shadowColor","new_map","curr","currKey","restTotal","MapParser","targetFile","build","mapFiles","maps","regexPath","forEach","totalLength","regexNumber","mapText","fileEntries","right","InsertMap","query","names","ext","queryMap","addNumberToMap","operatedBlockStatistics","operatedBlocks","operationType","mergeOperationStatistics","Math","ceil","operatedPayloadStatistics","operatedFileExtensionsStatistics","filenameStats","operatedFilenamesStatistics","fileExtenstionStats","name2Extension","operatedFilenames","buildMap","operatedFileNames","extentDataLength","distributeFilenames","analysePartitions","metrics","statisticsData","echartsData","exts","accumulator","total","displayBlocks","filenames","distributedLengths","round","endsWith","required","mounted","OperationDetail","unixTimestamp","isNaN","Date","indexOf","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","$attrs","getFileName","getFileSize","otaMetadata","trim","preBuild","totalDynamicPartitionSize","totalCOWSize","ZipFile","getZipReader","trimZip","p","zip","filter","blobWriter","level","pathname","trimTargetFiles","startsWith","close","trimOTAPackage","downloadFile","downloadNode","window","createObjectURL","download","click","revokeObjectURL","ensureSuffix","str","suffix","cowSizes","dynamicPartitionNamess","Set","flatMap","g","acc","cur","PartitionDetail","BasicInfo","$refs","_component_PartialCheckbox","_component_PieChart","block","exportTargetFileMetadata","modelValue","partitionInclude","labels","updatePartitions","piechartClick","updateChart","disabled","demo","selectBuild","revertAllSelection","selectAllText","selectAll","checked","updateSelected","newSelect","arguments","VChart","provide","PartialCheckbox","PieChart","BaseFile","responseType","err","param","partitionSelected","PayloadDetail","PayloadComposition","script","routes","path","component","PackageAnalysis","meta","Demo","About","NotFound","router","history","beforeEach","next","nearestWithTitle","matched","reverse","find","r","previousNearestWithMeta","metaTags","document","querySelectorAll","el","parentNode","removeChild","state","mutations","actions","modules","app","App","use","store","vuetify","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","every","splice","getter","__esModule","d","definition","o","defineProperty","enumerable","globalThis","Function","obj","prop","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/analyseOTA/js/app.89660dec.js b/analyseOTA/js/app.89660dec.js new file mode 100644 index 0000000..c7c7bf0 --- /dev/null +++ b/analyseOTA/js/app.89660dec.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var r,i,s=t[0],l=t[1],c=t[2],p=0,f=[];p>>3){case 1:r.startBlock=e.uint64();break;case 2:r.numBlocks=e.uint64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof oe||(e=new oe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null==e.startBlock||!e.hasOwnProperty("startBlock")||se.isInteger(e.startBlock)||e.startBlock&&se.isInteger(e.startBlock.low)&&se.isInteger(e.startBlock.high)?null==e.numBlocks||!e.hasOwnProperty("numBlocks")||se.isInteger(e.numBlocks)||e.numBlocks&&se.isInteger(e.numBlocks.low)&&se.isInteger(e.numBlocks.high)?null:"numBlocks: integer|Long expected":"startBlock: integer|Long expected"},e.fromObject=function(e){if(e instanceof le.chromeos_update_engine.Extent)return e;var t=new le.chromeos_update_engine.Extent;return null!=e.startBlock&&(se.Long?(t.startBlock=se.Long.fromValue(e.startBlock)).unsigned=!0:"string"===typeof e.startBlock?t.startBlock=parseInt(e.startBlock,10):"number"===typeof e.startBlock?t.startBlock=e.startBlock:"object"===Object(re["a"])(e.startBlock)&&(t.startBlock=new se.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0))),null!=e.numBlocks&&(se.Long?(t.numBlocks=se.Long.fromValue(e.numBlocks)).unsigned=!0:"string"===typeof e.numBlocks?t.numBlocks=parseInt(e.numBlocks,10):"number"===typeof e.numBlocks?t.numBlocks=e.numBlocks:"object"===Object(re["a"])(e.numBlocks)&&(t.numBlocks=new se.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(se.Long){var r=new se.Long(0,0,!0);n.startBlock=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.startBlock=t.longs===String?"0":0;if(se.Long){var a=new se.Long(0,0,!0);n.numBlocks=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.numBlocks=t.longs===String?"0":0}return null!=e.startBlock&&e.hasOwnProperty("startBlock")&&("number"===typeof e.startBlock?n.startBlock=t.longs===String?String(e.startBlock):e.startBlock:n.startBlock=t.longs===String?se.Long.prototype.toString.call(e.startBlock):t.longs===Number?new se.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0):e.startBlock),null!=e.numBlocks&&e.hasOwnProperty("numBlocks")&&("number"===typeof e.numBlocks?n.numBlocks=t.longs===String?String(e.numBlocks):e.numBlocks:n.numBlocks=t.longs===String?se.Long.prototype.toString.call(e.numBlocks):t.longs===Number?new se.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0):e.numBlocks),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.Signatures=function(){function e(e){if(this.signatures=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.signatures&&r.signatures.length||(r.signatures=[]),r.signatures.push(le.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof oe||(e=new oe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.signatures&&e.hasOwnProperty("signatures")){if(!Array.isArray(e.signatures))return"signatures: array expected";for(var t=0;t>>3){case 1:r.version=e.uint32();break;case 2:r.data=e.bytes();break;case 3:r.unpaddedSignatureSize=e.fixed32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof oe||(e=new oe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null!=e.version&&e.hasOwnProperty("version")&&!se.isInteger(e.version)?"version: integer expected":null!=e.data&&e.hasOwnProperty("data")&&!(e.data&&"number"===typeof e.data.length||se.isString(e.data))?"data: buffer expected":null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&!se.isInteger(e.unpaddedSignatureSize)?"unpaddedSignatureSize: integer expected":null},e.fromObject=function(e){if(e instanceof le.chromeos_update_engine.Signatures.Signature)return e;var t=new le.chromeos_update_engine.Signatures.Signature;return null!=e.version&&(t.version=e.version>>>0),null!=e.data&&("string"===typeof e.data?se.base64.decode(e.data,t.data=se.newBuffer(se.base64.length(e.data)),0):e.data.length&&(t.data=e.data)),null!=e.unpaddedSignatureSize&&(t.unpaddedSignatureSize=e.unpaddedSignatureSize>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.version=0,t.bytes===String?n.data="":(n.data=[],t.bytes!==Array&&(n.data=se.newBuffer(n.data))),n.unpaddedSignatureSize=0),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.data&&e.hasOwnProperty("data")&&(n.data=t.bytes===String?se.base64.encode(e.data,0,e.data.length):t.bytes===Array?Array.prototype.slice.call(e.data):e.data),null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&(n.unpaddedSignatureSize=e.unpaddedSignatureSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e}(),e.PartitionInfo=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.size=e.uint64();break;case 2:r.hash=e.bytes();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof oe||(e=new oe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null==e.size||!e.hasOwnProperty("size")||se.isInteger(e.size)||e.size&&se.isInteger(e.size.low)&&se.isInteger(e.size.high)?null!=e.hash&&e.hasOwnProperty("hash")&&!(e.hash&&"number"===typeof e.hash.length||se.isString(e.hash))?"hash: buffer expected":null:"size: integer|Long expected"},e.fromObject=function(e){if(e instanceof le.chromeos_update_engine.PartitionInfo)return e;var t=new le.chromeos_update_engine.PartitionInfo;return null!=e.size&&(se.Long?(t.size=se.Long.fromValue(e.size)).unsigned=!0:"string"===typeof e.size?t.size=parseInt(e.size,10):"number"===typeof e.size?t.size=e.size:"object"===Object(re["a"])(e.size)&&(t.size=new se.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0))),null!=e.hash&&("string"===typeof e.hash?se.base64.decode(e.hash,t.hash=se.newBuffer(se.base64.length(e.hash)),0):e.hash.length&&(t.hash=e.hash)),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(se.Long){var r=new se.Long(0,0,!0);n.size=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.size=t.longs===String?"0":0;t.bytes===String?n.hash="":(n.hash=[],t.bytes!==Array&&(n.hash=se.newBuffer(n.hash)))}return null!=e.size&&e.hasOwnProperty("size")&&("number"===typeof e.size?n.size=t.longs===String?String(e.size):e.size:n.size=t.longs===String?se.Long.prototype.toString.call(e.size):t.longs===Number?new se.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0):e.size),null!=e.hash&&e.hasOwnProperty("hash")&&(n.hash=t.bytes===String?se.base64.encode(e.hash,0,e.hash.length):t.bytes===Array?Array.prototype.slice.call(e.hash):e.hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.ImageInfo=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.board=e.string();break;case 2:r.key=e.string();break;case 3:r.channel=e.string();break;case 4:r.version=e.string();break;case 5:r.buildChannel=e.string();break;case 6:r.buildVersion=e.string();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof oe||(e=new oe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null!=e.board&&e.hasOwnProperty("board")&&!se.isString(e.board)?"board: string expected":null!=e.key&&e.hasOwnProperty("key")&&!se.isString(e.key)?"key: string expected":null!=e.channel&&e.hasOwnProperty("channel")&&!se.isString(e.channel)?"channel: string expected":null!=e.version&&e.hasOwnProperty("version")&&!se.isString(e.version)?"version: string expected":null!=e.buildChannel&&e.hasOwnProperty("buildChannel")&&!se.isString(e.buildChannel)?"buildChannel: string expected":null!=e.buildVersion&&e.hasOwnProperty("buildVersion")&&!se.isString(e.buildVersion)?"buildVersion: string expected":null},e.fromObject=function(e){if(e instanceof le.chromeos_update_engine.ImageInfo)return e;var t=new le.chromeos_update_engine.ImageInfo;return null!=e.board&&(t.board=String(e.board)),null!=e.key&&(t.key=String(e.key)),null!=e.channel&&(t.channel=String(e.channel)),null!=e.version&&(t.version=String(e.version)),null!=e.buildChannel&&(t.buildChannel=String(e.buildChannel)),null!=e.buildVersion&&(t.buildVersion=String(e.buildVersion)),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.board="",n.key="",n.channel="",n.version="",n.buildChannel="",n.buildVersion=""),null!=e.board&&e.hasOwnProperty("board")&&(n.board=e.board),null!=e.key&&e.hasOwnProperty("key")&&(n.key=e.key),null!=e.channel&&e.hasOwnProperty("channel")&&(n.channel=e.channel),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.buildChannel&&e.hasOwnProperty("buildChannel")&&(n.buildChannel=e.buildChannel),null!=e.buildVersion&&e.hasOwnProperty("buildVersion")&&(n.buildVersion=e.buildVersion),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.InstallOperation=function(){function e(e){if(this.srcExtents=[],this.dstExtents=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.dataOffset=e.uint64();break;case 3:r.dataLength=e.uint64();break;case 4:r.srcExtents&&r.srcExtents.length||(r.srcExtents=[]),r.srcExtents.push(le.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 5:r.srcLength=e.uint64();break;case 6:r.dstExtents&&r.dstExtents.length||(r.dstExtents=[]),r.dstExtents.push(le.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 7:r.dstLength=e.uint64();break;case 8:r.dataSha256Hash=e.bytes();break;case 9:r.srcSha256Hash=e.bytes();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("type"))throw se.ProtocolError("missing required 'type'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof oe||(e=new oe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 8:case 6:case 7:case 10:case 9:case 11:case 12:case 13:break}if(null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&!se.isInteger(e.dataOffset)&&!(e.dataOffset&&se.isInteger(e.dataOffset.low)&&se.isInteger(e.dataOffset.high)))return"dataOffset: integer|Long expected";if(null!=e.dataLength&&e.hasOwnProperty("dataLength")&&!se.isInteger(e.dataLength)&&!(e.dataLength&&se.isInteger(e.dataLength.low)&&se.isInteger(e.dataLength.high)))return"dataLength: integer|Long expected";if(null!=e.srcExtents&&e.hasOwnProperty("srcExtents")){if(!Array.isArray(e.srcExtents))return"srcExtents: array expected";for(var t=0;t>>0,e.dataOffset.high>>>0).toNumber(!0))),null!=e.dataLength&&(se.Long?(t.dataLength=se.Long.fromValue(e.dataLength)).unsigned=!0:"string"===typeof e.dataLength?t.dataLength=parseInt(e.dataLength,10):"number"===typeof e.dataLength?t.dataLength=e.dataLength:"object"===Object(re["a"])(e.dataLength)&&(t.dataLength=new se.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0))),e.srcExtents){if(!Array.isArray(e.srcExtents))throw TypeError(".chromeos_update_engine.InstallOperation.srcExtents: array expected");t.srcExtents=[];for(var n=0;n>>0,e.srcLength.high>>>0).toNumber(!0))),e.dstExtents){if(!Array.isArray(e.dstExtents))throw TypeError(".chromeos_update_engine.InstallOperation.dstExtents: array expected");t.dstExtents=[];for(var r=0;r>>0,e.dstLength.high>>>0).toNumber(!0))),null!=e.dataSha256Hash&&("string"===typeof e.dataSha256Hash?se.base64.decode(e.dataSha256Hash,t.dataSha256Hash=se.newBuffer(se.base64.length(e.dataSha256Hash)),0):e.dataSha256Hash.length&&(t.dataSha256Hash=e.dataSha256Hash)),null!=e.srcSha256Hash&&("string"===typeof e.srcSha256Hash?se.base64.decode(e.srcSha256Hash,t.srcSha256Hash=se.newBuffer(se.base64.length(e.srcSha256Hash)),0):e.srcSha256Hash.length&&(t.srcSha256Hash=e.srcSha256Hash)),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.srcExtents=[],n.dstExtents=[]),t.defaults){if(n.type=t.enums===String?"REPLACE":0,se.Long){var r=new se.Long(0,0,!0);n.dataOffset=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.dataOffset=t.longs===String?"0":0;if(se.Long){var a=new se.Long(0,0,!0);n.dataLength=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.dataLength=t.longs===String?"0":0;if(se.Long){var o=new se.Long(0,0,!0);n.srcLength=t.longs===String?o.toString():t.longs===Number?o.toNumber():o}else n.srcLength=t.longs===String?"0":0;if(se.Long){var i=new se.Long(0,0,!0);n.dstLength=t.longs===String?i.toString():t.longs===Number?i.toNumber():i}else n.dstLength=t.longs===String?"0":0;t.bytes===String?n.dataSha256Hash="":(n.dataSha256Hash=[],t.bytes!==Array&&(n.dataSha256Hash=se.newBuffer(n.dataSha256Hash))),t.bytes===String?n.srcSha256Hash="":(n.srcSha256Hash=[],t.bytes!==Array&&(n.srcSha256Hash=se.newBuffer(n.srcSha256Hash)))}if(null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?le.chromeos_update_engine.InstallOperation.Type[e.type]:e.type),null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&("number"===typeof e.dataOffset?n.dataOffset=t.longs===String?String(e.dataOffset):e.dataOffset:n.dataOffset=t.longs===String?se.Long.prototype.toString.call(e.dataOffset):t.longs===Number?new se.LongBits(e.dataOffset.low>>>0,e.dataOffset.high>>>0).toNumber(!0):e.dataOffset),null!=e.dataLength&&e.hasOwnProperty("dataLength")&&("number"===typeof e.dataLength?n.dataLength=t.longs===String?String(e.dataLength):e.dataLength:n.dataLength=t.longs===String?se.Long.prototype.toString.call(e.dataLength):t.longs===Number?new se.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0):e.dataLength),e.srcExtents&&e.srcExtents.length){n.srcExtents=[];for(var s=0;s>>0,e.srcLength.high>>>0).toNumber(!0):e.srcLength),e.dstExtents&&e.dstExtents.length){n.dstExtents=[];for(var l=0;l>>0,e.dstLength.high>>>0).toNumber(!0):e.dstLength),null!=e.dataSha256Hash&&e.hasOwnProperty("dataSha256Hash")&&(n.dataSha256Hash=t.bytes===String?se.base64.encode(e.dataSha256Hash,0,e.dataSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.dataSha256Hash):e.dataSha256Hash),null!=e.srcSha256Hash&&e.hasOwnProperty("srcSha256Hash")&&(n.srcSha256Hash=t.bytes===String?se.base64.encode(e.srcSha256Hash,0,e.srcSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.srcSha256Hash):e.srcSha256Hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="REPLACE"]=0,t[e[1]="REPLACE_BZ"]=1,t[e[2]="MOVE"]=2,t[e[3]="BSDIFF"]=3,t[e[4]="SOURCE_COPY"]=4,t[e[5]="SOURCE_BSDIFF"]=5,t[e[8]="REPLACE_XZ"]=8,t[e[6]="ZERO"]=6,t[e[7]="DISCARD"]=7,t[e[10]="BROTLI_BSDIFF"]=10,t[e[9]="PUFFDIFF"]=9,t[e[11]="ZUCCHINI"]=11,t[e[12]="LZ4DIFF_BSDIFF"]=12,t[e[13]="LZ4DIFF_PUFFDIFF"]=13,t}(),e}(),e.CowMergeOperation=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.srcExtent=le.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 3:r.dstExtent=le.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 4:r.srcOffset=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof oe||(e=new oe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:break}if(null!=e.srcExtent&&e.hasOwnProperty("srcExtent")){var t=le.chromeos_update_engine.Extent.verify(e.srcExtent);if(t)return"srcExtent."+t}if(null!=e.dstExtent&&e.hasOwnProperty("dstExtent")){var n=le.chromeos_update_engine.Extent.verify(e.dstExtent);if(n)return"dstExtent."+n}return null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&!se.isInteger(e.srcOffset)?"srcOffset: integer expected":null},e.fromObject=function(e){if(e instanceof le.chromeos_update_engine.CowMergeOperation)return e;var t=new le.chromeos_update_engine.CowMergeOperation;switch(e.type){case"COW_COPY":case 0:t.type=0;break;case"COW_XOR":case 1:t.type=1;break;case"COW_REPLACE":case 2:t.type=2;break}if(null!=e.srcExtent){if("object"!==Object(re["a"])(e.srcExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.srcExtent: object expected");t.srcExtent=le.chromeos_update_engine.Extent.fromObject(e.srcExtent)}if(null!=e.dstExtent){if("object"!==Object(re["a"])(e.dstExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.dstExtent: object expected");t.dstExtent=le.chromeos_update_engine.Extent.fromObject(e.dstExtent)}return null!=e.srcOffset&&(t.srcOffset=e.srcOffset>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.type=t.enums===String?"COW_COPY":0,n.srcExtent=null,n.dstExtent=null,n.srcOffset=0),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?le.chromeos_update_engine.CowMergeOperation.Type[e.type]:e.type),null!=e.srcExtent&&e.hasOwnProperty("srcExtent")&&(n.srcExtent=le.chromeos_update_engine.Extent.toObject(e.srcExtent,t)),null!=e.dstExtent&&e.hasOwnProperty("dstExtent")&&(n.dstExtent=le.chromeos_update_engine.Extent.toObject(e.dstExtent,t)),null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&(n.srcOffset=e.srcOffset),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="COW_COPY"]=0,t[e[1]="COW_XOR"]=1,t[e[2]="COW_REPLACE"]=2,t}(),e}(),e.PartitionUpdate=function(){function e(e){if(this.newPartitionSignature=[],this.operations=[],this.mergeOperations=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.partitionName=e.string();break;case 2:r.runPostinstall=e.bool();break;case 3:r.postinstallPath=e.string();break;case 4:r.filesystemType=e.string();break;case 5:r.newPartitionSignature&&r.newPartitionSignature.length||(r.newPartitionSignature=[]),r.newPartitionSignature.push(le.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;case 6:r.oldPartitionInfo=le.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:r.newPartitionInfo=le.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:r.operations&&r.operations.length||(r.operations=[]),r.operations.push(le.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 9:r.postinstallOptional=e.bool();break;case 10:r.hashTreeDataExtent=le.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 11:r.hashTreeExtent=le.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 12:r.hashTreeAlgorithm=e.string();break;case 13:r.hashTreeSalt=e.bytes();break;case 14:r.fecDataExtent=le.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 15:r.fecExtent=le.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 16:r.fecRoots=e.uint32();break;case 17:r.version=e.string();break;case 18:r.mergeOperations&&r.mergeOperations.length||(r.mergeOperations=[]),r.mergeOperations.push(le.chromeos_update_engine.CowMergeOperation.decode(e,e.uint32()));break;case 19:r.estimateCowSize=e.uint64();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("partitionName"))throw se.ProtocolError("missing required 'partitionName'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof oe||(e=new oe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(!se.isString(e.partitionName))return"partitionName: string expected";if(null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&"boolean"!==typeof e.runPostinstall)return"runPostinstall: boolean expected";if(null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&!se.isString(e.postinstallPath))return"postinstallPath: string expected";if(null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&!se.isString(e.filesystemType))return"filesystemType: string expected";if(null!=e.newPartitionSignature&&e.hasOwnProperty("newPartitionSignature")){if(!Array.isArray(e.newPartitionSignature))return"newPartitionSignature: array expected";for(var t=0;t>>0),null!=e.version&&(t.version=String(e.version)),e.mergeOperations){if(!Array.isArray(e.mergeOperations))throw TypeError(".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected");t.mergeOperations=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.newPartitionSignature=[],n.operations=[],n.mergeOperations=[]),t.defaults)if(n.partitionName="",n.runPostinstall=!1,n.postinstallPath="",n.filesystemType="",n.oldPartitionInfo=null,n.newPartitionInfo=null,n.postinstallOptional=!1,n.hashTreeDataExtent=null,n.hashTreeExtent=null,n.hashTreeAlgorithm="",t.bytes===String?n.hashTreeSalt="":(n.hashTreeSalt=[],t.bytes!==Array&&(n.hashTreeSalt=se.newBuffer(n.hashTreeSalt))),n.fecDataExtent=null,n.fecExtent=null,n.fecRoots=2,n.version="",se.Long){var r=new se.Long(0,0,!0);n.estimateCowSize=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.estimateCowSize=t.longs===String?"0":0;if(null!=e.partitionName&&e.hasOwnProperty("partitionName")&&(n.partitionName=e.partitionName),null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&(n.runPostinstall=e.runPostinstall),null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&(n.postinstallPath=e.postinstallPath),null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&(n.filesystemType=e.filesystemType),e.newPartitionSignature&&e.newPartitionSignature.length){n.newPartitionSignature=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0):e.estimateCowSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.DynamicPartitionGroup=function(){function e(e){if(this.partitionNames=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.name=e.string();break;case 2:r.size=e.uint64();break;case 3:r.partitionNames&&r.partitionNames.length||(r.partitionNames=[]),r.partitionNames.push(e.string());break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("name"))throw se.ProtocolError("missing required 'name'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof oe||(e=new oe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(!se.isString(e.name))return"name: string expected";if(null!=e.size&&e.hasOwnProperty("size")&&!se.isInteger(e.size)&&!(e.size&&se.isInteger(e.size.low)&&se.isInteger(e.size.high)))return"size: integer|Long expected";if(null!=e.partitionNames&&e.hasOwnProperty("partitionNames")){if(!Array.isArray(e.partitionNames))return"partitionNames: array expected";for(var t=0;t>>0,e.size.high>>>0).toNumber(!0))),e.partitionNames){if(!Array.isArray(e.partitionNames))throw TypeError(".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected");t.partitionNames=[];for(var n=0;n>>0,e.size.high>>>0).toNumber(!0):e.size),e.partitionNames&&e.partitionNames.length){n.partitionNames=[];for(var a=0;a>>3){case 1:r.groups&&r.groups.length||(r.groups=[]),r.groups.push(le.chromeos_update_engine.DynamicPartitionGroup.decode(e,e.uint32()));break;case 2:r.snapshotEnabled=e.bool();break;case 3:r.vabcEnabled=e.bool();break;case 4:r.vabcCompressionParam=e.string();break;case 5:r.cowVersion=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof oe||(e=new oe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.groups&&e.hasOwnProperty("groups")){if(!Array.isArray(e.groups))return"groups: array expected";for(var t=0;t>>0),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.groups=[]),t.defaults&&(n.snapshotEnabled=!1,n.vabcEnabled=!1,n.vabcCompressionParam="",n.cowVersion=0),e.groups&&e.groups.length){n.groups=[];for(var r=0;r>>3){case 1:r.packageName=e.string();break;case 2:r.version=e.int64();break;case 3:r.isCompressed=e.bool();break;case 4:r.decompressedSize=e.int64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof oe||(e=new oe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null!=e.packageName&&e.hasOwnProperty("packageName")&&!se.isString(e.packageName)?"packageName: string expected":null==e.version||!e.hasOwnProperty("version")||se.isInteger(e.version)||e.version&&se.isInteger(e.version.low)&&se.isInteger(e.version.high)?null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&"boolean"!==typeof e.isCompressed?"isCompressed: boolean expected":null==e.decompressedSize||!e.hasOwnProperty("decompressedSize")||se.isInteger(e.decompressedSize)||e.decompressedSize&&se.isInteger(e.decompressedSize.low)&&se.isInteger(e.decompressedSize.high)?null:"decompressedSize: integer|Long expected":"version: integer|Long expected"},e.fromObject=function(e){if(e instanceof le.chromeos_update_engine.ApexInfo)return e;var t=new le.chromeos_update_engine.ApexInfo;return null!=e.packageName&&(t.packageName=String(e.packageName)),null!=e.version&&(se.Long?(t.version=se.Long.fromValue(e.version)).unsigned=!1:"string"===typeof e.version?t.version=parseInt(e.version,10):"number"===typeof e.version?t.version=e.version:"object"===Object(re["a"])(e.version)&&(t.version=new se.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber())),null!=e.isCompressed&&(t.isCompressed=Boolean(e.isCompressed)),null!=e.decompressedSize&&(se.Long?(t.decompressedSize=se.Long.fromValue(e.decompressedSize)).unsigned=!1:"string"===typeof e.decompressedSize?t.decompressedSize=parseInt(e.decompressedSize,10):"number"===typeof e.decompressedSize?t.decompressedSize=e.decompressedSize:"object"===Object(re["a"])(e.decompressedSize)&&(t.decompressedSize=new se.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber())),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(n.packageName="",se.Long){var r=new se.Long(0,0,!1);n.version=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.version=t.longs===String?"0":0;if(n.isCompressed=!1,se.Long){var a=new se.Long(0,0,!1);n.decompressedSize=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.decompressedSize=t.longs===String?"0":0}return null!=e.packageName&&e.hasOwnProperty("packageName")&&(n.packageName=e.packageName),null!=e.version&&e.hasOwnProperty("version")&&("number"===typeof e.version?n.version=t.longs===String?String(e.version):e.version:n.version=t.longs===String?se.Long.prototype.toString.call(e.version):t.longs===Number?new se.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber():e.version),null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&(n.isCompressed=e.isCompressed),null!=e.decompressedSize&&e.hasOwnProperty("decompressedSize")&&("number"===typeof e.decompressedSize?n.decompressedSize=t.longs===String?String(e.decompressedSize):e.decompressedSize:n.decompressedSize=t.longs===String?se.Long.prototype.toString.call(e.decompressedSize):t.longs===Number?new se.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber():e.decompressedSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.ApexMetadata=function(){function e(e){if(this.apexInfo=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(le.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof oe||(e=new oe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.apexInfo&&e.hasOwnProperty("apexInfo")){if(!Array.isArray(e.apexInfo))return"apexInfo: array expected";for(var t=0;t>>3){case 1:r.installOperations&&r.installOperations.length||(r.installOperations=[]),r.installOperations.push(le.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 2:r.kernelInstallOperations&&r.kernelInstallOperations.length||(r.kernelInstallOperations=[]),r.kernelInstallOperations.push(le.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 3:r.blockSize=e.uint32();break;case 4:r.signaturesOffset=e.uint64();break;case 5:r.signaturesSize=e.uint64();break;case 6:r.oldKernelInfo=le.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:r.newKernelInfo=le.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:r.oldRootfsInfo=le.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 9:r.newRootfsInfo=le.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 10:r.oldImageInfo=le.chromeos_update_engine.ImageInfo.decode(e,e.uint32());break;case 11:r.newImageInfo=le.chromeos_update_engine.ImageInfo.decode(e,e.uint32());break;case 12:r.minorVersion=e.uint32();break;case 13:r.partitions&&r.partitions.length||(r.partitions=[]),r.partitions.push(le.chromeos_update_engine.PartitionUpdate.decode(e,e.uint32()));break;case 14:r.maxTimestamp=e.int64();break;case 15:r.dynamicPartitionMetadata=le.chromeos_update_engine.DynamicPartitionMetadata.decode(e,e.uint32());break;case 16:r.partialUpdate=e.bool();break;case 17:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(le.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof oe||(e=new oe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.installOperations&&e.hasOwnProperty("installOperations")){if(!Array.isArray(e.installOperations))return"installOperations: array expected";for(var t=0;t>>0),null!=e.signaturesOffset&&(se.Long?(t.signaturesOffset=se.Long.fromValue(e.signaturesOffset)).unsigned=!0:"string"===typeof e.signaturesOffset?t.signaturesOffset=parseInt(e.signaturesOffset,10):"number"===typeof e.signaturesOffset?t.signaturesOffset=e.signaturesOffset:"object"===Object(re["a"])(e.signaturesOffset)&&(t.signaturesOffset=new se.LongBits(e.signaturesOffset.low>>>0,e.signaturesOffset.high>>>0).toNumber(!0))),null!=e.signaturesSize&&(se.Long?(t.signaturesSize=se.Long.fromValue(e.signaturesSize)).unsigned=!0:"string"===typeof e.signaturesSize?t.signaturesSize=parseInt(e.signaturesSize,10):"number"===typeof e.signaturesSize?t.signaturesSize=e.signaturesSize:"object"===Object(re["a"])(e.signaturesSize)&&(t.signaturesSize=new se.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0))),null!=e.oldKernelInfo){if("object"!==Object(re["a"])(e.oldKernelInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.oldKernelInfo: object expected");t.oldKernelInfo=le.chromeos_update_engine.PartitionInfo.fromObject(e.oldKernelInfo)}if(null!=e.newKernelInfo){if("object"!==Object(re["a"])(e.newKernelInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.newKernelInfo: object expected");t.newKernelInfo=le.chromeos_update_engine.PartitionInfo.fromObject(e.newKernelInfo)}if(null!=e.oldRootfsInfo){if("object"!==Object(re["a"])(e.oldRootfsInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.oldRootfsInfo: object expected");t.oldRootfsInfo=le.chromeos_update_engine.PartitionInfo.fromObject(e.oldRootfsInfo)}if(null!=e.newRootfsInfo){if("object"!==Object(re["a"])(e.newRootfsInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.newRootfsInfo: object expected");t.newRootfsInfo=le.chromeos_update_engine.PartitionInfo.fromObject(e.newRootfsInfo)}if(null!=e.oldImageInfo){if("object"!==Object(re["a"])(e.oldImageInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.oldImageInfo: object expected");t.oldImageInfo=le.chromeos_update_engine.ImageInfo.fromObject(e.oldImageInfo)}if(null!=e.newImageInfo){if("object"!==Object(re["a"])(e.newImageInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.newImageInfo: object expected");t.newImageInfo=le.chromeos_update_engine.ImageInfo.fromObject(e.newImageInfo)}if(null!=e.minorVersion&&(t.minorVersion=e.minorVersion>>>0),e.partitions){if(!Array.isArray(e.partitions))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected");t.partitions=[];for(var a=0;a>>0,e.maxTimestamp.high>>>0).toNumber())),null!=e.dynamicPartitionMetadata){if("object"!==Object(re["a"])(e.dynamicPartitionMetadata))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected");t.dynamicPartitionMetadata=le.chromeos_update_engine.DynamicPartitionMetadata.fromObject(e.dynamicPartitionMetadata)}if(null!=e.partialUpdate&&(t.partialUpdate=Boolean(e.partialUpdate)),e.apexInfo){if(!Array.isArray(e.apexInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected");t.apexInfo=[];for(var o=0;o>>0,e.signaturesOffset.high>>>0).toNumber(!0):e.signaturesOffset),null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&("number"===typeof e.signaturesSize?n.signaturesSize=t.longs===String?String(e.signaturesSize):e.signaturesSize:n.signaturesSize=t.longs===String?se.Long.prototype.toString.call(e.signaturesSize):t.longs===Number?new se.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0):e.signaturesSize),null!=e.oldKernelInfo&&e.hasOwnProperty("oldKernelInfo")&&(n.oldKernelInfo=le.chromeos_update_engine.PartitionInfo.toObject(e.oldKernelInfo,t)),null!=e.newKernelInfo&&e.hasOwnProperty("newKernelInfo")&&(n.newKernelInfo=le.chromeos_update_engine.PartitionInfo.toObject(e.newKernelInfo,t)),null!=e.oldRootfsInfo&&e.hasOwnProperty("oldRootfsInfo")&&(n.oldRootfsInfo=le.chromeos_update_engine.PartitionInfo.toObject(e.oldRootfsInfo,t)),null!=e.newRootfsInfo&&e.hasOwnProperty("newRootfsInfo")&&(n.newRootfsInfo=le.chromeos_update_engine.PartitionInfo.toObject(e.newRootfsInfo,t)),null!=e.oldImageInfo&&e.hasOwnProperty("oldImageInfo")&&(n.oldImageInfo=le.chromeos_update_engine.ImageInfo.toObject(e.oldImageInfo,t)),null!=e.newImageInfo&&e.hasOwnProperty("newImageInfo")&&(n.newImageInfo=le.chromeos_update_engine.ImageInfo.toObject(e.newImageInfo,t)),null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&(n.minorVersion=e.minorVersion),e.partitions&&e.partitions.length){n.partitions=[];for(var l=0;l>>0,e.maxTimestamp.high>>>0).toNumber():e.maxTimestamp),null!=e.dynamicPartitionMetadata&&e.hasOwnProperty("dynamicPartitionMetadata")&&(n.dynamicPartitionMetadata=le.chromeos_update_engine.DynamicPartitionMetadata.toObject(e.dynamicPartitionMetadata,t)),null!=e.partialUpdate&&e.hasOwnProperty("partialUpdate")&&(n.partialUpdate=e.partialUpdate),e.apexInfo&&e.apexInfo.length){n.apexInfo=[];for(var c=0;c0&&void 0!==arguments[0]?arguments[0]:"";return Object(he["a"])(this,n),e=t.call(this),e.offset=0,e.contentType=r,e.blob=new Blob([],{type:r}),e.prefixLength=0,e}return Object(de["a"])(n,[{key:"readHeader",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r,a,o,i,s,l,c,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return n=0,r=function(e){var r=Le(t,n,e);return n+=e,r},e.next=4,t.slice(0,Ie).arrayBuffer();case 4:if(a=e.sent,o=new TextDecoder,i=a.slice(0,we.length),s=o.decode(i),s==we){e.next=10;break}throw new Error("MAGIC is not correct, expected: ".concat(we," actual: ").concat(s));case 10:return n+=we.length,e.next=13,r(ve);case 13:return l=e.sent,e.next=16,r(xe);case 16:if(c=e.sent,l==Se){e.next=19;break}throw new Error("Unexpected major version number: ".concat(l));case 19:return e.next=21,r(ke);case 21:u=e.sent,this.header=new Ee(s,l,c,u);case 23:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"writeUint8Array",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(Object(pe["a"])(Object(fe["a"])(n.prototype),"writeUint8Array",this).call(this,t),this.blob=new Blob([this.blob,t.buffer],{type:this.contentType}),this.offset=this.blob.size,!(this.offset>=Ie&&0==this.prefixLength)){e.next=9;break}return console.log("Parsing header!"),e.next=7,this.readHeader(this.blob);case 7:this.prefixLength=Ie+this.header.manifest_len+this.header.metadata_signature_len,console.log("Computed metadata length: ".concat(this.prefixLength));case 9:if(!(this.prefixLength>0)){e.next=14;break}if(console.log("".concat(this.offset,"/").concat(this.prefixLength)),!(this.offset>=this.prefixLength)){e.next=14;break}throw this.blob=this.blob.slice(0,this.prefixLength),new Pe;case 14:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getData",value:function(){return this.blob}}]),n}(Oe["Writer"]),Te=function(){function e(t){Object(he["a"])(this,e),t instanceof File?this.zipreader=new Oe["ZipReader"](new Oe["BlobReader"](t)):t instanceof URL?this.zipreader=new Oe["ZipReader"](new Oe["HttpReader"](t.href)):this.zipreader=t.reader}return Object(de["a"])(e,[{key:"getMetadataLength",value:function(){return Ie+this.header.manifest_len+this.header.metadata_signature_len}},{key:"unzip",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a,o,i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.zipreader.getEntries();case 2:t=e.sent,n=Object(ue["a"])(t),e.prev=4,n.s();case 6:if((r=n.n()).done){e.next=35;break}if(a=r.value,"payload.bin"!=a.filename){e.next=28;break}return o=new Ae(""),e.prev=10,e.next=13,a.getData(o);case 13:e.next=22;break;case 15:if(e.prev=15,e.t0=e["catch"](10),!(e.t0 instanceof Pe)){e.next=20;break}e.next=22;break;case 20:throw console.log(e.t0),e.t0;case 22:return this.buffer=o.getData(),e.next=25,this.readManifest(this.buffer,o.header);case 25:console.log("AB OTA manifest parsed"),e.next=33;break;case 28:if("META-INF/com/android/metadata"!=a.filename){e.next=33;break}return e.next=31,a.getData(new Oe["TextWriter"]);case 31:this.metadata=e.sent,console.log("OTA Package metadata parsed");case 33:e.next=6;break;case 35:e.next=40;break;case 37:e.prev=37,e.t1=e["catch"](4),n.e(e.t1);case 40:return e.prev=40,n.f(),e.finish(40);case 43:if(this.manifest){e.next=57;break}return console.log("Failed to parse AB OTA package, falling back to non-AB"),e.prev=45,i=new ye(this.zipreader),e.next=49,i.init();case 49:i.nonAB=!0,this.manifest=i,e.next=57;break;case 53:return e.prev=53,e.t2=e["catch"](45),alert("Please select a legit OTA package"),e.abrupt("return");case 57:case"end":return e.stop()}}),e,this,[[4,37,40,43],[10,15],[45,53]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"readManifest",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,o;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.header=n,r=Ie,e.next=4,t.slice(r,r+n.manifest_len).arrayBuffer();case 4:return a=e.sent,r+=n.manifest_len,this.manifest=ce.DeltaArchiveManifest.decode(new Uint8Array(a)),e.next=9,t.slice(r,r+n.metadata_signature_len).arrayBuffer();case 9:o=e.sent,r+=n.metadata_signature_len,this.metadata_signature=ce.Signatures.decode(new Uint8Array(o)),this.manifest.nonAB=!1;case 13:case"end":return e.stop()}}),e,this)})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"parseMetadata",value:function(){var e,t=Object(ue["a"])(_e);try{for(t.s();!(e=t.n()).done;){var n=e.value,r=new RegExp(n.prefix+".+");this.metadata.match(r)?this[n.key]=Re(this.metadata.match(r)[0],n.prefix):this[n.key]=""}}catch(a){t.e(a)}finally{t.f()}}},{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.unzip();case 2:this.parseMetadata();case 3:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}]),e}(),Be=function(e){Object(ge["a"])(n,e);var t=Object(be["a"])(n);function n(){return Object(he["a"])(this,n),t.apply(this,arguments)}return Object(de["a"])(n,[{key:"getWithDefault",value:function(e){return this.has(e)?this.get(e):e}}]),n}(Object(me["a"])(Map)),Ne=Object(de["a"])((function e(){Object(he["a"])(this,e);var t=ce.InstallOperation.Type;this.mapType=new Be;for(var n=0,r=Object.keys(t);n1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:16,r="",a=0;a3&&void 0!==arguments[3]?arguments[3]:15;Object(he["a"])(this,e),this.statisticData=t,this.trimmedData=Qe(t,a),this.title=n,this.unit=r,this.maximumEntries=a}return Object(de["a"])(e,[{key:"listData",value:function(){var e,t="",n=Object(ue["a"])(this.statisticData);try{for(n.s();!(e=n.n()).done;){var r=Object($e["a"])(e.value,2),a=r[0],o=r[1];t+=a+" : "+o.toString()+" Blocks\n"}}catch(i){n.e(i)}finally{n.f()}return t}},{key:"getEchartsOption",value:function(){var e={};return e.title={text:this.title,left:"center"},e.tooltip={trigger:"item",formatter:"{a}
{b} : {c} "+this.unit+" ({d}%)"},e.legend={orient:"horizontal",left:"top",top:"10%",data:Array.from(this.trimmedData.keys())},e.series=[{name:this.title,type:"pie",radius:"55%",center:["50%","60%"],data:Array.from(this.trimmedData).map((function(e){return{value:e[1],name:e[0]}})),emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],e}}]),e}();function Qe(e,t){if(e.size<=t)return e;for(var n=new Map,r=0;ro&&(o=u,i=c)}}catch(m){s.e(m)}finally{s.f()}n.set(i,o)}var p,f=0,d=Object(ue["a"])(e);try{for(d.s();!(p=d.n()).done;){var h=Object($e["a"])(p.value,2),g=h[0],b=h[1];n.get(g)||(f+=b)}}catch(m){d.e(m)}finally{d.f()}return n.set("other",f),n}var et=function(){function e(t){Object(he["a"])(this,e),t instanceof File?this.build=new Oe["ZipReader"](new Oe["BlobReader"](t)):this.build=new Oe["ZipReader"](new Oe["HttpReader"](t.href)),this.mapFiles=new Map,this.maps=new Map}return Object(de["a"])(e,[{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a=this;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.build.getEntries();case 2:t=e.sent,n=/IMAGES\/[a-z_]*\.map/g,r=/[\w_]+(?=\.map)/g,t.forEach((function(e){e.filename.match(n)&&a.mapFiles.set(e.filename.match(r)[0],e)}));case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"add",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,o,i,s,l,c,u,p,f,d,h,g;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:for(r=[],a=/\d+/g,o=/\d+\-\d+/g,i=0;i");if(!this.mapFiles.get(t)){e.next=14;break}return e.next=7,this.mapFiles.get(t).getData(new Oe["TextWriter"]);case 7:s=e.sent,l=s.split("\n"),c=Object(ue["a"])(l);try{for(c.s();!(u=c.n()).done;)for(p=u.value,f=p.split(" "),d=1;d2&&void 0!==s[2]?s[2]:4096,a=s.length>3&&void 0!==s[3]?s[3]:null,e.t0=t,e.next="blocks"===e.t0?5:"payload"===e.t0?8:"COWmerge"===e.t0?11:"filenames"===e.t0?14:"extensions"===e.t0?21:28;break;case 5:return o=at(n),i=new Ye(o,"Operated blocks in target build","blocks"),e.abrupt("break",28);case 8:return o=it(n),i=new Ye(o,"Payload disk usage","bytes"),e.abrupt("break",28);case 11:return o=ot(n,r),i=new Ye(o,"COW merge operations","blocks"),e.abrupt("break",28);case 14:if(null!=a){e.next=16;break}throw new Error("Target file is required for filenames analysis");case 16:return e.next=18,ct(n,r,a);case 18:return o=e.sent,i=new Ye(o,"Size of operated filenames","bytes"),e.abrupt("break",28);case 21:if(null!=a){e.next=23;break}throw new Error("Target file is required for filenames analysis");case 23:return e.next=25,st(n,r,a);case 25:return o=e.sent,i=new Ye(o,"Size of operated extensions","bytes"),e.abrupt("break",28);case 28:if(!i){e.next=32;break}return e.abrupt("return",i);case 32:throw"Please double check if this is a proper AB OTA package.";case 33:case"end":return e.stop()}}),e)}))),ft.apply(this,arguments)}function dt(e){if(!e)return 0;var t=function(e,t){return e+t.numBlocks};return e.reduce(t,0)}function ht(e){var t=function(e,t){return e+"("+t.startBlock+","+t.numBlocks+")"};return e.reduce(t,"")}function gt(e,t,n){for(var r=dt(t),a=new Map,o=0;o1?t[t.length-1]:"unknown"===t[0]?"unknown":"<"==e[0]&&e.endsWith(">")?e:"no-extension"}var mt=Object(r["m"])({props:{operation:{type:Object,required:!0},mapType:{type:Be,required:!0}},data:function(){return{srcTotalBlocks:0,srcBlocks:"",dstTotalBlocks:0,dstBlocks:""}},mounted:function(){this.operation.srcExtents&&(this.srcTotalBlocks=dt(this.operation.srcExtents),this.srcBlocks=ht(this.operation.srcExtents)),this.operation.dstExtents&&(this.dstTotalBlocks=dt(this.operation.dstExtents),this.dstBlocks=ht(this.operation.dstExtents))}});n("8edb");mt.render=Ge,mt.__scopeId="data-v-44174082";var Ot=mt,yt=Object(r["m"])({components:{OperationDetail:Ot},props:{partition:{type:ce.PartitionUpdate,required:!0},dynamicPartitionList:{type:Array,required:!0}},data:function(){return{showOPs:!1,showInfo:!1,opType:new Ne}},methods:{toggle:function(e){this[e]=!this[e]},octToHex:De},computed:{readableTimestamp:function(){var e=parseInt(this.partition.version);return isNaN(e)?"":new Date(1e3*e).toString()},isDynamicPartition:function(){return this.dynamicPartitionList.indexOf(this.partition.partitionName)>=0}}});n("edc2");yt.render=ne,yt.__scopeId="data-v-6dba348a";var jt=yt,wt=(n("498a"),Object(r["Z"])("data-v-0514c264"));Object(r["D"])("data-v-0514c264");var vt=Object(r["l"])("h3",null,"Basic infos",-1),xt={class:"align"},kt=Object(r["l"])("strong",null," File name ",-1),It=Object(r["l"])("strong",null," File size ",-1),St={class:"align"},_t={class:"wrap"},Pt={key:2},Et={class:"align"},Lt=Object(r["l"])("strong",null," Incremental ",-1),zt={key:0},At={key:1},Tt=Object(r["l"])("strong",null," Partial ",-1),Bt={key:0},Nt={key:1},Ct=Object(r["l"])("strong",null," A/B update ",-1),Dt={key:0},Rt={key:1},Mt=Object(r["l"])("strong",null," VAB ",-1),Ft={key:0},Vt={key:1},Ut=Object(r["l"])("strong",null," VABC ",-1),Ht={key:0},Kt={key:1},Wt={key:0},Jt=Object(r["l"])("strong",null," Total Dynamic Partition Size ",-1),Zt={key:1},Xt=Object(r["l"])("strong",null," Total VABC COW Size ",-1);Object(r["B"])();var qt=wt((function(e,t,n,a,o,i){return Object(r["A"])(),Object(r["i"])(r["a"],null,[vt,e.zipFile?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:0},e.$attrs),[Object(r["l"])("ul",xt,[Object(r["l"])("li",null,[kt,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileName()),1)]),Object(r["l"])("li",null,[It,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileSize())+" Bytes",1)])])],16)):Object(r["j"])("",!0),e.payload&&e.payload.metadata?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:1},e.$attrs),[Object(r["l"])("ul",St,[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.otaMetadata,(function(t){return Object(r["A"])(),Object(r["i"])("li",{key:t.name},[Object(r["l"])("strong",null,Object(r["N"])(t.name.trim()+" "),1),Object(r["l"])("p",_t,Object(r["N"])(String(e.payload[t.key]).trim()),1)])})),128))])],16)):Object(r["j"])("",!0),e.payload&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])("div",Pt,[Object(r["l"])("ul",Et,[Object(r["l"])("li",null,[Lt,e.payload.preBuild?(Object(r["A"])(),Object(r["i"])("span",zt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",At," ❌ "))]),Object(r["l"])("li",null,[Tt,e.payload.manifest.partialUpdate?(Object(r["A"])(),Object(r["i"])("span",Bt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Nt," ❌ "))]),Object(r["l"])("li",null,[Ct,e.payload.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",Rt," ❌ ")):(Object(r["A"])(),Object(r["i"])("span",Dt," ✅ "))]),Object(r["l"])("li",null,[Mt,e.payload.manifest.dynamicPartitionMetadata.snapshotEnabled?(Object(r["A"])(),Object(r["i"])("span",Ft," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Vt," ❌ "))]),Object(r["l"])("li",null,[Ut,e.payload.manifest.dynamicPartitionMetadata.vabcEnabled?(Object(r["A"])(),Object(r["i"])("span",Ht," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Kt," ❌ "))]),e.totalDynamicPartitionSize?(Object(r["A"])(),Object(r["i"])("li",Wt,[Jt,Object(r["k"])(" "+Object(r["N"])(e.totalDynamicPartitionSize),1)])):Object(r["j"])("",!0),e.totalCOWSize?(Object(r["A"])(),Object(r["i"])("li",Zt,[Xt,Object(r["k"])(" "+Object(r["N"])(e.totalCOWSize),1)])):Object(r["j"])("",!0)])])):Object(r["j"])("",!0)],64)})),Gt=(n("4de4"),n("6062"),n("2ca0"),function(){function e(t){Object(he["a"])(this,e),this.file=t,this.reader=Qt(t)}return Object(de["a"])(e,[{key:"getFileName",value:function(){return en(this.file)}},{key:"getFileSize",value:function(){return this.file instanceof File?this.file.size:0}}]),e}());function $t(e,t){return Yt.apply(this,arguments)}function Yt(){return Yt=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,o,i,s,l,c,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return r=t,a=new Oe["ZipWriter"](new Oe["BlobWriter"]("application/zip")),e.next=4,r.getEntries();case 4:o=e.sent,i=Object(ue["a"])(o.filter((function(e){return!!e&&n(e)}))),e.prev=6,i.s();case 8:if((s=i.n()).done){e.next=18;break}return l=s.value,c=new Oe["BlobWriter"],e.next=13,l.getData(c);case 13:u=e.sent,console.log("Adding ".concat(l.filename,", ").concat(u.size)),a.add(l.filename,new Oe["BlobReader"](c.getData()),{level:0});case 16:e.next=8;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e["catch"](6),i.e(e.t0);case 23:return e.prev=23,i.f(),e.finish(23);case 26:return e.abrupt("return",a);case 27:case"end":return e.stop()}}),e,null,[[6,20,23,26]])}))),Yt.apply(this,arguments)}function Qt(e){return e instanceof File?new Oe["ZipReader"](new Oe["BlobReader"](e)):new Oe["ZipReader"](new Oe["HttpReader"](e.href))}function en(e){return e instanceof File?e.name:e.pathname}function tn(e){return nn.apply(this,arguments)}function nn(){return nn=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,$t(Qt(t),(function(e){return e.filename.startsWith("META/")||e.filename.endsWith(".map")}));case 2:return n=e.sent,e.next=5,n.close();case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)}))),nn.apply(this,arguments)}function rn(e){return an.apply(this,arguments)}function an(){return an=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,$t(t.zipreader,(function(e){return"payload.bin"!=e.filename}));case 2:return n=e.sent,e.next=5,n.add("payload.bin",new Oe["BlobReader"](t.buffer.slice(0,t.getMetadataLength())),{level:0});case 5:return e.next=7,n.close();case 7:return r=e.sent,e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)}))),an.apply(this,arguments)}function on(e,t,n){var r=window.URL.createObjectURL(e);t.href=r,t.download=n,t.click(),window.URL.revokeObjectURL(r)}function sn(e,t){return e.endsWith(t)?e:e+t}var ln=Object(r["m"])({props:{zipFile:{type:Gt,required:!0},payload:{type:Te,required:!0}},data:function(){return{MetadataFormat:_e}},computed:{otaMetadata:function(){var e=this;return _e.filter((function(t){return String(e.payload[t.key]).length>0}))},totalCOWSize:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.partitions.map((function(e){return e.estimateCowSize||0}));return n?n.reduce((function(e,t){return e+t})):0},totalDynamicPartitionSize:function(){var e,t,n,r,a=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.groups;if(!a)return 0;var o=new Set(a.flatMap((function(e){return e.partitionNames}))),i=(null===(r=this.payload.manifest)||void 0===r?void 0:r.partitions.filter((function(e){return o.has(e.partitionName)})))||[];return i.length<=0?0:i.map((function(e){var t;return(null===(t=e.newPartitionInfo)||void 0===t?void 0:t.size)||0})).reduce((function(e,t){return e+t}))}}});n("afa7");ln.render=qt,ln.__scopeId="data-v-0514c264";var cn=ln,un=Object(r["m"])({components:{PartitionDetail:jt,BasicInfo:cn},props:{zipFile:{type:Gt,default:null},payload:{type:Te,default:null}},methods:{octToHex:De,exportOTAPackage:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,rn(e.payload);case 2:n=t.sent,r=e.$refs["download"],on(n,r,"trimmed_"+sn(e.zipFile.getFileName(),".zip"));case 5:case"end":return t.stop()}}),t)})))()}},computed:{dynamicPartitions:function(){var e,t,n;return(null===(e=this.payload.manifest)||void 0===e||null===(t=e.dynamicPartitionMetadata)||void 0===t||null===(n=t.groups)||void 0===n?void 0:n.flatMap((function(e){return e.partitionNames||[]})))||[]}}});n("dc41");un.render=A,un.__scopeId="data-v-05db67f2";var pn=un,fn=Object(r["Z"])("data-v-44b569bd");Object(r["D"])("data-v-44b569bd");var dn=Object(r["k"])("Export Target File Metadata"),hn={ref:"download"},gn={key:1},bn=Object(r["k"])(" Analyse Installed Blocks (in target build) "),mn=Object(r["k"])(" Analyse Payload Composition "),On=Object(r["k"])(" Analyse COW Merge Operations "),yn={key:0,class:"tooltiptext"},jn=Object(r["k"])(" Analyse Filenames "),wn=Object(r["k"])(" Analyse File Extensions ");Object(r["B"])();var vn=fn((function(e,t,n,a,o,i){var s=Object(r["I"])("v-btn"),l=Object(r["I"])("PartialCheckbox"),c=Object(r["I"])("PieChart"),u=Object(r["I"])("v-divider"),p=Object(r["I"])("v-col"),f=Object(r["I"])("v-row"),d=Object(r["I"])("BaseFile");return Object(r["A"])(),Object(r["i"])(r["a"],null,[e.targetFile?(Object(r["A"])(),Object(r["i"])(s,{key:0,block:"",class:"md-6",onClick:e.exportTargetFileMetadata},{default:fn((function(){return[dn]})),_:1},8,["onClick"])):Object(r["j"])("",!0),Object(r["l"])("a",hn,null,512),Object(r["l"])(l,{modelValue:e.partitionInclude,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.partitionInclude=t}),labels:e.updatePartitions},null,8,["modelValue","labels"]),e.echartsData?(Object(r["A"])(),Object(r["i"])("div",gn,[Object(r["l"])(c,{echartsData:e.echartsData,onClick:e.piechartClick},null,8,["echartsData","onClick"])])):Object(r["j"])("",!0),Object(r["l"])(u),Object(r["l"])(f,null,{default:fn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"},{default:fn((function(){return[Object(r["l"])(s,{block:"",onClick:t[2]||(t[2]=function(t){return e.updateChart("blocks")})},{default:fn((function(){return[bn]})),_:1})]})),_:1}),Object(r["l"])(p,{cols:"12",md:"6"},{default:fn((function(){return[Object(r["l"])(s,{block:"",onClick:t[3]||(t[3]=function(t){return e.updateChart("payload")})},{default:fn((function(){return[mn]})),_:1})]})),_:1})]})),_:1}),Object(r["l"])(f,null,{default:fn((function(){return[Object(r["l"])(p,{cols:"12",md:"6",class:"tooltip"},{default:fn((function(){return[Object(r["l"])(s,{disabled:e.manifest.nonAB||!e.manifest.dynamicPartitionMetadata.vabcEnabled,title:"Only available for VABC update",block:"",onClick:t[4]||(t[4]=function(t){return e.updateChart("COWmerge")})},{default:fn((function(){return[On]})),_:1},8,["disabled"]),e.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",yn," This function is only supported in A/B OTA ")):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(p,{cols:"12",md:"6"},{default:fn((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[5]||(t[5]=function(t){return e.updateChart("filenames")})},{default:fn((function(){return[jn]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),Object(r["l"])(f,null,{default:fn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"},{default:fn((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[6]||(t[6]=function(t){return e.updateChart("extensions")})},{default:fn((function(){return[wn]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),Object(r["l"])(f,null,{default:fn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"}),Object(r["l"])(p,{cols:"12",md:"6"},{default:fn((function(){return[e.demo?Object(r["j"])("",!0):(Object(r["A"])(),Object(r["i"])(d,{key:0,label:"Drag and drop or Select The target Android build",onFileSelect:e.selectBuild},null,8,["onFileSelect"]))]})),_:1})]})),_:1})],64)})),xn=n("bc3a"),kn=n.n(xn),In=Object(r["Z"])("data-v-533f2336");Object(r["D"])("data-v-533f2336");var Sn={key:0};Object(r["B"])();var _n=In((function(e,t,n,a,o,i){var s=Object(r["I"])("v-btn"),l=Object(r["I"])("v-col"),c=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(r["a"],null,[Object(r["l"])(s,{block:"",type:"button",class:"my-5",onClick:e.revertAllSelection},{default:In((function(){return[Object(r["k"])(Object(r["N"])(e.selectAllText[e.selectAll]),1)]})),_:1},8,["onClick"]),Object(r["l"])(c,{class:"mb-5"},{default:In((function(){return[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.labels,(function(n){return Object(r["A"])(),Object(r["i"])(l,{key:n,cols:"12",md:"4"},{default:In((function(){return[Object(r["l"])("input",{type:"checkbox",value:n,checked:e.modelValue.get(n),onChange:t[1]||(t[1]=function(t){return e.updateSelected(t.target.value)})},null,40,["value","checked"]),n?(Object(r["A"])(),Object(r["i"])("label",Sn,Object(r["N"])(n),1)):Object(r["j"])("",!0)]})),_:2},1024)})),128))]})),_:1})],64)})),Pn=Object(r["m"])({props:{labels:{type:Array,default:new Array},modelValue:{type:Map,default:new Map}},data:function(){return{selectAll:1,selectAllText:["Select All","Unselect All"]}},mounted:function(){var e,t=Object(ue["a"])(this.labels);try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,!0)}}catch(r){t.e(r)}finally{t.f()}},methods:{updateSelected:function(e){this.modelValue.set(e,!this.modelValue.get(e)),this.$emit("update:modelValue",this.modelValue)},revertAllSelection:function(){this.selectAll=1-this.selectAll;var e,t=Object(ue["a"])(this.modelValue.keys());try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,Boolean(this.selectAll))}}catch(r){t.e(r)}finally{t.f()}}}});n("a75a");Pn.render=_n,Pn.__scopeId="data-v-533f2336";var En=Pn,Ln=n("2909"),zn="undefined"===typeof arguments?void 0:arguments,An=Object(r["Z"])("data-v-5d1cb486"),Tn=An((function(e,t,n,a,o,i){var s=Object(r["I"])("v-chart");return Object(r["A"])(),Object(r["i"])(s,{class:"chart",option:i.getEchartsOption,onClick:t[1]||(t[1]=function(t){return e.$emit.apply(e,["click"].concat(Object(Ln["a"])(zn)))})},null,8,["option"])})),Bn=n("ade3"),Nn=n("22b4"),Cn=n("f95e"),Dn=n("49bb"),Rn=n("9394"),Mn=n("2da7"),Fn=n("ff32"),Vn=n("5c7f");Object(Nn["a"])([Cn["a"],Dn["a"],Rn["a"],Mn["a"],Fn["a"]]);var Un={components:{VChart:Vn["b"]},provide:Object(Bn["a"])({},Vn["a"],"dark"),props:{echartsData:{type:Ye,required:!0}},computed:{getEchartsOption:function(){return this.echartsData.getEchartsOption()}}};n("47e0");Un.render=Tn,Un.__scopeId="data-v-5d1cb486";var Hn=Un,Kn=Object(r["m"])({components:{PartialCheckbox:En,PieChart:Hn,BaseFile:x},props:{manifest:{type:ce.DeltaArchiveManifest,default:function(){return[]}},demo:{type:Boolean,default:!1}},data:function(){return{partitionInclude:new Map,echartsData:null,listData:"",targetFile:null}},computed:{updatePartitions:function(){return this.manifest.partitions.map((function(e){return e.partitionName}))}},mounted:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(!e.demo){t.next=11;break}return t.prev=1,t.next=4,kn.a.get("./files/cf_x86_target_file_demo.zip",{responseType:"blob"});case 4:n=t.sent,e.targetFile=new File([n.data],"target_demo.zip"),t.next=11;break;case 8:t.prev=8,t.t0=t["catch"](1),console.log("Please put a proper example target file in /public/files/");case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))()},methods:{piechartClick:function(e){console.log(e)},updateChart:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return r=t.manifest.partitions.filter((function(e){return t.partitionInclude.get(e.partitionName)})),n.prev=1,n.next=4,pt(e,r,t.manifest.blockSize,t.targetFile);case 4:t.echartsData=n.sent,n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Cannot be processed for the following issue: ".concat(n.t0));case 10:case"end":return n.stop()}}),n,null,[[1,7]])})))()},selectBuild:function(e){this.targetFile=e},exportTargetFileMetadata:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,tn(e.targetFile);case 2:n=t.sent,r=e.$refs["download"],on(n,r,"trimmed_"+sn(en(e.targetFile),".zip"));case 5:case"end":return t.stop()}}),t)})))()}}});n("4b95");Kn.render=vn,Kn.__scopeId="data-v-44b569bd";var Wn=Kn,Jn=Object(r["m"])({components:{BaseFile:x,PayloadDetail:pn,PayloadComposition:Wn},data:function(){return{zipFile:null,payload:null}},methods:{unpackOTA:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return t.zipFile=new Gt(e),n.prev=1,t.payload=new Te(t.zipFile),n.next=5,t.payload.init();case 5:n.next=11;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Please check if this is a correct OTA package (.zip). ".concat(n.t0)),console.log(n.t0);case 11:case"end":return n.stop()}}),n,null,[[1,7]])})))()}}});Jn.render=h;var Zn=Jn;function Xn(e,t,n,a,o,i){var s=Object(r["I"])("PayloadDetail"),l=Object(r["I"])("v-col"),c=Object(r["I"])("v-divider"),u=Object(r["I"])("PayloadComposition"),p=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(p,null,{default:Object(r["X"])((function(){return[Object(r["l"])(l,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload?(Object(r["A"])(),Object(r["i"])(s,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(c,{vertical:""}),Object(r["l"])(l,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])(u,{key:0,manifest:e.payload.manifest,demo:!0},null,8,["manifest"])):Object(r["j"])("",!0)]})),_:1})]})),_:1})}var qn=Object(r["m"])({components:{PayloadDetail:pn,PayloadComposition:Wn},data:function(){return{zipFile:null,payload:null}},created:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,kn.a.get("./files/cf_x86_demo.zip",{responseType:"blob"});case 3:return n=t.sent,e.zipFile=new Gt(new File([n.data],"ota_demo.zip")),e.payload=new Te(e.zipFile),t.next=8,e.payload.init();case 8:t.next=13;break;case 10:t.prev=10,t.t0=t["catch"](0),console.log("Please put a proper example OTA in /public/files/");case 13:case"end":return t.stop()}}),t,null,[[0,10]])})))()}});qn.render=Xn;var Gn=qn,$n={class:"about"},Yn=Object(r["l"])("p",null,"A web based tool to inspect Android OTA packages.",-1);function Qn(e,t){return Object(r["A"])(),Object(r["i"])("div",$n,[Yn])}const er={};er.render=Qn;var tr=er,nr=Object(r["Z"])("data-v-50c6f348");Object(r["D"])("data-v-50c6f348");var rr=Object(r["l"])("h1",null,"Not Found!",-1),ar=Object(r["l"])("p",null,[Object(r["l"])("a",{href:"/"},"Go home?")],-1);Object(r["B"])();var or=nr((function(e,t){var n=Object(r["I"])("center");return Object(r["A"])(),Object(r["i"])(n,null,{default:nr((function(){return[rr,ar]})),_:1})}));n("8e71");const ir={};ir.render=or,ir.__scopeId="data-v-50c6f348";var sr=ir,lr=[{path:"/",name:"Analysis",component:Zn,meta:{title:"Analyse OTA package - from AOSP"}},{path:"/demo",name:"Demo",component:Gn},{path:"/about",name:"About",component:tr},{path:"/:catchAll(.*)",name:"Not Found",component:sr}],cr=Object(f["a"])({history:Object(f["b"])("/analyseOTA/"),routes:lr});cr.beforeEach((function(e,t,n){var r=e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.title})),a=(e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})),t.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})));r?document.title=r.meta.title:a&&(document.title=a.meta.title),Array.from(document.querySelectorAll("[data-vue-router-controlled]")).map((function(e){return e.parentNode.removeChild(e)})),n()}));var ur=cr,pr=n("5502"),fr=Object(pr["a"])({state:{},mutations:{},actions:{},modules:{}}),dr=Object(r["h"])(p);dr.use(ur),dr.use(fr),dr.use(s),dr.mount("#app")},d978:function(e,t,n){},dc41:function(e,t,n){"use strict";n("027d")},edc2:function(e,t,n){"use strict";n("c021")}}); +//# sourceMappingURL=app.89660dec.js.map \ No newline at end of file diff --git a/analyseOTA/js/app.89660dec.js.map b/analyseOTA/js/app.89660dec.js.map new file mode 100644 index 0000000..6d80ebd --- /dev/null +++ b/analyseOTA/js/app.89660dec.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?1825","webpack:///./src/components/PieChart.vue?3f25","webpack:///./src/components/BaseFile.vue?5b74","webpack:///./src/components/PayloadComposition.vue?8d59","webpack:///./src/views/NotFound.vue?18b8","webpack:///./src/components/OperationDetail.vue?7823","webpack:///./src/components/PartialCheckbox.vue?cce7","webpack:///./src/components/BasicInfo.vue?a804","webpack:///./src/plugins/vuetify.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?6697","webpack:///./src/views/PackageAnalysis.vue","webpack:///./src/components/BaseFile.vue","webpack:///./src/components/BaseFile.vue?5af0","webpack:///./src/components/BaseFile.vue?408d","webpack:///./src/components/PayloadDetail.vue","webpack:///./src/components/PartitionDetail.vue","webpack:///./src/services/update_metadata_pb.js","webpack:///./src/services/payload_nonab.ts","webpack:///./src/services/payload.ts","webpack:///./src/components/OperationDetail.vue","webpack:///./src/services/echarts_data.ts","webpack:///./src/services/map_parser.ts","webpack:///./src/services/payload_composition.ts","webpack:///./src/components/OperationDetail.vue?0239","webpack:///./src/components/OperationDetail.vue?19cd","webpack:///./src/components/PartitionDetail.vue?7d27","webpack:///./src/components/PartitionDetail.vue?b40d","webpack:///./src/components/BasicInfo.vue","webpack:///./src/services/trim_zip.ts","webpack:///./src/components/BasicInfo.vue?bb39","webpack:///./src/components/BasicInfo.vue?e053","webpack:///./src/components/PayloadDetail.vue?cdd8","webpack:///./src/components/PayloadDetail.vue?a20c","webpack:///./src/components/PayloadComposition.vue","webpack:///./src/components/PartialCheckbox.vue","webpack:///./src/components/PartialCheckbox.vue?fbe3","webpack:///./src/components/PartialCheckbox.vue?59db","webpack:///./src/components/PieChart.vue","webpack:///./src/components/PieChart.vue?1278","webpack:///./src/components/PayloadComposition.vue?3e04","webpack:///./src/components/PayloadComposition.vue?d59c","webpack:///./src/views/PackageAnalysis.vue?3fdf","webpack:///./src/views/PackageAnalysis.vue?2d24","webpack:///./src/views/Demo.vue","webpack:///./src/views/Demo.vue?9616","webpack:///./src/views/Demo.vue?e633","webpack:///./src/views/About.vue","webpack:///./src/views/About.vue?aa81","webpack:///./src/views/NotFound.vue","webpack:///./src/views/NotFound.vue?2812","webpack:///./src/router/index.ts","webpack:///./src/store/index.ts","webpack:///./src/main.ts","webpack:///./src/components/PayloadDetail.vue?0b74","webpack:///./src/components/PartitionDetail.vue?3d89"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","components","directives","theme","defaultTheme","rounded","color","links","link","to","class","fluid","render","style","cols","md","label","unpackOTA","zipFile","payload","vertical","manifest","dragover","dragleave","drop","fileName","ref","type","accept","handleFileChange","placeholder","url","urlKeyup","props","String","default","emits","computed","parsedURL","URL","this","methods","event","currentTarget","target","files","selectedFile","$emit","preventDefault","classList","contains","add","remove","dataTransfer","console","log","error","__scopeId","exportOTAPackage","partitions","partition","partitionName","elevation","hover","shaped","dynamicPartitionList","dynamicPartitions","metadata_signature","nonAB","octToHex","signatures","oldPartitionInfo","isDynamicPartition","estimateCowSize","postinstallPath","toggle","showInfo","size","hash","newPartitionInfo","version","readableTimestamp","showOPs","operations","operation","dataSha256Hash","mapType","opType","$Reader","$protobuf","$Writer","$util","$root","chromeos_update_engine","Extent","properties","keys","startBlock","Long","fromBits","numBlocks","encode","message","writer","uint32","uint64","encodeDelimited","ldelim","decode","reader","end","undefined","len","pos","tag","skipType","decodeDelimited","verify","isInteger","low","high","fromObject","fromValue","unsigned","parseInt","LongBits","toNumber","toObject","options","defaults","long","longs","toString","Number","toJSON","constructor","toJSONOptions","Signatures","emptyArray","Signature","fork","Array","isArray","TypeError","arrays","newBuffer","unpaddedSignatureSize","bytes","fixed32","isString","base64","PartitionInfo","ImageInfo","board","channel","buildChannel","buildVersion","string","InstallOperation","srcExtents","dstExtents","dataOffset","dataLength","srcLength","dstLength","srcSha256Hash","int32","ProtocolError","instance","enums","Type","valuesById","values","CowMergeOperation","srcExtent","dstExtent","srcOffset","PartitionUpdate","newPartitionSignature","mergeOperations","runPostinstall","filesystemType","postinstallOptional","hashTreeDataExtent","hashTreeExtent","hashTreeAlgorithm","hashTreeSalt","fecDataExtent","fecExtent","fecRoots","bool","Boolean","DynamicPartitionGroup","partitionNames","DynamicPartitionMetadata","groups","snapshotEnabled","vabcEnabled","vabcCompressionParam","cowVersion","ApexInfo","packageName","isCompressed","decompressedSize","int64","ApexMetadata","apexInfo","DeltaArchiveManifest","installOperations","kernelInstallOperations","blockSize","signaturesOffset","signaturesSize","oldKernelInfo","newKernelInfo","oldRootfsInfo","newRootfsInfo","oldImageInfo","newImageInfo","minorVersion","maxTimestamp","dynamicPartitionMetadata","partialUpdate","packedFile","Blocksize","regexName","getEntries","entries","entry","filename","match","newPartition","getData","rawText","parseTransferList","lines","split","totalBlocks","entryStashed","maxStashed","Uint8Array","sizeNewData","newDataSize","line","op","elements","reduce","parseRange","RegExp","uncompressedSize","extents","rangeset","regexRange","extent","_MAGIC","_VERSION_SIZE","_MANIFEST_LEN_SIZE","_METADATA_SIGNATURE_LEN_SIZE","_PAYLOAD_HEADER_SIZE","_BRILLO_MAJOR_PAYLOAD_VERSION","MetadataFormat","prefix","Error","magic","manifest_len","metadata_signature_len","readIntAt","buffer","position","DataView","arrayBuffer","view","getBigUint64","offset","a","BigInt","getUint32","b","bigNumber","getUint16","contentType","blob","Blob","prefixLength","cursor","readInt","ret","decoder","TextDecoder","magicBytes","header_version","header","array","readHeader","file","File","zipreader","href","readManifest","metadata","init","alert","manifestBlob","signatureBlob","formatter","regex","trimEntry","unzip","parseMetadata","has","Map","types","set","bufferArray","space","maxLine","hex_table","hex","toUpperCase","getWithDefault","srcTotalBlocks","srcBlocks","dstTotalBlocks","dstBlocks","statisticData","title","unit","maximumEntries","trimmedData","trimMap","table","option","text","left","tooltip","trigger","legend","orient","top","from","series","radius","center","map","pair","emphasis","itemStyle","shadowBlur","shadowOffsetX","shadowColor","new_map","curr","currKey","restTotal","targetFile","build","mapFiles","maps","regexPath","forEach","totalLength","regexNumber","mapText","fileEntries","right","InsertMap","names","ext","queryMap","addNumberToMap","operatedBlockStatistics","operatedBlocks","operationType","mergeOperationStatistics","Math","ceil","operatedPayloadStatistics","operatedFileExtensionsStatistics","operatedFilenamesStatistics","filenameStats","fileExtenstionStats","name2Extension","operatedFilenames","buildMap","operatedFileNames","query","extentDataLength","distributeFilenames","analysePartitions","metrics","statisticsData","echartsData","exts","accumulator","total","displayBlocks","filenames","distributedLengths","round","endsWith","required","mounted","OperationDetail","unixTimestamp","isNaN","Date","indexOf","$attrs","getFileName","getFileSize","otaMetadata","trim","preBuild","totalDynamicPartitionSize","totalCOWSize","getZipReader","trimZip","zip","filter","blobWriter","level","pathname","trimTargetFiles","startsWith","close","trimOTAPackage","getMetadataLength","downloadFile","downloadNode","createObjectURL","download","click","revokeObjectURL","ensureSuffix","str","suffix","cowSizes","dynamicPartitionNamess","Set","flatMap","g","acc","cur","PartitionDetail","BasicInfo","$refs","block","exportTargetFileMetadata","partitionInclude","labels","updatePartitions","piechartClick","updateChart","disabled","demo","selectBuild","revertAllSelection","selectAllText","selectAll","checked","modelValue","updateSelected","$event","newSelect","getEchartsOption","VChart","provide","PartialCheckbox","PieChart","BaseFile","listData","responseType","param","partitionSelected","PayloadDetail","PayloadComposition","created","script","routes","path","component","PackageAnalysis","meta","Demo","About","NotFound","router","history","beforeEach","next","nearestWithTitle","matched","reverse","find","previousNearestWithMeta","metaTags","document","querySelectorAll","el","parentNode","removeChild","state","mutations","actions","app","App","use","store","vuetify","mount"],"mappings":"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","file":"js/app.89660dec.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/analyseOTA/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadComposition.vue?vue&type=style&index=0&id=44b569bd&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BasicInfo.vue?vue&type=style&index=0&id=0514c264&scoped=true&lang=css\"","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport 'vuetify/lib/styles/main.sass'\nimport { createVuetify } from 'vuetify'\nimport * as components from 'vuetify/lib/components'\nimport * as directives from 'vuetify/lib/directives'\n\nexport default createVuetify({\n components,\n directives,\n theme: {\n defaultTheme: 'dark'\n }\n})\n","\n\n\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=ee415730\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n label: {\n type: String,\n default: ''\n }\n },\n emits: {\n 'file-select': null\n },\n data() {\n return {\n fileName: '',\n url: ''\n }\n },\n computed: {\n parsedURL(): URL | null {\n try {\n return new URL(this.url)\n } catch {\n return null\n }\n }\n },\n\n methods: {\n handleFileChange(event: any) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (target.files == null || target.files.length < 1) {\n return\n }\n const selectedFile = target.files![0]\n this.$emit('file-select', selectedFile)\n // If user selects a file, clear the URL component\n this.url = ''\n this.fileName = target.files![0].name\n },\n dragover(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!target.classList.contains('file-hover')) {\n target.classList.add('file-hover')\n }\n },\n dragleave(event: DragEvent) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n target.classList.remove('file-hover')\n },\n drop(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!event.dataTransfer || event.dataTransfer.files.length == 0) {\n return\n }\n target.files = event.dataTransfer.files\n this.handleFileChange(event)\n target.classList.remove('file-hover')\n },\n urlKeyup(event: KeyboardEvent) {\n console.log(this.url)\n if (event.key == 'Enter') {\n const target = event.target as HTMLInputElement\n if (this.parsedURL == null) {\n console.error(`${target.value} is an invalid URL`)\n return\n }\n this.$emit('file-select', this.parsedURL)\n }\n }\n }\n})\n","import { render } from \"./BaseFile.vue?vue&type=template&id=0630c5ec&scoped=true\"\nimport script from \"./BaseFile.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseFile.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-0630c5ec\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\nimport * as $protobuf from \"protobufjs/minimal\";\n\n// Common aliases\nconst $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nconst $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\nexport const chromeos_update_engine = $root.chromeos_update_engine = (() => {\n\n /**\n * Namespace chromeos_update_engine.\n * @exports chromeos_update_engine\n * @namespace\n */\n const chromeos_update_engine = {};\n\n chromeos_update_engine.Extent = (function() {\n\n /**\n * Properties of an Extent.\n * @memberof chromeos_update_engine\n * @interface IExtent\n * @property {number|Long|null} [startBlock] Extent startBlock\n * @property {number|Long|null} [numBlocks] Extent numBlocks\n */\n\n /**\n * Constructs a new Extent.\n * @memberof chromeos_update_engine\n * @classdesc Represents an Extent.\n * @implements IExtent\n * @constructor\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n */\n function Extent(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Extent startBlock.\n * @member {number|Long} startBlock\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.startBlock = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Extent numBlocks.\n * @member {number|Long} numBlocks\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.numBlocks = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new Extent instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n * @returns {chromeos_update_engine.Extent} Extent instance\n */\n Extent.create = function create(properties) {\n return new Extent(properties);\n };\n\n /**\n * Encodes the specified Extent message. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startBlock != null && Object.hasOwnProperty.call(message, \"startBlock\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.startBlock);\n if (message.numBlocks != null && Object.hasOwnProperty.call(message, \"numBlocks\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.numBlocks);\n return writer;\n };\n\n /**\n * Encodes the specified Extent message, length delimited. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Extent();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.startBlock = reader.uint64();\n break;\n case 2:\n message.numBlocks = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an Extent message.\n * @function verify\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Extent.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (!$util.isInteger(message.startBlock) && !(message.startBlock && $util.isInteger(message.startBlock.low) && $util.isInteger(message.startBlock.high)))\n return \"startBlock: integer|Long expected\";\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (!$util.isInteger(message.numBlocks) && !(message.numBlocks && $util.isInteger(message.numBlocks.low) && $util.isInteger(message.numBlocks.high)))\n return \"numBlocks: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an Extent message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Extent} Extent\n */\n Extent.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Extent)\n return object;\n let message = new $root.chromeos_update_engine.Extent();\n if (object.startBlock != null)\n if ($util.Long)\n (message.startBlock = $util.Long.fromValue(object.startBlock)).unsigned = true;\n else if (typeof object.startBlock === \"string\")\n message.startBlock = parseInt(object.startBlock, 10);\n else if (typeof object.startBlock === \"number\")\n message.startBlock = object.startBlock;\n else if (typeof object.startBlock === \"object\")\n message.startBlock = new $util.LongBits(object.startBlock.low >>> 0, object.startBlock.high >>> 0).toNumber(true);\n if (object.numBlocks != null)\n if ($util.Long)\n (message.numBlocks = $util.Long.fromValue(object.numBlocks)).unsigned = true;\n else if (typeof object.numBlocks === \"string\")\n message.numBlocks = parseInt(object.numBlocks, 10);\n else if (typeof object.numBlocks === \"number\")\n message.numBlocks = object.numBlocks;\n else if (typeof object.numBlocks === \"object\")\n message.numBlocks = new $util.LongBits(object.numBlocks.low >>> 0, object.numBlocks.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from an Extent message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.Extent} message Extent\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Extent.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.startBlock = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.startBlock = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.numBlocks = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.numBlocks = options.longs === String ? \"0\" : 0;\n }\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (typeof message.startBlock === \"number\")\n object.startBlock = options.longs === String ? String(message.startBlock) : message.startBlock;\n else\n object.startBlock = options.longs === String ? $util.Long.prototype.toString.call(message.startBlock) : options.longs === Number ? new $util.LongBits(message.startBlock.low >>> 0, message.startBlock.high >>> 0).toNumber(true) : message.startBlock;\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (typeof message.numBlocks === \"number\")\n object.numBlocks = options.longs === String ? String(message.numBlocks) : message.numBlocks;\n else\n object.numBlocks = options.longs === String ? $util.Long.prototype.toString.call(message.numBlocks) : options.longs === Number ? new $util.LongBits(message.numBlocks.low >>> 0, message.numBlocks.high >>> 0).toNumber(true) : message.numBlocks;\n return object;\n };\n\n /**\n * Converts this Extent to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Extent\n * @instance\n * @returns {Object.} JSON object\n */\n Extent.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Extent;\n })();\n\n chromeos_update_engine.Signatures = (function() {\n\n /**\n * Properties of a Signatures.\n * @memberof chromeos_update_engine\n * @interface ISignatures\n * @property {Array.|null} [signatures] Signatures signatures\n */\n\n /**\n * Constructs a new Signatures.\n * @memberof chromeos_update_engine\n * @classdesc Represents a Signatures.\n * @implements ISignatures\n * @constructor\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n */\n function Signatures(properties) {\n this.signatures = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signatures signatures.\n * @member {Array.} signatures\n * @memberof chromeos_update_engine.Signatures\n * @instance\n */\n Signatures.prototype.signatures = $util.emptyArray;\n\n /**\n * Creates a new Signatures instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures} Signatures instance\n */\n Signatures.create = function create(properties) {\n return new Signatures(properties);\n };\n\n /**\n * Encodes the specified Signatures message. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.signatures != null && message.signatures.length)\n for (let i = 0; i < message.signatures.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.signatures[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Signatures message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.signatures && message.signatures.length))\n message.signatures = [];\n message.signatures.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signatures message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signatures.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.signatures != null && message.hasOwnProperty(\"signatures\")) {\n if (!Array.isArray(message.signatures))\n return \"signatures: array expected\";\n for (let i = 0; i < message.signatures.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.signatures[i]);\n if (error)\n return \"signatures.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a Signatures message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures} Signatures\n */\n Signatures.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures)\n return object;\n let message = new $root.chromeos_update_engine.Signatures();\n if (object.signatures) {\n if (!Array.isArray(object.signatures))\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: array expected\");\n message.signatures = [];\n for (let i = 0; i < object.signatures.length; ++i) {\n if (typeof object.signatures[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: object expected\");\n message.signatures[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.signatures[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Signatures message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.Signatures} message Signatures\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signatures.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.signatures = [];\n if (message.signatures && message.signatures.length) {\n object.signatures = [];\n for (let j = 0; j < message.signatures.length; ++j)\n object.signatures[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.signatures[j], options);\n }\n return object;\n };\n\n /**\n * Converts this Signatures to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures\n * @instance\n * @returns {Object.} JSON object\n */\n Signatures.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n Signatures.Signature = (function() {\n\n /**\n * Properties of a Signature.\n * @memberof chromeos_update_engine.Signatures\n * @interface ISignature\n * @property {number|null} [version] Signature version\n * @property {Uint8Array|null} [data] Signature data\n * @property {number|null} [unpaddedSignatureSize] Signature unpaddedSignatureSize\n */\n\n /**\n * Constructs a new Signature.\n * @memberof chromeos_update_engine.Signatures\n * @classdesc Represents a Signature.\n * @implements ISignature\n * @constructor\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n */\n function Signature(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signature version.\n * @member {number} version\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.version = 0;\n\n /**\n * Signature data.\n * @member {Uint8Array} data\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.data = $util.newBuffer([]);\n\n /**\n * Signature unpaddedSignatureSize.\n * @member {number} unpaddedSignatureSize\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.unpaddedSignatureSize = 0;\n\n /**\n * Creates a new Signature instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures.Signature} Signature instance\n */\n Signature.create = function create(properties) {\n return new Signature(properties);\n };\n\n /**\n * Encodes the specified Signature message. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.version);\n if (message.data != null && Object.hasOwnProperty.call(message, \"data\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.data);\n if (message.unpaddedSignatureSize != null && Object.hasOwnProperty.call(message, \"unpaddedSignatureSize\"))\n writer.uint32(/* id 3, wireType 5 =*/29).fixed32(message.unpaddedSignatureSize);\n return writer;\n };\n\n /**\n * Encodes the specified Signature message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures.Signature();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.version = reader.uint32();\n break;\n case 2:\n message.data = reader.bytes();\n break;\n case 3:\n message.unpaddedSignatureSize = reader.fixed32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signature message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signature.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version))\n return \"version: integer expected\";\n if (message.data != null && message.hasOwnProperty(\"data\"))\n if (!(message.data && typeof message.data.length === \"number\" || $util.isString(message.data)))\n return \"data: buffer expected\";\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n if (!$util.isInteger(message.unpaddedSignatureSize))\n return \"unpaddedSignatureSize: integer expected\";\n return null;\n };\n\n /**\n * Creates a Signature message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n */\n Signature.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures.Signature)\n return object;\n let message = new $root.chromeos_update_engine.Signatures.Signature();\n if (object.version != null)\n message.version = object.version >>> 0;\n if (object.data != null)\n if (typeof object.data === \"string\")\n $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);\n else if (object.data.length)\n message.data = object.data;\n if (object.unpaddedSignatureSize != null)\n message.unpaddedSignatureSize = object.unpaddedSignatureSize >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a Signature message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.Signature} message Signature\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signature.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.version = 0;\n if (options.bytes === String)\n object.data = \"\";\n else {\n object.data = [];\n if (options.bytes !== Array)\n object.data = $util.newBuffer(object.data);\n }\n object.unpaddedSignatureSize = 0;\n }\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.data != null && message.hasOwnProperty(\"data\"))\n object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n object.unpaddedSignatureSize = message.unpaddedSignatureSize;\n return object;\n };\n\n /**\n * Converts this Signature to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n * @returns {Object.} JSON object\n */\n Signature.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Signature;\n })();\n\n return Signatures;\n })();\n\n chromeos_update_engine.PartitionInfo = (function() {\n\n /**\n * Properties of a PartitionInfo.\n * @memberof chromeos_update_engine\n * @interface IPartitionInfo\n * @property {number|Long|null} [size] PartitionInfo size\n * @property {Uint8Array|null} [hash] PartitionInfo hash\n */\n\n /**\n * Constructs a new PartitionInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionInfo.\n * @implements IPartitionInfo\n * @constructor\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n */\n function PartitionInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionInfo size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * PartitionInfo hash.\n * @member {Uint8Array} hash\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.hash = $util.newBuffer([]);\n\n /**\n * Creates a new PartitionInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo instance\n */\n PartitionInfo.create = function create(properties) {\n return new PartitionInfo(properties);\n };\n\n /**\n * Encodes the specified PartitionInfo message. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.size);\n if (message.hash != null && Object.hasOwnProperty.call(message, \"hash\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.hash);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.size = reader.uint64();\n break;\n case 2:\n message.hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionInfo message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n if (!(message.hash && typeof message.hash.length === \"number\" || $util.isString(message.hash)))\n return \"hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates a PartitionInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n */\n PartitionInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionInfo)\n return object;\n let message = new $root.chromeos_update_engine.PartitionInfo();\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.hash != null)\n if (typeof object.hash === \"string\")\n $util.base64.decode(object.hash, message.hash = $util.newBuffer($util.base64.length(object.hash)), 0);\n else if (object.hash.length)\n message.hash = object.hash;\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.PartitionInfo} message PartitionInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.hash = \"\";\n else {\n object.hash = [];\n if (options.bytes !== Array)\n object.hash = $util.newBuffer(object.hash);\n }\n }\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n object.hash = options.bytes === String ? $util.base64.encode(message.hash, 0, message.hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.hash) : message.hash;\n return object;\n };\n\n /**\n * Converts this PartitionInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionInfo;\n })();\n\n chromeos_update_engine.ImageInfo = (function() {\n\n /**\n * Properties of an ImageInfo.\n * @memberof chromeos_update_engine\n * @interface IImageInfo\n * @property {string|null} [board] ImageInfo board\n * @property {string|null} [key] ImageInfo key\n * @property {string|null} [channel] ImageInfo channel\n * @property {string|null} [version] ImageInfo version\n * @property {string|null} [buildChannel] ImageInfo buildChannel\n * @property {string|null} [buildVersion] ImageInfo buildVersion\n */\n\n /**\n * Constructs a new ImageInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ImageInfo.\n * @implements IImageInfo\n * @constructor\n * @param {chromeos_update_engine.IImageInfo=} [properties] Properties to set\n */\n function ImageInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ImageInfo board.\n * @member {string} board\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.board = \"\";\n\n /**\n * ImageInfo key.\n * @member {string} key\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.key = \"\";\n\n /**\n * ImageInfo channel.\n * @member {string} channel\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.channel = \"\";\n\n /**\n * ImageInfo version.\n * @member {string} version\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.version = \"\";\n\n /**\n * ImageInfo buildChannel.\n * @member {string} buildChannel\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.buildChannel = \"\";\n\n /**\n * ImageInfo buildVersion.\n * @member {string} buildVersion\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.buildVersion = \"\";\n\n /**\n * Creates a new ImageInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.IImageInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo instance\n */\n ImageInfo.create = function create(properties) {\n return new ImageInfo(properties);\n };\n\n /**\n * Encodes the specified ImageInfo message. Does not implicitly {@link chromeos_update_engine.ImageInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.IImageInfo} message ImageInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ImageInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.board != null && Object.hasOwnProperty.call(message, \"board\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.board);\n if (message.key != null && Object.hasOwnProperty.call(message, \"key\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.key);\n if (message.channel != null && Object.hasOwnProperty.call(message, \"channel\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.channel);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.version);\n if (message.buildChannel != null && Object.hasOwnProperty.call(message, \"buildChannel\"))\n writer.uint32(/* id 5, wireType 2 =*/42).string(message.buildChannel);\n if (message.buildVersion != null && Object.hasOwnProperty.call(message, \"buildVersion\"))\n writer.uint32(/* id 6, wireType 2 =*/50).string(message.buildVersion);\n return writer;\n };\n\n /**\n * Encodes the specified ImageInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ImageInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.IImageInfo} message ImageInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ImageInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ImageInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ImageInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ImageInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.board = reader.string();\n break;\n case 2:\n message.key = reader.string();\n break;\n case 3:\n message.channel = reader.string();\n break;\n case 4:\n message.version = reader.string();\n break;\n case 5:\n message.buildChannel = reader.string();\n break;\n case 6:\n message.buildVersion = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ImageInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ImageInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ImageInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ImageInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.board != null && message.hasOwnProperty(\"board\"))\n if (!$util.isString(message.board))\n return \"board: string expected\";\n if (message.key != null && message.hasOwnProperty(\"key\"))\n if (!$util.isString(message.key))\n return \"key: string expected\";\n if (message.channel != null && message.hasOwnProperty(\"channel\"))\n if (!$util.isString(message.channel))\n return \"channel: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.buildChannel != null && message.hasOwnProperty(\"buildChannel\"))\n if (!$util.isString(message.buildChannel))\n return \"buildChannel: string expected\";\n if (message.buildVersion != null && message.hasOwnProperty(\"buildVersion\"))\n if (!$util.isString(message.buildVersion))\n return \"buildVersion: string expected\";\n return null;\n };\n\n /**\n * Creates an ImageInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo\n */\n ImageInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ImageInfo)\n return object;\n let message = new $root.chromeos_update_engine.ImageInfo();\n if (object.board != null)\n message.board = String(object.board);\n if (object.key != null)\n message.key = String(object.key);\n if (object.channel != null)\n message.channel = String(object.channel);\n if (object.version != null)\n message.version = String(object.version);\n if (object.buildChannel != null)\n message.buildChannel = String(object.buildChannel);\n if (object.buildVersion != null)\n message.buildVersion = String(object.buildVersion);\n return message;\n };\n\n /**\n * Creates a plain object from an ImageInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.ImageInfo} message ImageInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ImageInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.board = \"\";\n object.key = \"\";\n object.channel = \"\";\n object.version = \"\";\n object.buildChannel = \"\";\n object.buildVersion = \"\";\n }\n if (message.board != null && message.hasOwnProperty(\"board\"))\n object.board = message.board;\n if (message.key != null && message.hasOwnProperty(\"key\"))\n object.key = message.key;\n if (message.channel != null && message.hasOwnProperty(\"channel\"))\n object.channel = message.channel;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.buildChannel != null && message.hasOwnProperty(\"buildChannel\"))\n object.buildChannel = message.buildChannel;\n if (message.buildVersion != null && message.hasOwnProperty(\"buildVersion\"))\n object.buildVersion = message.buildVersion;\n return object;\n };\n\n /**\n * Converts this ImageInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ImageInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ImageInfo;\n })();\n\n chromeos_update_engine.InstallOperation = (function() {\n\n /**\n * Properties of an InstallOperation.\n * @memberof chromeos_update_engine\n * @interface IInstallOperation\n * @property {chromeos_update_engine.InstallOperation.Type} type InstallOperation type\n * @property {number|Long|null} [dataOffset] InstallOperation dataOffset\n * @property {number|Long|null} [dataLength] InstallOperation dataLength\n * @property {Array.|null} [srcExtents] InstallOperation srcExtents\n * @property {number|Long|null} [srcLength] InstallOperation srcLength\n * @property {Array.|null} [dstExtents] InstallOperation dstExtents\n * @property {number|Long|null} [dstLength] InstallOperation dstLength\n * @property {Uint8Array|null} [dataSha256Hash] InstallOperation dataSha256Hash\n * @property {Uint8Array|null} [srcSha256Hash] InstallOperation srcSha256Hash\n */\n\n /**\n * Constructs a new InstallOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents an InstallOperation.\n * @implements IInstallOperation\n * @constructor\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n */\n function InstallOperation(properties) {\n this.srcExtents = [];\n this.dstExtents = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * InstallOperation type.\n * @member {chromeos_update_engine.InstallOperation.Type} type\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.type = 0;\n\n /**\n * InstallOperation dataOffset.\n * @member {number|Long} dataOffset\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataLength.\n * @member {number|Long} dataLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation srcExtents.\n * @member {Array.} srcExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcExtents = $util.emptyArray;\n\n /**\n * InstallOperation srcLength.\n * @member {number|Long} srcLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dstExtents.\n * @member {Array.} dstExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstExtents = $util.emptyArray;\n\n /**\n * InstallOperation dstLength.\n * @member {number|Long} dstLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataSha256Hash.\n * @member {Uint8Array} dataSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataSha256Hash = $util.newBuffer([]);\n\n /**\n * InstallOperation srcSha256Hash.\n * @member {Uint8Array} srcSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcSha256Hash = $util.newBuffer([]);\n\n /**\n * Creates a new InstallOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation instance\n */\n InstallOperation.create = function create(properties) {\n return new InstallOperation(properties);\n };\n\n /**\n * Encodes the specified InstallOperation message. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.dataOffset != null && Object.hasOwnProperty.call(message, \"dataOffset\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.dataOffset);\n if (message.dataLength != null && Object.hasOwnProperty.call(message, \"dataLength\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.dataLength);\n if (message.srcExtents != null && message.srcExtents.length)\n for (let i = 0; i < message.srcExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.srcExtents[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.srcLength != null && Object.hasOwnProperty.call(message, \"srcLength\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.srcLength);\n if (message.dstExtents != null && message.dstExtents.length)\n for (let i = 0; i < message.dstExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.dstExtents[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.dstLength != null && Object.hasOwnProperty.call(message, \"dstLength\"))\n writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.dstLength);\n if (message.dataSha256Hash != null && Object.hasOwnProperty.call(message, \"dataSha256Hash\"))\n writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.dataSha256Hash);\n if (message.srcSha256Hash != null && Object.hasOwnProperty.call(message, \"srcSha256Hash\"))\n writer.uint32(/* id 9, wireType 2 =*/74).bytes(message.srcSha256Hash);\n return writer;\n };\n\n /**\n * Encodes the specified InstallOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.InstallOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.dataOffset = reader.uint64();\n break;\n case 3:\n message.dataLength = reader.uint64();\n break;\n case 4:\n if (!(message.srcExtents && message.srcExtents.length))\n message.srcExtents = [];\n message.srcExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 5:\n message.srcLength = reader.uint64();\n break;\n case 6:\n if (!(message.dstExtents && message.dstExtents.length))\n message.dstExtents = [];\n message.dstExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 7:\n message.dstLength = reader.uint64();\n break;\n case 8:\n message.dataSha256Hash = reader.bytes();\n break;\n case 9:\n message.srcSha256Hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"type\"))\n throw $util.ProtocolError(\"missing required 'type'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an InstallOperation message.\n * @function verify\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n InstallOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 8:\n case 6:\n case 7:\n case 10:\n case 9:\n case 11:\n case 12:\n case 13:\n break;\n }\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (!$util.isInteger(message.dataOffset) && !(message.dataOffset && $util.isInteger(message.dataOffset.low) && $util.isInteger(message.dataOffset.high)))\n return \"dataOffset: integer|Long expected\";\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (!$util.isInteger(message.dataLength) && !(message.dataLength && $util.isInteger(message.dataLength.low) && $util.isInteger(message.dataLength.high)))\n return \"dataLength: integer|Long expected\";\n if (message.srcExtents != null && message.hasOwnProperty(\"srcExtents\")) {\n if (!Array.isArray(message.srcExtents))\n return \"srcExtents: array expected\";\n for (let i = 0; i < message.srcExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtents[i]);\n if (error)\n return \"srcExtents.\" + error;\n }\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (!$util.isInteger(message.srcLength) && !(message.srcLength && $util.isInteger(message.srcLength.low) && $util.isInteger(message.srcLength.high)))\n return \"srcLength: integer|Long expected\";\n if (message.dstExtents != null && message.hasOwnProperty(\"dstExtents\")) {\n if (!Array.isArray(message.dstExtents))\n return \"dstExtents: array expected\";\n for (let i = 0; i < message.dstExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtents[i]);\n if (error)\n return \"dstExtents.\" + error;\n }\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (!$util.isInteger(message.dstLength) && !(message.dstLength && $util.isInteger(message.dstLength.low) && $util.isInteger(message.dstLength.high)))\n return \"dstLength: integer|Long expected\";\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n if (!(message.dataSha256Hash && typeof message.dataSha256Hash.length === \"number\" || $util.isString(message.dataSha256Hash)))\n return \"dataSha256Hash: buffer expected\";\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n if (!(message.srcSha256Hash && typeof message.srcSha256Hash.length === \"number\" || $util.isString(message.srcSha256Hash)))\n return \"srcSha256Hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates an InstallOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n */\n InstallOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.InstallOperation)\n return object;\n let message = new $root.chromeos_update_engine.InstallOperation();\n switch (object.type) {\n case \"REPLACE\":\n case 0:\n message.type = 0;\n break;\n case \"REPLACE_BZ\":\n case 1:\n message.type = 1;\n break;\n case \"MOVE\":\n case 2:\n message.type = 2;\n break;\n case \"BSDIFF\":\n case 3:\n message.type = 3;\n break;\n case \"SOURCE_COPY\":\n case 4:\n message.type = 4;\n break;\n case \"SOURCE_BSDIFF\":\n case 5:\n message.type = 5;\n break;\n case \"REPLACE_XZ\":\n case 8:\n message.type = 8;\n break;\n case \"ZERO\":\n case 6:\n message.type = 6;\n break;\n case \"DISCARD\":\n case 7:\n message.type = 7;\n break;\n case \"BROTLI_BSDIFF\":\n case 10:\n message.type = 10;\n break;\n case \"PUFFDIFF\":\n case 9:\n message.type = 9;\n break;\n case \"ZUCCHINI\":\n case 11:\n message.type = 11;\n break;\n case \"LZ4DIFF_BSDIFF\":\n case 12:\n message.type = 12;\n break;\n case \"LZ4DIFF_PUFFDIFF\":\n case 13:\n message.type = 13;\n break;\n }\n if (object.dataOffset != null)\n if ($util.Long)\n (message.dataOffset = $util.Long.fromValue(object.dataOffset)).unsigned = true;\n else if (typeof object.dataOffset === \"string\")\n message.dataOffset = parseInt(object.dataOffset, 10);\n else if (typeof object.dataOffset === \"number\")\n message.dataOffset = object.dataOffset;\n else if (typeof object.dataOffset === \"object\")\n message.dataOffset = new $util.LongBits(object.dataOffset.low >>> 0, object.dataOffset.high >>> 0).toNumber(true);\n if (object.dataLength != null)\n if ($util.Long)\n (message.dataLength = $util.Long.fromValue(object.dataLength)).unsigned = true;\n else if (typeof object.dataLength === \"string\")\n message.dataLength = parseInt(object.dataLength, 10);\n else if (typeof object.dataLength === \"number\")\n message.dataLength = object.dataLength;\n else if (typeof object.dataLength === \"object\")\n message.dataLength = new $util.LongBits(object.dataLength.low >>> 0, object.dataLength.high >>> 0).toNumber(true);\n if (object.srcExtents) {\n if (!Array.isArray(object.srcExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: array expected\");\n message.srcExtents = [];\n for (let i = 0; i < object.srcExtents.length; ++i) {\n if (typeof object.srcExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: object expected\");\n message.srcExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.srcExtents[i]);\n }\n }\n if (object.srcLength != null)\n if ($util.Long)\n (message.srcLength = $util.Long.fromValue(object.srcLength)).unsigned = true;\n else if (typeof object.srcLength === \"string\")\n message.srcLength = parseInt(object.srcLength, 10);\n else if (typeof object.srcLength === \"number\")\n message.srcLength = object.srcLength;\n else if (typeof object.srcLength === \"object\")\n message.srcLength = new $util.LongBits(object.srcLength.low >>> 0, object.srcLength.high >>> 0).toNumber(true);\n if (object.dstExtents) {\n if (!Array.isArray(object.dstExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: array expected\");\n message.dstExtents = [];\n for (let i = 0; i < object.dstExtents.length; ++i) {\n if (typeof object.dstExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: object expected\");\n message.dstExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.dstExtents[i]);\n }\n }\n if (object.dstLength != null)\n if ($util.Long)\n (message.dstLength = $util.Long.fromValue(object.dstLength)).unsigned = true;\n else if (typeof object.dstLength === \"string\")\n message.dstLength = parseInt(object.dstLength, 10);\n else if (typeof object.dstLength === \"number\")\n message.dstLength = object.dstLength;\n else if (typeof object.dstLength === \"object\")\n message.dstLength = new $util.LongBits(object.dstLength.low >>> 0, object.dstLength.high >>> 0).toNumber(true);\n if (object.dataSha256Hash != null)\n if (typeof object.dataSha256Hash === \"string\")\n $util.base64.decode(object.dataSha256Hash, message.dataSha256Hash = $util.newBuffer($util.base64.length(object.dataSha256Hash)), 0);\n else if (object.dataSha256Hash.length)\n message.dataSha256Hash = object.dataSha256Hash;\n if (object.srcSha256Hash != null)\n if (typeof object.srcSha256Hash === \"string\")\n $util.base64.decode(object.srcSha256Hash, message.srcSha256Hash = $util.newBuffer($util.base64.length(object.srcSha256Hash)), 0);\n else if (object.srcSha256Hash.length)\n message.srcSha256Hash = object.srcSha256Hash;\n return message;\n };\n\n /**\n * Creates a plain object from an InstallOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.InstallOperation} message InstallOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n InstallOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.srcExtents = [];\n object.dstExtents = [];\n }\n if (options.defaults) {\n object.type = options.enums === String ? \"REPLACE\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.srcLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.srcLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dstLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dstLength = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.dataSha256Hash = \"\";\n else {\n object.dataSha256Hash = [];\n if (options.bytes !== Array)\n object.dataSha256Hash = $util.newBuffer(object.dataSha256Hash);\n }\n if (options.bytes === String)\n object.srcSha256Hash = \"\";\n else {\n object.srcSha256Hash = [];\n if (options.bytes !== Array)\n object.srcSha256Hash = $util.newBuffer(object.srcSha256Hash);\n }\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.InstallOperation.Type[message.type] : message.type;\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (typeof message.dataOffset === \"number\")\n object.dataOffset = options.longs === String ? String(message.dataOffset) : message.dataOffset;\n else\n object.dataOffset = options.longs === String ? $util.Long.prototype.toString.call(message.dataOffset) : options.longs === Number ? new $util.LongBits(message.dataOffset.low >>> 0, message.dataOffset.high >>> 0).toNumber(true) : message.dataOffset;\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (typeof message.dataLength === \"number\")\n object.dataLength = options.longs === String ? String(message.dataLength) : message.dataLength;\n else\n object.dataLength = options.longs === String ? $util.Long.prototype.toString.call(message.dataLength) : options.longs === Number ? new $util.LongBits(message.dataLength.low >>> 0, message.dataLength.high >>> 0).toNumber(true) : message.dataLength;\n if (message.srcExtents && message.srcExtents.length) {\n object.srcExtents = [];\n for (let j = 0; j < message.srcExtents.length; ++j)\n object.srcExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.srcExtents[j], options);\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (typeof message.srcLength === \"number\")\n object.srcLength = options.longs === String ? String(message.srcLength) : message.srcLength;\n else\n object.srcLength = options.longs === String ? $util.Long.prototype.toString.call(message.srcLength) : options.longs === Number ? new $util.LongBits(message.srcLength.low >>> 0, message.srcLength.high >>> 0).toNumber(true) : message.srcLength;\n if (message.dstExtents && message.dstExtents.length) {\n object.dstExtents = [];\n for (let j = 0; j < message.dstExtents.length; ++j)\n object.dstExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.dstExtents[j], options);\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (typeof message.dstLength === \"number\")\n object.dstLength = options.longs === String ? String(message.dstLength) : message.dstLength;\n else\n object.dstLength = options.longs === String ? $util.Long.prototype.toString.call(message.dstLength) : options.longs === Number ? new $util.LongBits(message.dstLength.low >>> 0, message.dstLength.high >>> 0).toNumber(true) : message.dstLength;\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n object.dataSha256Hash = options.bytes === String ? $util.base64.encode(message.dataSha256Hash, 0, message.dataSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.dataSha256Hash) : message.dataSha256Hash;\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n object.srcSha256Hash = options.bytes === String ? $util.base64.encode(message.srcSha256Hash, 0, message.srcSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.srcSha256Hash) : message.srcSha256Hash;\n return object;\n };\n\n /**\n * Converts this InstallOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n * @returns {Object.} JSON object\n */\n InstallOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.InstallOperation.Type\n * @enum {number}\n * @property {number} REPLACE=0 REPLACE value\n * @property {number} REPLACE_BZ=1 REPLACE_BZ value\n * @property {number} MOVE=2 MOVE value\n * @property {number} BSDIFF=3 BSDIFF value\n * @property {number} SOURCE_COPY=4 SOURCE_COPY value\n * @property {number} SOURCE_BSDIFF=5 SOURCE_BSDIFF value\n * @property {number} REPLACE_XZ=8 REPLACE_XZ value\n * @property {number} ZERO=6 ZERO value\n * @property {number} DISCARD=7 DISCARD value\n * @property {number} BROTLI_BSDIFF=10 BROTLI_BSDIFF value\n * @property {number} PUFFDIFF=9 PUFFDIFF value\n * @property {number} ZUCCHINI=11 ZUCCHINI value\n * @property {number} LZ4DIFF_BSDIFF=12 LZ4DIFF_BSDIFF value\n * @property {number} LZ4DIFF_PUFFDIFF=13 LZ4DIFF_PUFFDIFF value\n */\n InstallOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"REPLACE\"] = 0;\n values[valuesById[1] = \"REPLACE_BZ\"] = 1;\n values[valuesById[2] = \"MOVE\"] = 2;\n values[valuesById[3] = \"BSDIFF\"] = 3;\n values[valuesById[4] = \"SOURCE_COPY\"] = 4;\n values[valuesById[5] = \"SOURCE_BSDIFF\"] = 5;\n values[valuesById[8] = \"REPLACE_XZ\"] = 8;\n values[valuesById[6] = \"ZERO\"] = 6;\n values[valuesById[7] = \"DISCARD\"] = 7;\n values[valuesById[10] = \"BROTLI_BSDIFF\"] = 10;\n values[valuesById[9] = \"PUFFDIFF\"] = 9;\n values[valuesById[11] = \"ZUCCHINI\"] = 11;\n values[valuesById[12] = \"LZ4DIFF_BSDIFF\"] = 12;\n values[valuesById[13] = \"LZ4DIFF_PUFFDIFF\"] = 13;\n return values;\n })();\n\n return InstallOperation;\n })();\n\n chromeos_update_engine.CowMergeOperation = (function() {\n\n /**\n * Properties of a CowMergeOperation.\n * @memberof chromeos_update_engine\n * @interface ICowMergeOperation\n * @property {chromeos_update_engine.CowMergeOperation.Type|null} [type] CowMergeOperation type\n * @property {chromeos_update_engine.IExtent|null} [srcExtent] CowMergeOperation srcExtent\n * @property {chromeos_update_engine.IExtent|null} [dstExtent] CowMergeOperation dstExtent\n * @property {number|null} [srcOffset] CowMergeOperation srcOffset\n */\n\n /**\n * Constructs a new CowMergeOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents a CowMergeOperation.\n * @implements ICowMergeOperation\n * @constructor\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n */\n function CowMergeOperation(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * CowMergeOperation type.\n * @member {chromeos_update_engine.CowMergeOperation.Type} type\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.type = 0;\n\n /**\n * CowMergeOperation srcExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} srcExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcExtent = null;\n\n /**\n * CowMergeOperation dstExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} dstExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.dstExtent = null;\n\n /**\n * CowMergeOperation srcOffset.\n * @member {number} srcOffset\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcOffset = 0;\n\n /**\n * Creates a new CowMergeOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation instance\n */\n CowMergeOperation.create = function create(properties) {\n return new CowMergeOperation(properties);\n };\n\n /**\n * Encodes the specified CowMergeOperation message. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.srcExtent != null && Object.hasOwnProperty.call(message, \"srcExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.srcExtent, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.dstExtent != null && Object.hasOwnProperty.call(message, \"dstExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.dstExtent, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.srcOffset != null && Object.hasOwnProperty.call(message, \"srcOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.srcOffset);\n return writer;\n };\n\n /**\n * Encodes the specified CowMergeOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.CowMergeOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.srcExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 3:\n message.dstExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 4:\n message.srcOffset = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a CowMergeOperation message.\n * @function verify\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n CowMergeOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtent);\n if (error)\n return \"srcExtent.\" + error;\n }\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtent);\n if (error)\n return \"dstExtent.\" + error;\n }\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n if (!$util.isInteger(message.srcOffset))\n return \"srcOffset: integer expected\";\n return null;\n };\n\n /**\n * Creates a CowMergeOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n */\n CowMergeOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.CowMergeOperation)\n return object;\n let message = new $root.chromeos_update_engine.CowMergeOperation();\n switch (object.type) {\n case \"COW_COPY\":\n case 0:\n message.type = 0;\n break;\n case \"COW_XOR\":\n case 1:\n message.type = 1;\n break;\n case \"COW_REPLACE\":\n case 2:\n message.type = 2;\n break;\n }\n if (object.srcExtent != null) {\n if (typeof object.srcExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.srcExtent: object expected\");\n message.srcExtent = $root.chromeos_update_engine.Extent.fromObject(object.srcExtent);\n }\n if (object.dstExtent != null) {\n if (typeof object.dstExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.dstExtent: object expected\");\n message.dstExtent = $root.chromeos_update_engine.Extent.fromObject(object.dstExtent);\n }\n if (object.srcOffset != null)\n message.srcOffset = object.srcOffset >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a CowMergeOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.CowMergeOperation} message CowMergeOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n CowMergeOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"COW_COPY\" : 0;\n object.srcExtent = null;\n object.dstExtent = null;\n object.srcOffset = 0;\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.CowMergeOperation.Type[message.type] : message.type;\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\"))\n object.srcExtent = $root.chromeos_update_engine.Extent.toObject(message.srcExtent, options);\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\"))\n object.dstExtent = $root.chromeos_update_engine.Extent.toObject(message.dstExtent, options);\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n object.srcOffset = message.srcOffset;\n return object;\n };\n\n /**\n * Converts this CowMergeOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n * @returns {Object.} JSON object\n */\n CowMergeOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.CowMergeOperation.Type\n * @enum {number}\n * @property {number} COW_COPY=0 COW_COPY value\n * @property {number} COW_XOR=1 COW_XOR value\n * @property {number} COW_REPLACE=2 COW_REPLACE value\n */\n CowMergeOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"COW_COPY\"] = 0;\n values[valuesById[1] = \"COW_XOR\"] = 1;\n values[valuesById[2] = \"COW_REPLACE\"] = 2;\n return values;\n })();\n\n return CowMergeOperation;\n })();\n\n chromeos_update_engine.PartitionUpdate = (function() {\n\n /**\n * Properties of a PartitionUpdate.\n * @memberof chromeos_update_engine\n * @interface IPartitionUpdate\n * @property {string} partitionName PartitionUpdate partitionName\n * @property {boolean|null} [runPostinstall] PartitionUpdate runPostinstall\n * @property {string|null} [postinstallPath] PartitionUpdate postinstallPath\n * @property {string|null} [filesystemType] PartitionUpdate filesystemType\n * @property {Array.|null} [newPartitionSignature] PartitionUpdate newPartitionSignature\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldPartitionInfo] PartitionUpdate oldPartitionInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newPartitionInfo] PartitionUpdate newPartitionInfo\n * @property {Array.|null} [operations] PartitionUpdate operations\n * @property {boolean|null} [postinstallOptional] PartitionUpdate postinstallOptional\n * @property {chromeos_update_engine.IExtent|null} [hashTreeDataExtent] PartitionUpdate hashTreeDataExtent\n * @property {chromeos_update_engine.IExtent|null} [hashTreeExtent] PartitionUpdate hashTreeExtent\n * @property {string|null} [hashTreeAlgorithm] PartitionUpdate hashTreeAlgorithm\n * @property {Uint8Array|null} [hashTreeSalt] PartitionUpdate hashTreeSalt\n * @property {chromeos_update_engine.IExtent|null} [fecDataExtent] PartitionUpdate fecDataExtent\n * @property {chromeos_update_engine.IExtent|null} [fecExtent] PartitionUpdate fecExtent\n * @property {number|null} [fecRoots] PartitionUpdate fecRoots\n * @property {string|null} [version] PartitionUpdate version\n * @property {Array.|null} [mergeOperations] PartitionUpdate mergeOperations\n * @property {number|Long|null} [estimateCowSize] PartitionUpdate estimateCowSize\n */\n\n /**\n * Constructs a new PartitionUpdate.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionUpdate.\n * @implements IPartitionUpdate\n * @constructor\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n */\n function PartitionUpdate(properties) {\n this.newPartitionSignature = [];\n this.operations = [];\n this.mergeOperations = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionUpdate partitionName.\n * @member {string} partitionName\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.partitionName = \"\";\n\n /**\n * PartitionUpdate runPostinstall.\n * @member {boolean} runPostinstall\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.runPostinstall = false;\n\n /**\n * PartitionUpdate postinstallPath.\n * @member {string} postinstallPath\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallPath = \"\";\n\n /**\n * PartitionUpdate filesystemType.\n * @member {string} filesystemType\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.filesystemType = \"\";\n\n /**\n * PartitionUpdate newPartitionSignature.\n * @member {Array.} newPartitionSignature\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionSignature = $util.emptyArray;\n\n /**\n * PartitionUpdate oldPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.oldPartitionInfo = null;\n\n /**\n * PartitionUpdate newPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionInfo = null;\n\n /**\n * PartitionUpdate operations.\n * @member {Array.} operations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.operations = $util.emptyArray;\n\n /**\n * PartitionUpdate postinstallOptional.\n * @member {boolean} postinstallOptional\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallOptional = false;\n\n /**\n * PartitionUpdate hashTreeDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeDataExtent = null;\n\n /**\n * PartitionUpdate hashTreeExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeExtent = null;\n\n /**\n * PartitionUpdate hashTreeAlgorithm.\n * @member {string} hashTreeAlgorithm\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeAlgorithm = \"\";\n\n /**\n * PartitionUpdate hashTreeSalt.\n * @member {Uint8Array} hashTreeSalt\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeSalt = $util.newBuffer([]);\n\n /**\n * PartitionUpdate fecDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecDataExtent = null;\n\n /**\n * PartitionUpdate fecExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecExtent = null;\n\n /**\n * PartitionUpdate fecRoots.\n * @member {number} fecRoots\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecRoots = 2;\n\n /**\n * PartitionUpdate version.\n * @member {string} version\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.version = \"\";\n\n /**\n * PartitionUpdate mergeOperations.\n * @member {Array.} mergeOperations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.mergeOperations = $util.emptyArray;\n\n /**\n * PartitionUpdate estimateCowSize.\n * @member {number|Long} estimateCowSize\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.estimateCowSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new PartitionUpdate instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate instance\n */\n PartitionUpdate.create = function create(properties) {\n return new PartitionUpdate(properties);\n };\n\n /**\n * Encodes the specified PartitionUpdate message. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.partitionName);\n if (message.runPostinstall != null && Object.hasOwnProperty.call(message, \"runPostinstall\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.runPostinstall);\n if (message.postinstallPath != null && Object.hasOwnProperty.call(message, \"postinstallPath\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.postinstallPath);\n if (message.filesystemType != null && Object.hasOwnProperty.call(message, \"filesystemType\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.filesystemType);\n if (message.newPartitionSignature != null && message.newPartitionSignature.length)\n for (let i = 0; i < message.newPartitionSignature.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.newPartitionSignature[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.oldPartitionInfo != null && Object.hasOwnProperty.call(message, \"oldPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldPartitionInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newPartitionInfo != null && Object.hasOwnProperty.call(message, \"newPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newPartitionInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.operations != null && message.operations.length)\n for (let i = 0; i < message.operations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.operations[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.postinstallOptional != null && Object.hasOwnProperty.call(message, \"postinstallOptional\"))\n writer.uint32(/* id 9, wireType 0 =*/72).bool(message.postinstallOptional);\n if (message.hashTreeDataExtent != null && Object.hasOwnProperty.call(message, \"hashTreeDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeDataExtent, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.hashTreeExtent != null && Object.hasOwnProperty.call(message, \"hashTreeExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeExtent, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.hashTreeAlgorithm != null && Object.hasOwnProperty.call(message, \"hashTreeAlgorithm\"))\n writer.uint32(/* id 12, wireType 2 =*/98).string(message.hashTreeAlgorithm);\n if (message.hashTreeSalt != null && Object.hasOwnProperty.call(message, \"hashTreeSalt\"))\n writer.uint32(/* id 13, wireType 2 =*/106).bytes(message.hashTreeSalt);\n if (message.fecDataExtent != null && Object.hasOwnProperty.call(message, \"fecDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecDataExtent, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.fecExtent != null && Object.hasOwnProperty.call(message, \"fecExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecExtent, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.fecRoots != null && Object.hasOwnProperty.call(message, \"fecRoots\"))\n writer.uint32(/* id 16, wireType 0 =*/128).uint32(message.fecRoots);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 17, wireType 2 =*/138).string(message.version);\n if (message.mergeOperations != null && message.mergeOperations.length)\n for (let i = 0; i < message.mergeOperations.length; ++i)\n $root.chromeos_update_engine.CowMergeOperation.encode(message.mergeOperations[i], writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n if (message.estimateCowSize != null && Object.hasOwnProperty.call(message, \"estimateCowSize\"))\n writer.uint32(/* id 19, wireType 0 =*/152).uint64(message.estimateCowSize);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionUpdate message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionUpdate();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.partitionName = reader.string();\n break;\n case 2:\n message.runPostinstall = reader.bool();\n break;\n case 3:\n message.postinstallPath = reader.string();\n break;\n case 4:\n message.filesystemType = reader.string();\n break;\n case 5:\n if (!(message.newPartitionSignature && message.newPartitionSignature.length))\n message.newPartitionSignature = [];\n message.newPartitionSignature.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n case 6:\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n if (!(message.operations && message.operations.length))\n message.operations = [];\n message.operations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 9:\n message.postinstallOptional = reader.bool();\n break;\n case 10:\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 11:\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 12:\n message.hashTreeAlgorithm = reader.string();\n break;\n case 13:\n message.hashTreeSalt = reader.bytes();\n break;\n case 14:\n message.fecDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 15:\n message.fecExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 16:\n message.fecRoots = reader.uint32();\n break;\n case 17:\n message.version = reader.string();\n break;\n case 18:\n if (!(message.mergeOperations && message.mergeOperations.length))\n message.mergeOperations = [];\n message.mergeOperations.push($root.chromeos_update_engine.CowMergeOperation.decode(reader, reader.uint32()));\n break;\n case 19:\n message.estimateCowSize = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"partitionName\"))\n throw $util.ProtocolError(\"missing required 'partitionName'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionUpdate message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionUpdate.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.partitionName))\n return \"partitionName: string expected\";\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n if (typeof message.runPostinstall !== \"boolean\")\n return \"runPostinstall: boolean expected\";\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n if (!$util.isString(message.postinstallPath))\n return \"postinstallPath: string expected\";\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n if (!$util.isString(message.filesystemType))\n return \"filesystemType: string expected\";\n if (message.newPartitionSignature != null && message.hasOwnProperty(\"newPartitionSignature\")) {\n if (!Array.isArray(message.newPartitionSignature))\n return \"newPartitionSignature: array expected\";\n for (let i = 0; i < message.newPartitionSignature.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.newPartitionSignature[i]);\n if (error)\n return \"newPartitionSignature.\" + error;\n }\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldPartitionInfo);\n if (error)\n return \"oldPartitionInfo.\" + error;\n }\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newPartitionInfo);\n if (error)\n return \"newPartitionInfo.\" + error;\n }\n if (message.operations != null && message.hasOwnProperty(\"operations\")) {\n if (!Array.isArray(message.operations))\n return \"operations: array expected\";\n for (let i = 0; i < message.operations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.operations[i]);\n if (error)\n return \"operations.\" + error;\n }\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n if (typeof message.postinstallOptional !== \"boolean\")\n return \"postinstallOptional: boolean expected\";\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeDataExtent);\n if (error)\n return \"hashTreeDataExtent.\" + error;\n }\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeExtent);\n if (error)\n return \"hashTreeExtent.\" + error;\n }\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n if (!$util.isString(message.hashTreeAlgorithm))\n return \"hashTreeAlgorithm: string expected\";\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n if (!(message.hashTreeSalt && typeof message.hashTreeSalt.length === \"number\" || $util.isString(message.hashTreeSalt)))\n return \"hashTreeSalt: buffer expected\";\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecDataExtent);\n if (error)\n return \"fecDataExtent.\" + error;\n }\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecExtent);\n if (error)\n return \"fecExtent.\" + error;\n }\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n if (!$util.isInteger(message.fecRoots))\n return \"fecRoots: integer expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.mergeOperations != null && message.hasOwnProperty(\"mergeOperations\")) {\n if (!Array.isArray(message.mergeOperations))\n return \"mergeOperations: array expected\";\n for (let i = 0; i < message.mergeOperations.length; ++i) {\n let error = $root.chromeos_update_engine.CowMergeOperation.verify(message.mergeOperations[i]);\n if (error)\n return \"mergeOperations.\" + error;\n }\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (!$util.isInteger(message.estimateCowSize) && !(message.estimateCowSize && $util.isInteger(message.estimateCowSize.low) && $util.isInteger(message.estimateCowSize.high)))\n return \"estimateCowSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a PartitionUpdate message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n */\n PartitionUpdate.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionUpdate)\n return object;\n let message = new $root.chromeos_update_engine.PartitionUpdate();\n if (object.partitionName != null)\n message.partitionName = String(object.partitionName);\n if (object.runPostinstall != null)\n message.runPostinstall = Boolean(object.runPostinstall);\n if (object.postinstallPath != null)\n message.postinstallPath = String(object.postinstallPath);\n if (object.filesystemType != null)\n message.filesystemType = String(object.filesystemType);\n if (object.newPartitionSignature) {\n if (!Array.isArray(object.newPartitionSignature))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: array expected\");\n message.newPartitionSignature = [];\n for (let i = 0; i < object.newPartitionSignature.length; ++i) {\n if (typeof object.newPartitionSignature[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: object expected\");\n message.newPartitionSignature[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.newPartitionSignature[i]);\n }\n }\n if (object.oldPartitionInfo != null) {\n if (typeof object.oldPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.oldPartitionInfo: object expected\");\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldPartitionInfo);\n }\n if (object.newPartitionInfo != null) {\n if (typeof object.newPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionInfo: object expected\");\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newPartitionInfo);\n }\n if (object.operations) {\n if (!Array.isArray(object.operations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: array expected\");\n message.operations = [];\n for (let i = 0; i < object.operations.length; ++i) {\n if (typeof object.operations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: object expected\");\n message.operations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.operations[i]);\n }\n }\n if (object.postinstallOptional != null)\n message.postinstallOptional = Boolean(object.postinstallOptional);\n if (object.hashTreeDataExtent != null) {\n if (typeof object.hashTreeDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeDataExtent: object expected\");\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeDataExtent);\n }\n if (object.hashTreeExtent != null) {\n if (typeof object.hashTreeExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeExtent: object expected\");\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeExtent);\n }\n if (object.hashTreeAlgorithm != null)\n message.hashTreeAlgorithm = String(object.hashTreeAlgorithm);\n if (object.hashTreeSalt != null)\n if (typeof object.hashTreeSalt === \"string\")\n $util.base64.decode(object.hashTreeSalt, message.hashTreeSalt = $util.newBuffer($util.base64.length(object.hashTreeSalt)), 0);\n else if (object.hashTreeSalt.length)\n message.hashTreeSalt = object.hashTreeSalt;\n if (object.fecDataExtent != null) {\n if (typeof object.fecDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecDataExtent: object expected\");\n message.fecDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecDataExtent);\n }\n if (object.fecExtent != null) {\n if (typeof object.fecExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecExtent: object expected\");\n message.fecExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecExtent);\n }\n if (object.fecRoots != null)\n message.fecRoots = object.fecRoots >>> 0;\n if (object.version != null)\n message.version = String(object.version);\n if (object.mergeOperations) {\n if (!Array.isArray(object.mergeOperations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected\");\n message.mergeOperations = [];\n for (let i = 0; i < object.mergeOperations.length; ++i) {\n if (typeof object.mergeOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: object expected\");\n message.mergeOperations[i] = $root.chromeos_update_engine.CowMergeOperation.fromObject(object.mergeOperations[i]);\n }\n }\n if (object.estimateCowSize != null)\n if ($util.Long)\n (message.estimateCowSize = $util.Long.fromValue(object.estimateCowSize)).unsigned = true;\n else if (typeof object.estimateCowSize === \"string\")\n message.estimateCowSize = parseInt(object.estimateCowSize, 10);\n else if (typeof object.estimateCowSize === \"number\")\n message.estimateCowSize = object.estimateCowSize;\n else if (typeof object.estimateCowSize === \"object\")\n message.estimateCowSize = new $util.LongBits(object.estimateCowSize.low >>> 0, object.estimateCowSize.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionUpdate message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.PartitionUpdate} message PartitionUpdate\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionUpdate.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.newPartitionSignature = [];\n object.operations = [];\n object.mergeOperations = [];\n }\n if (options.defaults) {\n object.partitionName = \"\";\n object.runPostinstall = false;\n object.postinstallPath = \"\";\n object.filesystemType = \"\";\n object.oldPartitionInfo = null;\n object.newPartitionInfo = null;\n object.postinstallOptional = false;\n object.hashTreeDataExtent = null;\n object.hashTreeExtent = null;\n object.hashTreeAlgorithm = \"\";\n if (options.bytes === String)\n object.hashTreeSalt = \"\";\n else {\n object.hashTreeSalt = [];\n if (options.bytes !== Array)\n object.hashTreeSalt = $util.newBuffer(object.hashTreeSalt);\n }\n object.fecDataExtent = null;\n object.fecExtent = null;\n object.fecRoots = 2;\n object.version = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.estimateCowSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.estimateCowSize = options.longs === String ? \"0\" : 0;\n }\n if (message.partitionName != null && message.hasOwnProperty(\"partitionName\"))\n object.partitionName = message.partitionName;\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n object.runPostinstall = message.runPostinstall;\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n object.postinstallPath = message.postinstallPath;\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n object.filesystemType = message.filesystemType;\n if (message.newPartitionSignature && message.newPartitionSignature.length) {\n object.newPartitionSignature = [];\n for (let j = 0; j < message.newPartitionSignature.length; ++j)\n object.newPartitionSignature[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.newPartitionSignature[j], options);\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\"))\n object.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldPartitionInfo, options);\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\"))\n object.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newPartitionInfo, options);\n if (message.operations && message.operations.length) {\n object.operations = [];\n for (let j = 0; j < message.operations.length; ++j)\n object.operations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.operations[j], options);\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n object.postinstallOptional = message.postinstallOptional;\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\"))\n object.hashTreeDataExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeDataExtent, options);\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\"))\n object.hashTreeExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeExtent, options);\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n object.hashTreeAlgorithm = message.hashTreeAlgorithm;\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n object.hashTreeSalt = options.bytes === String ? $util.base64.encode(message.hashTreeSalt, 0, message.hashTreeSalt.length) : options.bytes === Array ? Array.prototype.slice.call(message.hashTreeSalt) : message.hashTreeSalt;\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\"))\n object.fecDataExtent = $root.chromeos_update_engine.Extent.toObject(message.fecDataExtent, options);\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\"))\n object.fecExtent = $root.chromeos_update_engine.Extent.toObject(message.fecExtent, options);\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n object.fecRoots = message.fecRoots;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.mergeOperations && message.mergeOperations.length) {\n object.mergeOperations = [];\n for (let j = 0; j < message.mergeOperations.length; ++j)\n object.mergeOperations[j] = $root.chromeos_update_engine.CowMergeOperation.toObject(message.mergeOperations[j], options);\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (typeof message.estimateCowSize === \"number\")\n object.estimateCowSize = options.longs === String ? String(message.estimateCowSize) : message.estimateCowSize;\n else\n object.estimateCowSize = options.longs === String ? $util.Long.prototype.toString.call(message.estimateCowSize) : options.longs === Number ? new $util.LongBits(message.estimateCowSize.low >>> 0, message.estimateCowSize.high >>> 0).toNumber(true) : message.estimateCowSize;\n return object;\n };\n\n /**\n * Converts this PartitionUpdate to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionUpdate.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionUpdate;\n })();\n\n chromeos_update_engine.DynamicPartitionGroup = (function() {\n\n /**\n * Properties of a DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionGroup\n * @property {string} name DynamicPartitionGroup name\n * @property {number|Long|null} [size] DynamicPartitionGroup size\n * @property {Array.|null} [partitionNames] DynamicPartitionGroup partitionNames\n */\n\n /**\n * Constructs a new DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionGroup.\n * @implements IDynamicPartitionGroup\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n */\n function DynamicPartitionGroup(properties) {\n this.partitionNames = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionGroup name.\n * @member {string} name\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.name = \"\";\n\n /**\n * DynamicPartitionGroup size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DynamicPartitionGroup partitionNames.\n * @member {Array.} partitionNames\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.partitionNames = $util.emptyArray;\n\n /**\n * Creates a new DynamicPartitionGroup instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup instance\n */\n DynamicPartitionGroup.create = function create(properties) {\n return new DynamicPartitionGroup(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.size);\n if (message.partitionNames != null && message.partitionNames.length)\n for (let i = 0; i < message.partitionNames.length; ++i)\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.partitionNames[i]);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.name = reader.string();\n break;\n case 2:\n message.size = reader.uint64();\n break;\n case 3:\n if (!(message.partitionNames && message.partitionNames.length))\n message.partitionNames = [];\n message.partitionNames.push(reader.string());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"name\"))\n throw $util.ProtocolError(\"missing required 'name'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionGroup message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionGroup.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.partitionNames != null && message.hasOwnProperty(\"partitionNames\")) {\n if (!Array.isArray(message.partitionNames))\n return \"partitionNames: array expected\";\n for (let i = 0; i < message.partitionNames.length; ++i)\n if (!$util.isString(message.partitionNames[i]))\n return \"partitionNames: string[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a DynamicPartitionGroup message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n */\n DynamicPartitionGroup.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionGroup)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n if (object.name != null)\n message.name = String(object.name);\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.partitionNames) {\n if (!Array.isArray(object.partitionNames))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected\");\n message.partitionNames = [];\n for (let i = 0; i < object.partitionNames.length; ++i)\n message.partitionNames[i] = String(object.partitionNames[i]);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionGroup message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.DynamicPartitionGroup} message DynamicPartitionGroup\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionGroup.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.partitionNames = [];\n if (options.defaults) {\n object.name = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.partitionNames && message.partitionNames.length) {\n object.partitionNames = [];\n for (let j = 0; j < message.partitionNames.length; ++j)\n object.partitionNames[j] = message.partitionNames[j];\n }\n return object;\n };\n\n /**\n * Converts this DynamicPartitionGroup to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionGroup.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionGroup;\n })();\n\n chromeos_update_engine.DynamicPartitionMetadata = (function() {\n\n /**\n * Properties of a DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionMetadata\n * @property {Array.|null} [groups] DynamicPartitionMetadata groups\n * @property {boolean|null} [snapshotEnabled] DynamicPartitionMetadata snapshotEnabled\n * @property {boolean|null} [vabcEnabled] DynamicPartitionMetadata vabcEnabled\n * @property {string|null} [vabcCompressionParam] DynamicPartitionMetadata vabcCompressionParam\n * @property {number|null} [cowVersion] DynamicPartitionMetadata cowVersion\n */\n\n /**\n * Constructs a new DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionMetadata.\n * @implements IDynamicPartitionMetadata\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n */\n function DynamicPartitionMetadata(properties) {\n this.groups = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionMetadata groups.\n * @member {Array.} groups\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.groups = $util.emptyArray;\n\n /**\n * DynamicPartitionMetadata snapshotEnabled.\n * @member {boolean} snapshotEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.snapshotEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcEnabled.\n * @member {boolean} vabcEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcCompressionParam.\n * @member {string} vabcCompressionParam\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcCompressionParam = \"\";\n\n /**\n * DynamicPartitionMetadata cowVersion.\n * @member {number} cowVersion\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.cowVersion = 0;\n\n /**\n * Creates a new DynamicPartitionMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata instance\n */\n DynamicPartitionMetadata.create = function create(properties) {\n return new DynamicPartitionMetadata(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.groups != null && message.groups.length)\n for (let i = 0; i < message.groups.length; ++i)\n $root.chromeos_update_engine.DynamicPartitionGroup.encode(message.groups[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.snapshotEnabled != null && Object.hasOwnProperty.call(message, \"snapshotEnabled\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.snapshotEnabled);\n if (message.vabcEnabled != null && Object.hasOwnProperty.call(message, \"vabcEnabled\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.vabcEnabled);\n if (message.vabcCompressionParam != null && Object.hasOwnProperty.call(message, \"vabcCompressionParam\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.vabcCompressionParam);\n if (message.cowVersion != null && Object.hasOwnProperty.call(message, \"cowVersion\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.cowVersion);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.groups && message.groups.length))\n message.groups = [];\n message.groups.push($root.chromeos_update_engine.DynamicPartitionGroup.decode(reader, reader.uint32()));\n break;\n case 2:\n message.snapshotEnabled = reader.bool();\n break;\n case 3:\n message.vabcEnabled = reader.bool();\n break;\n case 4:\n message.vabcCompressionParam = reader.string();\n break;\n case 5:\n message.cowVersion = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.groups != null && message.hasOwnProperty(\"groups\")) {\n if (!Array.isArray(message.groups))\n return \"groups: array expected\";\n for (let i = 0; i < message.groups.length; ++i) {\n let error = $root.chromeos_update_engine.DynamicPartitionGroup.verify(message.groups[i]);\n if (error)\n return \"groups.\" + error;\n }\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n if (typeof message.snapshotEnabled !== \"boolean\")\n return \"snapshotEnabled: boolean expected\";\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n if (typeof message.vabcEnabled !== \"boolean\")\n return \"vabcEnabled: boolean expected\";\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n if (!$util.isString(message.vabcCompressionParam))\n return \"vabcCompressionParam: string expected\";\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n if (!$util.isInteger(message.cowVersion))\n return \"cowVersion: integer expected\";\n return null;\n };\n\n /**\n * Creates a DynamicPartitionMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n */\n DynamicPartitionMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionMetadata)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n if (object.groups) {\n if (!Array.isArray(object.groups))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: array expected\");\n message.groups = [];\n for (let i = 0; i < object.groups.length; ++i) {\n if (typeof object.groups[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: object expected\");\n message.groups[i] = $root.chromeos_update_engine.DynamicPartitionGroup.fromObject(object.groups[i]);\n }\n }\n if (object.snapshotEnabled != null)\n message.snapshotEnabled = Boolean(object.snapshotEnabled);\n if (object.vabcEnabled != null)\n message.vabcEnabled = Boolean(object.vabcEnabled);\n if (object.vabcCompressionParam != null)\n message.vabcCompressionParam = String(object.vabcCompressionParam);\n if (object.cowVersion != null)\n message.cowVersion = object.cowVersion >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.DynamicPartitionMetadata} message DynamicPartitionMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.groups = [];\n if (options.defaults) {\n object.snapshotEnabled = false;\n object.vabcEnabled = false;\n object.vabcCompressionParam = \"\";\n object.cowVersion = 0;\n }\n if (message.groups && message.groups.length) {\n object.groups = [];\n for (let j = 0; j < message.groups.length; ++j)\n object.groups[j] = $root.chromeos_update_engine.DynamicPartitionGroup.toObject(message.groups[j], options);\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n object.snapshotEnabled = message.snapshotEnabled;\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n object.vabcEnabled = message.vabcEnabled;\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n object.vabcCompressionParam = message.vabcCompressionParam;\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n object.cowVersion = message.cowVersion;\n return object;\n };\n\n /**\n * Converts this DynamicPartitionMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionMetadata;\n })();\n\n chromeos_update_engine.ApexInfo = (function() {\n\n /**\n * Properties of an ApexInfo.\n * @memberof chromeos_update_engine\n * @interface IApexInfo\n * @property {string|null} [packageName] ApexInfo packageName\n * @property {number|Long|null} [version] ApexInfo version\n * @property {boolean|null} [isCompressed] ApexInfo isCompressed\n * @property {number|Long|null} [decompressedSize] ApexInfo decompressedSize\n */\n\n /**\n * Constructs a new ApexInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexInfo.\n * @implements IApexInfo\n * @constructor\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n */\n function ApexInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexInfo packageName.\n * @member {string} packageName\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.packageName = \"\";\n\n /**\n * ApexInfo version.\n * @member {number|Long} version\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * ApexInfo isCompressed.\n * @member {boolean} isCompressed\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.isCompressed = false;\n\n /**\n * ApexInfo decompressedSize.\n * @member {number|Long} decompressedSize\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.decompressedSize = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * Creates a new ApexInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo instance\n */\n ApexInfo.create = function create(properties) {\n return new ApexInfo(properties);\n };\n\n /**\n * Encodes the specified ApexInfo message. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.packageName != null && Object.hasOwnProperty.call(message, \"packageName\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.packageName);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.version);\n if (message.isCompressed != null && Object.hasOwnProperty.call(message, \"isCompressed\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isCompressed);\n if (message.decompressedSize != null && Object.hasOwnProperty.call(message, \"decompressedSize\"))\n writer.uint32(/* id 4, wireType 0 =*/32).int64(message.decompressedSize);\n return writer;\n };\n\n /**\n * Encodes the specified ApexInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.packageName = reader.string();\n break;\n case 2:\n message.version = reader.int64();\n break;\n case 3:\n message.isCompressed = reader.bool();\n break;\n case 4:\n message.decompressedSize = reader.int64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n if (!$util.isString(message.packageName))\n return \"packageName: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high)))\n return \"version: integer|Long expected\";\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n if (typeof message.isCompressed !== \"boolean\")\n return \"isCompressed: boolean expected\";\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (!$util.isInteger(message.decompressedSize) && !(message.decompressedSize && $util.isInteger(message.decompressedSize.low) && $util.isInteger(message.decompressedSize.high)))\n return \"decompressedSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an ApexInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n */\n ApexInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexInfo)\n return object;\n let message = new $root.chromeos_update_engine.ApexInfo();\n if (object.packageName != null)\n message.packageName = String(object.packageName);\n if (object.version != null)\n if ($util.Long)\n (message.version = $util.Long.fromValue(object.version)).unsigned = false;\n else if (typeof object.version === \"string\")\n message.version = parseInt(object.version, 10);\n else if (typeof object.version === \"number\")\n message.version = object.version;\n else if (typeof object.version === \"object\")\n message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber();\n if (object.isCompressed != null)\n message.isCompressed = Boolean(object.isCompressed);\n if (object.decompressedSize != null)\n if ($util.Long)\n (message.decompressedSize = $util.Long.fromValue(object.decompressedSize)).unsigned = false;\n else if (typeof object.decompressedSize === \"string\")\n message.decompressedSize = parseInt(object.decompressedSize, 10);\n else if (typeof object.decompressedSize === \"number\")\n message.decompressedSize = object.decompressedSize;\n else if (typeof object.decompressedSize === \"object\")\n message.decompressedSize = new $util.LongBits(object.decompressedSize.low >>> 0, object.decompressedSize.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from an ApexInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.ApexInfo} message ApexInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.packageName = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.version = options.longs === String ? \"0\" : 0;\n object.isCompressed = false;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.decompressedSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.decompressedSize = options.longs === String ? \"0\" : 0;\n }\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n object.packageName = message.packageName;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (typeof message.version === \"number\")\n object.version = options.longs === String ? String(message.version) : message.version;\n else\n object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version;\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n object.isCompressed = message.isCompressed;\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (typeof message.decompressedSize === \"number\")\n object.decompressedSize = options.longs === String ? String(message.decompressedSize) : message.decompressedSize;\n else\n object.decompressedSize = options.longs === String ? $util.Long.prototype.toString.call(message.decompressedSize) : options.longs === Number ? new $util.LongBits(message.decompressedSize.low >>> 0, message.decompressedSize.high >>> 0).toNumber() : message.decompressedSize;\n return object;\n };\n\n /**\n * Converts this ApexInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ApexInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexInfo;\n })();\n\n chromeos_update_engine.ApexMetadata = (function() {\n\n /**\n * Properties of an ApexMetadata.\n * @memberof chromeos_update_engine\n * @interface IApexMetadata\n * @property {Array.|null} [apexInfo] ApexMetadata apexInfo\n */\n\n /**\n * Constructs a new ApexMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexMetadata.\n * @implements IApexMetadata\n * @constructor\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n */\n function ApexMetadata(properties) {\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexMetadata apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n */\n ApexMetadata.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new ApexMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata instance\n */\n ApexMetadata.create = function create(properties) {\n return new ApexMetadata(properties);\n };\n\n /**\n * Encodes the specified ApexMetadata message. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified ApexMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates an ApexMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n */\n ApexMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexMetadata)\n return object;\n let message = new $root.chromeos_update_engine.ApexMetadata();\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from an ApexMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.ApexMetadata} message ApexMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.apexInfo = [];\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this ApexMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n ApexMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexMetadata;\n })();\n\n chromeos_update_engine.DeltaArchiveManifest = (function() {\n\n /**\n * Properties of a DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @interface IDeltaArchiveManifest\n * @property {Array.|null} [installOperations] DeltaArchiveManifest installOperations\n * @property {Array.|null} [kernelInstallOperations] DeltaArchiveManifest kernelInstallOperations\n * @property {number|null} [blockSize] DeltaArchiveManifest blockSize\n * @property {number|Long|null} [signaturesOffset] DeltaArchiveManifest signaturesOffset\n * @property {number|Long|null} [signaturesSize] DeltaArchiveManifest signaturesSize\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldKernelInfo] DeltaArchiveManifest oldKernelInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newKernelInfo] DeltaArchiveManifest newKernelInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldRootfsInfo] DeltaArchiveManifest oldRootfsInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newRootfsInfo] DeltaArchiveManifest newRootfsInfo\n * @property {chromeos_update_engine.IImageInfo|null} [oldImageInfo] DeltaArchiveManifest oldImageInfo\n * @property {chromeos_update_engine.IImageInfo|null} [newImageInfo] DeltaArchiveManifest newImageInfo\n * @property {number|null} [minorVersion] DeltaArchiveManifest minorVersion\n * @property {Array.|null} [partitions] DeltaArchiveManifest partitions\n * @property {number|Long|null} [maxTimestamp] DeltaArchiveManifest maxTimestamp\n * @property {chromeos_update_engine.IDynamicPartitionMetadata|null} [dynamicPartitionMetadata] DeltaArchiveManifest dynamicPartitionMetadata\n * @property {boolean|null} [partialUpdate] DeltaArchiveManifest partialUpdate\n * @property {Array.|null} [apexInfo] DeltaArchiveManifest apexInfo\n */\n\n /**\n * Constructs a new DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DeltaArchiveManifest.\n * @implements IDeltaArchiveManifest\n * @constructor\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n */\n function DeltaArchiveManifest(properties) {\n this.installOperations = [];\n this.kernelInstallOperations = [];\n this.partitions = [];\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DeltaArchiveManifest installOperations.\n * @member {Array.} installOperations\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.installOperations = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest kernelInstallOperations.\n * @member {Array.} kernelInstallOperations\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.kernelInstallOperations = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest blockSize.\n * @member {number} blockSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.blockSize = 4096;\n\n /**\n * DeltaArchiveManifest signaturesOffset.\n * @member {number|Long} signaturesOffset\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest signaturesSize.\n * @member {number|Long} signaturesSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest oldKernelInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldKernelInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.oldKernelInfo = null;\n\n /**\n * DeltaArchiveManifest newKernelInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newKernelInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.newKernelInfo = null;\n\n /**\n * DeltaArchiveManifest oldRootfsInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldRootfsInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.oldRootfsInfo = null;\n\n /**\n * DeltaArchiveManifest newRootfsInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newRootfsInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.newRootfsInfo = null;\n\n /**\n * DeltaArchiveManifest oldImageInfo.\n * @member {chromeos_update_engine.IImageInfo|null|undefined} oldImageInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.oldImageInfo = null;\n\n /**\n * DeltaArchiveManifest newImageInfo.\n * @member {chromeos_update_engine.IImageInfo|null|undefined} newImageInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.newImageInfo = null;\n\n /**\n * DeltaArchiveManifest minorVersion.\n * @member {number} minorVersion\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.minorVersion = 0;\n\n /**\n * DeltaArchiveManifest partitions.\n * @member {Array.} partitions\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partitions = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest maxTimestamp.\n * @member {number|Long} maxTimestamp\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.maxTimestamp = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * DeltaArchiveManifest dynamicPartitionMetadata.\n * @member {chromeos_update_engine.IDynamicPartitionMetadata|null|undefined} dynamicPartitionMetadata\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.dynamicPartitionMetadata = null;\n\n /**\n * DeltaArchiveManifest partialUpdate.\n * @member {boolean} partialUpdate\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partialUpdate = false;\n\n /**\n * DeltaArchiveManifest apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new DeltaArchiveManifest instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest instance\n */\n DeltaArchiveManifest.create = function create(properties) {\n return new DeltaArchiveManifest(properties);\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.installOperations != null && message.installOperations.length)\n for (let i = 0; i < message.installOperations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.installOperations[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.kernelInstallOperations != null && message.kernelInstallOperations.length)\n for (let i = 0; i < message.kernelInstallOperations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.kernelInstallOperations[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.blockSize != null && Object.hasOwnProperty.call(message, \"blockSize\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.blockSize);\n if (message.signaturesOffset != null && Object.hasOwnProperty.call(message, \"signaturesOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.signaturesOffset);\n if (message.signaturesSize != null && Object.hasOwnProperty.call(message, \"signaturesSize\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.signaturesSize);\n if (message.oldKernelInfo != null && Object.hasOwnProperty.call(message, \"oldKernelInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldKernelInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newKernelInfo != null && Object.hasOwnProperty.call(message, \"newKernelInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newKernelInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.oldRootfsInfo != null && Object.hasOwnProperty.call(message, \"oldRootfsInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldRootfsInfo, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.newRootfsInfo != null && Object.hasOwnProperty.call(message, \"newRootfsInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newRootfsInfo, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim();\n if (message.oldImageInfo != null && Object.hasOwnProperty.call(message, \"oldImageInfo\"))\n $root.chromeos_update_engine.ImageInfo.encode(message.oldImageInfo, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.newImageInfo != null && Object.hasOwnProperty.call(message, \"newImageInfo\"))\n $root.chromeos_update_engine.ImageInfo.encode(message.newImageInfo, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.minorVersion != null && Object.hasOwnProperty.call(message, \"minorVersion\"))\n writer.uint32(/* id 12, wireType 0 =*/96).uint32(message.minorVersion);\n if (message.partitions != null && message.partitions.length)\n for (let i = 0; i < message.partitions.length; ++i)\n $root.chromeos_update_engine.PartitionUpdate.encode(message.partitions[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();\n if (message.maxTimestamp != null && Object.hasOwnProperty.call(message, \"maxTimestamp\"))\n writer.uint32(/* id 14, wireType 0 =*/112).int64(message.maxTimestamp);\n if (message.dynamicPartitionMetadata != null && Object.hasOwnProperty.call(message, \"dynamicPartitionMetadata\"))\n $root.chromeos_update_engine.DynamicPartitionMetadata.encode(message.dynamicPartitionMetadata, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.partialUpdate != null && Object.hasOwnProperty.call(message, \"partialUpdate\"))\n writer.uint32(/* id 16, wireType 0 =*/128).bool(message.partialUpdate);\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message, length delimited. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.installOperations && message.installOperations.length))\n message.installOperations = [];\n message.installOperations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 2:\n if (!(message.kernelInstallOperations && message.kernelInstallOperations.length))\n message.kernelInstallOperations = [];\n message.kernelInstallOperations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 3:\n message.blockSize = reader.uint32();\n break;\n case 4:\n message.signaturesOffset = reader.uint64();\n break;\n case 5:\n message.signaturesSize = reader.uint64();\n break;\n case 6:\n message.oldKernelInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newKernelInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n message.oldRootfsInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 9:\n message.newRootfsInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 10:\n message.oldImageInfo = $root.chromeos_update_engine.ImageInfo.decode(reader, reader.uint32());\n break;\n case 11:\n message.newImageInfo = $root.chromeos_update_engine.ImageInfo.decode(reader, reader.uint32());\n break;\n case 12:\n message.minorVersion = reader.uint32();\n break;\n case 13:\n if (!(message.partitions && message.partitions.length))\n message.partitions = [];\n message.partitions.push($root.chromeos_update_engine.PartitionUpdate.decode(reader, reader.uint32()));\n break;\n case 14:\n message.maxTimestamp = reader.int64();\n break;\n case 15:\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.decode(reader, reader.uint32());\n break;\n case 16:\n message.partialUpdate = reader.bool();\n break;\n case 17:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DeltaArchiveManifest message.\n * @function verify\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DeltaArchiveManifest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.installOperations != null && message.hasOwnProperty(\"installOperations\")) {\n if (!Array.isArray(message.installOperations))\n return \"installOperations: array expected\";\n for (let i = 0; i < message.installOperations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.installOperations[i]);\n if (error)\n return \"installOperations.\" + error;\n }\n }\n if (message.kernelInstallOperations != null && message.hasOwnProperty(\"kernelInstallOperations\")) {\n if (!Array.isArray(message.kernelInstallOperations))\n return \"kernelInstallOperations: array expected\";\n for (let i = 0; i < message.kernelInstallOperations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.kernelInstallOperations[i]);\n if (error)\n return \"kernelInstallOperations.\" + error;\n }\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n if (!$util.isInteger(message.blockSize))\n return \"blockSize: integer expected\";\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (!$util.isInteger(message.signaturesOffset) && !(message.signaturesOffset && $util.isInteger(message.signaturesOffset.low) && $util.isInteger(message.signaturesOffset.high)))\n return \"signaturesOffset: integer|Long expected\";\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (!$util.isInteger(message.signaturesSize) && !(message.signaturesSize && $util.isInteger(message.signaturesSize.low) && $util.isInteger(message.signaturesSize.high)))\n return \"signaturesSize: integer|Long expected\";\n if (message.oldKernelInfo != null && message.hasOwnProperty(\"oldKernelInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldKernelInfo);\n if (error)\n return \"oldKernelInfo.\" + error;\n }\n if (message.newKernelInfo != null && message.hasOwnProperty(\"newKernelInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newKernelInfo);\n if (error)\n return \"newKernelInfo.\" + error;\n }\n if (message.oldRootfsInfo != null && message.hasOwnProperty(\"oldRootfsInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldRootfsInfo);\n if (error)\n return \"oldRootfsInfo.\" + error;\n }\n if (message.newRootfsInfo != null && message.hasOwnProperty(\"newRootfsInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newRootfsInfo);\n if (error)\n return \"newRootfsInfo.\" + error;\n }\n if (message.oldImageInfo != null && message.hasOwnProperty(\"oldImageInfo\")) {\n let error = $root.chromeos_update_engine.ImageInfo.verify(message.oldImageInfo);\n if (error)\n return \"oldImageInfo.\" + error;\n }\n if (message.newImageInfo != null && message.hasOwnProperty(\"newImageInfo\")) {\n let error = $root.chromeos_update_engine.ImageInfo.verify(message.newImageInfo);\n if (error)\n return \"newImageInfo.\" + error;\n }\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n if (!$util.isInteger(message.minorVersion))\n return \"minorVersion: integer expected\";\n if (message.partitions != null && message.hasOwnProperty(\"partitions\")) {\n if (!Array.isArray(message.partitions))\n return \"partitions: array expected\";\n for (let i = 0; i < message.partitions.length; ++i) {\n let error = $root.chromeos_update_engine.PartitionUpdate.verify(message.partitions[i]);\n if (error)\n return \"partitions.\" + error;\n }\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (!$util.isInteger(message.maxTimestamp) && !(message.maxTimestamp && $util.isInteger(message.maxTimestamp.low) && $util.isInteger(message.maxTimestamp.high)))\n return \"maxTimestamp: integer|Long expected\";\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\")) {\n let error = $root.chromeos_update_engine.DynamicPartitionMetadata.verify(message.dynamicPartitionMetadata);\n if (error)\n return \"dynamicPartitionMetadata.\" + error;\n }\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n if (typeof message.partialUpdate !== \"boolean\")\n return \"partialUpdate: boolean expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a DeltaArchiveManifest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n */\n DeltaArchiveManifest.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DeltaArchiveManifest)\n return object;\n let message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n if (object.installOperations) {\n if (!Array.isArray(object.installOperations))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.installOperations: array expected\");\n message.installOperations = [];\n for (let i = 0; i < object.installOperations.length; ++i) {\n if (typeof object.installOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.installOperations: object expected\");\n message.installOperations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.installOperations[i]);\n }\n }\n if (object.kernelInstallOperations) {\n if (!Array.isArray(object.kernelInstallOperations))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.kernelInstallOperations: array expected\");\n message.kernelInstallOperations = [];\n for (let i = 0; i < object.kernelInstallOperations.length; ++i) {\n if (typeof object.kernelInstallOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.kernelInstallOperations: object expected\");\n message.kernelInstallOperations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.kernelInstallOperations[i]);\n }\n }\n if (object.blockSize != null)\n message.blockSize = object.blockSize >>> 0;\n if (object.signaturesOffset != null)\n if ($util.Long)\n (message.signaturesOffset = $util.Long.fromValue(object.signaturesOffset)).unsigned = true;\n else if (typeof object.signaturesOffset === \"string\")\n message.signaturesOffset = parseInt(object.signaturesOffset, 10);\n else if (typeof object.signaturesOffset === \"number\")\n message.signaturesOffset = object.signaturesOffset;\n else if (typeof object.signaturesOffset === \"object\")\n message.signaturesOffset = new $util.LongBits(object.signaturesOffset.low >>> 0, object.signaturesOffset.high >>> 0).toNumber(true);\n if (object.signaturesSize != null)\n if ($util.Long)\n (message.signaturesSize = $util.Long.fromValue(object.signaturesSize)).unsigned = true;\n else if (typeof object.signaturesSize === \"string\")\n message.signaturesSize = parseInt(object.signaturesSize, 10);\n else if (typeof object.signaturesSize === \"number\")\n message.signaturesSize = object.signaturesSize;\n else if (typeof object.signaturesSize === \"object\")\n message.signaturesSize = new $util.LongBits(object.signaturesSize.low >>> 0, object.signaturesSize.high >>> 0).toNumber(true);\n if (object.oldKernelInfo != null) {\n if (typeof object.oldKernelInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.oldKernelInfo: object expected\");\n message.oldKernelInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldKernelInfo);\n }\n if (object.newKernelInfo != null) {\n if (typeof object.newKernelInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.newKernelInfo: object expected\");\n message.newKernelInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newKernelInfo);\n }\n if (object.oldRootfsInfo != null) {\n if (typeof object.oldRootfsInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.oldRootfsInfo: object expected\");\n message.oldRootfsInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldRootfsInfo);\n }\n if (object.newRootfsInfo != null) {\n if (typeof object.newRootfsInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.newRootfsInfo: object expected\");\n message.newRootfsInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newRootfsInfo);\n }\n if (object.oldImageInfo != null) {\n if (typeof object.oldImageInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.oldImageInfo: object expected\");\n message.oldImageInfo = $root.chromeos_update_engine.ImageInfo.fromObject(object.oldImageInfo);\n }\n if (object.newImageInfo != null) {\n if (typeof object.newImageInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.newImageInfo: object expected\");\n message.newImageInfo = $root.chromeos_update_engine.ImageInfo.fromObject(object.newImageInfo);\n }\n if (object.minorVersion != null)\n message.minorVersion = object.minorVersion >>> 0;\n if (object.partitions) {\n if (!Array.isArray(object.partitions))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected\");\n message.partitions = [];\n for (let i = 0; i < object.partitions.length; ++i) {\n if (typeof object.partitions[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: object expected\");\n message.partitions[i] = $root.chromeos_update_engine.PartitionUpdate.fromObject(object.partitions[i]);\n }\n }\n if (object.maxTimestamp != null)\n if ($util.Long)\n (message.maxTimestamp = $util.Long.fromValue(object.maxTimestamp)).unsigned = false;\n else if (typeof object.maxTimestamp === \"string\")\n message.maxTimestamp = parseInt(object.maxTimestamp, 10);\n else if (typeof object.maxTimestamp === \"number\")\n message.maxTimestamp = object.maxTimestamp;\n else if (typeof object.maxTimestamp === \"object\")\n message.maxTimestamp = new $util.LongBits(object.maxTimestamp.low >>> 0, object.maxTimestamp.high >>> 0).toNumber();\n if (object.dynamicPartitionMetadata != null) {\n if (typeof object.dynamicPartitionMetadata !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected\");\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.fromObject(object.dynamicPartitionMetadata);\n }\n if (object.partialUpdate != null)\n message.partialUpdate = Boolean(object.partialUpdate);\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DeltaArchiveManifest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.DeltaArchiveManifest} message DeltaArchiveManifest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DeltaArchiveManifest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.installOperations = [];\n object.kernelInstallOperations = [];\n object.partitions = [];\n object.apexInfo = [];\n }\n if (options.defaults) {\n object.blockSize = 4096;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesSize = options.longs === String ? \"0\" : 0;\n object.oldKernelInfo = null;\n object.newKernelInfo = null;\n object.oldRootfsInfo = null;\n object.newRootfsInfo = null;\n object.oldImageInfo = null;\n object.newImageInfo = null;\n object.minorVersion = 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.maxTimestamp = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.maxTimestamp = options.longs === String ? \"0\" : 0;\n object.dynamicPartitionMetadata = null;\n object.partialUpdate = false;\n }\n if (message.installOperations && message.installOperations.length) {\n object.installOperations = [];\n for (let j = 0; j < message.installOperations.length; ++j)\n object.installOperations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.installOperations[j], options);\n }\n if (message.kernelInstallOperations && message.kernelInstallOperations.length) {\n object.kernelInstallOperations = [];\n for (let j = 0; j < message.kernelInstallOperations.length; ++j)\n object.kernelInstallOperations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.kernelInstallOperations[j], options);\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n object.blockSize = message.blockSize;\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (typeof message.signaturesOffset === \"number\")\n object.signaturesOffset = options.longs === String ? String(message.signaturesOffset) : message.signaturesOffset;\n else\n object.signaturesOffset = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesOffset) : options.longs === Number ? new $util.LongBits(message.signaturesOffset.low >>> 0, message.signaturesOffset.high >>> 0).toNumber(true) : message.signaturesOffset;\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (typeof message.signaturesSize === \"number\")\n object.signaturesSize = options.longs === String ? String(message.signaturesSize) : message.signaturesSize;\n else\n object.signaturesSize = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesSize) : options.longs === Number ? new $util.LongBits(message.signaturesSize.low >>> 0, message.signaturesSize.high >>> 0).toNumber(true) : message.signaturesSize;\n if (message.oldKernelInfo != null && message.hasOwnProperty(\"oldKernelInfo\"))\n object.oldKernelInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldKernelInfo, options);\n if (message.newKernelInfo != null && message.hasOwnProperty(\"newKernelInfo\"))\n object.newKernelInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newKernelInfo, options);\n if (message.oldRootfsInfo != null && message.hasOwnProperty(\"oldRootfsInfo\"))\n object.oldRootfsInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldRootfsInfo, options);\n if (message.newRootfsInfo != null && message.hasOwnProperty(\"newRootfsInfo\"))\n object.newRootfsInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newRootfsInfo, options);\n if (message.oldImageInfo != null && message.hasOwnProperty(\"oldImageInfo\"))\n object.oldImageInfo = $root.chromeos_update_engine.ImageInfo.toObject(message.oldImageInfo, options);\n if (message.newImageInfo != null && message.hasOwnProperty(\"newImageInfo\"))\n object.newImageInfo = $root.chromeos_update_engine.ImageInfo.toObject(message.newImageInfo, options);\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n object.minorVersion = message.minorVersion;\n if (message.partitions && message.partitions.length) {\n object.partitions = [];\n for (let j = 0; j < message.partitions.length; ++j)\n object.partitions[j] = $root.chromeos_update_engine.PartitionUpdate.toObject(message.partitions[j], options);\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (typeof message.maxTimestamp === \"number\")\n object.maxTimestamp = options.longs === String ? String(message.maxTimestamp) : message.maxTimestamp;\n else\n object.maxTimestamp = options.longs === String ? $util.Long.prototype.toString.call(message.maxTimestamp) : options.longs === Number ? new $util.LongBits(message.maxTimestamp.low >>> 0, message.maxTimestamp.high >>> 0).toNumber() : message.maxTimestamp;\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\"))\n object.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.toObject(message.dynamicPartitionMetadata, options);\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n object.partialUpdate = message.partialUpdate;\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this DeltaArchiveManifest to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n * @returns {Object.} JSON object\n */\n DeltaArchiveManifest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DeltaArchiveManifest;\n })();\n\n return chromeos_update_engine;\n})();\n\nexport { $root as default };\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TextWriter, ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { chromeos_update_engine } from './update_metadata_pb.js'\n\n/**\n * Parse the non-A/B OTA package and return it as a DeltaArchiveManifest\n * @param {ZipReader} packedFile\n */\nexport class PayloadNonAB extends chromeos_update_engine.DeltaArchiveManifest {\n nonAB: boolean = true\n Blocksize: number = 4096\n packedFile: ZipReader\n constructor(packedFile: ZipReader) {\n super()\n this.packedFile = packedFile\n }\n\n async init() {\n this.Blocksize = 4096\n this.partialUpdate = false\n this.dynamicPartitionMetadata = new chromeos_update_engine.DynamicPartitionMetadata(\n { snapshotEnabled: false, vabcEnabled: false }\n )\n this.partitions = []\n\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.transfer.list)/g\n const /** Array */ entries = await this.packedFile.getEntries()\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n const match = entry.filename.match(regexName)![0]\n let newPartition = new chromeos_update_engine.PartitionUpdate({\n partitionName: match\n })\n newPartition.rawText = await entry.getData!(new TextWriter())\n await this.parseTransferList(newPartition)\n this.partitions.push(newPartition)\n }\n }\n }\n\n async parseTransferList(partition: chromeos_update_engine.PartitionUpdate) {\n let /** Array */ lines = partition.rawText.split('\\n')\n // First four line in header: version, total blocks,\n // number of stashed entries, maximum used memory for stash\n if (lines.length < 4) {\n throw 'At least 4 lines in header should be provided.'\n }\n partition.version = lines[0]\n partition.totalBlocks = parseInt(lines[1])\n partition.entryStashed = parseInt(lines[2])\n partition.maxStashed = parseInt(lines[3])\n partition.newPartitionInfo = new chromeos_update_engine.PartitionInfo()\n partition.newPartitionInfo.hash = new Uint8Array()\n partition.newPartitionInfo.size = 'unknown'\n /**\n * The main body have 8 different ops:\n * zero [rangeset] : fill zeros\n * new [rangeset] : fill with new data from \n * erase [rangeset] : mark given blocks as empty\n * move <...>\n * bsdiff <...>\n * imgdiff <...> :\n * Read the source blocks and apply (not for move op) to the target blocks\n * stash : load the given source range to memory\n * free : free the given \n * format:\n * [rangeset]: <# of pairs>, , , ...\n * : a hex number with length of 40\n * <...>: We expect to parse the remainder of the parameter tokens as one of:\n * (loads data from source image only)\n * - <[stash_id:stash_range] ...> (loads data from stashes only)\n * <[stash_id:stash_range] ...>\n * (loads data from both source image and stashes)\n */\n partition.operations = new Array()\n let newDataSize = await this.sizeNewData(partition.partitionName)\n for (const line of lines.slice(4)) {\n let op = new chromeos_update_engine.InstallOperation()\n let elements = line.split(' ')\n op.type = elements[0]\n switch ((op.type as unknown) as string) {\n case 'zero':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'new':\n // unlike an A/B OTA, the payload only exists in the payload.bin,\n // in an non-A/B OTA, the payload exists in both .new.data and .patch.data.\n // The new ops do not have any information about data length.\n // what we do here is: read in the size of .new.data, assume the first new\n // op have the data length of the size of .new.data.\n op.dataLength = newDataSize\n newDataSize = 0\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'erase':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'move':\n op.dstExtents = parseRange([], elements[2])\n break\n case 'bsdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'imgdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'stash':\n break\n case 'free':\n break\n }\n partition.operations.push(op)\n }\n }\n\n /**\n * Return the size of .new.data.*\n * @param {String} partitionName\n * @return {Number}\n */\n async sizeNewData(partitionName: string) {\n const /** Array */ entries = await this.packedFile.getEntries()\n const /** RegExp */ regexName = new RegExp(partitionName + '.new.dat.*')\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n return entry.uncompressedSize\n }\n }\n }\n}\n\n/**\n * Parse the range string and return it as an array of extents\n * @param {extents} Array\n * @param {String} rangeset\n * @return Array\n */\nfunction parseRange(extents: Object[], rangeset: string) {\n const regexRange = new RegExp('[d,]+')\n if (rangeset.match(regexRange)) {\n let elements = rangeset.split(',')\n for (let i = 1; i < elements.length; i = i + 2) {\n let extent = new Object({\n startBlock: parseInt(elements[i]),\n numBlocks: parseInt(elements[i + 1]) - parseInt(elements[i])\n })\n extents.push(extent)\n }\n }\n return extents\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class paypload is used to read in and\n * parse the payload.bin file from a OTA.zip file.\n * Class OpType creates a Map that can resolve the\n * operation type.\n * @package zip.js\n * @package protobufjs\n */\n\nimport {\n BlobReader,\n TextWriter,\n Writer,\n ZipReader,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\n// import '@zip.js/zip.js'\nimport { chromeos_update_engine as update_metadata_pb } from './update_metadata_pb'\nimport { PayloadNonAB } from './payload_nonab'\nimport { ZipFile } from './trim_zip'\n// import { Zip_js } from 'zip.js'\n\nconst /** String */ _MAGIC = 'CrAU'\nconst /** Number */ _VERSION_SIZE = 8\nconst /** Number */ _MANIFEST_LEN_SIZE = 8\nconst /** Number */ _METADATA_SIGNATURE_LEN_SIZE = 4\n\nconst /** Number */ _PAYLOAD_HEADER_SIZE =\n _MAGIC.length +\n _VERSION_SIZE +\n _MANIFEST_LEN_SIZE +\n _METADATA_SIGNATURE_LEN_SIZE\n\nconst /** Number */ _BRILLO_MAJOR_PAYLOAD_VERSION = 2\nexport const /** Array */ MetadataFormat = [\n {\n prefix: 'pre-build',\n key: 'preBuild',\n name: 'Pre-build'\n },\n {\n prefix: 'pre-build-incremental',\n key: 'preBuildVersion',\n name: 'Pre-build version'\n },\n {\n prefix: 'post-build',\n key: 'postBuild',\n name: 'Post-build'\n },\n {\n prefix: 'post-build-incremental',\n key: 'postBuildVersion',\n name: 'Post-build version'\n },\n {\n prefix: 'post-security-patch-level',\n key: 'postSecurityPatchLevel',\n name: 'Post-build SPL'\n },\n {\n prefix: 'post-timestamp',\n key: 'postTimestamp',\n name: 'Post-build timestamp'\n },\n ]\n\nclass StopIteration extends Error {}\n\nclass AbPayloadHeader {\n constructor(\n public magic: string,\n public version: number,\n public manifest_len: number,\n public metadata_signature_len: number\n ) {}\n}\n\n/**\n * Read in an integer from binary bufferArray.\n * @param {Int} size the size of a integer being read in\n * @return {Int} an integer.\n */\nasync function readIntAt(buffer: Blob, position: number, size: number) {\n let /** DataView */ view = new DataView(\n await buffer!.slice(position, position + size).arrayBuffer()\n )\n if (typeof view.getBigUint64 !== 'function') {\n view.getBigUint64 = function(offset) {\n const a = BigInt(view.getUint32(offset))\n const b = BigInt(view.getUint32(offset + 4))\n const bigNumber = a * 4294967296n + b\n return bigNumber\n }\n }\n switch (size) {\n case 2:\n return view.getUint16(0)\n case 4:\n return view.getUint32(0)\n case 8:\n return Number(view.getBigUint64(0))\n default:\n throw 'Cannot read this integer with size ' + size\n }\n}\n\nclass OTAPayloadBlobWriter extends Writer {\n offset: number\n contentType: string\n blob: Blob\n prefixLength: number\n\n header?: AbPayloadHeader\n\n async readHeader(blob: Blob) {\n let cursor = 0\n const readInt = (size: number) => {\n const ret = readIntAt(blob, cursor, size)\n cursor += size\n return ret\n }\n let buffer = await blob.slice(0, _PAYLOAD_HEADER_SIZE).arrayBuffer()\n let /** TextDecoder */ decoder = new TextDecoder()\n let magicBytes = buffer.slice(0, _MAGIC.length)\n const magic = decoder.decode(magicBytes)\n if (magic != _MAGIC) {\n throw new Error(\n `MAGIC is not correct, expected: ${_MAGIC} actual: ${magic}`\n )\n }\n cursor += _MAGIC.length\n const header_version = await readInt(_VERSION_SIZE)\n const manifest_len = await readInt(_MANIFEST_LEN_SIZE)\n if (header_version != _BRILLO_MAJOR_PAYLOAD_VERSION) {\n throw new Error(`Unexpected major version number: ${header_version}`)\n }\n const metadata_signature_len = await readInt(_METADATA_SIGNATURE_LEN_SIZE)\n this.header = new AbPayloadHeader(\n magic,\n header_version,\n manifest_len,\n metadata_signature_len\n )\n }\n /**\n * A zip.Writer that is tailored for OTA payload.bin read-in.\n * Instead of reading in all the contents in payload.bin, this writer will\n * throw an 'StopIteration' error when the header is read in.\n * The header will be stored into the .\n * @param {Payload} payload\n * @param {String} contentType\n */\n constructor(contentType = '') {\n super()\n this.offset = 0\n this.contentType = contentType\n this.blob = new Blob([], { type: contentType })\n this.prefixLength = 0\n }\n\n async writeUint8Array(array: Uint8Array) {\n super.writeUint8Array(array)\n this.blob = new Blob([this.blob, array.buffer], { type: this.contentType })\n this.offset = this.blob.size\n // Once the prefixLength is non-zero, the address of manifest and signature\n // become known and can be read in. Otherwise the header needs to be read\n // in first to determine the prefixLength.\n if (this.offset >= _PAYLOAD_HEADER_SIZE && this.prefixLength == 0) {\n console.log('Parsing header!')\n await this.readHeader(this.blob)\n this.prefixLength =\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n console.log(`Computed metadata length: ${this.prefixLength}`)\n }\n if (this.prefixLength > 0) {\n console.log(`${this.offset}/${this.prefixLength}`)\n if (this.offset >= this.prefixLength) {\n // The prefix has everything we need (header, manifest, signature). Once\n // the offset is beyond the prefix, no need to move on.\n this.blob = this.blob.slice(0, this.prefixLength)\n throw new StopIteration()\n }\n }\n }\n\n getData() {\n return this.blob\n }\n}\n\nexport class Payload {\n zipreader: ZipReader\n buffer: Blob | undefined\n private metadata: any\n manifest: update_metadata_pb.DeltaArchiveManifest | undefined\n metadata_signature!: update_metadata_pb.Signatures\n\n header?: AbPayloadHeader\n\n /**\n * This class parses the metadata of a OTA package.\n * @param {File} file A OTA.zip file read from user's machine.\n */\n constructor(file: File | URL | ZipFile) {\n if (file instanceof File) {\n this.zipreader = new ZipReader(new BlobReader(file))\n } else if (file instanceof URL) {\n this.zipreader = new ZipReader(new HttpReader(file.href))\n } else {\n this.zipreader = file.reader\n }\n }\n\n getMetadataLength(): number {\n return (\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n )\n }\n\n /**\n * Unzip the OTA package, get payload.bin and metadata\n */\n async unzip() {\n let entries = await this.zipreader.getEntries()\n for (let entry of entries) {\n if (entry.filename == 'payload.bin') {\n let writer = new OTAPayloadBlobWriter('')\n try {\n await entry.getData!(writer)\n } catch (e) {\n if (e instanceof StopIteration) {\n // Exception used as a hack to stop reading from zip. NO need to do anything\n // Ideally zip.js would provide an API to partialll read a zip\n // entry, but they don't. So this is what we get\n } else {\n console.log(e)\n throw e\n }\n }\n this.buffer = writer.getData()\n await this.readManifest(this.buffer, writer.header!)\n console.log('AB OTA manifest parsed')\n } else if (entry.filename == 'META-INF/com/android/metadata') {\n this.metadata = await entry.getData!(new TextWriter())\n console.log('OTA Package metadata parsed')\n }\n }\n if (!this.manifest) {\n console.log('Failed to parse AB OTA package, falling back to non-AB')\n try {\n // The temporary variable manifest has to be used here, to prevent the html page\n // being rendered before everything is read in properly\n let manifest = new PayloadNonAB(this.zipreader)\n await manifest.init()\n manifest.nonAB = true\n this.manifest = manifest\n } catch (error) {\n alert('Please select a legit OTA package')\n return\n }\n }\n }\n\n /**\n * Read the header of payload.bin, including the magic, header_version,\n * manifest_len, metadata_signature_len.\n */\n /**\n * Read in the manifest in an OTA.zip file.\n * The structure of the manifest can be found in:\n * aosp/system/update_engine/update_metadata.proto\n */\n async readManifest(buffer: Blob, header: AbPayloadHeader) {\n this.header = header\n let cursor = _PAYLOAD_HEADER_SIZE\n let manifestBlob = await buffer\n .slice(cursor, cursor + header.manifest_len)\n .arrayBuffer()\n cursor += header.manifest_len\n this.manifest = update_metadata_pb.DeltaArchiveManifest.decode(\n new Uint8Array(manifestBlob)\n )\n let signatureBlob = await buffer\n .slice(cursor, cursor + header.metadata_signature_len)\n .arrayBuffer()\n cursor += header.metadata_signature_len\n this.metadata_signature = update_metadata_pb.Signatures.decode(\n new Uint8Array(signatureBlob)\n )\n this.manifest!.nonAB = false\n }\n\n parseMetadata() {\n for (let formatter of MetadataFormat) {\n let regex = new RegExp(formatter.prefix + '.+')\n if (this.metadata.match(regex)) {\n ;(this as any)[formatter.key] = trimEntry(\n this.metadata.match(regex)[0],\n formatter.prefix\n )\n } else {\n ;(this as any)[formatter.key] = ''\n }\n }\n }\n\n async init() {\n await this.unzip()\n this.parseMetadata()\n }\n}\n\nexport class DefaultMap extends Map {\n /** Reload the original get method. Return the original key value if\n * the key does not exist.\n * @param {Any} key\n */\n getWithDefault(key: any) {\n if (!this.has(key)) return key\n return this.get(key)\n }\n}\n\nexport class OpType {\n mapType: DefaultMap\n /**\n * OpType.mapType create a map that could resolve the operation\n * types. The operation types are encoded as numbers in\n * update_metadata.proto and must be decoded before any usage.\n */\n constructor() {\n let types = update_metadata_pb.InstallOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport class MergeOpType {\n mapType: DefaultMap\n /**\n * MergeOpType create a map that could resolve the COW merge operation\n * types. This is very similar to OpType class except that one is for\n * installation operations.\n */\n constructor() {\n let /** Array<{String: Number}>*/ types =\n update_metadata_pb.CowMergeOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport function octToHex(bufferArray: Uint8Array, space = true, maxLine = 16) {\n let hex_table = ''\n for (let i = 0; i < bufferArray.length; i++) {\n const hex /** String **/ = bufferArray[i].toString(16).toUpperCase()\n if (hex.length === 2) {\n hex_table += hex + (space ? ' ' : '')\n } else {\n hex_table += '0' + hex + (space ? ' ' : '')\n }\n if ((i + 1) % maxLine == 0 && space) {\n hex_table += '\\n'\n }\n }\n return hex_table\n}\n\n/**\n * Trim the prefix in an entry. This is required because the lookbehind\n * regular expression is not supported in safari yet.\n * @param {String} entry\n * @param {String} prefix\n * @return String\n */\nfunction trimEntry(entry: string, prefix: string) {\n return entry.slice(prefix.length + 1, entry.length)\n}\n","\n\n\n\n\n\n\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EChartsOption } from 'echarts'\n\nexport class EchartsData {\n statisticData: Map\n trimmedData: Map\n title: string\n unit: string\n maximumEntries: number\n /**\n * Given a set of [key, value] pairs and title, create an object for further\n * usage in Vue-Echarts.\n * @param {Map} statisticData\n * @param {String} title\n * @param {String} unit\n * @param {Number} maximumEntries\n */\n constructor(\n statisticData: Map,\n title: string,\n unit: string,\n maximumEntries = 15\n ) {\n this.statisticData = statisticData\n this.trimmedData = trimMap(statisticData, maximumEntries)\n this.title = title\n this.unit = unit\n this.maximumEntries = maximumEntries\n }\n\n /**\n * Convert the raw data into a string.\n * @return {String} A list of [key, value].\n */\n listData() {\n let /** String */ table = ''\n for (let [key, value] of this.statisticData) {\n table += key + ' : ' + value.toString() + ' Blocks' + '\\n'\n }\n return table\n }\n\n /**\n * Generate necessary parameters (option) for vue-echarts.\n * Format of the parameters can be found here:\n * https://echarts.apache.org/en/option.html\n * @param {String} unit\n * @return {Object} an ECharts option object.\n */\n getEchartsOption(): EChartsOption {\n let /** Object */ option: EChartsOption = {}\n option.title = {\n text: this.title,\n left: 'center'\n }\n option.tooltip = {\n trigger: 'item',\n formatter: '{a}
{b} : {c} ' + this.unit + ' ({d}%)'\n }\n option.legend = {\n orient: 'horizontal',\n left: 'top',\n top: '10%',\n data: Array.from(this.trimmedData.keys())\n }\n option.series = [\n {\n name: this.title,\n type: 'pie',\n radius: '55%',\n center: ['50%', '60%'],\n data: Array.from(this.trimmedData).map((pair: any) => {\n return { value: pair[1], name: pair[0] }\n }),\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)'\n }\n }\n }\n ]\n return option\n }\n}\n\n/**\n * When there are too many entries in the map, the pie chart can be very\n * crowded. This function will return the entries that have high values.\n * Specifically, the top will be stored and the others\n * will be added into an entry called 'other'.\n * @param {Map} map\n * @param {Number} maximumEntries\n * @return {Map}\n */\nfunction trimMap(map: Map, maximumEntries: number) {\n if (map.size <= maximumEntries) return map\n let /** Map */ new_map = new Map()\n for (let i = 0; i < maximumEntries; i++) {\n let /** Number */ curr = 0\n let /** String */ currKey = ''\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n if (value > curr) {\n curr = value\n currKey = key\n }\n }\n }\n new_map.set(currKey, curr)\n }\n let /** Number */ restTotal = 0\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n restTotal += value\n }\n }\n new_map.set('other', restTotal)\n return new_map\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class MapParser will take in a Android build and construct\n * several file name maps (physical address: file name) according to it.\n * The map of each partitions is added by calling MapParser.add(partitionName).\n * You can query the file name being operated by calling\n * MapParser.query(address, datalength).\n */\n\nimport {\n ZipReader,\n BlobReader,\n TextWriter,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\nimport { chromeos_update_engine } from './update_metadata_pb'\n\nexport class MapParser {\n build: ZipReader\n mapFiles: Map\n maps: Map\n /**\n * This class will take in a .zip Android build and construct a file type map\n * @param {File} targetFile\n */\n constructor(targetFile: File | URL) {\n if (targetFile instanceof File) {\n this.build = new ZipReader(new BlobReader(targetFile))\n } else {\n this.build = new ZipReader(new HttpReader(targetFile.href))\n }\n this.mapFiles = new Map()\n this.maps = new Map()\n }\n\n /**\n * Find the .map entries in the .zip build file. Store them as a map with\n * pairs of (partition name: zip.js entry).\n */\n async init() {\n let /** Array */ entries = await this.build.getEntries()\n const /** RegExp*/ regexPath = /IMAGES\\/[a-z_]*\\.map/g\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.map)/g\n entries.forEach(entry => {\n if (entry.filename.match(regexPath)) {\n this.mapFiles.set(entry.filename.match(regexName)![0], entry)\n }\n })\n }\n\n /**\n * According to the .map in the build, build a map for later query.\n * @param {String} partitionName\n * @param {Number} totalLength\n */\n async add(partitionName: string, totalLength: number) {\n let /** Array */ map = []\n const /** RegExp */ regexNumber = /\\d+/g\n const /** Reg */ regexRange = /\\d+\\-\\d+/g\n for (let i = 0; i < totalLength; i++) map[i] = `<${partitionName}>`\n if (this.mapFiles.get(partitionName)) {\n let /** String */ mapText = await this.mapFiles\n .get(partitionName)\n .getData(new TextWriter())\n let /** Array */ fileEntries = mapText.split('\\n')\n // Each line of the .map file in Android build starts with the filename\n // Followed by the block address, either a number or a range, for example:\n // //system/apex/com.android.adbd.apex 54-66 66 66-2663\n for (let entry of fileEntries) {\n let /** Array */ elements = entry.split(' ')\n for (let j = 1; j < elements.length; j++) {\n let /** Number */ left = 0\n let /** Number */ right = 0\n if (elements[j].match(regexRange)) {\n left = parseInt(elements[j].match(/\\d+/g)[0])\n right = parseInt(elements[j].match(/\\d+/g)[1])\n } else {\n left = parseInt(elements[j].match(regexNumber))\n right = parseInt(elements[j].match(regexNumber))\n }\n InsertMap(map, elements[0], left, right)\n }\n }\n this.maps.set(partitionName, map)\n } else {\n this.maps.set(partitionName, map)\n }\n }\n\n /**\n * Return the filename of given address.\n * @param {String} partitionName\n * @param {Array} extents\n * @return {Array}\n */\n query(partitionName: string, extents: Array) {\n let /** Array */ names = []\n let /** Array */ map = this.maps.get(partitionName)\n for (let ext of extents) {\n names.push(queryMap(map, ext.startBlock, ext.startBlock + ext.numBlocks))\n }\n return names\n }\n}\n\n/**\n * Fill in the hashtable from to using .\n * @param {Array} map\n * @param {String} name\n * @param {Number} left\n * @param {Number} right\n */\nfunction InsertMap(\n map: Array,\n name: string,\n left: number,\n right: number\n) {\n for (let i = left; i <= right; i++) {\n map[i] = name\n }\n}\n\n/**\n * Query the hashtable using index
.\n * @param {Array} map\n * @param {Number} left\n * @param {Number} right\n */\nfunction queryMap(map: Array, left: number, right: number) {\n // Assuming the consecutive blocks belong to the same file\n // Only the start block is queried here.\n if (!map[left]) {\n return 'unknown'\n }\n return map[left]\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Offer functions that can be used to parse the partitionUpdate\n * and then do statistics over it. One can use analysePartitions to specify the\n * partitions been analysed and metrics.\n */\n\nimport { OpType, MergeOpType } from './payload'\nimport { EchartsData } from './echarts_data'\nimport { MapParser } from './map_parser'\nimport { chromeos_update_engine } from './update_metadata_pb'\n\n/**\n * Add a to a element associated to . If the element dose not\n * exists than its value will be initialized to zero.\n * @param {Map} map\n * @param {String} key\n * @param {Number} value\n */\nfunction addNumberToMap(map: Map, key: String, value: number) {\n if (!map.get(key)) {\n map.set(key, 0)\n }\n map.set(key, map.get(key)! + value)\n}\n\n/**\n * Return a statistics over the numbers of blocks (in destination) that are\n * being operated by different installation operation (e.g. REPLACE, BSDIFF).\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedBlockStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n operatedBlocks,\n operationType,\n numBlocks(operation.dstExtents)\n )\n }\n }\n return operatedBlocks\n}\n\nexport function mergeOperationStatistics(\n partitions: Array,\n blockSize: number\n) {\n let /** Map */ mergeOperations = new Map()\n let /** MergeOpType */ opType = new MergeOpType()\n let /** Number */ totalBlocks = 0\n for (let partition of partitions) {\n for (let operation of partition.mergeOperations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n mergeOperations,\n operationType,\n operation.dstExtent!.numBlocks\n )\n }\n // The total blocks number should be rounded up\n if (partition.newPartitionInfo == null) {\n throw new Error(\n `Partition ${partition.partitionName} doesn't have new_partition_info field.`\n )\n }\n totalBlocks += Math.ceil(partition.newPartitionInfo.size / blockSize)\n }\n // The COW merge operation is default to be COW_replace and not shown in\n // the manifest info. We have to mannually add that part of operations,\n // by subtracting the total blocks with other blocks.\n mergeOperations.forEach((value, key) => (totalBlocks -= value))\n mergeOperations.set('COW_REPLACE', totalBlocks)\n return mergeOperations\n}\n\n/**\n * Return a statistics over the disk usage of payload.bin, based on the type of\n * installation operations. Only partitions that are being passed in will be\n * included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedPayloadStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(operatedBlocks, operationType, operation.dataLength)\n }\n }\n return operatedBlocks\n}\n/**\n * Return a statistics over the disk usage of each file types in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFileExtensionsStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let filenameStats = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n const fileExtenstionStats = new Map()\n filenameStats.forEach((size, filename) => {\n addNumberToMap(fileExtenstionStats, name2Extension(filename), size)\n })\n return fileExtenstionStats\n}\n\n/**\n * Return a statistics over the disk usage of each file name in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFilenamesStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let /** Map */ operatedFilenames = new Map()\n if (!targetFile) {\n return operatedFilenames\n }\n let buildMap = new MapParser(targetFile)\n await buildMap.init()\n for (let partition of partitions) {\n await buildMap.add(\n partition.partitionName,\n Math.ceil(partition.newPartitionInfo!.size / blockSize)\n )\n for (let operation of partition.operations!) {\n if (!operation.hasOwnProperty('dataLength')) continue\n let operatedFileNames = buildMap.query(\n partition.partitionName,\n operation.dstExtents!\n )\n let extentDataLength = distributeFilenames(\n operatedFileNames,\n operation.dstExtents!,\n operation.dataLength\n )\n extentDataLength!.forEach((value, key) => {\n addNumberToMap(operatedFilenames, key, value)\n })\n }\n }\n return operatedFilenames\n}\n\n/**\n * Analyse the given partitions using the given metrics.\n * @param {String} metrics\n * @param {Array} partitions\n * @return {EchartsData}\n */\nexport async function analysePartitions(\n metrics: String,\n partitions: Array,\n blockSize = 4096,\n targetFile: File | null | URL = null\n) {\n let /** Map */ statisticsData\n let /** Echartsdata */ echartsData\n switch (metrics) {\n case 'blocks':\n statisticsData = operatedBlockStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Operated blocks in target build',\n 'blocks'\n )\n break\n case 'payload':\n statisticsData = operatedPayloadStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Payload disk usage',\n 'bytes'\n )\n break\n case 'COWmerge':\n statisticsData = mergeOperationStatistics(partitions, blockSize)\n echartsData = new EchartsData(\n statisticsData,\n 'COW merge operations',\n 'blocks'\n )\n break\n case 'filenames':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated filenames',\n 'bytes'\n )\n break\n case 'extensions':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFileExtensionsStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated extensions',\n 'bytes'\n )\n break\n }\n if (echartsData) {\n return echartsData\n } else {\n throw 'Please double check if this is a proper AB OTA package.'\n }\n}\n\n/**\n * Calculate the number of blocks being operated\n * @param {Array} exts\n * @return {number}\n */\nexport function numBlocks(\n exts: Array | null | undefined\n) {\n if (!exts) {\n return 0\n }\n const accumulator = (total: number, ext: chromeos_update_engine.IExtent) =>\n total + ext.numBlocks\n return exts.reduce(accumulator, 0)\n}\n\n/**\n * Return a string that indicates the blocks being operated\n * in the manner of (start_block, block_length)\n * @param {Array} exts\n * @return {string}\n */\nexport function displayBlocks(exts: Array) {\n const accumulator = (total: string, ext: chromeos_update_engine.Extent) =>\n total + '(' + ext.startBlock + ',' + ext.numBlocks + ')'\n return exts.reduce(accumulator, '')\n}\n\n/**\n * Return a map with pairs of (file extension, data length used by this\n * extension). The total data length will be distributed by the blocks ratio\n * of each extent.\n * @param {Array} filenames\n * @param {Array} exts\n * @param {Number} length\n * @return {Map}\n */\nexport function distributeFilenames(\n filenames: Array,\n exts: Array,\n length: number\n): Map {\n let totalBlocks = numBlocks(exts)\n let distributedLengths = new Map()\n for (let i = 0; i < filenames.length; i++) {\n addNumberToMap(\n distributedLengths,\n filenames[i],\n Math.round((length * exts[i].numBlocks) / totalBlocks)\n )\n }\n return distributedLengths\n}\n\n/**\n * convert a filename into extension, for example:\n * '//system/apex/com.android.adbd.apex' => 'apex'\n * @param {String} filename\n * @return {String}\n */\nexport function name2Extension(filename: string) {\n let elements = filename.split('.')\n if (elements.length > 1) {\n return elements[elements.length - 1]\n } else if (elements[0] === 'unknown') {\n return 'unknown'\n } else if (filename[0] == '<' && filename.endsWith('>')) {\n return filename\n } else {\n return 'no-extension'\n }\n}\n","\nimport { numBlocks, displayBlocks } from '../services/payload_composition'\nimport { DefaultMap } from '../services/payload'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n operation: {\n type: Object,\n required: true\n },\n mapType: {\n type: DefaultMap,\n required: true\n }\n },\n data() {\n return {\n srcTotalBlocks: 0,\n srcBlocks: '',\n dstTotalBlocks: 0,\n dstBlocks: ''\n }\n },\n mounted() {\n if (this.operation.srcExtents) {\n this.srcTotalBlocks = numBlocks(this.operation.srcExtents)\n this.srcBlocks = displayBlocks(this.operation.srcExtents)\n }\n if (this.operation.dstExtents) {\n this.dstTotalBlocks = numBlocks(this.operation.dstExtents)\n this.dstBlocks = displayBlocks(this.operation.dstExtents)\n }\n }\n})\n","import { render } from \"./OperationDetail.vue?vue&type=template&id=44174082&scoped=true\"\nimport script from \"./OperationDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./OperationDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-44174082\"\n\nexport default script","\nimport { chromeos_update_engine } from '@/services/update_metadata_pb'\nimport { defineComponent } from 'vue'\nimport { OpType, octToHex } from '../services/payload'\nimport OperationDetail from './OperationDetail.vue'\n\nexport default defineComponent({\n components: {\n OperationDetail\n },\n props: {\n partition: {\n type: chromeos_update_engine.PartitionUpdate,\n required: true\n },\n dynamicPartitionList: {\n type: Array,\n required: true\n }\n },\n data() {\n return {\n showOPs: false,\n showInfo: false,\n opType: new OpType()\n }\n },\n methods: {\n toggle(key: string) {\n ;(this as any)[key] = !(this as any)[key]\n },\n octToHex: octToHex\n },\n computed: {\n readableTimestamp() {\n const unixTimestamp = parseInt(this.partition.version)\n if (isNaN(unixTimestamp)) {\n return ''\n }\n // Unix timestamp is in seconds, but js want milliseconds. So *1000\n return new Date(unixTimestamp * 1000).toString()\n },\n isDynamicPartition(): boolean {\n return (\n this.dynamicPartitionList.indexOf(this.partition.partitionName) >= 0\n )\n }\n }\n})\n","import { render } from \"./PartitionDetail.vue?vue&type=template&id=6dba348a&scoped=true\"\nimport script from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PartitionDetail.vue?vue&type=style&index=0&id=6dba348a&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-6dba348a\"\n\nexport default script","\n\n\n\n\n\n\n","import * as zip from '@zip.js/zip.js/dist/zip.js'\nimport { ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { Payload } from './payload'\n\nexport class ZipFile {\n public reader: ZipReader\n\n constructor(private file: File | URL) {\n this.reader = getZipReader(file)\n }\n getFileName() {\n return getFileName(this.file)\n }\n getFileSize() {\n if (this.file instanceof File) {\n return this.file.size\n } else {\n // TODO(zhangkelvin) Support getting file size from URL\n return 0\n }\n }\n}\n\nexport async function trimZip(\n file: ZipReader,\n p: (entry: zip.Entry) => boolean\n): Promise {\n const reader = file\n const writer = new zip.ZipWriter(new zip.BlobWriter('application/zip'))\n const entries = await reader.getEntries()\n for (const entry of entries.filter(entry => !!entry && p(entry))) {\n const blobWriter = new zip.BlobWriter()\n const data = (await entry.getData!(blobWriter)) as Blob\n console.log(`Adding ${entry.filename}, ${data.size}`)\n writer.add(entry.filename, new zip.BlobReader(blobWriter.getData()), {\n level: 0 // no compression\n })\n }\n return writer\n}\n\nfunction getZipReader(file: File | URL) {\n if (file instanceof File) {\n return new zip.ZipReader(new zip.BlobReader(file))\n } else {\n return new zip.ZipReader(new zip.HttpReader(file.href))\n }\n}\n\nexport function getFileName(file: File | URL) {\n if (file instanceof File) {\n return file.name\n } else {\n return file.pathname\n }\n}\n\nexport async function trimTargetFiles(file: File | URL): Promise {\n const writer = await trimZip(getZipReader(file), entry => {\n return entry.filename.startsWith('META/') || entry.filename.endsWith('.map')\n })\n return await writer.close()\n}\n\nexport async function trimOTAPackage(payload: Payload): Promise {\n const writer = await trimZip(payload.zipreader, entry => {\n return entry.filename != 'payload.bin'\n })\n await writer.add(\n 'payload.bin',\n new zip.BlobReader(payload.buffer!.slice(0, payload.getMetadataLength())),\n // Most toolings assume that payload.bin and other entries are not\n // compressed, so use level 0\n {\n level: 0\n }\n )\n const blob: Blob = await writer.close()\n return blob\n}\n\nexport function downloadFile(\n blob: Blob,\n downloadNode: HTMLAnchorElement,\n filename: string\n) {\n const url = window.URL.createObjectURL(blob)\n downloadNode.href = url\n downloadNode.download = filename\n downloadNode.click()\n window.URL.revokeObjectURL(url)\n}\n\nexport function ensureSuffix(str: string, suffix: string) {\n if (str.endsWith(suffix)) {\n return str\n } else {\n return str + suffix\n }\n}\n","\nimport { Payload, MetadataFormat } from '../services/payload'\nimport { ZipFile } from '@/services/trim_zip'\n\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n zipFile: {\n type: ZipFile,\n required: true\n },\n payload: {\n type: Payload,\n required: true\n }\n },\n data() {\n return {\n MetadataFormat\n }\n },\n computed: {\n otaMetadata(): {\n prefix: string\n key: string\n name: string\n }[] {\n return MetadataFormat.filter(formatter =>\n String((this.payload as any)[formatter.key]).length > 0\n );\n },\n totalCOWSize(): number {\n const cowSizes = this.payload?.manifest?.partitions.map(p => p.estimateCowSize || 0);\n if (!cowSizes) {\n return 0;\n }\n return cowSizes.reduce((a, b) => a + b);\n },\n totalDynamicPartitionSize(): number {\n const groups = this.payload?.manifest?.dynamicPartitionMetadata?.groups\n if (!groups) {\n return 0\n }\n const dynamicPartitionNamess = new Set(\n groups.flatMap(g => g.partitionNames)\n )\n const dynamicPartitions =\n this.payload.manifest?.partitions.filter(p =>\n dynamicPartitionNamess.has(p.partitionName)\n ) || []\n if (dynamicPartitions.length <= 0) {\n return 0\n }\n return dynamicPartitions\n .map(p => p.newPartitionInfo?.size || 0)\n .reduce((acc, cur) => acc + cur)\n }\n }\n})\n","import { render } from \"./BasicInfo.vue?vue&type=template&id=0514c264&scoped=true\"\nimport script from \"./BasicInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./BasicInfo.vue?vue&type=script&lang=ts\"\n\nimport \"./BasicInfo.vue?vue&type=style&index=0&id=0514c264&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-0514c264\"\n\nexport default script","\nimport PartitionDetail from './PartitionDetail.vue'\nimport BasicInfo from './BasicInfo.vue'\nimport { Payload, octToHex } from '../services/payload'\nimport {\n downloadFile,\n ensureSuffix,\n trimOTAPackage,\n ZipFile\n} from '@/services/trim_zip'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n components: {\n PartitionDetail,\n BasicInfo\n },\n props: {\n zipFile: {\n type: ZipFile,\n default: null\n },\n payload: {\n type: Payload,\n default: null\n }\n },\n methods: {\n octToHex: octToHex,\n async exportOTAPackage() {\n const blob = await trimOTAPackage(this.payload as Payload)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(this.zipFile.getFileName(), '.zip')\n )\n }\n },\n computed: {\n dynamicPartitions(): string[] {\n return (\n this.payload.manifest?.dynamicPartitionMetadata?.groups?.flatMap(\n g => g.partitionNames || []\n ) || []\n )\n }\n }\n})\n","import { render } from \"./PayloadDetail.vue?vue&type=template&id=05db67f2&scoped=true\"\nimport script from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-05db67f2\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n labels: {\n type: Array,\n default: new Array()\n },\n modelValue: {\n type: Map,\n default: new Map()\n }\n },\n data() {\n return {\n selectAll: 1,\n selectAllText: ['Select All', 'Unselect All']\n }\n },\n mounted() {\n // Set the default value to be true once mounted\n for (let key of this.labels) {\n this.modelValue.set(key, true)\n }\n },\n methods: {\n updateSelected(newSelect: string) {\n this.modelValue.set(newSelect, !this.modelValue.get(newSelect))\n this.$emit('update:modelValue', this.modelValue)\n },\n revertAllSelection() {\n this.selectAll = 1 - this.selectAll\n for (let key of this.modelValue.keys()) {\n this.modelValue.set(key, Boolean(this.selectAll))\n }\n }\n }\n})\n","import { render } from \"./PartialCheckbox.vue?vue&type=template&id=533f2336&scoped=true\"\nimport script from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\n\nimport \"./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-533f2336\"\n\nexport default script","\n\n\n\n\n\n\n","import { render } from \"./PieChart.vue?vue&type=template&id=5d1cb486&scoped=true\"\nimport script from \"./PieChart.vue?vue&type=script&lang=js\"\nexport * from \"./PieChart.vue?vue&type=script&lang=js\"\n\nimport \"./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-5d1cb486\"\n\nexport default script","\nimport axios from 'axios'\nimport PartialCheckbox from './PartialCheckbox.vue'\nimport PieChart from './PieChart.vue'\nimport BaseFile from './BaseFile.vue'\nimport { analysePartitions } from '../services/payload_composition'\nimport { chromeos_update_engine as update_metadata_pb } from '../services/update_metadata_pb'\nimport { TooltipComponentPositionCallbackParams } from 'echarts'\nimport { EchartsData } from '@/services/echarts_data'\nimport { defineComponent } from 'vue'\nimport {\n downloadFile,\n ensureSuffix,\n getFileName,\n trimTargetFiles\n} from '@/services/trim_zip'\n\ninterface ComponentState {\n partitionInclude: Map\n echartsData: EchartsData | null\n listData: string\n targetFile: File | URL | null\n}\n\nexport default defineComponent({\n components: {\n PartialCheckbox,\n PieChart,\n BaseFile\n },\n props: {\n manifest: {\n type: update_metadata_pb.DeltaArchiveManifest,\n default: () => []\n },\n demo: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n partitionInclude: new Map(),\n echartsData: null,\n listData: '',\n targetFile: null\n } as ComponentState\n },\n computed: {\n updatePartitions(): string[] {\n return this.manifest.partitions.map(\n (partition: update_metadata_pb.IPartitionUpdate) => {\n return partition.partitionName\n }\n )\n }\n },\n async mounted() {\n if (this.demo) {\n try {\n const download = await axios.get(\n './files/cf_x86_target_file_demo.zip',\n { responseType: 'blob' }\n )\n this.targetFile = new File([download.data], 'target_demo.zip')\n } catch (err) {\n console.log('Please put a proper example target file in /public/files/')\n }\n }\n },\n methods: {\n piechartClick(param: TooltipComponentPositionCallbackParams) {\n console.log(param)\n },\n async updateChart(metrics: string) {\n let partitionSelected = this.manifest.partitions.filter(partition =>\n this.partitionInclude.get(partition.partitionName)\n )\n try {\n this.echartsData = await analysePartitions(\n metrics,\n partitionSelected,\n this.manifest.blockSize,\n this.targetFile\n )\n } catch (err) {\n alert(`Cannot be processed for the following issue: ${err}`)\n }\n },\n selectBuild(file: File | URL) {\n //TODO(lishutong) check the version of target file is same to the OTA target\n this.targetFile = file\n },\n async exportTargetFileMetadata() {\n const blob = await trimTargetFiles(this.targetFile!)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(getFileName(this.targetFile!), '.zip')\n )\n }\n }\n})\n","import { render } from \"./PayloadComposition.vue?vue&type=template&id=44b569bd&scoped=true\"\nimport script from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadComposition.vue?vue&type=style&index=0&id=44b569bd&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-44b569bd\"\n\nexport default script","\nimport BaseFile from '../components/BaseFile.vue'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n BaseFile,\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return ({\n zipFile: null,\n payload: null\n } as unknown) as {\n zipFile: ZipFile\n payload: Payload\n }\n },\n methods: {\n async unpackOTA(file: File | URL) {\n this.zipFile = new ZipFile(file)\n try {\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n alert(`Please check if this is a correct OTA package (.zip). ${err}`)\n console.log(err)\n }\n }\n }\n})\n","import { render } from \"./PackageAnalysis.vue?vue&type=template&id=4cbf2b67\"\nimport script from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nexport * from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\nimport axios from 'axios'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return {\n zipFile: null,\n payload: null\n } as {\n zipFile: ZipFile | null\n payload: Payload | null\n }\n },\n async created() {\n // put cf_x86_demo.zip and cf_x86_target_file_demo into\n // this directory: /public/files\n try {\n const download = await axios.get('./files/cf_x86_demo.zip', {\n responseType: 'blob'\n })\n this.zipFile = new ZipFile(new File([download.data], 'ota_demo.zip'))\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n console.log('Please put a proper example OTA in /public/files/')\n }\n }\n})\n","import { render } from \"./Demo.vue?vue&type=template&id=1e5d071a\"\nimport script from \"./Demo.vue?vue&type=script&lang=ts\"\nexport * from \"./Demo.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n","import { render } from \"./About.vue?vue&type=template&id=67ed0bf6\"\nconst script = {}\nscript.render = render\n\nexport default script","\n\n\n\n","import { render } from \"./NotFound.vue?vue&type=template&id=50c6f348&scoped=true\"\nconst script = {}\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-50c6f348\"\n\nexport default script","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createRouter, createWebHistory } from 'vue-router'\nimport PackageAnalysis from '@/views/PackageAnalysis.vue'\nimport Demo from'@/views/Demo.vue'\nimport About from '@/views/About.vue'\nimport NotFound from '@/views/NotFound.vue'\n\nconst routes = [\n {\n path: '/',\n name: 'Analysis',\n component: PackageAnalysis,\n meta: {\n title: 'Analyse OTA package - from AOSP'\n }\n },\n {\n path: '/demo',\n name: 'Demo',\n component: Demo\n },\n {\n path: '/about',\n name: 'About',\n component: About\n },\n {\n path: '/:catchAll(.*)',\n name: 'Not Found',\n component: NotFound\n }\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes\n})\n\n// This callback runs before every route change, including on page load.\nrouter.beforeEach((to, from, next) => {\n // This goes through the matched routes from last to first, finding the closest route with a title.\n // e.g., if we have `/some/deep/nested/route` and `/some`, `/deep`, and `/nested` have titles,\n // `/nested`'s will be chosen.\n const nearestWithTitle = to.matched.slice().reverse().find(r => r.meta && r.meta.title);\n\n // Find the nearest route element with meta tags.\n const nearestWithMeta = to.matched.slice().reverse().find(r => r.meta && r.meta.metaTags)!;\n\n const previousNearestWithMeta = from.matched.slice().reverse().find(r => r.meta && r.meta.metaTags);\n\n // If a route with a title was found, set the document (page) title to that value.\n if(nearestWithTitle) {\n document.title = nearestWithTitle.meta.title as string;\n } else if(previousNearestWithMeta) {\n document.title = previousNearestWithMeta.meta.title as string;\n }\n\n // Remove any stale meta tags from the document using the key attribute we set below.\n Array.from(document.querySelectorAll('[data-vue-router-controlled]')).map(el => el.parentNode!.removeChild(el));\n\n next();\n});\n\nexport default router\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createStore } from 'vuex'\n\nexport default createStore({\n state: {},\n mutations: {},\n actions: {},\n modules: {}\n})\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createApp } from 'vue'\nimport vuetify from './plugins/vuetify'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nconst app = createApp(App)\napp.use(router)\napp.use(store)\napp.use(vuetify)\n\napp.mount('#app')","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartitionDetail.vue?vue&type=style&index=0&id=6dba348a&scoped=true&lang=css\""],"sourceRoot":""} \ No newline at end of file diff --git a/analyseOTA/js/app.944c0aed.js b/analyseOTA/js/app.944c0aed.js new file mode 100644 index 0000000..b8e5a48 --- /dev/null +++ b/analyseOTA/js/app.944c0aed.js @@ -0,0 +1,2 @@ +(function(){"use strict";var e={6758:function(e,t,n){var a=n(9963),r=(n(1778),n(6784)),o=n(515),i=n(1731),s=(0,r.R)({components:o,directives:i,theme:{defaultTheme:"dark"}}),l=n(6252),c=n(3577);const p=(0,l.Uk)(" OTA Analyzer ");function u(e,t,n,a,r,o){const i=(0,l.up)("v-app-bar-title"),s=(0,l.up)("v-spacer"),u=(0,l.up)("v-btn"),d=(0,l.up)("v-app-bar"),f=(0,l.up)("router-view"),h=(0,l.up)("v-container"),g=(0,l.up)("v-main"),m=(0,l.up)("v-app");return(0,l.wg)(),(0,l.j4)(m,null,{default:(0,l.w5)((()=>[(0,l.Wm)(d,{rounded:"",color:"primary"},{default:(0,l.w5)((()=>[(0,l.Wm)(i,null,{default:(0,l.w5)((()=>[p])),_:1}),(0,l.Wm)(s),((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(r.links,(e=>((0,l.wg)(),(0,l.j4)(u,{key:`${e}-header-link`,to:{name:e},class:"ml-5",color:"primary"},{default:(0,l.w5)((()=>[(0,l.Uk)((0,c.zw)(e),1)])),_:2},1032,["to"])))),128))])),_:1}),(0,l.Wm)(g,null,{default:(0,l.w5)((()=>[(0,l.Wm)(h,{fluid:""},{default:(0,l.w5)((()=>[(0,l.Wm)(f)])),_:1})])),_:1})])),_:1})}var d={data(){return{links:["Analysis","Demo","About"]}}},f=n(3744);const h=(0,f.Z)(d,[["render",u]]);var g=h,m=n(2119);const y=(0,l.Uk)("This tool does not upload your package anywhere. All analysis are done in the frontend using Javascript.");function w(e,t,n,a,r,o){const i=(0,l.up)("v-alert"),s=(0,l.up)("v-row"),c=(0,l.up)("BaseFile"),p=(0,l.up)("PayloadDetail"),u=(0,l.up)("v-col"),d=(0,l.up)("v-divider"),f=(0,l.up)("PayloadComposition");return(0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l.Wm)(s,null,{default:(0,l.w5)((()=>[(0,l.Wm)(i,{style:{color:"yellow"}},{default:(0,l.w5)((()=>[y])),_:1})])),_:1}),(0,l.Wm)(s,null,{default:(0,l.w5)((()=>[(0,l.Wm)(u,{cols:"12",md:"6"},{default:(0,l.w5)((()=>[(0,l.Wm)(c,{label:"Please drag and drop an OTA package or select one",onFileSelect:e.unpackOTA},null,8,["onFileSelect"]),e.zipFile&&e.payload?((0,l.wg)(),(0,l.j4)(p,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):(0,l.kq)("",!0)])),_:1}),(0,l.Wm)(d,{vertical:""}),(0,l.Wm)(u,{cols:"12",md:"6"},{default:(0,l.w5)((()=>[e.zipFile&&e.payload.manifest?((0,l.wg)(),(0,l.j4)(f,{key:0,manifest:e.payload.manifest},null,8,["manifest"])):(0,l.kq)("",!0)])),_:1})])),_:1})],64)}const b={class:"file-select ma-5"},O={key:0},_={key:1},k={key:2};function S(e,t,n,r,o,i){return(0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l._)("label",b,[(0,l._)("div",{class:"select-button",onDragover:t[0]||(t[0]=(...t)=>e.dragover&&e.dragover(...t)),onDragleave:t[1]||(t[1]=(...t)=>e.dragleave&&e.dragleave(...t)),onDrop:t[2]||(t[2]=(...t)=>e.drop&&e.drop(...t))},[e.label?((0,l.wg)(),(0,l.iD)("span",O,(0,c.zw)(e.fileName?"":e.label),1)):((0,l.wg)(),(0,l.iD)("span",_,"Select File")),e.fileName?((0,l.wg)(),(0,l.iD)("div",k,"File selected: "+(0,c.zw)(e.fileName),1)):(0,l.kq)("",!0)],32),(0,l._)("input",{ref:"file",type:"file",accept:".zip",onChange:t[3]||(t[3]=(...t)=>e.handleFileChange&&e.handleFileChange(...t))},null,544)]),(0,l.wy)((0,l._)("input",{class:(0,c.C_)(["url-input",{"url-invalid":!e.parsedURL&&""!=e.url,"url-valid":e.parsedURL||""==e.url}]),ref:"url_input",type:"url",placeholder:"type a URL","onUpdate:modelValue":t[4]||(t[4]=t=>e.url=t),onKeyup:t[5]||(t[5]=(...t)=>e.urlKeyup&&e.urlKeyup(...t))},null,34),[[a.nr,e.url]])],64)}var x=(0,l.aZ)({props:{label:{type:String,default:""}},emits:{"file-select":null},data(){return{fileName:"",url:""}},computed:{parsedURL(){try{return new URL(this.url)}catch{return null}}},methods:{handleFileChange(e){if(!e.currentTarget)return;let t=e.currentTarget;if(null==t.files||t.files.length<1)return;const n=t.files[0];this.$emit("file-select",n),this.url="",this.fileName=t.files[0].name},dragover(e){if(e.preventDefault(),!e.currentTarget)return;let t=e.currentTarget;t.classList.contains("file-hover")||t.classList.add("file-hover")},dragleave(e){if(!e.currentTarget)return;let t=e.currentTarget;t.classList.remove("file-hover")},drop(e){if(e.preventDefault(),!e.currentTarget)return;let t=e.currentTarget;e.dataTransfer&&0!=e.dataTransfer.files.length&&(t.files=e.dataTransfer.files,this.handleFileChange(e),t.classList.remove("file-hover"))},urlKeyup(e){if(console.log(this.url),"Enter"==e.key){const t=e.target;if(null==this.parsedURL)return void console.error(`${t.value} is an invalid URL`);this.$emit("file-select",this.parsedURL)}}}});const P=(0,f.Z)(x,[["render",S],["__scopeId","data-v-0630c5ec"]]);var I=P;const v=e=>((0,l.dD)("data-v-05db67f2"),e=e(),(0,l.Cn)(),e),E=(0,l.Uk)("Export Metadata"),z={ref:"download"},L={key:1},T=v((()=>(0,l._)("h3",null,"Partition List",-1))),j={key:1,class:"signature"},D=v((()=>(0,l._)("h3",null,"Metadata Signature",-1))),A={style:{"white-space":"pre-wrap"}};function B(e,t,n,a,r,o){const i=(0,l.up)("v-btn"),s=(0,l.up)("BasicInfo"),p=(0,l.up)("v-divider"),u=(0,l.up)("PartitionDetail"),d=(0,l.up)("v-card"),f=(0,l.up)("v-col"),h=(0,l.up)("v-row");return(0,l.wg)(),(0,l.iD)(l.HY,null,[e.zipFile&&e.payload?((0,l.wg)(),(0,l.j4)(i,{key:0,class:"download-btn",onClick:e.exportOTAPackage},{default:(0,l.w5)((()=>[E])),_:1},8,["onClick"])):(0,l.kq)("",!0),(0,l._)("a",z,null,512),(0,l.Wm)(s,{zipFile:e.zipFile,payload:e.payload,class:"mb-5"},null,8,["zipFile","payload"]),(0,l.Wm)(p),e.payload?((0,l.wg)(),(0,l.iD)("div",L,[T,e.payload.manifest?((0,l.wg)(),(0,l.j4)(h,{key:0,class:"mb-5"},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.payload.manifest.partitions,(t=>((0,l.wg)(),(0,l.j4)(f,{key:t.partitionName,cols:"12",md:"4"},{default:(0,l.w5)((()=>[(0,l.Wm)(d,{elevation:"5",hover:"",shaped:"",class:"partial-info"},{default:(0,l.w5)((()=>[(0,l.Wm)(u,{partition:t,dynamicPartitionList:e.dynamicPartitions},null,8,["partition","dynamicPartitionList"])])),_:2},1024)])),_:2},1024)))),128))])),_:1})):(0,l.kq)("",!0),(0,l.Wm)(p),e.payload.metadata_signature&&!e.payload.manifest.nonAB?((0,l.wg)(),(0,l.iD)("div",j,[D,(0,l._)("span",A,(0,c.zw)(e.octToHex(e.payload.metadata_signature.signatures[0].data)),1)])):(0,l.kq)("",!0)])):(0,l.kq)("",!0)],64)}const C=e=>((0,l.dD)("data-v-6dba348a"),e=e(),(0,l.Cn)(),e),N={key:0},M={key:1},F=C((()=>(0,l._)("strong",null," Estimate COW Size: ",-1))),U={key:2},R=C((()=>(0,l._)("strong",null," Postinstall Script: ",-1))),V={class:"toggle"},H={key:0},W={key:0},Z=C((()=>(0,l._)("strong",null," Old Partition Size: ",-1))),q={key:1},K=C((()=>(0,l._)("strong",null," Old Partition Hash: ",-1))),J={class:"hex"},$=C((()=>(0,l._)("strong",null," New Partition Size: ",-1))),Y={key:2},G=C((()=>(0,l._)("strong",null," New Partition Hash: ",-1))),X={class:"hex"},Q={key:3},ee=C((()=>(0,l._)("strong",null," Version: ",-1))),te={key:4},ne=C((()=>(0,l._)("strong",null," Version: ",-1))),ae={class:"toggle"},re={key:0};function oe(e,t,n,a,r,o){const i=(0,l.up)("OperationDetail");return(0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l._)("h4",{class:(0,c.C_)({"new-partition":!e.partition.oldPartitionInfo})},(0,c.zw)(e.partition.partitionName),3),e.isDynamicPartition?((0,l.wg)(),(0,l.iD)("p",N," Dynamic: ✅ ")):(0,l.kq)("",!0),e.partition.estimateCowSize?((0,l.wg)(),(0,l.iD)("p",M,[F,(0,l.Uk)(" "+(0,c.zw)(e.partition.estimateCowSize)+" Bytes ",1)])):(0,l.kq)("",!0),e.partition.postinstallPath?((0,l.wg)(),(0,l.iD)("p",U,[R,(0,l.Uk)(" "+(0,c.zw)(e.partition.postinstallPath),1)])):(0,l.kq)("",!0),(0,l._)("div",V,[(0,l._)("h4",{onClick:t[0]||(t[0]=t=>e.toggle("showInfo")),class:(0,c.C_)({active:e.showInfo,inactive:!e.showInfo})}," Partition Infos ",2),e.showInfo?((0,l.wg)(),(0,l.iD)("ul",H,[e.partition.oldPartitionInfo?((0,l.wg)(),(0,l.iD)("li",W,[Z,(0,l.Uk)(" "+(0,c.zw)(e.partition.oldPartitionInfo.size)+" Bytes ",1)])):(0,l.kq)("",!0),e.partition.oldPartitionInfo?((0,l.wg)(),(0,l.iD)("li",q,[K,(0,l._)("div",J,(0,c.zw)(e.octToHex(e.partition.oldPartitionInfo.hash,!1,16)),1)])):(0,l.kq)("",!0),(0,l._)("li",null,[$,(0,l.Uk)(" "+(0,c.zw)(e.partition.newPartitionInfo.size)+" Bytes ",1)]),e.partition.newPartitionInfo.hash?((0,l.wg)(),(0,l.iD)("li",Y,[G,(0,l._)("div",X,(0,c.zw)(e.octToHex(e.partition.newPartitionInfo.hash,!1,16)),1)])):(0,l.kq)("",!0),e.partition.version?((0,l.wg)(),(0,l.iD)("li",Q,[ee,(0,l.Uk)(" "+(0,c.zw)(e.partition.version),1)])):(0,l.kq)("",!0),e.readableTimestamp?((0,l.wg)(),(0,l.iD)("li",te,[ne,(0,l.Uk)(" "+(0,c.zw)(e.readableTimestamp),1)])):(0,l.kq)("",!0)])):(0,l.kq)("",!0)]),(0,l._)("div",ae,[(0,l._)("h4",{onClick:t[1]||(t[1]=t=>e.toggle("showOPs")),class:(0,c.C_)({active:e.showOPs,inactive:!e.showOPs})}," Total Operations: "+(0,c.zw)(e.partition.operations.length),3),e.showOPs?((0,l.wg)(),(0,l.iD)("ul",re,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.partition.operations,(t=>((0,l.wg)(),(0,l.iD)("li",{key:t.dataSha256Hash},[(0,l.Wm)(i,{operation:t,mapType:e.opType.mapType},null,8,["operation","mapType"])])))),128))])):(0,l.kq)("",!0)])],64)}var ie=n(2100);const se=ie.Reader,le=ie.Writer,ce=ie.util,pe=ie.roots["default"]||(ie.roots["default"]={}),ue=pe.chromeos_update_engine=(()=>{const e={};return e.Extent=function(){function e(e){if(e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.startBlock=e.uint64();break;case 2:a.numBlocks=e.uint64();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==typeof e||null===e?"object expected":null==e.startBlock||!e.hasOwnProperty("startBlock")||ce.isInteger(e.startBlock)||e.startBlock&&ce.isInteger(e.startBlock.low)&&ce.isInteger(e.startBlock.high)?null==e.numBlocks||!e.hasOwnProperty("numBlocks")||ce.isInteger(e.numBlocks)||e.numBlocks&&ce.isInteger(e.numBlocks.low)&&ce.isInteger(e.numBlocks.high)?null:"numBlocks: integer|Long expected":"startBlock: integer|Long expected"},e.fromObject=function(e){if(e instanceof pe.chromeos_update_engine.Extent)return e;let t=new pe.chromeos_update_engine.Extent;return null!=e.startBlock&&(ce.Long?(t.startBlock=ce.Long.fromValue(e.startBlock)).unsigned=!0:"string"===typeof e.startBlock?t.startBlock=parseInt(e.startBlock,10):"number"===typeof e.startBlock?t.startBlock=e.startBlock:"object"===typeof e.startBlock&&(t.startBlock=new ce.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0))),null!=e.numBlocks&&(ce.Long?(t.numBlocks=ce.Long.fromValue(e.numBlocks)).unsigned=!0:"string"===typeof e.numBlocks?t.numBlocks=parseInt(e.numBlocks,10):"number"===typeof e.numBlocks?t.numBlocks=e.numBlocks:"object"===typeof e.numBlocks&&(t.numBlocks=new ce.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});let n={};if(t.defaults){if(ce.Long){let e=new ce.Long(0,0,!0);n.startBlock=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.startBlock=t.longs===String?"0":0;if(ce.Long){let e=new ce.Long(0,0,!0);n.numBlocks=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.numBlocks=t.longs===String?"0":0}return null!=e.startBlock&&e.hasOwnProperty("startBlock")&&("number"===typeof e.startBlock?n.startBlock=t.longs===String?String(e.startBlock):e.startBlock:n.startBlock=t.longs===String?ce.Long.prototype.toString.call(e.startBlock):t.longs===Number?new ce.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0):e.startBlock),null!=e.numBlocks&&e.hasOwnProperty("numBlocks")&&("number"===typeof e.numBlocks?n.numBlocks=t.longs===String?String(e.numBlocks):e.numBlocks:n.numBlocks=t.longs===String?ce.Long.prototype.toString.call(e.numBlocks):t.longs===Number?new ce.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0):e.numBlocks),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ie.util.toJSONOptions)},e}(),e.Signatures=function(){function e(e){if(this.signatures=[],e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.signatures&&a.signatures.length||(a.signatures=[]),a.signatures.push(pe.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(null!=e.signatures&&e.hasOwnProperty("signatures")){if(!Array.isArray(e.signatures))return"signatures: array expected";for(let t=0;t>>3){case 1:a.version=e.uint32();break;case 2:a.data=e.bytes();break;case 3:a.unpaddedSignatureSize=e.fixed32();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==typeof e||null===e?"object expected":null!=e.version&&e.hasOwnProperty("version")&&!ce.isInteger(e.version)?"version: integer expected":null!=e.data&&e.hasOwnProperty("data")&&!(e.data&&"number"===typeof e.data.length||ce.isString(e.data))?"data: buffer expected":null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&!ce.isInteger(e.unpaddedSignatureSize)?"unpaddedSignatureSize: integer expected":null},e.fromObject=function(e){if(e instanceof pe.chromeos_update_engine.Signatures.Signature)return e;let t=new pe.chromeos_update_engine.Signatures.Signature;return null!=e.version&&(t.version=e.version>>>0),null!=e.data&&("string"===typeof e.data?ce.base64.decode(e.data,t.data=ce.newBuffer(ce.base64.length(e.data)),0):e.data.length&&(t.data=e.data)),null!=e.unpaddedSignatureSize&&(t.unpaddedSignatureSize=e.unpaddedSignatureSize>>>0),t},e.toObject=function(e,t){t||(t={});let n={};return t.defaults&&(n.version=0,t.bytes===String?n.data="":(n.data=[],t.bytes!==Array&&(n.data=ce.newBuffer(n.data))),n.unpaddedSignatureSize=0),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.data&&e.hasOwnProperty("data")&&(n.data=t.bytes===String?ce.base64.encode(e.data,0,e.data.length):t.bytes===Array?Array.prototype.slice.call(e.data):e.data),null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&(n.unpaddedSignatureSize=e.unpaddedSignatureSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ie.util.toJSONOptions)},e}(),e}(),e.PartitionInfo=function(){function e(e){if(e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.size=e.uint64();break;case 2:a.hash=e.bytes();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==typeof e||null===e?"object expected":null==e.size||!e.hasOwnProperty("size")||ce.isInteger(e.size)||e.size&&ce.isInteger(e.size.low)&&ce.isInteger(e.size.high)?null!=e.hash&&e.hasOwnProperty("hash")&&!(e.hash&&"number"===typeof e.hash.length||ce.isString(e.hash))?"hash: buffer expected":null:"size: integer|Long expected"},e.fromObject=function(e){if(e instanceof pe.chromeos_update_engine.PartitionInfo)return e;let t=new pe.chromeos_update_engine.PartitionInfo;return null!=e.size&&(ce.Long?(t.size=ce.Long.fromValue(e.size)).unsigned=!0:"string"===typeof e.size?t.size=parseInt(e.size,10):"number"===typeof e.size?t.size=e.size:"object"===typeof e.size&&(t.size=new ce.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0))),null!=e.hash&&("string"===typeof e.hash?ce.base64.decode(e.hash,t.hash=ce.newBuffer(ce.base64.length(e.hash)),0):e.hash.length&&(t.hash=e.hash)),t},e.toObject=function(e,t){t||(t={});let n={};if(t.defaults){if(ce.Long){let e=new ce.Long(0,0,!0);n.size=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.size=t.longs===String?"0":0;t.bytes===String?n.hash="":(n.hash=[],t.bytes!==Array&&(n.hash=ce.newBuffer(n.hash)))}return null!=e.size&&e.hasOwnProperty("size")&&("number"===typeof e.size?n.size=t.longs===String?String(e.size):e.size:n.size=t.longs===String?ce.Long.prototype.toString.call(e.size):t.longs===Number?new ce.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0):e.size),null!=e.hash&&e.hasOwnProperty("hash")&&(n.hash=t.bytes===String?ce.base64.encode(e.hash,0,e.hash.length):t.bytes===Array?Array.prototype.slice.call(e.hash):e.hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ie.util.toJSONOptions)},e}(),e.ImageInfo=function(){function e(e){if(e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.board=e.string();break;case 2:a.key=e.string();break;case 3:a.channel=e.string();break;case 4:a.version=e.string();break;case 5:a.buildChannel=e.string();break;case 6:a.buildVersion=e.string();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==typeof e||null===e?"object expected":null!=e.board&&e.hasOwnProperty("board")&&!ce.isString(e.board)?"board: string expected":null!=e.key&&e.hasOwnProperty("key")&&!ce.isString(e.key)?"key: string expected":null!=e.channel&&e.hasOwnProperty("channel")&&!ce.isString(e.channel)?"channel: string expected":null!=e.version&&e.hasOwnProperty("version")&&!ce.isString(e.version)?"version: string expected":null!=e.buildChannel&&e.hasOwnProperty("buildChannel")&&!ce.isString(e.buildChannel)?"buildChannel: string expected":null!=e.buildVersion&&e.hasOwnProperty("buildVersion")&&!ce.isString(e.buildVersion)?"buildVersion: string expected":null},e.fromObject=function(e){if(e instanceof pe.chromeos_update_engine.ImageInfo)return e;let t=new pe.chromeos_update_engine.ImageInfo;return null!=e.board&&(t.board=String(e.board)),null!=e.key&&(t.key=String(e.key)),null!=e.channel&&(t.channel=String(e.channel)),null!=e.version&&(t.version=String(e.version)),null!=e.buildChannel&&(t.buildChannel=String(e.buildChannel)),null!=e.buildVersion&&(t.buildVersion=String(e.buildVersion)),t},e.toObject=function(e,t){t||(t={});let n={};return t.defaults&&(n.board="",n.key="",n.channel="",n.version="",n.buildChannel="",n.buildVersion=""),null!=e.board&&e.hasOwnProperty("board")&&(n.board=e.board),null!=e.key&&e.hasOwnProperty("key")&&(n.key=e.key),null!=e.channel&&e.hasOwnProperty("channel")&&(n.channel=e.channel),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.buildChannel&&e.hasOwnProperty("buildChannel")&&(n.buildChannel=e.buildChannel),null!=e.buildVersion&&e.hasOwnProperty("buildVersion")&&(n.buildVersion=e.buildVersion),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ie.util.toJSONOptions)},e}(),e.InstallOperation=function(){function e(e){if(this.srcExtents=[],this.dstExtents=[],e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.type=e.int32();break;case 2:a.dataOffset=e.uint64();break;case 3:a.dataLength=e.uint64();break;case 4:a.srcExtents&&a.srcExtents.length||(a.srcExtents=[]),a.srcExtents.push(pe.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 5:a.srcLength=e.uint64();break;case 6:a.dstExtents&&a.dstExtents.length||(a.dstExtents=[]),a.dstExtents.push(pe.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 7:a.dstLength=e.uint64();break;case 8:a.dataSha256Hash=e.bytes();break;case 9:a.srcSha256Hash=e.bytes();break;default:e.skipType(7&t);break}}if(!a.hasOwnProperty("type"))throw ce.ProtocolError("missing required 'type'",{instance:a});return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 8:case 6:case 7:case 10:case 9:case 11:case 12:case 13:break}if(null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&!ce.isInteger(e.dataOffset)&&!(e.dataOffset&&ce.isInteger(e.dataOffset.low)&&ce.isInteger(e.dataOffset.high)))return"dataOffset: integer|Long expected";if(null!=e.dataLength&&e.hasOwnProperty("dataLength")&&!ce.isInteger(e.dataLength)&&!(e.dataLength&&ce.isInteger(e.dataLength.low)&&ce.isInteger(e.dataLength.high)))return"dataLength: integer|Long expected";if(null!=e.srcExtents&&e.hasOwnProperty("srcExtents")){if(!Array.isArray(e.srcExtents))return"srcExtents: array expected";for(let t=0;t>>0,e.dataOffset.high>>>0).toNumber(!0))),null!=e.dataLength&&(ce.Long?(t.dataLength=ce.Long.fromValue(e.dataLength)).unsigned=!0:"string"===typeof e.dataLength?t.dataLength=parseInt(e.dataLength,10):"number"===typeof e.dataLength?t.dataLength=e.dataLength:"object"===typeof e.dataLength&&(t.dataLength=new ce.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0))),e.srcExtents){if(!Array.isArray(e.srcExtents))throw TypeError(".chromeos_update_engine.InstallOperation.srcExtents: array expected");t.srcExtents=[];for(let n=0;n>>0,e.srcLength.high>>>0).toNumber(!0))),e.dstExtents){if(!Array.isArray(e.dstExtents))throw TypeError(".chromeos_update_engine.InstallOperation.dstExtents: array expected");t.dstExtents=[];for(let n=0;n>>0,e.dstLength.high>>>0).toNumber(!0))),null!=e.dataSha256Hash&&("string"===typeof e.dataSha256Hash?ce.base64.decode(e.dataSha256Hash,t.dataSha256Hash=ce.newBuffer(ce.base64.length(e.dataSha256Hash)),0):e.dataSha256Hash.length&&(t.dataSha256Hash=e.dataSha256Hash)),null!=e.srcSha256Hash&&("string"===typeof e.srcSha256Hash?ce.base64.decode(e.srcSha256Hash,t.srcSha256Hash=ce.newBuffer(ce.base64.length(e.srcSha256Hash)),0):e.srcSha256Hash.length&&(t.srcSha256Hash=e.srcSha256Hash)),t},e.toObject=function(e,t){t||(t={});let n={};if((t.arrays||t.defaults)&&(n.srcExtents=[],n.dstExtents=[]),t.defaults){if(n.type=t.enums===String?"REPLACE":0,ce.Long){let e=new ce.Long(0,0,!0);n.dataOffset=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.dataOffset=t.longs===String?"0":0;if(ce.Long){let e=new ce.Long(0,0,!0);n.dataLength=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.dataLength=t.longs===String?"0":0;if(ce.Long){let e=new ce.Long(0,0,!0);n.srcLength=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.srcLength=t.longs===String?"0":0;if(ce.Long){let e=new ce.Long(0,0,!0);n.dstLength=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.dstLength=t.longs===String?"0":0;t.bytes===String?n.dataSha256Hash="":(n.dataSha256Hash=[],t.bytes!==Array&&(n.dataSha256Hash=ce.newBuffer(n.dataSha256Hash))),t.bytes===String?n.srcSha256Hash="":(n.srcSha256Hash=[],t.bytes!==Array&&(n.srcSha256Hash=ce.newBuffer(n.srcSha256Hash)))}if(null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?pe.chromeos_update_engine.InstallOperation.Type[e.type]:e.type),null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&("number"===typeof e.dataOffset?n.dataOffset=t.longs===String?String(e.dataOffset):e.dataOffset:n.dataOffset=t.longs===String?ce.Long.prototype.toString.call(e.dataOffset):t.longs===Number?new ce.LongBits(e.dataOffset.low>>>0,e.dataOffset.high>>>0).toNumber(!0):e.dataOffset),null!=e.dataLength&&e.hasOwnProperty("dataLength")&&("number"===typeof e.dataLength?n.dataLength=t.longs===String?String(e.dataLength):e.dataLength:n.dataLength=t.longs===String?ce.Long.prototype.toString.call(e.dataLength):t.longs===Number?new ce.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0):e.dataLength),e.srcExtents&&e.srcExtents.length){n.srcExtents=[];for(let a=0;a>>0,e.srcLength.high>>>0).toNumber(!0):e.srcLength),e.dstExtents&&e.dstExtents.length){n.dstExtents=[];for(let a=0;a>>0,e.dstLength.high>>>0).toNumber(!0):e.dstLength),null!=e.dataSha256Hash&&e.hasOwnProperty("dataSha256Hash")&&(n.dataSha256Hash=t.bytes===String?ce.base64.encode(e.dataSha256Hash,0,e.dataSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.dataSha256Hash):e.dataSha256Hash),null!=e.srcSha256Hash&&e.hasOwnProperty("srcSha256Hash")&&(n.srcSha256Hash=t.bytes===String?ce.base64.encode(e.srcSha256Hash,0,e.srcSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.srcSha256Hash):e.srcSha256Hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ie.util.toJSONOptions)},e.Type=function(){const e={},t=Object.create(e);return t[e[0]="REPLACE"]=0,t[e[1]="REPLACE_BZ"]=1,t[e[2]="MOVE"]=2,t[e[3]="BSDIFF"]=3,t[e[4]="SOURCE_COPY"]=4,t[e[5]="SOURCE_BSDIFF"]=5,t[e[8]="REPLACE_XZ"]=8,t[e[6]="ZERO"]=6,t[e[7]="DISCARD"]=7,t[e[10]="BROTLI_BSDIFF"]=10,t[e[9]="PUFFDIFF"]=9,t[e[11]="ZUCCHINI"]=11,t[e[12]="LZ4DIFF_BSDIFF"]=12,t[e[13]="LZ4DIFF_PUFFDIFF"]=13,t}(),e}(),e.CowMergeOperation=function(){function e(e){if(e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.type=e.int32();break;case 2:a.srcExtent=pe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 3:a.dstExtent=pe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 4:a.srcOffset=e.uint32();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:break}if(null!=e.srcExtent&&e.hasOwnProperty("srcExtent")){let t=pe.chromeos_update_engine.Extent.verify(e.srcExtent);if(t)return"srcExtent."+t}if(null!=e.dstExtent&&e.hasOwnProperty("dstExtent")){let t=pe.chromeos_update_engine.Extent.verify(e.dstExtent);if(t)return"dstExtent."+t}return null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&!ce.isInteger(e.srcOffset)?"srcOffset: integer expected":null},e.fromObject=function(e){if(e instanceof pe.chromeos_update_engine.CowMergeOperation)return e;let t=new pe.chromeos_update_engine.CowMergeOperation;switch(e.type){case"COW_COPY":case 0:t.type=0;break;case"COW_XOR":case 1:t.type=1;break;case"COW_REPLACE":case 2:t.type=2;break}if(null!=e.srcExtent){if("object"!==typeof e.srcExtent)throw TypeError(".chromeos_update_engine.CowMergeOperation.srcExtent: object expected");t.srcExtent=pe.chromeos_update_engine.Extent.fromObject(e.srcExtent)}if(null!=e.dstExtent){if("object"!==typeof e.dstExtent)throw TypeError(".chromeos_update_engine.CowMergeOperation.dstExtent: object expected");t.dstExtent=pe.chromeos_update_engine.Extent.fromObject(e.dstExtent)}return null!=e.srcOffset&&(t.srcOffset=e.srcOffset>>>0),t},e.toObject=function(e,t){t||(t={});let n={};return t.defaults&&(n.type=t.enums===String?"COW_COPY":0,n.srcExtent=null,n.dstExtent=null,n.srcOffset=0),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?pe.chromeos_update_engine.CowMergeOperation.Type[e.type]:e.type),null!=e.srcExtent&&e.hasOwnProperty("srcExtent")&&(n.srcExtent=pe.chromeos_update_engine.Extent.toObject(e.srcExtent,t)),null!=e.dstExtent&&e.hasOwnProperty("dstExtent")&&(n.dstExtent=pe.chromeos_update_engine.Extent.toObject(e.dstExtent,t)),null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&(n.srcOffset=e.srcOffset),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ie.util.toJSONOptions)},e.Type=function(){const e={},t=Object.create(e);return t[e[0]="COW_COPY"]=0,t[e[1]="COW_XOR"]=1,t[e[2]="COW_REPLACE"]=2,t}(),e}(),e.PartitionUpdate=function(){function e(e){if(this.newPartitionSignature=[],this.operations=[],this.mergeOperations=[],e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.partitionName=e.string();break;case 2:a.runPostinstall=e.bool();break;case 3:a.postinstallPath=e.string();break;case 4:a.filesystemType=e.string();break;case 5:a.newPartitionSignature&&a.newPartitionSignature.length||(a.newPartitionSignature=[]),a.newPartitionSignature.push(pe.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;case 6:a.oldPartitionInfo=pe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:a.newPartitionInfo=pe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:a.operations&&a.operations.length||(a.operations=[]),a.operations.push(pe.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 9:a.postinstallOptional=e.bool();break;case 10:a.hashTreeDataExtent=pe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 11:a.hashTreeExtent=pe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 12:a.hashTreeAlgorithm=e.string();break;case 13:a.hashTreeSalt=e.bytes();break;case 14:a.fecDataExtent=pe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 15:a.fecExtent=pe.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 16:a.fecRoots=e.uint32();break;case 17:a.version=e.string();break;case 18:a.mergeOperations&&a.mergeOperations.length||(a.mergeOperations=[]),a.mergeOperations.push(pe.chromeos_update_engine.CowMergeOperation.decode(e,e.uint32()));break;case 19:a.estimateCowSize=e.uint64();break;default:e.skipType(7&t);break}}if(!a.hasOwnProperty("partitionName"))throw ce.ProtocolError("missing required 'partitionName'",{instance:a});return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(!ce.isString(e.partitionName))return"partitionName: string expected";if(null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&"boolean"!==typeof e.runPostinstall)return"runPostinstall: boolean expected";if(null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&!ce.isString(e.postinstallPath))return"postinstallPath: string expected";if(null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&!ce.isString(e.filesystemType))return"filesystemType: string expected";if(null!=e.newPartitionSignature&&e.hasOwnProperty("newPartitionSignature")){if(!Array.isArray(e.newPartitionSignature))return"newPartitionSignature: array expected";for(let t=0;t>>0),null!=e.version&&(t.version=String(e.version)),e.mergeOperations){if(!Array.isArray(e.mergeOperations))throw TypeError(".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected");t.mergeOperations=[];for(let n=0;n>>0,e.estimateCowSize.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});let n={};if((t.arrays||t.defaults)&&(n.newPartitionSignature=[],n.operations=[],n.mergeOperations=[]),t.defaults)if(n.partitionName="",n.runPostinstall=!1,n.postinstallPath="",n.filesystemType="",n.oldPartitionInfo=null,n.newPartitionInfo=null,n.postinstallOptional=!1,n.hashTreeDataExtent=null,n.hashTreeExtent=null,n.hashTreeAlgorithm="",t.bytes===String?n.hashTreeSalt="":(n.hashTreeSalt=[],t.bytes!==Array&&(n.hashTreeSalt=ce.newBuffer(n.hashTreeSalt))),n.fecDataExtent=null,n.fecExtent=null,n.fecRoots=2,n.version="",ce.Long){let e=new ce.Long(0,0,!0);n.estimateCowSize=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.estimateCowSize=t.longs===String?"0":0;if(null!=e.partitionName&&e.hasOwnProperty("partitionName")&&(n.partitionName=e.partitionName),null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&(n.runPostinstall=e.runPostinstall),null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&(n.postinstallPath=e.postinstallPath),null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&(n.filesystemType=e.filesystemType),e.newPartitionSignature&&e.newPartitionSignature.length){n.newPartitionSignature=[];for(let a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0):e.estimateCowSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ie.util.toJSONOptions)},e}(),e.DynamicPartitionGroup=function(){function e(e){if(this.partitionNames=[],e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.name=e.string();break;case 2:a.size=e.uint64();break;case 3:a.partitionNames&&a.partitionNames.length||(a.partitionNames=[]),a.partitionNames.push(e.string());break;default:e.skipType(7&t);break}}if(!a.hasOwnProperty("name"))throw ce.ProtocolError("missing required 'name'",{instance:a});return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(!ce.isString(e.name))return"name: string expected";if(null!=e.size&&e.hasOwnProperty("size")&&!ce.isInteger(e.size)&&!(e.size&&ce.isInteger(e.size.low)&&ce.isInteger(e.size.high)))return"size: integer|Long expected";if(null!=e.partitionNames&&e.hasOwnProperty("partitionNames")){if(!Array.isArray(e.partitionNames))return"partitionNames: array expected";for(let t=0;t>>0,e.size.high>>>0).toNumber(!0))),e.partitionNames){if(!Array.isArray(e.partitionNames))throw TypeError(".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected");t.partitionNames=[];for(let n=0;n>>0,e.size.high>>>0).toNumber(!0):e.size),e.partitionNames&&e.partitionNames.length){n.partitionNames=[];for(let t=0;t>>3){case 1:a.groups&&a.groups.length||(a.groups=[]),a.groups.push(pe.chromeos_update_engine.DynamicPartitionGroup.decode(e,e.uint32()));break;case 2:a.snapshotEnabled=e.bool();break;case 3:a.vabcEnabled=e.bool();break;case 4:a.vabcCompressionParam=e.string();break;case 5:a.cowVersion=e.uint32();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(null!=e.groups&&e.hasOwnProperty("groups")){if(!Array.isArray(e.groups))return"groups: array expected";for(let t=0;t>>0),t},e.toObject=function(e,t){t||(t={});let n={};if((t.arrays||t.defaults)&&(n.groups=[]),t.defaults&&(n.snapshotEnabled=!1,n.vabcEnabled=!1,n.vabcCompressionParam="",n.cowVersion=0),e.groups&&e.groups.length){n.groups=[];for(let a=0;a>>3){case 1:a.packageName=e.string();break;case 2:a.version=e.int64();break;case 3:a.isCompressed=e.bool();break;case 4:a.decompressedSize=e.int64();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==typeof e||null===e?"object expected":null!=e.packageName&&e.hasOwnProperty("packageName")&&!ce.isString(e.packageName)?"packageName: string expected":null==e.version||!e.hasOwnProperty("version")||ce.isInteger(e.version)||e.version&&ce.isInteger(e.version.low)&&ce.isInteger(e.version.high)?null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&"boolean"!==typeof e.isCompressed?"isCompressed: boolean expected":null==e.decompressedSize||!e.hasOwnProperty("decompressedSize")||ce.isInteger(e.decompressedSize)||e.decompressedSize&&ce.isInteger(e.decompressedSize.low)&&ce.isInteger(e.decompressedSize.high)?null:"decompressedSize: integer|Long expected":"version: integer|Long expected"},e.fromObject=function(e){if(e instanceof pe.chromeos_update_engine.ApexInfo)return e;let t=new pe.chromeos_update_engine.ApexInfo;return null!=e.packageName&&(t.packageName=String(e.packageName)),null!=e.version&&(ce.Long?(t.version=ce.Long.fromValue(e.version)).unsigned=!1:"string"===typeof e.version?t.version=parseInt(e.version,10):"number"===typeof e.version?t.version=e.version:"object"===typeof e.version&&(t.version=new ce.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber())),null!=e.isCompressed&&(t.isCompressed=Boolean(e.isCompressed)),null!=e.decompressedSize&&(ce.Long?(t.decompressedSize=ce.Long.fromValue(e.decompressedSize)).unsigned=!1:"string"===typeof e.decompressedSize?t.decompressedSize=parseInt(e.decompressedSize,10):"number"===typeof e.decompressedSize?t.decompressedSize=e.decompressedSize:"object"===typeof e.decompressedSize&&(t.decompressedSize=new ce.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber())),t},e.toObject=function(e,t){t||(t={});let n={};if(t.defaults){if(n.packageName="",ce.Long){let e=new ce.Long(0,0,!1);n.version=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.version=t.longs===String?"0":0;if(n.isCompressed=!1,ce.Long){let e=new ce.Long(0,0,!1);n.decompressedSize=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.decompressedSize=t.longs===String?"0":0}return null!=e.packageName&&e.hasOwnProperty("packageName")&&(n.packageName=e.packageName),null!=e.version&&e.hasOwnProperty("version")&&("number"===typeof e.version?n.version=t.longs===String?String(e.version):e.version:n.version=t.longs===String?ce.Long.prototype.toString.call(e.version):t.longs===Number?new ce.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber():e.version),null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&(n.isCompressed=e.isCompressed),null!=e.decompressedSize&&e.hasOwnProperty("decompressedSize")&&("number"===typeof e.decompressedSize?n.decompressedSize=t.longs===String?String(e.decompressedSize):e.decompressedSize:n.decompressedSize=t.longs===String?ce.Long.prototype.toString.call(e.decompressedSize):t.longs===Number?new ce.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber():e.decompressedSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ie.util.toJSONOptions)},e}(),e.ApexMetadata=function(){function e(e){if(this.apexInfo=[],e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.apexInfo&&a.apexInfo.length||(a.apexInfo=[]),a.apexInfo.push(pe.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(null!=e.apexInfo&&e.hasOwnProperty("apexInfo")){if(!Array.isArray(e.apexInfo))return"apexInfo: array expected";for(let t=0;t>>3){case 1:a.installOperations&&a.installOperations.length||(a.installOperations=[]),a.installOperations.push(pe.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 2:a.kernelInstallOperations&&a.kernelInstallOperations.length||(a.kernelInstallOperations=[]),a.kernelInstallOperations.push(pe.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 3:a.blockSize=e.uint32();break;case 4:a.signaturesOffset=e.uint64();break;case 5:a.signaturesSize=e.uint64();break;case 6:a.oldKernelInfo=pe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:a.newKernelInfo=pe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:a.oldRootfsInfo=pe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 9:a.newRootfsInfo=pe.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 10:a.oldImageInfo=pe.chromeos_update_engine.ImageInfo.decode(e,e.uint32());break;case 11:a.newImageInfo=pe.chromeos_update_engine.ImageInfo.decode(e,e.uint32());break;case 12:a.minorVersion=e.uint32();break;case 13:a.partitions&&a.partitions.length||(a.partitions=[]),a.partitions.push(pe.chromeos_update_engine.PartitionUpdate.decode(e,e.uint32()));break;case 14:a.maxTimestamp=e.int64();break;case 15:a.dynamicPartitionMetadata=pe.chromeos_update_engine.DynamicPartitionMetadata.decode(e,e.uint32());break;case 16:a.partialUpdate=e.bool();break;case 17:a.apexInfo&&a.apexInfo.length||(a.apexInfo=[]),a.apexInfo.push(pe.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof se||(e=new se(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(null!=e.installOperations&&e.hasOwnProperty("installOperations")){if(!Array.isArray(e.installOperations))return"installOperations: array expected";for(let t=0;t>>0),null!=e.signaturesOffset&&(ce.Long?(t.signaturesOffset=ce.Long.fromValue(e.signaturesOffset)).unsigned=!0:"string"===typeof e.signaturesOffset?t.signaturesOffset=parseInt(e.signaturesOffset,10):"number"===typeof e.signaturesOffset?t.signaturesOffset=e.signaturesOffset:"object"===typeof e.signaturesOffset&&(t.signaturesOffset=new ce.LongBits(e.signaturesOffset.low>>>0,e.signaturesOffset.high>>>0).toNumber(!0))),null!=e.signaturesSize&&(ce.Long?(t.signaturesSize=ce.Long.fromValue(e.signaturesSize)).unsigned=!0:"string"===typeof e.signaturesSize?t.signaturesSize=parseInt(e.signaturesSize,10):"number"===typeof e.signaturesSize?t.signaturesSize=e.signaturesSize:"object"===typeof e.signaturesSize&&(t.signaturesSize=new ce.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0))),null!=e.oldKernelInfo){if("object"!==typeof e.oldKernelInfo)throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.oldKernelInfo: object expected");t.oldKernelInfo=pe.chromeos_update_engine.PartitionInfo.fromObject(e.oldKernelInfo)}if(null!=e.newKernelInfo){if("object"!==typeof e.newKernelInfo)throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.newKernelInfo: object expected");t.newKernelInfo=pe.chromeos_update_engine.PartitionInfo.fromObject(e.newKernelInfo)}if(null!=e.oldRootfsInfo){if("object"!==typeof e.oldRootfsInfo)throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.oldRootfsInfo: object expected");t.oldRootfsInfo=pe.chromeos_update_engine.PartitionInfo.fromObject(e.oldRootfsInfo)}if(null!=e.newRootfsInfo){if("object"!==typeof e.newRootfsInfo)throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.newRootfsInfo: object expected");t.newRootfsInfo=pe.chromeos_update_engine.PartitionInfo.fromObject(e.newRootfsInfo)}if(null!=e.oldImageInfo){if("object"!==typeof e.oldImageInfo)throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.oldImageInfo: object expected");t.oldImageInfo=pe.chromeos_update_engine.ImageInfo.fromObject(e.oldImageInfo)}if(null!=e.newImageInfo){if("object"!==typeof e.newImageInfo)throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.newImageInfo: object expected");t.newImageInfo=pe.chromeos_update_engine.ImageInfo.fromObject(e.newImageInfo)}if(null!=e.minorVersion&&(t.minorVersion=e.minorVersion>>>0),e.partitions){if(!Array.isArray(e.partitions))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected");t.partitions=[];for(let n=0;n>>0,e.maxTimestamp.high>>>0).toNumber())),null!=e.dynamicPartitionMetadata){if("object"!==typeof e.dynamicPartitionMetadata)throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected");t.dynamicPartitionMetadata=pe.chromeos_update_engine.DynamicPartitionMetadata.fromObject(e.dynamicPartitionMetadata)}if(null!=e.partialUpdate&&(t.partialUpdate=Boolean(e.partialUpdate)),e.apexInfo){if(!Array.isArray(e.apexInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected");t.apexInfo=[];for(let n=0;n>>0,e.signaturesOffset.high>>>0).toNumber(!0):e.signaturesOffset),null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&("number"===typeof e.signaturesSize?n.signaturesSize=t.longs===String?String(e.signaturesSize):e.signaturesSize:n.signaturesSize=t.longs===String?ce.Long.prototype.toString.call(e.signaturesSize):t.longs===Number?new ce.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0):e.signaturesSize),null!=e.oldKernelInfo&&e.hasOwnProperty("oldKernelInfo")&&(n.oldKernelInfo=pe.chromeos_update_engine.PartitionInfo.toObject(e.oldKernelInfo,t)),null!=e.newKernelInfo&&e.hasOwnProperty("newKernelInfo")&&(n.newKernelInfo=pe.chromeos_update_engine.PartitionInfo.toObject(e.newKernelInfo,t)),null!=e.oldRootfsInfo&&e.hasOwnProperty("oldRootfsInfo")&&(n.oldRootfsInfo=pe.chromeos_update_engine.PartitionInfo.toObject(e.oldRootfsInfo,t)),null!=e.newRootfsInfo&&e.hasOwnProperty("newRootfsInfo")&&(n.newRootfsInfo=pe.chromeos_update_engine.PartitionInfo.toObject(e.newRootfsInfo,t)),null!=e.oldImageInfo&&e.hasOwnProperty("oldImageInfo")&&(n.oldImageInfo=pe.chromeos_update_engine.ImageInfo.toObject(e.oldImageInfo,t)),null!=e.newImageInfo&&e.hasOwnProperty("newImageInfo")&&(n.newImageInfo=pe.chromeos_update_engine.ImageInfo.toObject(e.newImageInfo,t)),null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&(n.minorVersion=e.minorVersion),e.partitions&&e.partitions.length){n.partitions=[];for(let a=0;a>>0,e.maxTimestamp.high>>>0).toNumber():e.maxTimestamp),null!=e.dynamicPartitionMetadata&&e.hasOwnProperty("dynamicPartitionMetadata")&&(n.dynamicPartitionMetadata=pe.chromeos_update_engine.DynamicPartitionMetadata.toObject(e.dynamicPartitionMetadata,t)),null!=e.partialUpdate&&e.hasOwnProperty("partialUpdate")&&(n.partialUpdate=e.partialUpdate),e.apexInfo&&e.apexInfo.length){n.apexInfo=[];for(let a=0;a{const a=Pe(e,t,n);return t+=n,a};let a=await e.slice(0,Oe).arrayBuffer(),r=new TextDecoder,o=a.slice(0,me.length);const i=r.decode(o);if(i!=me)throw new Error(`MAGIC is not correct, expected: ${me} actual: ${i}`);t+=me.length;const s=await n(ye),l=await n(we);if(s!=_e)throw new Error(`Unexpected major version number: ${s}`);const c=await n(be);this.header=new xe(i,s,l,c)}constructor(e=""){super(),(0,de.Z)(this,"offset",void 0),(0,de.Z)(this,"contentType",void 0),(0,de.Z)(this,"blob",void 0),(0,de.Z)(this,"prefixLength",void 0),(0,de.Z)(this,"header",void 0),this.offset=0,this.contentType=e,this.blob=new Blob([],{type:e}),this.prefixLength=0}async writeUint8Array(e){if(super.writeUint8Array(e),this.blob=new Blob([this.blob,e.buffer],{type:this.contentType}),this.offset=this.blob.size,this.offset>=Oe&&0==this.prefixLength&&(console.log("Parsing header!"),await this.readHeader(this.blob),this.prefixLength=Oe+this.header.manifest_len+this.header.metadata_signature_len,console.log(`Computed metadata length: ${this.prefixLength}`)),this.prefixLength>0&&(console.log(`${this.offset}/${this.prefixLength}`),this.offset>=this.prefixLength))throw this.blob=this.blob.slice(0,this.prefixLength),new Se}getData(){return this.blob}}class ve{constructor(e){(0,de.Z)(this,"zipreader",void 0),(0,de.Z)(this,"buffer",void 0),(0,de.Z)(this,"metadata",void 0),(0,de.Z)(this,"manifest",void 0),(0,de.Z)(this,"metadata_signature",void 0),(0,de.Z)(this,"header",void 0),e instanceof File?this.zipreader=new fe.Mr(new fe.Nt(e)):e instanceof URL?this.zipreader=new fe.Mr(new fe.pE(e.href)):this.zipreader=e.reader}getMetadataLength(){return Oe+this.header.manifest_len+this.header.metadata_signature_len}async unzip(){let e=await this.zipreader.getEntries();for(let a of e)if("payload.bin"==a.filename){let e=new Ie("");try{await a.getData(e)}catch(t){if(!(t instanceof Se))throw console.log(t),t}this.buffer=e.getData(),await this.readManifest(this.buffer,e.header),console.log("AB OTA manifest parsed")}else"META-INF/com/android/metadata"==a.filename&&(this.metadata=await a.getData(new fe.Ek),console.log("OTA Package metadata parsed"));if(!this.manifest){console.log("Failed to parse AB OTA package, falling back to non-AB");try{let e=new he(this.zipreader);await e.init(),e.nonAB=!0,this.manifest=e}catch(n){return void alert("Please select a legit OTA package")}}}async readManifest(e,t){this.header=t;let n=Oe,a=await e.slice(n,n+t.manifest_len).arrayBuffer();n+=t.manifest_len,this.manifest=ue.DeltaArchiveManifest.decode(new Uint8Array(a));let r=await e.slice(n,n+t.metadata_signature_len).arrayBuffer();n+=t.metadata_signature_len,this.metadata_signature=ue.Signatures.decode(new Uint8Array(r)),this.manifest.nonAB=!1}parseMetadata(){for(let e of ke){let t=new RegExp(e.prefix+".+");this.metadata.match(t)?this[e.key]=je(this.metadata.match(t)[0],e.prefix):this[e.key]=""}}async init(){await this.unzip(),this.parseMetadata()}}class Ee extends Map{getWithDefault(e){return this.has(e)?this.get(e):e}}class ze{constructor(){(0,de.Z)(this,"mapType",void 0);let e=ue.InstallOperation.Type;this.mapType=new Ee;for(let t of Object.keys(e))this.mapType.set(e[t],t)}}class Le{constructor(){(0,de.Z)(this,"mapType",void 0);let e=ue.CowMergeOperation.Type;this.mapType=new Ee;for(let t of Object.keys(e))this.mapType.set(e[t],t)}}function Te(e,t=!0,n=16){let a="";for(let r=0;r((0,l.dD)("data-v-44174082"),e=e(),(0,l.Cn)(),e),Ae={key:0},Be=De((()=>(0,l._)("strong",null," Data offset: ",-1))),Ce={key:1},Ne=De((()=>(0,l._)("strong",null," Data length: ",-1))),Me={key:2},Fe=De((()=>(0,l._)("strong",null," Source: ",-1))),Ue=De((()=>(0,l._)("br",null,null,-1))),Re={key:3},Ve=De((()=>(0,l._)("strong",null," Destination: ",-1))),He=De((()=>(0,l._)("br",null,null,-1)));function We(e,t,n,a,r,o){const i=(0,l.up)("v-divider");return(0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l._)("ul",null,[(0,l._)("h5",null,(0,c.zw)(e.mapType.getWithDefault(e.operation.type)),1),e.operation.hasOwnProperty("dataOffset")?((0,l.wg)(),(0,l.iD)("li",Ae,[Be,(0,l.Uk)(" "+(0,c.zw)(e.operation.dataOffset),1)])):(0,l.kq)("",!0),e.operation.hasOwnProperty("dataLength")?((0,l.wg)(),(0,l.iD)("li",Ce,[Ne,(0,l.Uk)(" "+(0,c.zw)(e.operation.dataLength),1)])):(0,l.kq)("",!0),e.operation.hasOwnProperty("srcExtents")?((0,l.wg)(),(0,l.iD)("li",Me,[Fe,(0,l.Uk)(" "+(0,c.zw)(e.operation.srcExtents.length)+" extents ("+(0,c.zw)(e.srcTotalBlocks)+" blocks) ",1),Ue,(0,l.Uk)(" "+(0,c.zw)(e.srcBlocks),1)])):(0,l.kq)("",!0),e.operation.hasOwnProperty("dstExtents")?((0,l.wg)(),(0,l.iD)("li",Re,[Ve,(0,l.Uk)(" "+(0,c.zw)(e.operation.dstExtents.length)+" extents ("+(0,c.zw)(e.dstTotalBlocks)+" blocks) ",1),He,(0,l.Uk)(" "+(0,c.zw)(e.dstBlocks),1)])):(0,l.kq)("",!0)]),(0,l.Wm)(i)],64)}class Ze{constructor(e,t,n,a=15){(0,de.Z)(this,"statisticData",void 0),(0,de.Z)(this,"trimmedData",void 0),(0,de.Z)(this,"title",void 0),(0,de.Z)(this,"unit",void 0),(0,de.Z)(this,"maximumEntries",void 0),this.statisticData=e,this.trimmedData=qe(e,a),this.title=t,this.unit=n,this.maximumEntries=a}listData(){let e="";for(let[t,n]of this.statisticData)e+=t+" : "+n.toString()+" Blocks\n";return e}getEchartsOption(){let e={};return e.title={text:this.title,left:"center"},e.tooltip={trigger:"item",formatter:"{a}
{b} : {c} "+this.unit+" ({d}%)"},e.legend={orient:"horizontal",left:"top",top:"10%",data:Array.from(this.trimmedData.keys())},e.series=[{name:this.title,type:"pie",radius:"55%",center:["50%","60%"],data:Array.from(this.trimmedData).map((e=>({value:e[1],name:e[0]}))),emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],e}}function qe(e,t){if(e.size<=t)return e;let n=new Map;for(let r=0;rt&&(t=o,a=r);n.set(a,t)}let a=0;for(let[r,o]of e)n.get(r)||(a+=o);return n.set("other",a),n}class Ke{constructor(e){(0,de.Z)(this,"build",void 0),(0,de.Z)(this,"mapFiles",void 0),(0,de.Z)(this,"maps",void 0),e instanceof File?this.build=new fe.Mr(new fe.Nt(e)):this.build=new fe.Mr(new fe.pE(e.href)),this.mapFiles=new Map,this.maps=new Map}async init(){let e=await this.build.getEntries();const t=/IMAGES\/[a-z_]*\.map/g,n=/[\w_]+(?=\.map)/g;e.forEach((e=>{e.filename.match(t)&&this.mapFiles.set(e.filename.match(n)[0],e)}))}async add(e,t){let n=[];const a=/\d+/g,r=/\d+\-\d+/g;for(let o=0;o`;if(this.mapFiles.get(e)){let t=await this.mapFiles.get(e).getData(new fe.Ek),o=t.split("\n");for(let e of o){let t=e.split(" ");for(let e=1;er-=e)),n.set("COW_REPLACE",r),n}function Qe(e){let t=new Map,n=new ze;for(let a of e)for(let e of a.operations){let a=n.mapType.getWithDefault(e.type);Ye(t,a,e.dataLength)}return t}async function et(e,t,n){let a=await tt(e,t,n);const r=new Map;return a.forEach(((e,t)=>{Ye(r,it(t),e)})),r}async function tt(e,t,n){let a=new Map;if(!n)return a;let r=new Ke(n);await r.init();for(let o of e){await r.add(o.partitionName,Math.ceil(o.newPartitionInfo.size/t));for(let e of o.operations){if(!e.hasOwnProperty("dataLength"))continue;let t=r.query(o.partitionName,e.dstExtents),n=ot(t,e.dstExtents,e.dataLength);n.forEach(((e,t)=>{Ye(a,t,e)}))}}return a}async function nt(e,t,n=4096,a=null){let r,o;switch(e){case"blocks":r=Ge(t),o=new Ze(r,"Operated blocks in target build","blocks");break;case"payload":r=Qe(t),o=new Ze(r,"Payload disk usage","bytes");break;case"COWmerge":r=Xe(t,n),o=new Ze(r,"COW merge operations","blocks");break;case"filenames":if(null==a)throw new Error("Target file is required for filenames analysis");r=await tt(t,n,a),o=new Ze(r,"Size of operated filenames","bytes");break;case"extensions":if(null==a)throw new Error("Target file is required for filenames analysis");r=await et(t,n,a),o=new Ze(r,"Size of operated extensions","bytes");break}if(o)return o;throw"Please double check if this is a proper AB OTA package."}function at(e){if(!e)return 0;const t=(e,t)=>e+t.numBlocks;return e.reduce(t,0)}function rt(e){const t=(e,t)=>e+"("+t.startBlock+","+t.numBlocks+")";return e.reduce(t,"")}function ot(e,t,n){let a=at(t),r=new Map;for(let o=0;o1?t[t.length-1]:"unknown"===t[0]?"unknown":"<"==e[0]&&e.endsWith(">")?e:"no-extension"}var st=(0,l.aZ)({props:{operation:{type:Object,required:!0},mapType:{type:Ee,required:!0}},data(){return{srcTotalBlocks:0,srcBlocks:"",dstTotalBlocks:0,dstBlocks:""}},mounted(){this.operation.srcExtents&&(this.srcTotalBlocks=at(this.operation.srcExtents),this.srcBlocks=rt(this.operation.srcExtents)),this.operation.dstExtents&&(this.dstTotalBlocks=at(this.operation.dstExtents),this.dstBlocks=rt(this.operation.dstExtents))}});const lt=(0,f.Z)(st,[["render",We],["__scopeId","data-v-44174082"]]);var ct=lt,pt=(0,l.aZ)({components:{OperationDetail:ct},props:{partition:{type:ue.PartitionUpdate,required:!0},dynamicPartitionList:{type:Array,required:!0}},data(){return{showOPs:!1,showInfo:!1,opType:new ze}},methods:{toggle(e){this[e]=!this[e]},octToHex:Te},computed:{readableTimestamp(){const e=parseInt(this.partition.version);return isNaN(e)?"":new Date(1e3*e).toString()},isDynamicPartition(){return this.dynamicPartitionList.indexOf(this.partition.partitionName)>=0}}});const ut=(0,f.Z)(pt,[["render",oe],["__scopeId","data-v-6dba348a"]]);var dt=ut;const ft=e=>((0,l.dD)("data-v-0514c264"),e=e(),(0,l.Cn)(),e),ht=ft((()=>(0,l._)("h3",null,"Basic infos",-1))),gt={class:"align"},mt=ft((()=>(0,l._)("strong",null," File name ",-1))),yt=ft((()=>(0,l._)("strong",null," File size ",-1))),wt={class:"align"},bt={class:"wrap"},Ot={key:2},_t={class:"align"},kt=ft((()=>(0,l._)("strong",null," Incremental ",-1))),St={key:0},xt={key:1},Pt=ft((()=>(0,l._)("strong",null," Partial ",-1))),It={key:0},vt={key:1},Et=ft((()=>(0,l._)("strong",null," A/B update ",-1))),zt={key:0},Lt={key:1},Tt=ft((()=>(0,l._)("strong",null," VAB ",-1))),jt={key:0},Dt={key:1},At=ft((()=>(0,l._)("strong",null," VABC ",-1))),Bt={key:0},Ct={key:1},Nt={key:0},Mt=ft((()=>(0,l._)("strong",null," Total Dynamic Partition Size ",-1))),Ft={key:1},Ut=ft((()=>(0,l._)("strong",null," Total VABC COW Size ",-1)));function Rt(e,t,n,a,r,o){return(0,l.wg)(),(0,l.iD)(l.HY,null,[ht,e.zipFile?((0,l.wg)(),(0,l.iD)("div",(0,c.vs)((0,l.dG)({key:0},e.$attrs)),[(0,l._)("ul",gt,[(0,l._)("li",null,[mt,(0,l.Uk)(" "+(0,c.zw)(e.zipFile.getFileName()),1)]),(0,l._)("li",null,[yt,(0,l.Uk)(" "+(0,c.zw)(e.zipFile.getFileSize())+" Bytes",1)])])],16)):(0,l.kq)("",!0),e.payload&&e.payload.metadata?((0,l.wg)(),(0,l.iD)("div",(0,c.vs)((0,l.dG)({key:1},e.$attrs)),[(0,l._)("ul",wt,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.otaMetadata,(t=>((0,l.wg)(),(0,l.iD)("li",{key:t.name},[(0,l._)("strong",null,(0,c.zw)(t.name.trim()+" "),1),(0,l._)("p",bt,(0,c.zw)(String(e.payload[t.key]).trim()),1)])))),128))])],16)):(0,l.kq)("",!0),e.payload&&e.payload.manifest?((0,l.wg)(),(0,l.iD)("div",Ot,[(0,l._)("ul",_t,[(0,l._)("li",null,[kt,e.payload.preBuild?((0,l.wg)(),(0,l.iD)("span",St," ✅ ")):((0,l.wg)(),(0,l.iD)("span",xt," ❌ "))]),(0,l._)("li",null,[Pt,e.payload.manifest.partialUpdate?((0,l.wg)(),(0,l.iD)("span",It," ✅ ")):((0,l.wg)(),(0,l.iD)("span",vt," ❌ "))]),(0,l._)("li",null,[Et,e.payload.manifest.nonAB?((0,l.wg)(),(0,l.iD)("span",Lt," ❌ ")):((0,l.wg)(),(0,l.iD)("span",zt," ✅ "))]),(0,l._)("li",null,[Tt,e.payload.manifest.dynamicPartitionMetadata.snapshotEnabled?((0,l.wg)(),(0,l.iD)("span",jt," ✅ ")):((0,l.wg)(),(0,l.iD)("span",Dt," ❌ "))]),(0,l._)("li",null,[At,e.payload.manifest.dynamicPartitionMetadata.vabcEnabled?((0,l.wg)(),(0,l.iD)("span",Bt," ✅ ")):((0,l.wg)(),(0,l.iD)("span",Ct," ❌ "))]),e.totalDynamicPartitionSize?((0,l.wg)(),(0,l.iD)("li",Nt,[Mt,(0,l.Uk)(" "+(0,c.zw)(e.totalDynamicPartitionSize),1)])):(0,l.kq)("",!0),e.totalCOWSize?((0,l.wg)(),(0,l.iD)("li",Ft,[Ut,(0,l.Uk)(" "+(0,c.zw)(e.totalCOWSize),1)])):(0,l.kq)("",!0)])])):(0,l.kq)("",!0)],64)}class Vt{constructor(e){(0,de.Z)(this,"file",void 0),(0,de.Z)(this,"reader",void 0),this.file=e,this.reader=Wt(e)}getFileName(){return Zt(this.file)}getFileSize(){return this.file instanceof File?this.file.size:0}}async function Ht(e,t){const n=e,a=new fe._Q(new fe.U5("application/zip")),r=await n.getEntries();for(const o of r.filter((e=>!!e&&t(e)))){const e=new fe.U5,t=await o.getData(e);console.log(`Adding ${o.filename}, ${t.size}`),a.add(o.filename,new fe.Nt(e.getData()),{level:0})}return a}function Wt(e){return e instanceof File?new fe.Mr(new fe.Nt(e)):new fe.Mr(new fe.pE(e.href))}function Zt(e){return e instanceof File?e.name:e.pathname}async function qt(e){const t=await Ht(Wt(e),(e=>e.filename.startsWith("META/")||e.filename.endsWith(".map")));return await t.close()}async function Kt(e){const t=await Ht(e.zipreader,(e=>"payload.bin"!=e.filename));await t.add("payload.bin",new fe.Nt(e.buffer.slice(0,e.getMetadataLength())),{level:0});const n=await t.close();return n}function Jt(e,t,n){const a=window.URL.createObjectURL(e);t.href=a,t.download=n,t.click(),window.URL.revokeObjectURL(a)}function $t(e,t){return e.endsWith(t)?e:e+t}var Yt=(0,l.aZ)({props:{zipFile:{type:Vt,required:!0},payload:{type:ve,required:!0}},data(){return{MetadataFormat:ke}},computed:{otaMetadata(){return ke.filter((e=>String(this.payload[e.key]).length>0))},totalCOWSize(){const e=this.payload?.manifest?.partitions.map((e=>e.estimateCowSize||0));return e?e.reduce(((e,t)=>e+t)):0},totalDynamicPartitionSize(){const e=this.payload?.manifest?.dynamicPartitionMetadata?.groups;if(!e)return 0;const t=new Set(e.flatMap((e=>e.partitionNames))),n=this.payload.manifest?.partitions.filter((e=>t.has(e.partitionName)))||[];return n.length<=0?0:n.map((e=>e.newPartitionInfo?.size||0)).reduce(((e,t)=>e+t))}}});const Gt=(0,f.Z)(Yt,[["render",Rt],["__scopeId","data-v-0514c264"]]);var Xt=Gt,Qt=(0,l.aZ)({components:{PartitionDetail:dt,BasicInfo:Xt},props:{zipFile:{type:Vt,default:null},payload:{type:ve,default:null}},methods:{octToHex:Te,async exportOTAPackage(){const e=await Kt(this.payload),t=this.$refs["download"];Jt(e,t,"trimmed_"+$t(this.zipFile.getFileName(),".zip"))}},computed:{dynamicPartitions(){return this.payload.manifest?.dynamicPartitionMetadata?.groups?.flatMap((e=>e.partitionNames||[]))||[]}}});const en=(0,f.Z)(Qt,[["render",B],["__scopeId","data-v-05db67f2"]]);var tn=en;const nn=(0,l.Uk)("Export Target File Metadata"),an={ref:"download"},rn={key:1},on=(0,l.Uk)(" Analyse Installed Blocks (in target build) "),sn=(0,l.Uk)(" Analyse Payload Composition "),ln=(0,l.Uk)(" Analyse COW Merge Operations "),cn={key:0,class:"tooltiptext"},pn=(0,l.Uk)(" Analyse Filenames "),un=(0,l.Uk)(" Analyse File Extensions ");function dn(e,t,n,a,r,o){const i=(0,l.up)("v-btn"),s=(0,l.up)("PartialCheckbox"),c=(0,l.up)("PieChart"),p=(0,l.up)("v-divider"),u=(0,l.up)("v-col"),d=(0,l.up)("v-row"),f=(0,l.up)("BaseFile");return(0,l.wg)(),(0,l.iD)(l.HY,null,[e.targetFile?((0,l.wg)(),(0,l.j4)(i,{key:0,block:"",class:"md-6",onClick:e.exportTargetFileMetadata},{default:(0,l.w5)((()=>[nn])),_:1},8,["onClick"])):(0,l.kq)("",!0),(0,l._)("a",an,null,512),(0,l.Wm)(s,{modelValue:e.partitionInclude,"onUpdate:modelValue":t[0]||(t[0]=t=>e.partitionInclude=t),labels:e.updatePartitions},null,8,["modelValue","labels"]),e.echartsData?((0,l.wg)(),(0,l.iD)("div",rn,[(0,l.Wm)(c,{echartsData:e.echartsData,onClick:e.piechartClick},null,8,["echartsData","onClick"])])):(0,l.kq)("",!0),(0,l.Wm)(p),(0,l.Wm)(d,null,{default:(0,l.w5)((()=>[(0,l.Wm)(u,{cols:"12",md:"6"},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{block:"",onClick:t[1]||(t[1]=t=>e.updateChart("blocks"))},{default:(0,l.w5)((()=>[on])),_:1})])),_:1}),(0,l.Wm)(u,{cols:"12",md:"6"},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{block:"",onClick:t[2]||(t[2]=t=>e.updateChart("payload"))},{default:(0,l.w5)((()=>[sn])),_:1})])),_:1})])),_:1}),(0,l.Wm)(d,null,{default:(0,l.w5)((()=>[(0,l.Wm)(u,{cols:"12",md:"6",class:"tooltip"},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{disabled:e.manifest.nonAB||!e.manifest.dynamicPartitionMetadata.vabcEnabled,title:"Only available for VABC update",block:"",onClick:t[3]||(t[3]=t=>e.updateChart("COWmerge"))},{default:(0,l.w5)((()=>[ln])),_:1},8,["disabled"]),e.manifest.nonAB?((0,l.wg)(),(0,l.iD)("span",cn," This function is only supported in A/B OTA ")):(0,l.kq)("",!0)])),_:1}),(0,l.Wm)(u,{cols:"12",md:"6"},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{block:"",disabled:!e.targetFile,onClick:t[4]||(t[4]=t=>e.updateChart("filenames"))},{default:(0,l.w5)((()=>[pn])),_:1},8,["disabled"])])),_:1})])),_:1}),(0,l.Wm)(d,null,{default:(0,l.w5)((()=>[(0,l.Wm)(u,{cols:"12",md:"6"},{default:(0,l.w5)((()=>[(0,l.Wm)(i,{block:"",disabled:!e.targetFile,onClick:t[5]||(t[5]=t=>e.updateChart("extensions"))},{default:(0,l.w5)((()=>[un])),_:1},8,["disabled"])])),_:1})])),_:1}),(0,l.Wm)(d,null,{default:(0,l.w5)((()=>[(0,l.Wm)(u,{cols:"12",md:"6"}),(0,l.Wm)(u,{cols:"12",md:"6"},{default:(0,l.w5)((()=>[e.demo?(0,l.kq)("",!0):((0,l.wg)(),(0,l.j4)(f,{key:0,label:"Drag and drop or Select The target Android build",onFileSelect:e.selectBuild},null,8,["onFileSelect"]))])),_:1})])),_:1})],64)}var fn=n(9669),hn=n.n(fn);const gn=["value","checked"],mn={key:0};function yn(e,t,n,a,r,o){const i=(0,l.up)("v-btn"),s=(0,l.up)("v-col"),p=(0,l.up)("v-row");return(0,l.wg)(),(0,l.iD)(l.HY,null,[(0,l.Wm)(i,{block:"",type:"button",class:"my-5",onClick:e.revertAllSelection},{default:(0,l.w5)((()=>[(0,l.Uk)((0,c.zw)(e.selectAllText[e.selectAll]),1)])),_:1},8,["onClick"]),(0,l.Wm)(p,{class:"mb-5"},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.labels,(n=>((0,l.wg)(),(0,l.j4)(s,{key:n,cols:"12",md:"4"},{default:(0,l.w5)((()=>[(0,l._)("input",{type:"checkbox",value:n,checked:e.modelValue.get(n),onChange:t[0]||(t[0]=t=>e.updateSelected(t.target.value))},null,40,gn),n?((0,l.wg)(),(0,l.iD)("label",mn,(0,c.zw)(n),1)):(0,l.kq)("",!0)])),_:2},1024)))),128))])),_:1})],64)}var wn=(0,l.aZ)({props:{labels:{type:Array,default:new Array},modelValue:{type:Map,default:new Map}},data(){return{selectAll:1,selectAllText:["Select All","Unselect All"]}},mounted(){for(let e of this.labels)this.modelValue.set(e,!0)},methods:{updateSelected(e){this.modelValue.set(e,!this.modelValue.get(e)),this.$emit("update:modelValue",this.modelValue)},revertAllSelection(){this.selectAll=1-this.selectAll;for(let e of this.modelValue.keys())this.modelValue.set(e,Boolean(this.selectAll))}}});const bn=(0,f.Z)(wn,[["render",yn],["__scopeId","data-v-533f2336"]]);var On=bn;function _n(e,t,n,a,r,o){const i=(0,l.up)("v-chart");return(0,l.wg)(),(0,l.j4)(i,{class:"chart",option:o.getEchartsOption,onClick:t[0]||(t[0]=t=>e.$emit("click",...arguments))},null,8,["option"])}var kn=n(8023),Sn=n(1416),xn=n(8650),Pn=n(8690),In=n(3703),vn=n(6179),En=n(487);(0,kn.D)([Sn.N,xn.N,Pn.N,In.N,vn.N]);var zn={components:{VChart:En.ZP},provide:{[En.bw]:"dark"},props:{echartsData:{type:Ze,required:!0}},computed:{getEchartsOption(){return this.echartsData.getEchartsOption()}}};const Ln=(0,f.Z)(zn,[["render",_n],["__scopeId","data-v-5d1cb486"]]);var Tn=Ln,jn=(0,l.aZ)({components:{PartialCheckbox:On,PieChart:Tn,BaseFile:I},props:{manifest:{type:ue.DeltaArchiveManifest,default:()=>[]},demo:{type:Boolean,default:!1}},data(){return{partitionInclude:new Map,echartsData:null,listData:"",targetFile:null}},computed:{updatePartitions(){return this.manifest.partitions.map((e=>e.partitionName))}},async mounted(){if(this.demo)try{const e=await hn().get("./files/cf_x86_target_file_demo.zip",{responseType:"blob"});this.targetFile=new File([e.data],"target_demo.zip")}catch(e){console.log("Please put a proper example target file in /public/files/")}},methods:{piechartClick(e){console.log(e)},async updateChart(e){let t=this.manifest.partitions.filter((e=>this.partitionInclude.get(e.partitionName)));try{this.echartsData=await nt(e,t,this.manifest.blockSize,this.targetFile)}catch(n){alert(`Cannot be processed for the following issue: ${n}`)}},selectBuild(e){this.targetFile=e},async exportTargetFileMetadata(){const e=await qt(this.targetFile),t=this.$refs["download"];Jt(e,t,"trimmed_"+$t(Zt(this.targetFile),".zip"))}}});const Dn=(0,f.Z)(jn,[["render",dn],["__scopeId","data-v-44b569bd"]]);var An=Dn,Bn=(0,l.aZ)({components:{BaseFile:I,PayloadDetail:tn,PayloadComposition:An},data(){return{zipFile:null,payload:null}},methods:{async unpackOTA(e){this.zipFile=new Vt(e);try{this.payload=new ve(this.zipFile),await this.payload.init()}catch(t){alert(`Please check if this is a correct OTA package (.zip). ${t}`),console.log(t)}}}});const Cn=(0,f.Z)(Bn,[["render",w]]);var Nn=Cn;function Mn(e,t,n,a,r,o){const i=(0,l.up)("PayloadDetail"),s=(0,l.up)("v-col"),c=(0,l.up)("v-divider"),p=(0,l.up)("PayloadComposition"),u=(0,l.up)("v-row");return(0,l.wg)(),(0,l.j4)(u,null,{default:(0,l.w5)((()=>[(0,l.Wm)(s,{cols:"12",md:"6"},{default:(0,l.w5)((()=>[e.zipFile&&e.payload?((0,l.wg)(),(0,l.j4)(i,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):(0,l.kq)("",!0)])),_:1}),(0,l.Wm)(c,{vertical:""}),(0,l.Wm)(s,{cols:"12",md:"6"},{default:(0,l.w5)((()=>[e.zipFile&&e.payload.manifest?((0,l.wg)(),(0,l.j4)(p,{key:0,manifest:e.payload.manifest,demo:!0},null,8,["manifest"])):(0,l.kq)("",!0)])),_:1})])),_:1})}var Fn=(0,l.aZ)({components:{PayloadDetail:tn,PayloadComposition:An},data(){return{zipFile:null,payload:null}},async created(){try{const e=await hn().get("./files/cf_x86_demo.zip",{responseType:"blob"});this.zipFile=new Vt(new File([e.data],"ota_demo.zip")),this.payload=new ve(this.zipFile),await this.payload.init()}catch(e){console.log("Please put a proper example OTA in /public/files/")}}});const Un=(0,f.Z)(Fn,[["render",Mn]]);var Rn=Un;const Vn={class:"about"},Hn=(0,l._)("p",null,"A web based tool to inspect Android OTA packages.",-1),Wn=[Hn];function Zn(e,t){return(0,l.wg)(),(0,l.iD)("div",Vn,Wn)}const qn={},Kn=(0,f.Z)(qn,[["render",Zn]]);var Jn=Kn;const $n=e=>((0,l.dD)("data-v-50c6f348"),e=e(),(0,l.Cn)(),e),Yn=$n((()=>(0,l._)("h1",null,"Not Found!",-1))),Gn=$n((()=>(0,l._)("p",null,[(0,l._)("a",{href:"/"},"Go home?")],-1)));function Xn(e,t){const n=(0,l.up)("center");return(0,l.wg)(),(0,l.j4)(n,null,{default:(0,l.w5)((()=>[Yn,Gn])),_:1})}const Qn={},ea=(0,f.Z)(Qn,[["render",Xn],["__scopeId","data-v-50c6f348"]]);var ta=ea;const na=[{path:"/",name:"Analysis",component:Nn,meta:{title:"Analyse OTA package - from AOSP"}},{path:"/demo",name:"Demo",component:Rn},{path:"/about",name:"About",component:Jn},{path:"/:catchAll(.*)",name:"Not Found",component:ta}],aa=(0,m.p7)({history:(0,m.PO)("/analyseOTA/"),routes:na});aa.beforeEach(((e,t,n)=>{const a=e.matched.slice().reverse().find((e=>e.meta&&e.meta.title)),r=(e.matched.slice().reverse().find((e=>e.meta&&e.meta.metaTags)),t.matched.slice().reverse().find((e=>e.meta&&e.meta.metaTags)));a?document.title=a.meta.title:r&&(document.title=r.meta.title),Array.from(document.querySelectorAll("[data-vue-router-controlled]")).map((e=>e.parentNode.removeChild(e))),n()}));var ra=aa,oa=n(8410),ia=(0,oa.MT)({state:{},mutations:{},actions:{},modules:{}});const sa=(0,a.ri)(g);sa.use(ra),sa.use(ia),sa.use(s),sa.mount("#app")}},t={};function n(a){var r=t[a];if(void 0!==r)return r.exports;var o=t[a]={exports:{}};return e[a].call(o.exports,o,o.exports,n),o.exports}n.m=e,function(){var e=[];n.O=function(t,a,r,o){if(!a){var i=1/0;for(p=0;p=o)&&Object.keys(n.O).every((function(e){return n.O[e](a[l])}))?a.splice(l--,1):(s=!1,o0&&e[p-1][2]>o;p--)e[p]=e[p-1];e[p]=[a,r,o]}}(),function(){n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,{a:t}),t}}(),function(){n.d=function(e,t){for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}}(),function(){var e={143:0};n.O.j=function(t){return 0===e[t]};var t=function(t,a){var r,o,i=a[0],s=a[1],l=a[2],c=0;if(i.some((function(t){return 0!==e[t]}))){for(r in s)n.o(s,r)&&(n.m[r]=s[r]);if(l)var p=l(n)}for(t&&t(a);c\n\n\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=ee415730\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createTextVNode(\"This tool does not upload your package anywhere. All analysis are done in the frontend using Javascript.\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_alert = _resolveComponent(\"v-alert\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n const _component_BaseFile = _resolveComponent(\"BaseFile\")!\n const _component_PayloadDetail = _resolveComponent(\"PayloadDetail\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n const _component_PayloadComposition = _resolveComponent(\"PayloadComposition\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_alert, { style: {\"color\":\"yellow\"} }, {\n default: _withCtx(() => [\n _hoisted_1\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_BaseFile, {\n label: \"Please drag and drop an OTA package or select one\",\n onFileSelect: _ctx.unpackOTA\n }, null, 8, [\"onFileSelect\"]),\n (_ctx.zipFile && _ctx.payload)\n ? (_openBlock(), _createBlock(_component_PayloadDetail, {\n key: 0,\n zipFile: _ctx.zipFile,\n payload: _ctx.payload\n }, null, 8, [\"zipFile\", \"payload\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_component_v_divider, { vertical: \"\" }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n (_ctx.zipFile && _ctx.payload.manifest)\n ? (_openBlock(), _createBlock(_component_PayloadComposition, {\n key: 0,\n manifest: _ctx.payload.manifest\n }, null, 8, [\"manifest\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ], 64))\n}","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, vModelText as _vModelText, normalizeClass as _normalizeClass, withDirectives as _withDirectives, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0630c5ec\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"file-select ma-5\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = { key: 2 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"label\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"select-button\",\n onDragover: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.dragover && _ctx.dragover(...args))),\n onDragleave: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.dragleave && _ctx.dragleave(...args))),\n onDrop: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.drop && _ctx.drop(...args)))\n }, [\n (_ctx.label)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_2, _toDisplayString(!_ctx.fileName ? _ctx.label : ''), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_3, \"Select File\")),\n (_ctx.fileName)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, \"File selected: \" + _toDisplayString(_ctx.fileName), 1))\n : _createCommentVNode(\"\", true)\n ], 32),\n _createElementVNode(\"input\", {\n ref: \"file\",\n type: \"file\",\n accept: \".zip\",\n onChange: _cache[3] || (_cache[3] = \n//@ts-ignore\n(...args) => (_ctx.handleFileChange && _ctx.handleFileChange(...args)))\n }, null, 544)\n ]),\n _withDirectives(_createElementVNode(\"input\", {\n class: _normalizeClass([\"url-input\", {\n 'url-invalid': !_ctx.parsedURL && _ctx.url != '',\n 'url-valid': _ctx.parsedURL || _ctx.url == ''\n }]),\n ref: \"url_input\",\n type: \"url\",\n placeholder: \"type a URL\",\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.url) = $event)),\n onKeyup: _cache[5] || (_cache[5] = \n//@ts-ignore\n(...args) => (_ctx.urlKeyup && _ctx.urlKeyup(...args)))\n }, null, 34), [\n [_vModelText, _ctx.url]\n ])\n ], 64))\n}","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n label: {\n type: String,\n default: ''\n }\n },\n emits: {\n 'file-select': null\n },\n data() {\n return {\n fileName: '',\n url: ''\n }\n },\n computed: {\n parsedURL(): URL | null {\n try {\n return new URL(this.url)\n } catch {\n return null\n }\n }\n },\n\n methods: {\n handleFileChange(event: any) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (target.files == null || target.files.length < 1) {\n return\n }\n const selectedFile = target.files![0]\n this.$emit('file-select', selectedFile)\n // If user selects a file, clear the URL component\n this.url = ''\n this.fileName = target.files![0].name\n },\n dragover(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!target.classList.contains('file-hover')) {\n target.classList.add('file-hover')\n }\n },\n dragleave(event: DragEvent) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n target.classList.remove('file-hover')\n },\n drop(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!event.dataTransfer || event.dataTransfer.files.length == 0) {\n return\n }\n target.files = event.dataTransfer.files\n this.handleFileChange(event)\n target.classList.remove('file-hover')\n },\n urlKeyup(event: KeyboardEvent) {\n console.log(this.url)\n if (event.key == 'Enter') {\n const target = event.target as HTMLInputElement\n if (this.parsedURL == null) {\n console.error(`${target.value} is an invalid URL`)\n return\n }\n this.$emit('file-select', this.parsedURL)\n }\n }\n }\n})\n","import { render } from \"./BaseFile.vue?vue&type=template&id=0630c5ec&scoped=true&ts=true\"\nimport script from \"./BaseFile.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseFile.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0630c5ec\"]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-05db67f2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/_createTextVNode(\"Export Metadata\")\nconst _hoisted_2 = { ref: \"download\" }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h3\", null, \"Partition List\", -1))\nconst _hoisted_5 = {\n key: 1,\n class: \"signature\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h3\", null, \"Metadata Signature\", -1))\nconst _hoisted_7 = { style: {\"white-space\":\"pre-wrap\"} }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_btn = _resolveComponent(\"v-btn\")!\n const _component_BasicInfo = _resolveComponent(\"BasicInfo\")!\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n const _component_PartitionDetail = _resolveComponent(\"PartitionDetail\")!\n const _component_v_card = _resolveComponent(\"v-card\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (_ctx.zipFile && _ctx.payload)\n ? (_openBlock(), _createBlock(_component_v_btn, {\n key: 0,\n class: \"download-btn\",\n onClick: _ctx.exportOTAPackage\n }, {\n default: _withCtx(() => [\n _hoisted_1\n ]),\n _: 1\n }, 8, [\"onClick\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"a\", _hoisted_2, null, 512),\n _createVNode(_component_BasicInfo, {\n zipFile: _ctx.zipFile,\n payload: _ctx.payload,\n class: \"mb-5\"\n }, null, 8, [\"zipFile\", \"payload\"]),\n _createVNode(_component_v_divider),\n (_ctx.payload)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _hoisted_4,\n (_ctx.payload.manifest)\n ? (_openBlock(), _createBlock(_component_v_row, {\n key: 0,\n class: \"mb-5\"\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.payload.manifest.partitions, (partition) => {\n return (_openBlock(), _createBlock(_component_v_col, {\n key: partition.partitionName,\n cols: \"12\",\n md: \"4\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_card, {\n elevation: \"5\",\n hover: \"\",\n shaped: \"\",\n class: \"partial-info\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_PartitionDetail, {\n partition: partition,\n dynamicPartitionList: _ctx.dynamicPartitions\n }, null, 8, [\"partition\", \"dynamicPartitionList\"])\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1024))\n }), 128))\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_v_divider),\n (_ctx.payload.metadata_signature && !_ctx.payload.manifest.nonAB)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _hoisted_6,\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.octToHex(_ctx.payload.metadata_signature.signatures[0].data)), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6dba348a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = { key: 1 }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Estimate COW Size: \", -1))\nconst _hoisted_4 = { key: 2 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Postinstall Script: \", -1))\nconst _hoisted_6 = { class: \"toggle\" }\nconst _hoisted_7 = { key: 0 }\nconst _hoisted_8 = { key: 0 }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Old Partition Size: \", -1))\nconst _hoisted_10 = { key: 1 }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Old Partition Hash: \", -1))\nconst _hoisted_12 = { class: \"hex\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" New Partition Size: \", -1))\nconst _hoisted_14 = { key: 2 }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" New Partition Hash: \", -1))\nconst _hoisted_16 = { class: \"hex\" }\nconst _hoisted_17 = { key: 3 }\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Version: \", -1))\nconst _hoisted_19 = { key: 4 }\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Version: \", -1))\nconst _hoisted_21 = { class: \"toggle\" }\nconst _hoisted_22 = { key: 0 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_OperationDetail = _resolveComponent(\"OperationDetail\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"h4\", {\n class: _normalizeClass({ 'new-partition': !_ctx.partition.oldPartitionInfo })\n }, _toDisplayString(_ctx.partition.partitionName), 3),\n (_ctx.isDynamicPartition)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_1, \" Dynamic: ✅ \"))\n : _createCommentVNode(\"\", true),\n (_ctx.partition.estimateCowSize)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_2, [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.estimateCowSize) + \" Bytes \", 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.partition.postinstallPath)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_4, [\n _hoisted_5,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.postinstallPath), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"h4\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.toggle('showInfo'))),\n class: _normalizeClass({ active: _ctx.showInfo, inactive: !_ctx.showInfo })\n }, \" Partition Infos \", 2),\n (_ctx.showInfo)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_7, [\n (_ctx.partition.oldPartitionInfo)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_8, [\n _hoisted_9,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.oldPartitionInfo.size) + \" Bytes \", 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.partition.oldPartitionInfo)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"div\", _hoisted_12, _toDisplayString(_ctx.octToHex(_ctx.partition.oldPartitionInfo.hash, false, 16)), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"li\", null, [\n _hoisted_13,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.newPartitionInfo.size) + \" Bytes \", 1)\n ]),\n (_ctx.partition.newPartitionInfo.hash)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_14, [\n _hoisted_15,\n _createElementVNode(\"div\", _hoisted_16, _toDisplayString(_ctx.octToHex(_ctx.partition.newPartitionInfo.hash, false, 16)), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.partition.version)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_17, [\n _hoisted_18,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.version), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.readableTimestamp)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_19, [\n _hoisted_20,\n _createTextVNode(\" \" + _toDisplayString(_ctx.readableTimestamp), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"h4\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.toggle('showOPs'))),\n class: _normalizeClass({ active: _ctx.showOPs, inactive: !_ctx.showOPs })\n }, \" Total Operations: \" + _toDisplayString(_ctx.partition.operations.length), 3),\n (_ctx.showOPs)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_22, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.partition.operations, (operation) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: operation.dataSha256Hash\n }, [\n _createVNode(_component_OperationDetail, {\n operation: operation,\n mapType: _ctx.opType.mapType\n }, null, 8, [\"operation\", \"mapType\"])\n ]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ], 64))\n}","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\nimport * as $protobuf from \"protobufjs/minimal\";\n\n// Common aliases\nconst $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nconst $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\nexport const chromeos_update_engine = $root.chromeos_update_engine = (() => {\n\n /**\n * Namespace chromeos_update_engine.\n * @exports chromeos_update_engine\n * @namespace\n */\n const chromeos_update_engine = {};\n\n chromeos_update_engine.Extent = (function() {\n\n /**\n * Properties of an Extent.\n * @memberof chromeos_update_engine\n * @interface IExtent\n * @property {number|Long|null} [startBlock] Extent startBlock\n * @property {number|Long|null} [numBlocks] Extent numBlocks\n */\n\n /**\n * Constructs a new Extent.\n * @memberof chromeos_update_engine\n * @classdesc Represents an Extent.\n * @implements IExtent\n * @constructor\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n */\n function Extent(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Extent startBlock.\n * @member {number|Long} startBlock\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.startBlock = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Extent numBlocks.\n * @member {number|Long} numBlocks\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.numBlocks = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new Extent instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n * @returns {chromeos_update_engine.Extent} Extent instance\n */\n Extent.create = function create(properties) {\n return new Extent(properties);\n };\n\n /**\n * Encodes the specified Extent message. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startBlock != null && Object.hasOwnProperty.call(message, \"startBlock\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.startBlock);\n if (message.numBlocks != null && Object.hasOwnProperty.call(message, \"numBlocks\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.numBlocks);\n return writer;\n };\n\n /**\n * Encodes the specified Extent message, length delimited. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Extent();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.startBlock = reader.uint64();\n break;\n case 2:\n message.numBlocks = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an Extent message.\n * @function verify\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Extent.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (!$util.isInteger(message.startBlock) && !(message.startBlock && $util.isInteger(message.startBlock.low) && $util.isInteger(message.startBlock.high)))\n return \"startBlock: integer|Long expected\";\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (!$util.isInteger(message.numBlocks) && !(message.numBlocks && $util.isInteger(message.numBlocks.low) && $util.isInteger(message.numBlocks.high)))\n return \"numBlocks: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an Extent message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Extent} Extent\n */\n Extent.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Extent)\n return object;\n let message = new $root.chromeos_update_engine.Extent();\n if (object.startBlock != null)\n if ($util.Long)\n (message.startBlock = $util.Long.fromValue(object.startBlock)).unsigned = true;\n else if (typeof object.startBlock === \"string\")\n message.startBlock = parseInt(object.startBlock, 10);\n else if (typeof object.startBlock === \"number\")\n message.startBlock = object.startBlock;\n else if (typeof object.startBlock === \"object\")\n message.startBlock = new $util.LongBits(object.startBlock.low >>> 0, object.startBlock.high >>> 0).toNumber(true);\n if (object.numBlocks != null)\n if ($util.Long)\n (message.numBlocks = $util.Long.fromValue(object.numBlocks)).unsigned = true;\n else if (typeof object.numBlocks === \"string\")\n message.numBlocks = parseInt(object.numBlocks, 10);\n else if (typeof object.numBlocks === \"number\")\n message.numBlocks = object.numBlocks;\n else if (typeof object.numBlocks === \"object\")\n message.numBlocks = new $util.LongBits(object.numBlocks.low >>> 0, object.numBlocks.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from an Extent message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.Extent} message Extent\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Extent.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.startBlock = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.startBlock = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.numBlocks = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.numBlocks = options.longs === String ? \"0\" : 0;\n }\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (typeof message.startBlock === \"number\")\n object.startBlock = options.longs === String ? String(message.startBlock) : message.startBlock;\n else\n object.startBlock = options.longs === String ? $util.Long.prototype.toString.call(message.startBlock) : options.longs === Number ? new $util.LongBits(message.startBlock.low >>> 0, message.startBlock.high >>> 0).toNumber(true) : message.startBlock;\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (typeof message.numBlocks === \"number\")\n object.numBlocks = options.longs === String ? String(message.numBlocks) : message.numBlocks;\n else\n object.numBlocks = options.longs === String ? $util.Long.prototype.toString.call(message.numBlocks) : options.longs === Number ? new $util.LongBits(message.numBlocks.low >>> 0, message.numBlocks.high >>> 0).toNumber(true) : message.numBlocks;\n return object;\n };\n\n /**\n * Converts this Extent to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Extent\n * @instance\n * @returns {Object.} JSON object\n */\n Extent.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Extent;\n })();\n\n chromeos_update_engine.Signatures = (function() {\n\n /**\n * Properties of a Signatures.\n * @memberof chromeos_update_engine\n * @interface ISignatures\n * @property {Array.|null} [signatures] Signatures signatures\n */\n\n /**\n * Constructs a new Signatures.\n * @memberof chromeos_update_engine\n * @classdesc Represents a Signatures.\n * @implements ISignatures\n * @constructor\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n */\n function Signatures(properties) {\n this.signatures = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signatures signatures.\n * @member {Array.} signatures\n * @memberof chromeos_update_engine.Signatures\n * @instance\n */\n Signatures.prototype.signatures = $util.emptyArray;\n\n /**\n * Creates a new Signatures instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures} Signatures instance\n */\n Signatures.create = function create(properties) {\n return new Signatures(properties);\n };\n\n /**\n * Encodes the specified Signatures message. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.signatures != null && message.signatures.length)\n for (let i = 0; i < message.signatures.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.signatures[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Signatures message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.signatures && message.signatures.length))\n message.signatures = [];\n message.signatures.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signatures message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signatures.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.signatures != null && message.hasOwnProperty(\"signatures\")) {\n if (!Array.isArray(message.signatures))\n return \"signatures: array expected\";\n for (let i = 0; i < message.signatures.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.signatures[i]);\n if (error)\n return \"signatures.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a Signatures message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures} Signatures\n */\n Signatures.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures)\n return object;\n let message = new $root.chromeos_update_engine.Signatures();\n if (object.signatures) {\n if (!Array.isArray(object.signatures))\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: array expected\");\n message.signatures = [];\n for (let i = 0; i < object.signatures.length; ++i) {\n if (typeof object.signatures[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: object expected\");\n message.signatures[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.signatures[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Signatures message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.Signatures} message Signatures\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signatures.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.signatures = [];\n if (message.signatures && message.signatures.length) {\n object.signatures = [];\n for (let j = 0; j < message.signatures.length; ++j)\n object.signatures[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.signatures[j], options);\n }\n return object;\n };\n\n /**\n * Converts this Signatures to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures\n * @instance\n * @returns {Object.} JSON object\n */\n Signatures.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n Signatures.Signature = (function() {\n\n /**\n * Properties of a Signature.\n * @memberof chromeos_update_engine.Signatures\n * @interface ISignature\n * @property {number|null} [version] Signature version\n * @property {Uint8Array|null} [data] Signature data\n * @property {number|null} [unpaddedSignatureSize] Signature unpaddedSignatureSize\n */\n\n /**\n * Constructs a new Signature.\n * @memberof chromeos_update_engine.Signatures\n * @classdesc Represents a Signature.\n * @implements ISignature\n * @constructor\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n */\n function Signature(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signature version.\n * @member {number} version\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.version = 0;\n\n /**\n * Signature data.\n * @member {Uint8Array} data\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.data = $util.newBuffer([]);\n\n /**\n * Signature unpaddedSignatureSize.\n * @member {number} unpaddedSignatureSize\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.unpaddedSignatureSize = 0;\n\n /**\n * Creates a new Signature instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures.Signature} Signature instance\n */\n Signature.create = function create(properties) {\n return new Signature(properties);\n };\n\n /**\n * Encodes the specified Signature message. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.version);\n if (message.data != null && Object.hasOwnProperty.call(message, \"data\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.data);\n if (message.unpaddedSignatureSize != null && Object.hasOwnProperty.call(message, \"unpaddedSignatureSize\"))\n writer.uint32(/* id 3, wireType 5 =*/29).fixed32(message.unpaddedSignatureSize);\n return writer;\n };\n\n /**\n * Encodes the specified Signature message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures.Signature();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.version = reader.uint32();\n break;\n case 2:\n message.data = reader.bytes();\n break;\n case 3:\n message.unpaddedSignatureSize = reader.fixed32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signature message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signature.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version))\n return \"version: integer expected\";\n if (message.data != null && message.hasOwnProperty(\"data\"))\n if (!(message.data && typeof message.data.length === \"number\" || $util.isString(message.data)))\n return \"data: buffer expected\";\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n if (!$util.isInteger(message.unpaddedSignatureSize))\n return \"unpaddedSignatureSize: integer expected\";\n return null;\n };\n\n /**\n * Creates a Signature message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n */\n Signature.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures.Signature)\n return object;\n let message = new $root.chromeos_update_engine.Signatures.Signature();\n if (object.version != null)\n message.version = object.version >>> 0;\n if (object.data != null)\n if (typeof object.data === \"string\")\n $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);\n else if (object.data.length)\n message.data = object.data;\n if (object.unpaddedSignatureSize != null)\n message.unpaddedSignatureSize = object.unpaddedSignatureSize >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a Signature message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.Signature} message Signature\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signature.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.version = 0;\n if (options.bytes === String)\n object.data = \"\";\n else {\n object.data = [];\n if (options.bytes !== Array)\n object.data = $util.newBuffer(object.data);\n }\n object.unpaddedSignatureSize = 0;\n }\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.data != null && message.hasOwnProperty(\"data\"))\n object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n object.unpaddedSignatureSize = message.unpaddedSignatureSize;\n return object;\n };\n\n /**\n * Converts this Signature to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n * @returns {Object.} JSON object\n */\n Signature.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Signature;\n })();\n\n return Signatures;\n })();\n\n chromeos_update_engine.PartitionInfo = (function() {\n\n /**\n * Properties of a PartitionInfo.\n * @memberof chromeos_update_engine\n * @interface IPartitionInfo\n * @property {number|Long|null} [size] PartitionInfo size\n * @property {Uint8Array|null} [hash] PartitionInfo hash\n */\n\n /**\n * Constructs a new PartitionInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionInfo.\n * @implements IPartitionInfo\n * @constructor\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n */\n function PartitionInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionInfo size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * PartitionInfo hash.\n * @member {Uint8Array} hash\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.hash = $util.newBuffer([]);\n\n /**\n * Creates a new PartitionInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo instance\n */\n PartitionInfo.create = function create(properties) {\n return new PartitionInfo(properties);\n };\n\n /**\n * Encodes the specified PartitionInfo message. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.size);\n if (message.hash != null && Object.hasOwnProperty.call(message, \"hash\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.hash);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.size = reader.uint64();\n break;\n case 2:\n message.hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionInfo message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n if (!(message.hash && typeof message.hash.length === \"number\" || $util.isString(message.hash)))\n return \"hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates a PartitionInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n */\n PartitionInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionInfo)\n return object;\n let message = new $root.chromeos_update_engine.PartitionInfo();\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.hash != null)\n if (typeof object.hash === \"string\")\n $util.base64.decode(object.hash, message.hash = $util.newBuffer($util.base64.length(object.hash)), 0);\n else if (object.hash.length)\n message.hash = object.hash;\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.PartitionInfo} message PartitionInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.hash = \"\";\n else {\n object.hash = [];\n if (options.bytes !== Array)\n object.hash = $util.newBuffer(object.hash);\n }\n }\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n object.hash = options.bytes === String ? $util.base64.encode(message.hash, 0, message.hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.hash) : message.hash;\n return object;\n };\n\n /**\n * Converts this PartitionInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionInfo;\n })();\n\n chromeos_update_engine.ImageInfo = (function() {\n\n /**\n * Properties of an ImageInfo.\n * @memberof chromeos_update_engine\n * @interface IImageInfo\n * @property {string|null} [board] ImageInfo board\n * @property {string|null} [key] ImageInfo key\n * @property {string|null} [channel] ImageInfo channel\n * @property {string|null} [version] ImageInfo version\n * @property {string|null} [buildChannel] ImageInfo buildChannel\n * @property {string|null} [buildVersion] ImageInfo buildVersion\n */\n\n /**\n * Constructs a new ImageInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ImageInfo.\n * @implements IImageInfo\n * @constructor\n * @param {chromeos_update_engine.IImageInfo=} [properties] Properties to set\n */\n function ImageInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ImageInfo board.\n * @member {string} board\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.board = \"\";\n\n /**\n * ImageInfo key.\n * @member {string} key\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.key = \"\";\n\n /**\n * ImageInfo channel.\n * @member {string} channel\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.channel = \"\";\n\n /**\n * ImageInfo version.\n * @member {string} version\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.version = \"\";\n\n /**\n * ImageInfo buildChannel.\n * @member {string} buildChannel\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.buildChannel = \"\";\n\n /**\n * ImageInfo buildVersion.\n * @member {string} buildVersion\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.buildVersion = \"\";\n\n /**\n * Creates a new ImageInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.IImageInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo instance\n */\n ImageInfo.create = function create(properties) {\n return new ImageInfo(properties);\n };\n\n /**\n * Encodes the specified ImageInfo message. Does not implicitly {@link chromeos_update_engine.ImageInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.IImageInfo} message ImageInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ImageInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.board != null && Object.hasOwnProperty.call(message, \"board\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.board);\n if (message.key != null && Object.hasOwnProperty.call(message, \"key\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.key);\n if (message.channel != null && Object.hasOwnProperty.call(message, \"channel\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.channel);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.version);\n if (message.buildChannel != null && Object.hasOwnProperty.call(message, \"buildChannel\"))\n writer.uint32(/* id 5, wireType 2 =*/42).string(message.buildChannel);\n if (message.buildVersion != null && Object.hasOwnProperty.call(message, \"buildVersion\"))\n writer.uint32(/* id 6, wireType 2 =*/50).string(message.buildVersion);\n return writer;\n };\n\n /**\n * Encodes the specified ImageInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ImageInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.IImageInfo} message ImageInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ImageInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ImageInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ImageInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ImageInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.board = reader.string();\n break;\n case 2:\n message.key = reader.string();\n break;\n case 3:\n message.channel = reader.string();\n break;\n case 4:\n message.version = reader.string();\n break;\n case 5:\n message.buildChannel = reader.string();\n break;\n case 6:\n message.buildVersion = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ImageInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ImageInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ImageInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ImageInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.board != null && message.hasOwnProperty(\"board\"))\n if (!$util.isString(message.board))\n return \"board: string expected\";\n if (message.key != null && message.hasOwnProperty(\"key\"))\n if (!$util.isString(message.key))\n return \"key: string expected\";\n if (message.channel != null && message.hasOwnProperty(\"channel\"))\n if (!$util.isString(message.channel))\n return \"channel: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.buildChannel != null && message.hasOwnProperty(\"buildChannel\"))\n if (!$util.isString(message.buildChannel))\n return \"buildChannel: string expected\";\n if (message.buildVersion != null && message.hasOwnProperty(\"buildVersion\"))\n if (!$util.isString(message.buildVersion))\n return \"buildVersion: string expected\";\n return null;\n };\n\n /**\n * Creates an ImageInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo\n */\n ImageInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ImageInfo)\n return object;\n let message = new $root.chromeos_update_engine.ImageInfo();\n if (object.board != null)\n message.board = String(object.board);\n if (object.key != null)\n message.key = String(object.key);\n if (object.channel != null)\n message.channel = String(object.channel);\n if (object.version != null)\n message.version = String(object.version);\n if (object.buildChannel != null)\n message.buildChannel = String(object.buildChannel);\n if (object.buildVersion != null)\n message.buildVersion = String(object.buildVersion);\n return message;\n };\n\n /**\n * Creates a plain object from an ImageInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.ImageInfo} message ImageInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ImageInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.board = \"\";\n object.key = \"\";\n object.channel = \"\";\n object.version = \"\";\n object.buildChannel = \"\";\n object.buildVersion = \"\";\n }\n if (message.board != null && message.hasOwnProperty(\"board\"))\n object.board = message.board;\n if (message.key != null && message.hasOwnProperty(\"key\"))\n object.key = message.key;\n if (message.channel != null && message.hasOwnProperty(\"channel\"))\n object.channel = message.channel;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.buildChannel != null && message.hasOwnProperty(\"buildChannel\"))\n object.buildChannel = message.buildChannel;\n if (message.buildVersion != null && message.hasOwnProperty(\"buildVersion\"))\n object.buildVersion = message.buildVersion;\n return object;\n };\n\n /**\n * Converts this ImageInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ImageInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ImageInfo;\n })();\n\n chromeos_update_engine.InstallOperation = (function() {\n\n /**\n * Properties of an InstallOperation.\n * @memberof chromeos_update_engine\n * @interface IInstallOperation\n * @property {chromeos_update_engine.InstallOperation.Type} type InstallOperation type\n * @property {number|Long|null} [dataOffset] InstallOperation dataOffset\n * @property {number|Long|null} [dataLength] InstallOperation dataLength\n * @property {Array.|null} [srcExtents] InstallOperation srcExtents\n * @property {number|Long|null} [srcLength] InstallOperation srcLength\n * @property {Array.|null} [dstExtents] InstallOperation dstExtents\n * @property {number|Long|null} [dstLength] InstallOperation dstLength\n * @property {Uint8Array|null} [dataSha256Hash] InstallOperation dataSha256Hash\n * @property {Uint8Array|null} [srcSha256Hash] InstallOperation srcSha256Hash\n */\n\n /**\n * Constructs a new InstallOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents an InstallOperation.\n * @implements IInstallOperation\n * @constructor\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n */\n function InstallOperation(properties) {\n this.srcExtents = [];\n this.dstExtents = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * InstallOperation type.\n * @member {chromeos_update_engine.InstallOperation.Type} type\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.type = 0;\n\n /**\n * InstallOperation dataOffset.\n * @member {number|Long} dataOffset\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataLength.\n * @member {number|Long} dataLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation srcExtents.\n * @member {Array.} srcExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcExtents = $util.emptyArray;\n\n /**\n * InstallOperation srcLength.\n * @member {number|Long} srcLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dstExtents.\n * @member {Array.} dstExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstExtents = $util.emptyArray;\n\n /**\n * InstallOperation dstLength.\n * @member {number|Long} dstLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataSha256Hash.\n * @member {Uint8Array} dataSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataSha256Hash = $util.newBuffer([]);\n\n /**\n * InstallOperation srcSha256Hash.\n * @member {Uint8Array} srcSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcSha256Hash = $util.newBuffer([]);\n\n /**\n * Creates a new InstallOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation instance\n */\n InstallOperation.create = function create(properties) {\n return new InstallOperation(properties);\n };\n\n /**\n * Encodes the specified InstallOperation message. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.dataOffset != null && Object.hasOwnProperty.call(message, \"dataOffset\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.dataOffset);\n if (message.dataLength != null && Object.hasOwnProperty.call(message, \"dataLength\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.dataLength);\n if (message.srcExtents != null && message.srcExtents.length)\n for (let i = 0; i < message.srcExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.srcExtents[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.srcLength != null && Object.hasOwnProperty.call(message, \"srcLength\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.srcLength);\n if (message.dstExtents != null && message.dstExtents.length)\n for (let i = 0; i < message.dstExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.dstExtents[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.dstLength != null && Object.hasOwnProperty.call(message, \"dstLength\"))\n writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.dstLength);\n if (message.dataSha256Hash != null && Object.hasOwnProperty.call(message, \"dataSha256Hash\"))\n writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.dataSha256Hash);\n if (message.srcSha256Hash != null && Object.hasOwnProperty.call(message, \"srcSha256Hash\"))\n writer.uint32(/* id 9, wireType 2 =*/74).bytes(message.srcSha256Hash);\n return writer;\n };\n\n /**\n * Encodes the specified InstallOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.InstallOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.dataOffset = reader.uint64();\n break;\n case 3:\n message.dataLength = reader.uint64();\n break;\n case 4:\n if (!(message.srcExtents && message.srcExtents.length))\n message.srcExtents = [];\n message.srcExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 5:\n message.srcLength = reader.uint64();\n break;\n case 6:\n if (!(message.dstExtents && message.dstExtents.length))\n message.dstExtents = [];\n message.dstExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 7:\n message.dstLength = reader.uint64();\n break;\n case 8:\n message.dataSha256Hash = reader.bytes();\n break;\n case 9:\n message.srcSha256Hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"type\"))\n throw $util.ProtocolError(\"missing required 'type'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an InstallOperation message.\n * @function verify\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n InstallOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 8:\n case 6:\n case 7:\n case 10:\n case 9:\n case 11:\n case 12:\n case 13:\n break;\n }\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (!$util.isInteger(message.dataOffset) && !(message.dataOffset && $util.isInteger(message.dataOffset.low) && $util.isInteger(message.dataOffset.high)))\n return \"dataOffset: integer|Long expected\";\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (!$util.isInteger(message.dataLength) && !(message.dataLength && $util.isInteger(message.dataLength.low) && $util.isInteger(message.dataLength.high)))\n return \"dataLength: integer|Long expected\";\n if (message.srcExtents != null && message.hasOwnProperty(\"srcExtents\")) {\n if (!Array.isArray(message.srcExtents))\n return \"srcExtents: array expected\";\n for (let i = 0; i < message.srcExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtents[i]);\n if (error)\n return \"srcExtents.\" + error;\n }\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (!$util.isInteger(message.srcLength) && !(message.srcLength && $util.isInteger(message.srcLength.low) && $util.isInteger(message.srcLength.high)))\n return \"srcLength: integer|Long expected\";\n if (message.dstExtents != null && message.hasOwnProperty(\"dstExtents\")) {\n if (!Array.isArray(message.dstExtents))\n return \"dstExtents: array expected\";\n for (let i = 0; i < message.dstExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtents[i]);\n if (error)\n return \"dstExtents.\" + error;\n }\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (!$util.isInteger(message.dstLength) && !(message.dstLength && $util.isInteger(message.dstLength.low) && $util.isInteger(message.dstLength.high)))\n return \"dstLength: integer|Long expected\";\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n if (!(message.dataSha256Hash && typeof message.dataSha256Hash.length === \"number\" || $util.isString(message.dataSha256Hash)))\n return \"dataSha256Hash: buffer expected\";\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n if (!(message.srcSha256Hash && typeof message.srcSha256Hash.length === \"number\" || $util.isString(message.srcSha256Hash)))\n return \"srcSha256Hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates an InstallOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n */\n InstallOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.InstallOperation)\n return object;\n let message = new $root.chromeos_update_engine.InstallOperation();\n switch (object.type) {\n case \"REPLACE\":\n case 0:\n message.type = 0;\n break;\n case \"REPLACE_BZ\":\n case 1:\n message.type = 1;\n break;\n case \"MOVE\":\n case 2:\n message.type = 2;\n break;\n case \"BSDIFF\":\n case 3:\n message.type = 3;\n break;\n case \"SOURCE_COPY\":\n case 4:\n message.type = 4;\n break;\n case \"SOURCE_BSDIFF\":\n case 5:\n message.type = 5;\n break;\n case \"REPLACE_XZ\":\n case 8:\n message.type = 8;\n break;\n case \"ZERO\":\n case 6:\n message.type = 6;\n break;\n case \"DISCARD\":\n case 7:\n message.type = 7;\n break;\n case \"BROTLI_BSDIFF\":\n case 10:\n message.type = 10;\n break;\n case \"PUFFDIFF\":\n case 9:\n message.type = 9;\n break;\n case \"ZUCCHINI\":\n case 11:\n message.type = 11;\n break;\n case \"LZ4DIFF_BSDIFF\":\n case 12:\n message.type = 12;\n break;\n case \"LZ4DIFF_PUFFDIFF\":\n case 13:\n message.type = 13;\n break;\n }\n if (object.dataOffset != null)\n if ($util.Long)\n (message.dataOffset = $util.Long.fromValue(object.dataOffset)).unsigned = true;\n else if (typeof object.dataOffset === \"string\")\n message.dataOffset = parseInt(object.dataOffset, 10);\n else if (typeof object.dataOffset === \"number\")\n message.dataOffset = object.dataOffset;\n else if (typeof object.dataOffset === \"object\")\n message.dataOffset = new $util.LongBits(object.dataOffset.low >>> 0, object.dataOffset.high >>> 0).toNumber(true);\n if (object.dataLength != null)\n if ($util.Long)\n (message.dataLength = $util.Long.fromValue(object.dataLength)).unsigned = true;\n else if (typeof object.dataLength === \"string\")\n message.dataLength = parseInt(object.dataLength, 10);\n else if (typeof object.dataLength === \"number\")\n message.dataLength = object.dataLength;\n else if (typeof object.dataLength === \"object\")\n message.dataLength = new $util.LongBits(object.dataLength.low >>> 0, object.dataLength.high >>> 0).toNumber(true);\n if (object.srcExtents) {\n if (!Array.isArray(object.srcExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: array expected\");\n message.srcExtents = [];\n for (let i = 0; i < object.srcExtents.length; ++i) {\n if (typeof object.srcExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: object expected\");\n message.srcExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.srcExtents[i]);\n }\n }\n if (object.srcLength != null)\n if ($util.Long)\n (message.srcLength = $util.Long.fromValue(object.srcLength)).unsigned = true;\n else if (typeof object.srcLength === \"string\")\n message.srcLength = parseInt(object.srcLength, 10);\n else if (typeof object.srcLength === \"number\")\n message.srcLength = object.srcLength;\n else if (typeof object.srcLength === \"object\")\n message.srcLength = new $util.LongBits(object.srcLength.low >>> 0, object.srcLength.high >>> 0).toNumber(true);\n if (object.dstExtents) {\n if (!Array.isArray(object.dstExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: array expected\");\n message.dstExtents = [];\n for (let i = 0; i < object.dstExtents.length; ++i) {\n if (typeof object.dstExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: object expected\");\n message.dstExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.dstExtents[i]);\n }\n }\n if (object.dstLength != null)\n if ($util.Long)\n (message.dstLength = $util.Long.fromValue(object.dstLength)).unsigned = true;\n else if (typeof object.dstLength === \"string\")\n message.dstLength = parseInt(object.dstLength, 10);\n else if (typeof object.dstLength === \"number\")\n message.dstLength = object.dstLength;\n else if (typeof object.dstLength === \"object\")\n message.dstLength = new $util.LongBits(object.dstLength.low >>> 0, object.dstLength.high >>> 0).toNumber(true);\n if (object.dataSha256Hash != null)\n if (typeof object.dataSha256Hash === \"string\")\n $util.base64.decode(object.dataSha256Hash, message.dataSha256Hash = $util.newBuffer($util.base64.length(object.dataSha256Hash)), 0);\n else if (object.dataSha256Hash.length)\n message.dataSha256Hash = object.dataSha256Hash;\n if (object.srcSha256Hash != null)\n if (typeof object.srcSha256Hash === \"string\")\n $util.base64.decode(object.srcSha256Hash, message.srcSha256Hash = $util.newBuffer($util.base64.length(object.srcSha256Hash)), 0);\n else if (object.srcSha256Hash.length)\n message.srcSha256Hash = object.srcSha256Hash;\n return message;\n };\n\n /**\n * Creates a plain object from an InstallOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.InstallOperation} message InstallOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n InstallOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.srcExtents = [];\n object.dstExtents = [];\n }\n if (options.defaults) {\n object.type = options.enums === String ? \"REPLACE\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.srcLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.srcLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dstLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dstLength = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.dataSha256Hash = \"\";\n else {\n object.dataSha256Hash = [];\n if (options.bytes !== Array)\n object.dataSha256Hash = $util.newBuffer(object.dataSha256Hash);\n }\n if (options.bytes === String)\n object.srcSha256Hash = \"\";\n else {\n object.srcSha256Hash = [];\n if (options.bytes !== Array)\n object.srcSha256Hash = $util.newBuffer(object.srcSha256Hash);\n }\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.InstallOperation.Type[message.type] : message.type;\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (typeof message.dataOffset === \"number\")\n object.dataOffset = options.longs === String ? String(message.dataOffset) : message.dataOffset;\n else\n object.dataOffset = options.longs === String ? $util.Long.prototype.toString.call(message.dataOffset) : options.longs === Number ? new $util.LongBits(message.dataOffset.low >>> 0, message.dataOffset.high >>> 0).toNumber(true) : message.dataOffset;\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (typeof message.dataLength === \"number\")\n object.dataLength = options.longs === String ? String(message.dataLength) : message.dataLength;\n else\n object.dataLength = options.longs === String ? $util.Long.prototype.toString.call(message.dataLength) : options.longs === Number ? new $util.LongBits(message.dataLength.low >>> 0, message.dataLength.high >>> 0).toNumber(true) : message.dataLength;\n if (message.srcExtents && message.srcExtents.length) {\n object.srcExtents = [];\n for (let j = 0; j < message.srcExtents.length; ++j)\n object.srcExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.srcExtents[j], options);\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (typeof message.srcLength === \"number\")\n object.srcLength = options.longs === String ? String(message.srcLength) : message.srcLength;\n else\n object.srcLength = options.longs === String ? $util.Long.prototype.toString.call(message.srcLength) : options.longs === Number ? new $util.LongBits(message.srcLength.low >>> 0, message.srcLength.high >>> 0).toNumber(true) : message.srcLength;\n if (message.dstExtents && message.dstExtents.length) {\n object.dstExtents = [];\n for (let j = 0; j < message.dstExtents.length; ++j)\n object.dstExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.dstExtents[j], options);\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (typeof message.dstLength === \"number\")\n object.dstLength = options.longs === String ? String(message.dstLength) : message.dstLength;\n else\n object.dstLength = options.longs === String ? $util.Long.prototype.toString.call(message.dstLength) : options.longs === Number ? new $util.LongBits(message.dstLength.low >>> 0, message.dstLength.high >>> 0).toNumber(true) : message.dstLength;\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n object.dataSha256Hash = options.bytes === String ? $util.base64.encode(message.dataSha256Hash, 0, message.dataSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.dataSha256Hash) : message.dataSha256Hash;\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n object.srcSha256Hash = options.bytes === String ? $util.base64.encode(message.srcSha256Hash, 0, message.srcSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.srcSha256Hash) : message.srcSha256Hash;\n return object;\n };\n\n /**\n * Converts this InstallOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n * @returns {Object.} JSON object\n */\n InstallOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.InstallOperation.Type\n * @enum {number}\n * @property {number} REPLACE=0 REPLACE value\n * @property {number} REPLACE_BZ=1 REPLACE_BZ value\n * @property {number} MOVE=2 MOVE value\n * @property {number} BSDIFF=3 BSDIFF value\n * @property {number} SOURCE_COPY=4 SOURCE_COPY value\n * @property {number} SOURCE_BSDIFF=5 SOURCE_BSDIFF value\n * @property {number} REPLACE_XZ=8 REPLACE_XZ value\n * @property {number} ZERO=6 ZERO value\n * @property {number} DISCARD=7 DISCARD value\n * @property {number} BROTLI_BSDIFF=10 BROTLI_BSDIFF value\n * @property {number} PUFFDIFF=9 PUFFDIFF value\n * @property {number} ZUCCHINI=11 ZUCCHINI value\n * @property {number} LZ4DIFF_BSDIFF=12 LZ4DIFF_BSDIFF value\n * @property {number} LZ4DIFF_PUFFDIFF=13 LZ4DIFF_PUFFDIFF value\n */\n InstallOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"REPLACE\"] = 0;\n values[valuesById[1] = \"REPLACE_BZ\"] = 1;\n values[valuesById[2] = \"MOVE\"] = 2;\n values[valuesById[3] = \"BSDIFF\"] = 3;\n values[valuesById[4] = \"SOURCE_COPY\"] = 4;\n values[valuesById[5] = \"SOURCE_BSDIFF\"] = 5;\n values[valuesById[8] = \"REPLACE_XZ\"] = 8;\n values[valuesById[6] = \"ZERO\"] = 6;\n values[valuesById[7] = \"DISCARD\"] = 7;\n values[valuesById[10] = \"BROTLI_BSDIFF\"] = 10;\n values[valuesById[9] = \"PUFFDIFF\"] = 9;\n values[valuesById[11] = \"ZUCCHINI\"] = 11;\n values[valuesById[12] = \"LZ4DIFF_BSDIFF\"] = 12;\n values[valuesById[13] = \"LZ4DIFF_PUFFDIFF\"] = 13;\n return values;\n })();\n\n return InstallOperation;\n })();\n\n chromeos_update_engine.CowMergeOperation = (function() {\n\n /**\n * Properties of a CowMergeOperation.\n * @memberof chromeos_update_engine\n * @interface ICowMergeOperation\n * @property {chromeos_update_engine.CowMergeOperation.Type|null} [type] CowMergeOperation type\n * @property {chromeos_update_engine.IExtent|null} [srcExtent] CowMergeOperation srcExtent\n * @property {chromeos_update_engine.IExtent|null} [dstExtent] CowMergeOperation dstExtent\n * @property {number|null} [srcOffset] CowMergeOperation srcOffset\n */\n\n /**\n * Constructs a new CowMergeOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents a CowMergeOperation.\n * @implements ICowMergeOperation\n * @constructor\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n */\n function CowMergeOperation(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * CowMergeOperation type.\n * @member {chromeos_update_engine.CowMergeOperation.Type} type\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.type = 0;\n\n /**\n * CowMergeOperation srcExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} srcExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcExtent = null;\n\n /**\n * CowMergeOperation dstExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} dstExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.dstExtent = null;\n\n /**\n * CowMergeOperation srcOffset.\n * @member {number} srcOffset\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcOffset = 0;\n\n /**\n * Creates a new CowMergeOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation instance\n */\n CowMergeOperation.create = function create(properties) {\n return new CowMergeOperation(properties);\n };\n\n /**\n * Encodes the specified CowMergeOperation message. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.srcExtent != null && Object.hasOwnProperty.call(message, \"srcExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.srcExtent, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.dstExtent != null && Object.hasOwnProperty.call(message, \"dstExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.dstExtent, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.srcOffset != null && Object.hasOwnProperty.call(message, \"srcOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.srcOffset);\n return writer;\n };\n\n /**\n * Encodes the specified CowMergeOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.CowMergeOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.srcExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 3:\n message.dstExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 4:\n message.srcOffset = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a CowMergeOperation message.\n * @function verify\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n CowMergeOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtent);\n if (error)\n return \"srcExtent.\" + error;\n }\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtent);\n if (error)\n return \"dstExtent.\" + error;\n }\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n if (!$util.isInteger(message.srcOffset))\n return \"srcOffset: integer expected\";\n return null;\n };\n\n /**\n * Creates a CowMergeOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n */\n CowMergeOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.CowMergeOperation)\n return object;\n let message = new $root.chromeos_update_engine.CowMergeOperation();\n switch (object.type) {\n case \"COW_COPY\":\n case 0:\n message.type = 0;\n break;\n case \"COW_XOR\":\n case 1:\n message.type = 1;\n break;\n case \"COW_REPLACE\":\n case 2:\n message.type = 2;\n break;\n }\n if (object.srcExtent != null) {\n if (typeof object.srcExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.srcExtent: object expected\");\n message.srcExtent = $root.chromeos_update_engine.Extent.fromObject(object.srcExtent);\n }\n if (object.dstExtent != null) {\n if (typeof object.dstExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.dstExtent: object expected\");\n message.dstExtent = $root.chromeos_update_engine.Extent.fromObject(object.dstExtent);\n }\n if (object.srcOffset != null)\n message.srcOffset = object.srcOffset >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a CowMergeOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.CowMergeOperation} message CowMergeOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n CowMergeOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"COW_COPY\" : 0;\n object.srcExtent = null;\n object.dstExtent = null;\n object.srcOffset = 0;\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.CowMergeOperation.Type[message.type] : message.type;\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\"))\n object.srcExtent = $root.chromeos_update_engine.Extent.toObject(message.srcExtent, options);\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\"))\n object.dstExtent = $root.chromeos_update_engine.Extent.toObject(message.dstExtent, options);\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n object.srcOffset = message.srcOffset;\n return object;\n };\n\n /**\n * Converts this CowMergeOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n * @returns {Object.} JSON object\n */\n CowMergeOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.CowMergeOperation.Type\n * @enum {number}\n * @property {number} COW_COPY=0 COW_COPY value\n * @property {number} COW_XOR=1 COW_XOR value\n * @property {number} COW_REPLACE=2 COW_REPLACE value\n */\n CowMergeOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"COW_COPY\"] = 0;\n values[valuesById[1] = \"COW_XOR\"] = 1;\n values[valuesById[2] = \"COW_REPLACE\"] = 2;\n return values;\n })();\n\n return CowMergeOperation;\n })();\n\n chromeos_update_engine.PartitionUpdate = (function() {\n\n /**\n * Properties of a PartitionUpdate.\n * @memberof chromeos_update_engine\n * @interface IPartitionUpdate\n * @property {string} partitionName PartitionUpdate partitionName\n * @property {boolean|null} [runPostinstall] PartitionUpdate runPostinstall\n * @property {string|null} [postinstallPath] PartitionUpdate postinstallPath\n * @property {string|null} [filesystemType] PartitionUpdate filesystemType\n * @property {Array.|null} [newPartitionSignature] PartitionUpdate newPartitionSignature\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldPartitionInfo] PartitionUpdate oldPartitionInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newPartitionInfo] PartitionUpdate newPartitionInfo\n * @property {Array.|null} [operations] PartitionUpdate operations\n * @property {boolean|null} [postinstallOptional] PartitionUpdate postinstallOptional\n * @property {chromeos_update_engine.IExtent|null} [hashTreeDataExtent] PartitionUpdate hashTreeDataExtent\n * @property {chromeos_update_engine.IExtent|null} [hashTreeExtent] PartitionUpdate hashTreeExtent\n * @property {string|null} [hashTreeAlgorithm] PartitionUpdate hashTreeAlgorithm\n * @property {Uint8Array|null} [hashTreeSalt] PartitionUpdate hashTreeSalt\n * @property {chromeos_update_engine.IExtent|null} [fecDataExtent] PartitionUpdate fecDataExtent\n * @property {chromeos_update_engine.IExtent|null} [fecExtent] PartitionUpdate fecExtent\n * @property {number|null} [fecRoots] PartitionUpdate fecRoots\n * @property {string|null} [version] PartitionUpdate version\n * @property {Array.|null} [mergeOperations] PartitionUpdate mergeOperations\n * @property {number|Long|null} [estimateCowSize] PartitionUpdate estimateCowSize\n */\n\n /**\n * Constructs a new PartitionUpdate.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionUpdate.\n * @implements IPartitionUpdate\n * @constructor\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n */\n function PartitionUpdate(properties) {\n this.newPartitionSignature = [];\n this.operations = [];\n this.mergeOperations = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionUpdate partitionName.\n * @member {string} partitionName\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.partitionName = \"\";\n\n /**\n * PartitionUpdate runPostinstall.\n * @member {boolean} runPostinstall\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.runPostinstall = false;\n\n /**\n * PartitionUpdate postinstallPath.\n * @member {string} postinstallPath\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallPath = \"\";\n\n /**\n * PartitionUpdate filesystemType.\n * @member {string} filesystemType\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.filesystemType = \"\";\n\n /**\n * PartitionUpdate newPartitionSignature.\n * @member {Array.} newPartitionSignature\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionSignature = $util.emptyArray;\n\n /**\n * PartitionUpdate oldPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.oldPartitionInfo = null;\n\n /**\n * PartitionUpdate newPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionInfo = null;\n\n /**\n * PartitionUpdate operations.\n * @member {Array.} operations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.operations = $util.emptyArray;\n\n /**\n * PartitionUpdate postinstallOptional.\n * @member {boolean} postinstallOptional\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallOptional = false;\n\n /**\n * PartitionUpdate hashTreeDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeDataExtent = null;\n\n /**\n * PartitionUpdate hashTreeExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeExtent = null;\n\n /**\n * PartitionUpdate hashTreeAlgorithm.\n * @member {string} hashTreeAlgorithm\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeAlgorithm = \"\";\n\n /**\n * PartitionUpdate hashTreeSalt.\n * @member {Uint8Array} hashTreeSalt\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeSalt = $util.newBuffer([]);\n\n /**\n * PartitionUpdate fecDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecDataExtent = null;\n\n /**\n * PartitionUpdate fecExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecExtent = null;\n\n /**\n * PartitionUpdate fecRoots.\n * @member {number} fecRoots\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecRoots = 2;\n\n /**\n * PartitionUpdate version.\n * @member {string} version\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.version = \"\";\n\n /**\n * PartitionUpdate mergeOperations.\n * @member {Array.} mergeOperations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.mergeOperations = $util.emptyArray;\n\n /**\n * PartitionUpdate estimateCowSize.\n * @member {number|Long} estimateCowSize\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.estimateCowSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new PartitionUpdate instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate instance\n */\n PartitionUpdate.create = function create(properties) {\n return new PartitionUpdate(properties);\n };\n\n /**\n * Encodes the specified PartitionUpdate message. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.partitionName);\n if (message.runPostinstall != null && Object.hasOwnProperty.call(message, \"runPostinstall\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.runPostinstall);\n if (message.postinstallPath != null && Object.hasOwnProperty.call(message, \"postinstallPath\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.postinstallPath);\n if (message.filesystemType != null && Object.hasOwnProperty.call(message, \"filesystemType\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.filesystemType);\n if (message.newPartitionSignature != null && message.newPartitionSignature.length)\n for (let i = 0; i < message.newPartitionSignature.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.newPartitionSignature[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.oldPartitionInfo != null && Object.hasOwnProperty.call(message, \"oldPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldPartitionInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newPartitionInfo != null && Object.hasOwnProperty.call(message, \"newPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newPartitionInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.operations != null && message.operations.length)\n for (let i = 0; i < message.operations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.operations[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.postinstallOptional != null && Object.hasOwnProperty.call(message, \"postinstallOptional\"))\n writer.uint32(/* id 9, wireType 0 =*/72).bool(message.postinstallOptional);\n if (message.hashTreeDataExtent != null && Object.hasOwnProperty.call(message, \"hashTreeDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeDataExtent, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.hashTreeExtent != null && Object.hasOwnProperty.call(message, \"hashTreeExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeExtent, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.hashTreeAlgorithm != null && Object.hasOwnProperty.call(message, \"hashTreeAlgorithm\"))\n writer.uint32(/* id 12, wireType 2 =*/98).string(message.hashTreeAlgorithm);\n if (message.hashTreeSalt != null && Object.hasOwnProperty.call(message, \"hashTreeSalt\"))\n writer.uint32(/* id 13, wireType 2 =*/106).bytes(message.hashTreeSalt);\n if (message.fecDataExtent != null && Object.hasOwnProperty.call(message, \"fecDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecDataExtent, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.fecExtent != null && Object.hasOwnProperty.call(message, \"fecExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecExtent, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.fecRoots != null && Object.hasOwnProperty.call(message, \"fecRoots\"))\n writer.uint32(/* id 16, wireType 0 =*/128).uint32(message.fecRoots);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 17, wireType 2 =*/138).string(message.version);\n if (message.mergeOperations != null && message.mergeOperations.length)\n for (let i = 0; i < message.mergeOperations.length; ++i)\n $root.chromeos_update_engine.CowMergeOperation.encode(message.mergeOperations[i], writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n if (message.estimateCowSize != null && Object.hasOwnProperty.call(message, \"estimateCowSize\"))\n writer.uint32(/* id 19, wireType 0 =*/152).uint64(message.estimateCowSize);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionUpdate message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionUpdate();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.partitionName = reader.string();\n break;\n case 2:\n message.runPostinstall = reader.bool();\n break;\n case 3:\n message.postinstallPath = reader.string();\n break;\n case 4:\n message.filesystemType = reader.string();\n break;\n case 5:\n if (!(message.newPartitionSignature && message.newPartitionSignature.length))\n message.newPartitionSignature = [];\n message.newPartitionSignature.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n case 6:\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n if (!(message.operations && message.operations.length))\n message.operations = [];\n message.operations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 9:\n message.postinstallOptional = reader.bool();\n break;\n case 10:\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 11:\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 12:\n message.hashTreeAlgorithm = reader.string();\n break;\n case 13:\n message.hashTreeSalt = reader.bytes();\n break;\n case 14:\n message.fecDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 15:\n message.fecExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 16:\n message.fecRoots = reader.uint32();\n break;\n case 17:\n message.version = reader.string();\n break;\n case 18:\n if (!(message.mergeOperations && message.mergeOperations.length))\n message.mergeOperations = [];\n message.mergeOperations.push($root.chromeos_update_engine.CowMergeOperation.decode(reader, reader.uint32()));\n break;\n case 19:\n message.estimateCowSize = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"partitionName\"))\n throw $util.ProtocolError(\"missing required 'partitionName'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionUpdate message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionUpdate.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.partitionName))\n return \"partitionName: string expected\";\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n if (typeof message.runPostinstall !== \"boolean\")\n return \"runPostinstall: boolean expected\";\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n if (!$util.isString(message.postinstallPath))\n return \"postinstallPath: string expected\";\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n if (!$util.isString(message.filesystemType))\n return \"filesystemType: string expected\";\n if (message.newPartitionSignature != null && message.hasOwnProperty(\"newPartitionSignature\")) {\n if (!Array.isArray(message.newPartitionSignature))\n return \"newPartitionSignature: array expected\";\n for (let i = 0; i < message.newPartitionSignature.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.newPartitionSignature[i]);\n if (error)\n return \"newPartitionSignature.\" + error;\n }\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldPartitionInfo);\n if (error)\n return \"oldPartitionInfo.\" + error;\n }\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newPartitionInfo);\n if (error)\n return \"newPartitionInfo.\" + error;\n }\n if (message.operations != null && message.hasOwnProperty(\"operations\")) {\n if (!Array.isArray(message.operations))\n return \"operations: array expected\";\n for (let i = 0; i < message.operations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.operations[i]);\n if (error)\n return \"operations.\" + error;\n }\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n if (typeof message.postinstallOptional !== \"boolean\")\n return \"postinstallOptional: boolean expected\";\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeDataExtent);\n if (error)\n return \"hashTreeDataExtent.\" + error;\n }\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeExtent);\n if (error)\n return \"hashTreeExtent.\" + error;\n }\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n if (!$util.isString(message.hashTreeAlgorithm))\n return \"hashTreeAlgorithm: string expected\";\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n if (!(message.hashTreeSalt && typeof message.hashTreeSalt.length === \"number\" || $util.isString(message.hashTreeSalt)))\n return \"hashTreeSalt: buffer expected\";\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecDataExtent);\n if (error)\n return \"fecDataExtent.\" + error;\n }\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecExtent);\n if (error)\n return \"fecExtent.\" + error;\n }\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n if (!$util.isInteger(message.fecRoots))\n return \"fecRoots: integer expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.mergeOperations != null && message.hasOwnProperty(\"mergeOperations\")) {\n if (!Array.isArray(message.mergeOperations))\n return \"mergeOperations: array expected\";\n for (let i = 0; i < message.mergeOperations.length; ++i) {\n let error = $root.chromeos_update_engine.CowMergeOperation.verify(message.mergeOperations[i]);\n if (error)\n return \"mergeOperations.\" + error;\n }\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (!$util.isInteger(message.estimateCowSize) && !(message.estimateCowSize && $util.isInteger(message.estimateCowSize.low) && $util.isInteger(message.estimateCowSize.high)))\n return \"estimateCowSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a PartitionUpdate message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n */\n PartitionUpdate.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionUpdate)\n return object;\n let message = new $root.chromeos_update_engine.PartitionUpdate();\n if (object.partitionName != null)\n message.partitionName = String(object.partitionName);\n if (object.runPostinstall != null)\n message.runPostinstall = Boolean(object.runPostinstall);\n if (object.postinstallPath != null)\n message.postinstallPath = String(object.postinstallPath);\n if (object.filesystemType != null)\n message.filesystemType = String(object.filesystemType);\n if (object.newPartitionSignature) {\n if (!Array.isArray(object.newPartitionSignature))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: array expected\");\n message.newPartitionSignature = [];\n for (let i = 0; i < object.newPartitionSignature.length; ++i) {\n if (typeof object.newPartitionSignature[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: object expected\");\n message.newPartitionSignature[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.newPartitionSignature[i]);\n }\n }\n if (object.oldPartitionInfo != null) {\n if (typeof object.oldPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.oldPartitionInfo: object expected\");\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldPartitionInfo);\n }\n if (object.newPartitionInfo != null) {\n if (typeof object.newPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionInfo: object expected\");\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newPartitionInfo);\n }\n if (object.operations) {\n if (!Array.isArray(object.operations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: array expected\");\n message.operations = [];\n for (let i = 0; i < object.operations.length; ++i) {\n if (typeof object.operations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: object expected\");\n message.operations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.operations[i]);\n }\n }\n if (object.postinstallOptional != null)\n message.postinstallOptional = Boolean(object.postinstallOptional);\n if (object.hashTreeDataExtent != null) {\n if (typeof object.hashTreeDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeDataExtent: object expected\");\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeDataExtent);\n }\n if (object.hashTreeExtent != null) {\n if (typeof object.hashTreeExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeExtent: object expected\");\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeExtent);\n }\n if (object.hashTreeAlgorithm != null)\n message.hashTreeAlgorithm = String(object.hashTreeAlgorithm);\n if (object.hashTreeSalt != null)\n if (typeof object.hashTreeSalt === \"string\")\n $util.base64.decode(object.hashTreeSalt, message.hashTreeSalt = $util.newBuffer($util.base64.length(object.hashTreeSalt)), 0);\n else if (object.hashTreeSalt.length)\n message.hashTreeSalt = object.hashTreeSalt;\n if (object.fecDataExtent != null) {\n if (typeof object.fecDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecDataExtent: object expected\");\n message.fecDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecDataExtent);\n }\n if (object.fecExtent != null) {\n if (typeof object.fecExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecExtent: object expected\");\n message.fecExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecExtent);\n }\n if (object.fecRoots != null)\n message.fecRoots = object.fecRoots >>> 0;\n if (object.version != null)\n message.version = String(object.version);\n if (object.mergeOperations) {\n if (!Array.isArray(object.mergeOperations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected\");\n message.mergeOperations = [];\n for (let i = 0; i < object.mergeOperations.length; ++i) {\n if (typeof object.mergeOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: object expected\");\n message.mergeOperations[i] = $root.chromeos_update_engine.CowMergeOperation.fromObject(object.mergeOperations[i]);\n }\n }\n if (object.estimateCowSize != null)\n if ($util.Long)\n (message.estimateCowSize = $util.Long.fromValue(object.estimateCowSize)).unsigned = true;\n else if (typeof object.estimateCowSize === \"string\")\n message.estimateCowSize = parseInt(object.estimateCowSize, 10);\n else if (typeof object.estimateCowSize === \"number\")\n message.estimateCowSize = object.estimateCowSize;\n else if (typeof object.estimateCowSize === \"object\")\n message.estimateCowSize = new $util.LongBits(object.estimateCowSize.low >>> 0, object.estimateCowSize.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionUpdate message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.PartitionUpdate} message PartitionUpdate\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionUpdate.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.newPartitionSignature = [];\n object.operations = [];\n object.mergeOperations = [];\n }\n if (options.defaults) {\n object.partitionName = \"\";\n object.runPostinstall = false;\n object.postinstallPath = \"\";\n object.filesystemType = \"\";\n object.oldPartitionInfo = null;\n object.newPartitionInfo = null;\n object.postinstallOptional = false;\n object.hashTreeDataExtent = null;\n object.hashTreeExtent = null;\n object.hashTreeAlgorithm = \"\";\n if (options.bytes === String)\n object.hashTreeSalt = \"\";\n else {\n object.hashTreeSalt = [];\n if (options.bytes !== Array)\n object.hashTreeSalt = $util.newBuffer(object.hashTreeSalt);\n }\n object.fecDataExtent = null;\n object.fecExtent = null;\n object.fecRoots = 2;\n object.version = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.estimateCowSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.estimateCowSize = options.longs === String ? \"0\" : 0;\n }\n if (message.partitionName != null && message.hasOwnProperty(\"partitionName\"))\n object.partitionName = message.partitionName;\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n object.runPostinstall = message.runPostinstall;\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n object.postinstallPath = message.postinstallPath;\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n object.filesystemType = message.filesystemType;\n if (message.newPartitionSignature && message.newPartitionSignature.length) {\n object.newPartitionSignature = [];\n for (let j = 0; j < message.newPartitionSignature.length; ++j)\n object.newPartitionSignature[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.newPartitionSignature[j], options);\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\"))\n object.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldPartitionInfo, options);\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\"))\n object.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newPartitionInfo, options);\n if (message.operations && message.operations.length) {\n object.operations = [];\n for (let j = 0; j < message.operations.length; ++j)\n object.operations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.operations[j], options);\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n object.postinstallOptional = message.postinstallOptional;\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\"))\n object.hashTreeDataExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeDataExtent, options);\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\"))\n object.hashTreeExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeExtent, options);\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n object.hashTreeAlgorithm = message.hashTreeAlgorithm;\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n object.hashTreeSalt = options.bytes === String ? $util.base64.encode(message.hashTreeSalt, 0, message.hashTreeSalt.length) : options.bytes === Array ? Array.prototype.slice.call(message.hashTreeSalt) : message.hashTreeSalt;\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\"))\n object.fecDataExtent = $root.chromeos_update_engine.Extent.toObject(message.fecDataExtent, options);\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\"))\n object.fecExtent = $root.chromeos_update_engine.Extent.toObject(message.fecExtent, options);\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n object.fecRoots = message.fecRoots;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.mergeOperations && message.mergeOperations.length) {\n object.mergeOperations = [];\n for (let j = 0; j < message.mergeOperations.length; ++j)\n object.mergeOperations[j] = $root.chromeos_update_engine.CowMergeOperation.toObject(message.mergeOperations[j], options);\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (typeof message.estimateCowSize === \"number\")\n object.estimateCowSize = options.longs === String ? String(message.estimateCowSize) : message.estimateCowSize;\n else\n object.estimateCowSize = options.longs === String ? $util.Long.prototype.toString.call(message.estimateCowSize) : options.longs === Number ? new $util.LongBits(message.estimateCowSize.low >>> 0, message.estimateCowSize.high >>> 0).toNumber(true) : message.estimateCowSize;\n return object;\n };\n\n /**\n * Converts this PartitionUpdate to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionUpdate.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionUpdate;\n })();\n\n chromeos_update_engine.DynamicPartitionGroup = (function() {\n\n /**\n * Properties of a DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionGroup\n * @property {string} name DynamicPartitionGroup name\n * @property {number|Long|null} [size] DynamicPartitionGroup size\n * @property {Array.|null} [partitionNames] DynamicPartitionGroup partitionNames\n */\n\n /**\n * Constructs a new DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionGroup.\n * @implements IDynamicPartitionGroup\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n */\n function DynamicPartitionGroup(properties) {\n this.partitionNames = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionGroup name.\n * @member {string} name\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.name = \"\";\n\n /**\n * DynamicPartitionGroup size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DynamicPartitionGroup partitionNames.\n * @member {Array.} partitionNames\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.partitionNames = $util.emptyArray;\n\n /**\n * Creates a new DynamicPartitionGroup instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup instance\n */\n DynamicPartitionGroup.create = function create(properties) {\n return new DynamicPartitionGroup(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.size);\n if (message.partitionNames != null && message.partitionNames.length)\n for (let i = 0; i < message.partitionNames.length; ++i)\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.partitionNames[i]);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.name = reader.string();\n break;\n case 2:\n message.size = reader.uint64();\n break;\n case 3:\n if (!(message.partitionNames && message.partitionNames.length))\n message.partitionNames = [];\n message.partitionNames.push(reader.string());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"name\"))\n throw $util.ProtocolError(\"missing required 'name'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionGroup message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionGroup.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.partitionNames != null && message.hasOwnProperty(\"partitionNames\")) {\n if (!Array.isArray(message.partitionNames))\n return \"partitionNames: array expected\";\n for (let i = 0; i < message.partitionNames.length; ++i)\n if (!$util.isString(message.partitionNames[i]))\n return \"partitionNames: string[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a DynamicPartitionGroup message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n */\n DynamicPartitionGroup.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionGroup)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n if (object.name != null)\n message.name = String(object.name);\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.partitionNames) {\n if (!Array.isArray(object.partitionNames))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected\");\n message.partitionNames = [];\n for (let i = 0; i < object.partitionNames.length; ++i)\n message.partitionNames[i] = String(object.partitionNames[i]);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionGroup message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.DynamicPartitionGroup} message DynamicPartitionGroup\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionGroup.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.partitionNames = [];\n if (options.defaults) {\n object.name = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.partitionNames && message.partitionNames.length) {\n object.partitionNames = [];\n for (let j = 0; j < message.partitionNames.length; ++j)\n object.partitionNames[j] = message.partitionNames[j];\n }\n return object;\n };\n\n /**\n * Converts this DynamicPartitionGroup to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionGroup.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionGroup;\n })();\n\n chromeos_update_engine.DynamicPartitionMetadata = (function() {\n\n /**\n * Properties of a DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionMetadata\n * @property {Array.|null} [groups] DynamicPartitionMetadata groups\n * @property {boolean|null} [snapshotEnabled] DynamicPartitionMetadata snapshotEnabled\n * @property {boolean|null} [vabcEnabled] DynamicPartitionMetadata vabcEnabled\n * @property {string|null} [vabcCompressionParam] DynamicPartitionMetadata vabcCompressionParam\n * @property {number|null} [cowVersion] DynamicPartitionMetadata cowVersion\n */\n\n /**\n * Constructs a new DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionMetadata.\n * @implements IDynamicPartitionMetadata\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n */\n function DynamicPartitionMetadata(properties) {\n this.groups = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionMetadata groups.\n * @member {Array.} groups\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.groups = $util.emptyArray;\n\n /**\n * DynamicPartitionMetadata snapshotEnabled.\n * @member {boolean} snapshotEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.snapshotEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcEnabled.\n * @member {boolean} vabcEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcCompressionParam.\n * @member {string} vabcCompressionParam\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcCompressionParam = \"\";\n\n /**\n * DynamicPartitionMetadata cowVersion.\n * @member {number} cowVersion\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.cowVersion = 0;\n\n /**\n * Creates a new DynamicPartitionMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata instance\n */\n DynamicPartitionMetadata.create = function create(properties) {\n return new DynamicPartitionMetadata(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.groups != null && message.groups.length)\n for (let i = 0; i < message.groups.length; ++i)\n $root.chromeos_update_engine.DynamicPartitionGroup.encode(message.groups[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.snapshotEnabled != null && Object.hasOwnProperty.call(message, \"snapshotEnabled\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.snapshotEnabled);\n if (message.vabcEnabled != null && Object.hasOwnProperty.call(message, \"vabcEnabled\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.vabcEnabled);\n if (message.vabcCompressionParam != null && Object.hasOwnProperty.call(message, \"vabcCompressionParam\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.vabcCompressionParam);\n if (message.cowVersion != null && Object.hasOwnProperty.call(message, \"cowVersion\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.cowVersion);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.groups && message.groups.length))\n message.groups = [];\n message.groups.push($root.chromeos_update_engine.DynamicPartitionGroup.decode(reader, reader.uint32()));\n break;\n case 2:\n message.snapshotEnabled = reader.bool();\n break;\n case 3:\n message.vabcEnabled = reader.bool();\n break;\n case 4:\n message.vabcCompressionParam = reader.string();\n break;\n case 5:\n message.cowVersion = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.groups != null && message.hasOwnProperty(\"groups\")) {\n if (!Array.isArray(message.groups))\n return \"groups: array expected\";\n for (let i = 0; i < message.groups.length; ++i) {\n let error = $root.chromeos_update_engine.DynamicPartitionGroup.verify(message.groups[i]);\n if (error)\n return \"groups.\" + error;\n }\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n if (typeof message.snapshotEnabled !== \"boolean\")\n return \"snapshotEnabled: boolean expected\";\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n if (typeof message.vabcEnabled !== \"boolean\")\n return \"vabcEnabled: boolean expected\";\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n if (!$util.isString(message.vabcCompressionParam))\n return \"vabcCompressionParam: string expected\";\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n if (!$util.isInteger(message.cowVersion))\n return \"cowVersion: integer expected\";\n return null;\n };\n\n /**\n * Creates a DynamicPartitionMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n */\n DynamicPartitionMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionMetadata)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n if (object.groups) {\n if (!Array.isArray(object.groups))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: array expected\");\n message.groups = [];\n for (let i = 0; i < object.groups.length; ++i) {\n if (typeof object.groups[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: object expected\");\n message.groups[i] = $root.chromeos_update_engine.DynamicPartitionGroup.fromObject(object.groups[i]);\n }\n }\n if (object.snapshotEnabled != null)\n message.snapshotEnabled = Boolean(object.snapshotEnabled);\n if (object.vabcEnabled != null)\n message.vabcEnabled = Boolean(object.vabcEnabled);\n if (object.vabcCompressionParam != null)\n message.vabcCompressionParam = String(object.vabcCompressionParam);\n if (object.cowVersion != null)\n message.cowVersion = object.cowVersion >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.DynamicPartitionMetadata} message DynamicPartitionMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.groups = [];\n if (options.defaults) {\n object.snapshotEnabled = false;\n object.vabcEnabled = false;\n object.vabcCompressionParam = \"\";\n object.cowVersion = 0;\n }\n if (message.groups && message.groups.length) {\n object.groups = [];\n for (let j = 0; j < message.groups.length; ++j)\n object.groups[j] = $root.chromeos_update_engine.DynamicPartitionGroup.toObject(message.groups[j], options);\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n object.snapshotEnabled = message.snapshotEnabled;\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n object.vabcEnabled = message.vabcEnabled;\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n object.vabcCompressionParam = message.vabcCompressionParam;\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n object.cowVersion = message.cowVersion;\n return object;\n };\n\n /**\n * Converts this DynamicPartitionMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionMetadata;\n })();\n\n chromeos_update_engine.ApexInfo = (function() {\n\n /**\n * Properties of an ApexInfo.\n * @memberof chromeos_update_engine\n * @interface IApexInfo\n * @property {string|null} [packageName] ApexInfo packageName\n * @property {number|Long|null} [version] ApexInfo version\n * @property {boolean|null} [isCompressed] ApexInfo isCompressed\n * @property {number|Long|null} [decompressedSize] ApexInfo decompressedSize\n */\n\n /**\n * Constructs a new ApexInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexInfo.\n * @implements IApexInfo\n * @constructor\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n */\n function ApexInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexInfo packageName.\n * @member {string} packageName\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.packageName = \"\";\n\n /**\n * ApexInfo version.\n * @member {number|Long} version\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * ApexInfo isCompressed.\n * @member {boolean} isCompressed\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.isCompressed = false;\n\n /**\n * ApexInfo decompressedSize.\n * @member {number|Long} decompressedSize\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.decompressedSize = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * Creates a new ApexInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo instance\n */\n ApexInfo.create = function create(properties) {\n return new ApexInfo(properties);\n };\n\n /**\n * Encodes the specified ApexInfo message. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.packageName != null && Object.hasOwnProperty.call(message, \"packageName\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.packageName);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.version);\n if (message.isCompressed != null && Object.hasOwnProperty.call(message, \"isCompressed\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isCompressed);\n if (message.decompressedSize != null && Object.hasOwnProperty.call(message, \"decompressedSize\"))\n writer.uint32(/* id 4, wireType 0 =*/32).int64(message.decompressedSize);\n return writer;\n };\n\n /**\n * Encodes the specified ApexInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.packageName = reader.string();\n break;\n case 2:\n message.version = reader.int64();\n break;\n case 3:\n message.isCompressed = reader.bool();\n break;\n case 4:\n message.decompressedSize = reader.int64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n if (!$util.isString(message.packageName))\n return \"packageName: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high)))\n return \"version: integer|Long expected\";\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n if (typeof message.isCompressed !== \"boolean\")\n return \"isCompressed: boolean expected\";\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (!$util.isInteger(message.decompressedSize) && !(message.decompressedSize && $util.isInteger(message.decompressedSize.low) && $util.isInteger(message.decompressedSize.high)))\n return \"decompressedSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an ApexInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n */\n ApexInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexInfo)\n return object;\n let message = new $root.chromeos_update_engine.ApexInfo();\n if (object.packageName != null)\n message.packageName = String(object.packageName);\n if (object.version != null)\n if ($util.Long)\n (message.version = $util.Long.fromValue(object.version)).unsigned = false;\n else if (typeof object.version === \"string\")\n message.version = parseInt(object.version, 10);\n else if (typeof object.version === \"number\")\n message.version = object.version;\n else if (typeof object.version === \"object\")\n message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber();\n if (object.isCompressed != null)\n message.isCompressed = Boolean(object.isCompressed);\n if (object.decompressedSize != null)\n if ($util.Long)\n (message.decompressedSize = $util.Long.fromValue(object.decompressedSize)).unsigned = false;\n else if (typeof object.decompressedSize === \"string\")\n message.decompressedSize = parseInt(object.decompressedSize, 10);\n else if (typeof object.decompressedSize === \"number\")\n message.decompressedSize = object.decompressedSize;\n else if (typeof object.decompressedSize === \"object\")\n message.decompressedSize = new $util.LongBits(object.decompressedSize.low >>> 0, object.decompressedSize.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from an ApexInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.ApexInfo} message ApexInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.packageName = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.version = options.longs === String ? \"0\" : 0;\n object.isCompressed = false;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.decompressedSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.decompressedSize = options.longs === String ? \"0\" : 0;\n }\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n object.packageName = message.packageName;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (typeof message.version === \"number\")\n object.version = options.longs === String ? String(message.version) : message.version;\n else\n object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version;\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n object.isCompressed = message.isCompressed;\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (typeof message.decompressedSize === \"number\")\n object.decompressedSize = options.longs === String ? String(message.decompressedSize) : message.decompressedSize;\n else\n object.decompressedSize = options.longs === String ? $util.Long.prototype.toString.call(message.decompressedSize) : options.longs === Number ? new $util.LongBits(message.decompressedSize.low >>> 0, message.decompressedSize.high >>> 0).toNumber() : message.decompressedSize;\n return object;\n };\n\n /**\n * Converts this ApexInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ApexInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexInfo;\n })();\n\n chromeos_update_engine.ApexMetadata = (function() {\n\n /**\n * Properties of an ApexMetadata.\n * @memberof chromeos_update_engine\n * @interface IApexMetadata\n * @property {Array.|null} [apexInfo] ApexMetadata apexInfo\n */\n\n /**\n * Constructs a new ApexMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexMetadata.\n * @implements IApexMetadata\n * @constructor\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n */\n function ApexMetadata(properties) {\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexMetadata apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n */\n ApexMetadata.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new ApexMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata instance\n */\n ApexMetadata.create = function create(properties) {\n return new ApexMetadata(properties);\n };\n\n /**\n * Encodes the specified ApexMetadata message. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified ApexMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates an ApexMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n */\n ApexMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexMetadata)\n return object;\n let message = new $root.chromeos_update_engine.ApexMetadata();\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from an ApexMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.ApexMetadata} message ApexMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.apexInfo = [];\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this ApexMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n ApexMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexMetadata;\n })();\n\n chromeos_update_engine.DeltaArchiveManifest = (function() {\n\n /**\n * Properties of a DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @interface IDeltaArchiveManifest\n * @property {Array.|null} [installOperations] DeltaArchiveManifest installOperations\n * @property {Array.|null} [kernelInstallOperations] DeltaArchiveManifest kernelInstallOperations\n * @property {number|null} [blockSize] DeltaArchiveManifest blockSize\n * @property {number|Long|null} [signaturesOffset] DeltaArchiveManifest signaturesOffset\n * @property {number|Long|null} [signaturesSize] DeltaArchiveManifest signaturesSize\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldKernelInfo] DeltaArchiveManifest oldKernelInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newKernelInfo] DeltaArchiveManifest newKernelInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldRootfsInfo] DeltaArchiveManifest oldRootfsInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newRootfsInfo] DeltaArchiveManifest newRootfsInfo\n * @property {chromeos_update_engine.IImageInfo|null} [oldImageInfo] DeltaArchiveManifest oldImageInfo\n * @property {chromeos_update_engine.IImageInfo|null} [newImageInfo] DeltaArchiveManifest newImageInfo\n * @property {number|null} [minorVersion] DeltaArchiveManifest minorVersion\n * @property {Array.|null} [partitions] DeltaArchiveManifest partitions\n * @property {number|Long|null} [maxTimestamp] DeltaArchiveManifest maxTimestamp\n * @property {chromeos_update_engine.IDynamicPartitionMetadata|null} [dynamicPartitionMetadata] DeltaArchiveManifest dynamicPartitionMetadata\n * @property {boolean|null} [partialUpdate] DeltaArchiveManifest partialUpdate\n * @property {Array.|null} [apexInfo] DeltaArchiveManifest apexInfo\n */\n\n /**\n * Constructs a new DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DeltaArchiveManifest.\n * @implements IDeltaArchiveManifest\n * @constructor\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n */\n function DeltaArchiveManifest(properties) {\n this.installOperations = [];\n this.kernelInstallOperations = [];\n this.partitions = [];\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DeltaArchiveManifest installOperations.\n * @member {Array.} installOperations\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.installOperations = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest kernelInstallOperations.\n * @member {Array.} kernelInstallOperations\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.kernelInstallOperations = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest blockSize.\n * @member {number} blockSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.blockSize = 4096;\n\n /**\n * DeltaArchiveManifest signaturesOffset.\n * @member {number|Long} signaturesOffset\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest signaturesSize.\n * @member {number|Long} signaturesSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest oldKernelInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldKernelInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.oldKernelInfo = null;\n\n /**\n * DeltaArchiveManifest newKernelInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newKernelInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.newKernelInfo = null;\n\n /**\n * DeltaArchiveManifest oldRootfsInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldRootfsInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.oldRootfsInfo = null;\n\n /**\n * DeltaArchiveManifest newRootfsInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newRootfsInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.newRootfsInfo = null;\n\n /**\n * DeltaArchiveManifest oldImageInfo.\n * @member {chromeos_update_engine.IImageInfo|null|undefined} oldImageInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.oldImageInfo = null;\n\n /**\n * DeltaArchiveManifest newImageInfo.\n * @member {chromeos_update_engine.IImageInfo|null|undefined} newImageInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.newImageInfo = null;\n\n /**\n * DeltaArchiveManifest minorVersion.\n * @member {number} minorVersion\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.minorVersion = 0;\n\n /**\n * DeltaArchiveManifest partitions.\n * @member {Array.} partitions\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partitions = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest maxTimestamp.\n * @member {number|Long} maxTimestamp\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.maxTimestamp = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * DeltaArchiveManifest dynamicPartitionMetadata.\n * @member {chromeos_update_engine.IDynamicPartitionMetadata|null|undefined} dynamicPartitionMetadata\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.dynamicPartitionMetadata = null;\n\n /**\n * DeltaArchiveManifest partialUpdate.\n * @member {boolean} partialUpdate\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partialUpdate = false;\n\n /**\n * DeltaArchiveManifest apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new DeltaArchiveManifest instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest instance\n */\n DeltaArchiveManifest.create = function create(properties) {\n return new DeltaArchiveManifest(properties);\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.installOperations != null && message.installOperations.length)\n for (let i = 0; i < message.installOperations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.installOperations[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.kernelInstallOperations != null && message.kernelInstallOperations.length)\n for (let i = 0; i < message.kernelInstallOperations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.kernelInstallOperations[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.blockSize != null && Object.hasOwnProperty.call(message, \"blockSize\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.blockSize);\n if (message.signaturesOffset != null && Object.hasOwnProperty.call(message, \"signaturesOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.signaturesOffset);\n if (message.signaturesSize != null && Object.hasOwnProperty.call(message, \"signaturesSize\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.signaturesSize);\n if (message.oldKernelInfo != null && Object.hasOwnProperty.call(message, \"oldKernelInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldKernelInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newKernelInfo != null && Object.hasOwnProperty.call(message, \"newKernelInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newKernelInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.oldRootfsInfo != null && Object.hasOwnProperty.call(message, \"oldRootfsInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldRootfsInfo, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.newRootfsInfo != null && Object.hasOwnProperty.call(message, \"newRootfsInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newRootfsInfo, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim();\n if (message.oldImageInfo != null && Object.hasOwnProperty.call(message, \"oldImageInfo\"))\n $root.chromeos_update_engine.ImageInfo.encode(message.oldImageInfo, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.newImageInfo != null && Object.hasOwnProperty.call(message, \"newImageInfo\"))\n $root.chromeos_update_engine.ImageInfo.encode(message.newImageInfo, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.minorVersion != null && Object.hasOwnProperty.call(message, \"minorVersion\"))\n writer.uint32(/* id 12, wireType 0 =*/96).uint32(message.minorVersion);\n if (message.partitions != null && message.partitions.length)\n for (let i = 0; i < message.partitions.length; ++i)\n $root.chromeos_update_engine.PartitionUpdate.encode(message.partitions[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();\n if (message.maxTimestamp != null && Object.hasOwnProperty.call(message, \"maxTimestamp\"))\n writer.uint32(/* id 14, wireType 0 =*/112).int64(message.maxTimestamp);\n if (message.dynamicPartitionMetadata != null && Object.hasOwnProperty.call(message, \"dynamicPartitionMetadata\"))\n $root.chromeos_update_engine.DynamicPartitionMetadata.encode(message.dynamicPartitionMetadata, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.partialUpdate != null && Object.hasOwnProperty.call(message, \"partialUpdate\"))\n writer.uint32(/* id 16, wireType 0 =*/128).bool(message.partialUpdate);\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message, length delimited. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.installOperations && message.installOperations.length))\n message.installOperations = [];\n message.installOperations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 2:\n if (!(message.kernelInstallOperations && message.kernelInstallOperations.length))\n message.kernelInstallOperations = [];\n message.kernelInstallOperations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 3:\n message.blockSize = reader.uint32();\n break;\n case 4:\n message.signaturesOffset = reader.uint64();\n break;\n case 5:\n message.signaturesSize = reader.uint64();\n break;\n case 6:\n message.oldKernelInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newKernelInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n message.oldRootfsInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 9:\n message.newRootfsInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 10:\n message.oldImageInfo = $root.chromeos_update_engine.ImageInfo.decode(reader, reader.uint32());\n break;\n case 11:\n message.newImageInfo = $root.chromeos_update_engine.ImageInfo.decode(reader, reader.uint32());\n break;\n case 12:\n message.minorVersion = reader.uint32();\n break;\n case 13:\n if (!(message.partitions && message.partitions.length))\n message.partitions = [];\n message.partitions.push($root.chromeos_update_engine.PartitionUpdate.decode(reader, reader.uint32()));\n break;\n case 14:\n message.maxTimestamp = reader.int64();\n break;\n case 15:\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.decode(reader, reader.uint32());\n break;\n case 16:\n message.partialUpdate = reader.bool();\n break;\n case 17:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DeltaArchiveManifest message.\n * @function verify\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DeltaArchiveManifest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.installOperations != null && message.hasOwnProperty(\"installOperations\")) {\n if (!Array.isArray(message.installOperations))\n return \"installOperations: array expected\";\n for (let i = 0; i < message.installOperations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.installOperations[i]);\n if (error)\n return \"installOperations.\" + error;\n }\n }\n if (message.kernelInstallOperations != null && message.hasOwnProperty(\"kernelInstallOperations\")) {\n if (!Array.isArray(message.kernelInstallOperations))\n return \"kernelInstallOperations: array expected\";\n for (let i = 0; i < message.kernelInstallOperations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.kernelInstallOperations[i]);\n if (error)\n return \"kernelInstallOperations.\" + error;\n }\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n if (!$util.isInteger(message.blockSize))\n return \"blockSize: integer expected\";\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (!$util.isInteger(message.signaturesOffset) && !(message.signaturesOffset && $util.isInteger(message.signaturesOffset.low) && $util.isInteger(message.signaturesOffset.high)))\n return \"signaturesOffset: integer|Long expected\";\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (!$util.isInteger(message.signaturesSize) && !(message.signaturesSize && $util.isInteger(message.signaturesSize.low) && $util.isInteger(message.signaturesSize.high)))\n return \"signaturesSize: integer|Long expected\";\n if (message.oldKernelInfo != null && message.hasOwnProperty(\"oldKernelInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldKernelInfo);\n if (error)\n return \"oldKernelInfo.\" + error;\n }\n if (message.newKernelInfo != null && message.hasOwnProperty(\"newKernelInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newKernelInfo);\n if (error)\n return \"newKernelInfo.\" + error;\n }\n if (message.oldRootfsInfo != null && message.hasOwnProperty(\"oldRootfsInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldRootfsInfo);\n if (error)\n return \"oldRootfsInfo.\" + error;\n }\n if (message.newRootfsInfo != null && message.hasOwnProperty(\"newRootfsInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newRootfsInfo);\n if (error)\n return \"newRootfsInfo.\" + error;\n }\n if (message.oldImageInfo != null && message.hasOwnProperty(\"oldImageInfo\")) {\n let error = $root.chromeos_update_engine.ImageInfo.verify(message.oldImageInfo);\n if (error)\n return \"oldImageInfo.\" + error;\n }\n if (message.newImageInfo != null && message.hasOwnProperty(\"newImageInfo\")) {\n let error = $root.chromeos_update_engine.ImageInfo.verify(message.newImageInfo);\n if (error)\n return \"newImageInfo.\" + error;\n }\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n if (!$util.isInteger(message.minorVersion))\n return \"minorVersion: integer expected\";\n if (message.partitions != null && message.hasOwnProperty(\"partitions\")) {\n if (!Array.isArray(message.partitions))\n return \"partitions: array expected\";\n for (let i = 0; i < message.partitions.length; ++i) {\n let error = $root.chromeos_update_engine.PartitionUpdate.verify(message.partitions[i]);\n if (error)\n return \"partitions.\" + error;\n }\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (!$util.isInteger(message.maxTimestamp) && !(message.maxTimestamp && $util.isInteger(message.maxTimestamp.low) && $util.isInteger(message.maxTimestamp.high)))\n return \"maxTimestamp: integer|Long expected\";\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\")) {\n let error = $root.chromeos_update_engine.DynamicPartitionMetadata.verify(message.dynamicPartitionMetadata);\n if (error)\n return \"dynamicPartitionMetadata.\" + error;\n }\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n if (typeof message.partialUpdate !== \"boolean\")\n return \"partialUpdate: boolean expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a DeltaArchiveManifest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n */\n DeltaArchiveManifest.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DeltaArchiveManifest)\n return object;\n let message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n if (object.installOperations) {\n if (!Array.isArray(object.installOperations))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.installOperations: array expected\");\n message.installOperations = [];\n for (let i = 0; i < object.installOperations.length; ++i) {\n if (typeof object.installOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.installOperations: object expected\");\n message.installOperations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.installOperations[i]);\n }\n }\n if (object.kernelInstallOperations) {\n if (!Array.isArray(object.kernelInstallOperations))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.kernelInstallOperations: array expected\");\n message.kernelInstallOperations = [];\n for (let i = 0; i < object.kernelInstallOperations.length; ++i) {\n if (typeof object.kernelInstallOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.kernelInstallOperations: object expected\");\n message.kernelInstallOperations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.kernelInstallOperations[i]);\n }\n }\n if (object.blockSize != null)\n message.blockSize = object.blockSize >>> 0;\n if (object.signaturesOffset != null)\n if ($util.Long)\n (message.signaturesOffset = $util.Long.fromValue(object.signaturesOffset)).unsigned = true;\n else if (typeof object.signaturesOffset === \"string\")\n message.signaturesOffset = parseInt(object.signaturesOffset, 10);\n else if (typeof object.signaturesOffset === \"number\")\n message.signaturesOffset = object.signaturesOffset;\n else if (typeof object.signaturesOffset === \"object\")\n message.signaturesOffset = new $util.LongBits(object.signaturesOffset.low >>> 0, object.signaturesOffset.high >>> 0).toNumber(true);\n if (object.signaturesSize != null)\n if ($util.Long)\n (message.signaturesSize = $util.Long.fromValue(object.signaturesSize)).unsigned = true;\n else if (typeof object.signaturesSize === \"string\")\n message.signaturesSize = parseInt(object.signaturesSize, 10);\n else if (typeof object.signaturesSize === \"number\")\n message.signaturesSize = object.signaturesSize;\n else if (typeof object.signaturesSize === \"object\")\n message.signaturesSize = new $util.LongBits(object.signaturesSize.low >>> 0, object.signaturesSize.high >>> 0).toNumber(true);\n if (object.oldKernelInfo != null) {\n if (typeof object.oldKernelInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.oldKernelInfo: object expected\");\n message.oldKernelInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldKernelInfo);\n }\n if (object.newKernelInfo != null) {\n if (typeof object.newKernelInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.newKernelInfo: object expected\");\n message.newKernelInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newKernelInfo);\n }\n if (object.oldRootfsInfo != null) {\n if (typeof object.oldRootfsInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.oldRootfsInfo: object expected\");\n message.oldRootfsInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldRootfsInfo);\n }\n if (object.newRootfsInfo != null) {\n if (typeof object.newRootfsInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.newRootfsInfo: object expected\");\n message.newRootfsInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newRootfsInfo);\n }\n if (object.oldImageInfo != null) {\n if (typeof object.oldImageInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.oldImageInfo: object expected\");\n message.oldImageInfo = $root.chromeos_update_engine.ImageInfo.fromObject(object.oldImageInfo);\n }\n if (object.newImageInfo != null) {\n if (typeof object.newImageInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.newImageInfo: object expected\");\n message.newImageInfo = $root.chromeos_update_engine.ImageInfo.fromObject(object.newImageInfo);\n }\n if (object.minorVersion != null)\n message.minorVersion = object.minorVersion >>> 0;\n if (object.partitions) {\n if (!Array.isArray(object.partitions))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected\");\n message.partitions = [];\n for (let i = 0; i < object.partitions.length; ++i) {\n if (typeof object.partitions[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: object expected\");\n message.partitions[i] = $root.chromeos_update_engine.PartitionUpdate.fromObject(object.partitions[i]);\n }\n }\n if (object.maxTimestamp != null)\n if ($util.Long)\n (message.maxTimestamp = $util.Long.fromValue(object.maxTimestamp)).unsigned = false;\n else if (typeof object.maxTimestamp === \"string\")\n message.maxTimestamp = parseInt(object.maxTimestamp, 10);\n else if (typeof object.maxTimestamp === \"number\")\n message.maxTimestamp = object.maxTimestamp;\n else if (typeof object.maxTimestamp === \"object\")\n message.maxTimestamp = new $util.LongBits(object.maxTimestamp.low >>> 0, object.maxTimestamp.high >>> 0).toNumber();\n if (object.dynamicPartitionMetadata != null) {\n if (typeof object.dynamicPartitionMetadata !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected\");\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.fromObject(object.dynamicPartitionMetadata);\n }\n if (object.partialUpdate != null)\n message.partialUpdate = Boolean(object.partialUpdate);\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DeltaArchiveManifest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.DeltaArchiveManifest} message DeltaArchiveManifest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DeltaArchiveManifest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.installOperations = [];\n object.kernelInstallOperations = [];\n object.partitions = [];\n object.apexInfo = [];\n }\n if (options.defaults) {\n object.blockSize = 4096;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesSize = options.longs === String ? \"0\" : 0;\n object.oldKernelInfo = null;\n object.newKernelInfo = null;\n object.oldRootfsInfo = null;\n object.newRootfsInfo = null;\n object.oldImageInfo = null;\n object.newImageInfo = null;\n object.minorVersion = 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.maxTimestamp = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.maxTimestamp = options.longs === String ? \"0\" : 0;\n object.dynamicPartitionMetadata = null;\n object.partialUpdate = false;\n }\n if (message.installOperations && message.installOperations.length) {\n object.installOperations = [];\n for (let j = 0; j < message.installOperations.length; ++j)\n object.installOperations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.installOperations[j], options);\n }\n if (message.kernelInstallOperations && message.kernelInstallOperations.length) {\n object.kernelInstallOperations = [];\n for (let j = 0; j < message.kernelInstallOperations.length; ++j)\n object.kernelInstallOperations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.kernelInstallOperations[j], options);\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n object.blockSize = message.blockSize;\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (typeof message.signaturesOffset === \"number\")\n object.signaturesOffset = options.longs === String ? String(message.signaturesOffset) : message.signaturesOffset;\n else\n object.signaturesOffset = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesOffset) : options.longs === Number ? new $util.LongBits(message.signaturesOffset.low >>> 0, message.signaturesOffset.high >>> 0).toNumber(true) : message.signaturesOffset;\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (typeof message.signaturesSize === \"number\")\n object.signaturesSize = options.longs === String ? String(message.signaturesSize) : message.signaturesSize;\n else\n object.signaturesSize = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesSize) : options.longs === Number ? new $util.LongBits(message.signaturesSize.low >>> 0, message.signaturesSize.high >>> 0).toNumber(true) : message.signaturesSize;\n if (message.oldKernelInfo != null && message.hasOwnProperty(\"oldKernelInfo\"))\n object.oldKernelInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldKernelInfo, options);\n if (message.newKernelInfo != null && message.hasOwnProperty(\"newKernelInfo\"))\n object.newKernelInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newKernelInfo, options);\n if (message.oldRootfsInfo != null && message.hasOwnProperty(\"oldRootfsInfo\"))\n object.oldRootfsInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldRootfsInfo, options);\n if (message.newRootfsInfo != null && message.hasOwnProperty(\"newRootfsInfo\"))\n object.newRootfsInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newRootfsInfo, options);\n if (message.oldImageInfo != null && message.hasOwnProperty(\"oldImageInfo\"))\n object.oldImageInfo = $root.chromeos_update_engine.ImageInfo.toObject(message.oldImageInfo, options);\n if (message.newImageInfo != null && message.hasOwnProperty(\"newImageInfo\"))\n object.newImageInfo = $root.chromeos_update_engine.ImageInfo.toObject(message.newImageInfo, options);\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n object.minorVersion = message.minorVersion;\n if (message.partitions && message.partitions.length) {\n object.partitions = [];\n for (let j = 0; j < message.partitions.length; ++j)\n object.partitions[j] = $root.chromeos_update_engine.PartitionUpdate.toObject(message.partitions[j], options);\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (typeof message.maxTimestamp === \"number\")\n object.maxTimestamp = options.longs === String ? String(message.maxTimestamp) : message.maxTimestamp;\n else\n object.maxTimestamp = options.longs === String ? $util.Long.prototype.toString.call(message.maxTimestamp) : options.longs === Number ? new $util.LongBits(message.maxTimestamp.low >>> 0, message.maxTimestamp.high >>> 0).toNumber() : message.maxTimestamp;\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\"))\n object.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.toObject(message.dynamicPartitionMetadata, options);\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n object.partialUpdate = message.partialUpdate;\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this DeltaArchiveManifest to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n * @returns {Object.} JSON object\n */\n DeltaArchiveManifest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DeltaArchiveManifest;\n })();\n\n return chromeos_update_engine;\n})();\n\nexport { $root as default };\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TextWriter, ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { chromeos_update_engine } from './update_metadata_pb.js'\n\n/**\n * Parse the non-A/B OTA package and return it as a DeltaArchiveManifest\n * @param {ZipReader} packedFile\n */\nexport class PayloadNonAB extends chromeos_update_engine.DeltaArchiveManifest {\n nonAB: boolean = true\n Blocksize: number = 4096\n packedFile: ZipReader\n constructor(packedFile: ZipReader) {\n super()\n this.packedFile = packedFile\n }\n\n async init() {\n this.Blocksize = 4096\n this.partialUpdate = false\n this.dynamicPartitionMetadata = new chromeos_update_engine.DynamicPartitionMetadata(\n { snapshotEnabled: false, vabcEnabled: false }\n )\n this.partitions = []\n\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.transfer.list)/g\n const /** Array */ entries = await this.packedFile.getEntries()\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n const match = entry.filename.match(regexName)![0]\n let newPartition = new chromeos_update_engine.PartitionUpdate({\n partitionName: match\n })\n newPartition.rawText = await entry.getData!(new TextWriter())\n await this.parseTransferList(newPartition)\n this.partitions.push(newPartition)\n }\n }\n }\n\n async parseTransferList(partition: chromeos_update_engine.PartitionUpdate) {\n let /** Array */ lines = partition.rawText.split('\\n')\n // First four line in header: version, total blocks,\n // number of stashed entries, maximum used memory for stash\n if (lines.length < 4) {\n throw 'At least 4 lines in header should be provided.'\n }\n partition.version = lines[0]\n partition.totalBlocks = parseInt(lines[1])\n partition.entryStashed = parseInt(lines[2])\n partition.maxStashed = parseInt(lines[3])\n partition.newPartitionInfo = new chromeos_update_engine.PartitionInfo()\n partition.newPartitionInfo.hash = new Uint8Array()\n partition.newPartitionInfo.size = 'unknown'\n /**\n * The main body have 8 different ops:\n * zero [rangeset] : fill zeros\n * new [rangeset] : fill with new data from \n * erase [rangeset] : mark given blocks as empty\n * move <...>\n * bsdiff <...>\n * imgdiff <...> :\n * Read the source blocks and apply (not for move op) to the target blocks\n * stash : load the given source range to memory\n * free : free the given \n * format:\n * [rangeset]: <# of pairs>, , , ...\n * : a hex number with length of 40\n * <...>: We expect to parse the remainder of the parameter tokens as one of:\n * (loads data from source image only)\n * - <[stash_id:stash_range] ...> (loads data from stashes only)\n * <[stash_id:stash_range] ...>\n * (loads data from both source image and stashes)\n */\n partition.operations = new Array()\n let newDataSize = await this.sizeNewData(partition.partitionName)\n for (const line of lines.slice(4)) {\n let op = new chromeos_update_engine.InstallOperation()\n let elements = line.split(' ')\n op.type = elements[0]\n switch ((op.type as unknown) as string) {\n case 'zero':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'new':\n // unlike an A/B OTA, the payload only exists in the payload.bin,\n // in an non-A/B OTA, the payload exists in both .new.data and .patch.data.\n // The new ops do not have any information about data length.\n // what we do here is: read in the size of .new.data, assume the first new\n // op have the data length of the size of .new.data.\n op.dataLength = newDataSize\n newDataSize = 0\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'erase':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'move':\n op.dstExtents = parseRange([], elements[2])\n break\n case 'bsdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'imgdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'stash':\n break\n case 'free':\n break\n }\n partition.operations.push(op)\n }\n }\n\n /**\n * Return the size of .new.data.*\n * @param {String} partitionName\n * @return {Number}\n */\n async sizeNewData(partitionName: string) {\n const /** Array */ entries = await this.packedFile.getEntries()\n const /** RegExp */ regexName = new RegExp(partitionName + '.new.dat.*')\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n return entry.uncompressedSize\n }\n }\n }\n}\n\n/**\n * Parse the range string and return it as an array of extents\n * @param {extents} Array\n * @param {String} rangeset\n * @return Array\n */\nfunction parseRange(extents: Object[], rangeset: string) {\n const regexRange = new RegExp('[d,]+')\n if (rangeset.match(regexRange)) {\n let elements = rangeset.split(',')\n for (let i = 1; i < elements.length; i = i + 2) {\n let extent = new Object({\n startBlock: parseInt(elements[i]),\n numBlocks: parseInt(elements[i + 1]) - parseInt(elements[i])\n })\n extents.push(extent)\n }\n }\n return extents\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class paypload is used to read in and\n * parse the payload.bin file from a OTA.zip file.\n * Class OpType creates a Map that can resolve the\n * operation type.\n * @package zip.js\n * @package protobufjs\n */\n\nimport {\n BlobReader,\n TextWriter,\n Writer,\n ZipReader,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\n// import '@zip.js/zip.js'\nimport { chromeos_update_engine as update_metadata_pb } from './update_metadata_pb'\nimport { PayloadNonAB } from './payload_nonab'\nimport { ZipFile } from './trim_zip'\n// import { Zip_js } from 'zip.js'\n\nconst /** String */ _MAGIC = 'CrAU'\nconst /** Number */ _VERSION_SIZE = 8\nconst /** Number */ _MANIFEST_LEN_SIZE = 8\nconst /** Number */ _METADATA_SIGNATURE_LEN_SIZE = 4\n\nconst /** Number */ _PAYLOAD_HEADER_SIZE =\n _MAGIC.length +\n _VERSION_SIZE +\n _MANIFEST_LEN_SIZE +\n _METADATA_SIGNATURE_LEN_SIZE\n\nconst /** Number */ _BRILLO_MAJOR_PAYLOAD_VERSION = 2\nexport const /** Array */ MetadataFormat = [\n {\n prefix: 'pre-build',\n key: 'preBuild',\n name: 'Pre-build'\n },\n {\n prefix: 'pre-build-incremental',\n key: 'preBuildVersion',\n name: 'Pre-build version'\n },\n {\n prefix: 'post-build',\n key: 'postBuild',\n name: 'Post-build'\n },\n {\n prefix: 'post-build-incremental',\n key: 'postBuildVersion',\n name: 'Post-build version'\n },\n {\n prefix: 'post-security-patch-level',\n key: 'postSecurityPatchLevel',\n name: 'Post-build SPL'\n },\n {\n prefix: 'post-timestamp',\n key: 'postTimestamp',\n name: 'Post-build timestamp'\n },\n ]\n\nclass StopIteration extends Error {}\n\nclass AbPayloadHeader {\n constructor(\n public magic: string,\n public version: number,\n public manifest_len: number,\n public metadata_signature_len: number\n ) {}\n}\n\n/**\n * Read in an integer from binary bufferArray.\n * @param {Int} size the size of a integer being read in\n * @return {Int} an integer.\n */\nasync function readIntAt(buffer: Blob, position: number, size: number) {\n let /** DataView */ view = new DataView(\n await buffer!.slice(position, position + size).arrayBuffer()\n )\n if (typeof view.getBigUint64 !== 'function') {\n view.getBigUint64 = function(offset) {\n const a = BigInt(view.getUint32(offset))\n const b = BigInt(view.getUint32(offset + 4))\n const bigNumber = a * 4294967296n + b\n return bigNumber\n }\n }\n switch (size) {\n case 2:\n return view.getUint16(0)\n case 4:\n return view.getUint32(0)\n case 8:\n return Number(view.getBigUint64(0))\n default:\n throw 'Cannot read this integer with size ' + size\n }\n}\n\nclass OTAPayloadBlobWriter extends Writer {\n offset: number\n contentType: string\n blob: Blob\n prefixLength: number\n\n header?: AbPayloadHeader\n\n async readHeader(blob: Blob) {\n let cursor = 0\n const readInt = (size: number) => {\n const ret = readIntAt(blob, cursor, size)\n cursor += size\n return ret\n }\n let buffer = await blob.slice(0, _PAYLOAD_HEADER_SIZE).arrayBuffer()\n let /** TextDecoder */ decoder = new TextDecoder()\n let magicBytes = buffer.slice(0, _MAGIC.length)\n const magic = decoder.decode(magicBytes)\n if (magic != _MAGIC) {\n throw new Error(\n `MAGIC is not correct, expected: ${_MAGIC} actual: ${magic}`\n )\n }\n cursor += _MAGIC.length\n const header_version = await readInt(_VERSION_SIZE)\n const manifest_len = await readInt(_MANIFEST_LEN_SIZE)\n if (header_version != _BRILLO_MAJOR_PAYLOAD_VERSION) {\n throw new Error(`Unexpected major version number: ${header_version}`)\n }\n const metadata_signature_len = await readInt(_METADATA_SIGNATURE_LEN_SIZE)\n this.header = new AbPayloadHeader(\n magic,\n header_version,\n manifest_len,\n metadata_signature_len\n )\n }\n /**\n * A zip.Writer that is tailored for OTA payload.bin read-in.\n * Instead of reading in all the contents in payload.bin, this writer will\n * throw an 'StopIteration' error when the header is read in.\n * The header will be stored into the .\n * @param {Payload} payload\n * @param {String} contentType\n */\n constructor(contentType = '') {\n super()\n this.offset = 0\n this.contentType = contentType\n this.blob = new Blob([], { type: contentType })\n this.prefixLength = 0\n }\n\n async writeUint8Array(array: Uint8Array) {\n super.writeUint8Array(array)\n this.blob = new Blob([this.blob, array.buffer], { type: this.contentType })\n this.offset = this.blob.size\n // Once the prefixLength is non-zero, the address of manifest and signature\n // become known and can be read in. Otherwise the header needs to be read\n // in first to determine the prefixLength.\n if (this.offset >= _PAYLOAD_HEADER_SIZE && this.prefixLength == 0) {\n console.log('Parsing header!')\n await this.readHeader(this.blob)\n this.prefixLength =\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n console.log(`Computed metadata length: ${this.prefixLength}`)\n }\n if (this.prefixLength > 0) {\n console.log(`${this.offset}/${this.prefixLength}`)\n if (this.offset >= this.prefixLength) {\n // The prefix has everything we need (header, manifest, signature). Once\n // the offset is beyond the prefix, no need to move on.\n this.blob = this.blob.slice(0, this.prefixLength)\n throw new StopIteration()\n }\n }\n }\n\n getData() {\n return this.blob\n }\n}\n\nexport class Payload {\n zipreader: ZipReader\n buffer: Blob | undefined\n private metadata: any\n manifest: update_metadata_pb.DeltaArchiveManifest | undefined\n metadata_signature!: update_metadata_pb.Signatures\n\n header?: AbPayloadHeader\n\n /**\n * This class parses the metadata of a OTA package.\n * @param {File} file A OTA.zip file read from user's machine.\n */\n constructor(file: File | URL | ZipFile) {\n if (file instanceof File) {\n this.zipreader = new ZipReader(new BlobReader(file))\n } else if (file instanceof URL) {\n this.zipreader = new ZipReader(new HttpReader(file.href))\n } else {\n this.zipreader = file.reader\n }\n }\n\n getMetadataLength(): number {\n return (\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n )\n }\n\n /**\n * Unzip the OTA package, get payload.bin and metadata\n */\n async unzip() {\n let entries = await this.zipreader.getEntries()\n for (let entry of entries) {\n if (entry.filename == 'payload.bin') {\n let writer = new OTAPayloadBlobWriter('')\n try {\n await entry.getData!(writer)\n } catch (e) {\n if (e instanceof StopIteration) {\n // Exception used as a hack to stop reading from zip. NO need to do anything\n // Ideally zip.js would provide an API to partialll read a zip\n // entry, but they don't. So this is what we get\n } else {\n console.log(e)\n throw e\n }\n }\n this.buffer = writer.getData()\n await this.readManifest(this.buffer, writer.header!)\n console.log('AB OTA manifest parsed')\n } else if (entry.filename == 'META-INF/com/android/metadata') {\n this.metadata = await entry.getData!(new TextWriter())\n console.log('OTA Package metadata parsed')\n }\n }\n if (!this.manifest) {\n console.log('Failed to parse AB OTA package, falling back to non-AB')\n try {\n // The temporary variable manifest has to be used here, to prevent the html page\n // being rendered before everything is read in properly\n let manifest = new PayloadNonAB(this.zipreader)\n await manifest.init()\n manifest.nonAB = true\n this.manifest = manifest\n } catch (error) {\n alert('Please select a legit OTA package')\n return\n }\n }\n }\n\n /**\n * Read the header of payload.bin, including the magic, header_version,\n * manifest_len, metadata_signature_len.\n */\n /**\n * Read in the manifest in an OTA.zip file.\n * The structure of the manifest can be found in:\n * aosp/system/update_engine/update_metadata.proto\n */\n async readManifest(buffer: Blob, header: AbPayloadHeader) {\n this.header = header\n let cursor = _PAYLOAD_HEADER_SIZE\n let manifestBlob = await buffer\n .slice(cursor, cursor + header.manifest_len)\n .arrayBuffer()\n cursor += header.manifest_len\n this.manifest = update_metadata_pb.DeltaArchiveManifest.decode(\n new Uint8Array(manifestBlob)\n )\n let signatureBlob = await buffer\n .slice(cursor, cursor + header.metadata_signature_len)\n .arrayBuffer()\n cursor += header.metadata_signature_len\n this.metadata_signature = update_metadata_pb.Signatures.decode(\n new Uint8Array(signatureBlob)\n )\n this.manifest!.nonAB = false\n }\n\n parseMetadata() {\n for (let formatter of MetadataFormat) {\n let regex = new RegExp(formatter.prefix + '.+')\n if (this.metadata.match(regex)) {\n ;(this as any)[formatter.key] = trimEntry(\n this.metadata.match(regex)[0],\n formatter.prefix\n )\n } else {\n ;(this as any)[formatter.key] = ''\n }\n }\n }\n\n async init() {\n await this.unzip()\n this.parseMetadata()\n }\n}\n\nexport class DefaultMap extends Map {\n /** Reload the original get method. Return the original key value if\n * the key does not exist.\n * @param {Any} key\n */\n getWithDefault(key: any) {\n if (!this.has(key)) return key\n return this.get(key)\n }\n}\n\nexport class OpType {\n mapType: DefaultMap\n /**\n * OpType.mapType create a map that could resolve the operation\n * types. The operation types are encoded as numbers in\n * update_metadata.proto and must be decoded before any usage.\n */\n constructor() {\n let types = update_metadata_pb.InstallOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport class MergeOpType {\n mapType: DefaultMap\n /**\n * MergeOpType create a map that could resolve the COW merge operation\n * types. This is very similar to OpType class except that one is for\n * installation operations.\n */\n constructor() {\n let /** Array<{String: Number}>*/ types =\n update_metadata_pb.CowMergeOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport function octToHex(bufferArray: Uint8Array, space = true, maxLine = 16) {\n let hex_table = ''\n for (let i = 0; i < bufferArray.length; i++) {\n const hex /** String **/ = bufferArray[i].toString(16).toUpperCase()\n if (hex.length === 2) {\n hex_table += hex + (space ? ' ' : '')\n } else {\n hex_table += '0' + hex + (space ? ' ' : '')\n }\n if ((i + 1) % maxLine == 0 && space) {\n hex_table += '\\n'\n }\n }\n return hex_table\n}\n\n/**\n * Trim the prefix in an entry. This is required because the lookbehind\n * regular expression is not supported in safari yet.\n * @param {String} entry\n * @param {String} prefix\n * @return String\n */\nfunction trimEntry(entry: string, prefix: string) {\n return entry.slice(prefix.length + 1, entry.length)\n}\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-44174082\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Data offset: \", -1))\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Data length: \", -1))\nconst _hoisted_5 = { key: 2 }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Source: \", -1))\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_8 = { key: 3 }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Destination: \", -1))\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"h5\", null, _toDisplayString(_ctx.mapType.getWithDefault(_ctx.operation.type)), 1),\n (_ctx.operation.hasOwnProperty('dataOffset'))\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_1, [\n _hoisted_2,\n _createTextVNode(\" \" + _toDisplayString(_ctx.operation.dataOffset), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.operation.hasOwnProperty('dataLength'))\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_3, [\n _hoisted_4,\n _createTextVNode(\" \" + _toDisplayString(_ctx.operation.dataLength), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.operation.hasOwnProperty('srcExtents'))\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.operation.srcExtents.length) + \" extents (\" + _toDisplayString(_ctx.srcTotalBlocks) + \" blocks) \", 1),\n _hoisted_7,\n _createTextVNode(\" \" + _toDisplayString(_ctx.srcBlocks), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.operation.hasOwnProperty('dstExtents'))\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_8, [\n _hoisted_9,\n _createTextVNode(\" \" + _toDisplayString(_ctx.operation.dstExtents.length) + \" extents (\" + _toDisplayString(_ctx.dstTotalBlocks) + \" blocks) \", 1),\n _hoisted_10,\n _createTextVNode(\" \" + _toDisplayString(_ctx.dstBlocks), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(_component_v_divider)\n ], 64))\n}","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EChartsOption } from 'echarts'\n\nexport class EchartsData {\n statisticData: Map\n trimmedData: Map\n title: string\n unit: string\n maximumEntries: number\n /**\n * Given a set of [key, value] pairs and title, create an object for further\n * usage in Vue-Echarts.\n * @param {Map} statisticData\n * @param {String} title\n * @param {String} unit\n * @param {Number} maximumEntries\n */\n constructor(\n statisticData: Map,\n title: string,\n unit: string,\n maximumEntries = 15\n ) {\n this.statisticData = statisticData\n this.trimmedData = trimMap(statisticData, maximumEntries)\n this.title = title\n this.unit = unit\n this.maximumEntries = maximumEntries\n }\n\n /**\n * Convert the raw data into a string.\n * @return {String} A list of [key, value].\n */\n listData() {\n let /** String */ table = ''\n for (let [key, value] of this.statisticData) {\n table += key + ' : ' + value.toString() + ' Blocks' + '\\n'\n }\n return table\n }\n\n /**\n * Generate necessary parameters (option) for vue-echarts.\n * Format of the parameters can be found here:\n * https://echarts.apache.org/en/option.html\n * @param {String} unit\n * @return {Object} an ECharts option object.\n */\n getEchartsOption(): EChartsOption {\n let /** Object */ option: EChartsOption = {}\n option.title = {\n text: this.title,\n left: 'center'\n }\n option.tooltip = {\n trigger: 'item',\n formatter: '{a}
{b} : {c} ' + this.unit + ' ({d}%)'\n }\n option.legend = {\n orient: 'horizontal',\n left: 'top',\n top: '10%',\n data: Array.from(this.trimmedData.keys())\n }\n option.series = [\n {\n name: this.title,\n type: 'pie',\n radius: '55%',\n center: ['50%', '60%'],\n data: Array.from(this.trimmedData).map((pair: any) => {\n return { value: pair[1], name: pair[0] }\n }),\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)'\n }\n }\n }\n ]\n return option\n }\n}\n\n/**\n * When there are too many entries in the map, the pie chart can be very\n * crowded. This function will return the entries that have high values.\n * Specifically, the top will be stored and the others\n * will be added into an entry called 'other'.\n * @param {Map} map\n * @param {Number} maximumEntries\n * @return {Map}\n */\nfunction trimMap(map: Map, maximumEntries: number) {\n if (map.size <= maximumEntries) return map\n let /** Map */ new_map = new Map()\n for (let i = 0; i < maximumEntries; i++) {\n let /** Number */ curr = 0\n let /** String */ currKey = ''\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n if (value > curr) {\n curr = value\n currKey = key\n }\n }\n }\n new_map.set(currKey, curr)\n }\n let /** Number */ restTotal = 0\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n restTotal += value\n }\n }\n new_map.set('other', restTotal)\n return new_map\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class MapParser will take in a Android build and construct\n * several file name maps (physical address: file name) according to it.\n * The map of each partitions is added by calling MapParser.add(partitionName).\n * You can query the file name being operated by calling\n * MapParser.query(address, datalength).\n */\n\nimport {\n ZipReader,\n BlobReader,\n TextWriter,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\nimport { chromeos_update_engine } from './update_metadata_pb'\n\nexport class MapParser {\n build: ZipReader\n mapFiles: Map\n maps: Map\n /**\n * This class will take in a .zip Android build and construct a file type map\n * @param {File} targetFile\n */\n constructor(targetFile: File | URL) {\n if (targetFile instanceof File) {\n this.build = new ZipReader(new BlobReader(targetFile))\n } else {\n this.build = new ZipReader(new HttpReader(targetFile.href))\n }\n this.mapFiles = new Map()\n this.maps = new Map()\n }\n\n /**\n * Find the .map entries in the .zip build file. Store them as a map with\n * pairs of (partition name: zip.js entry).\n */\n async init() {\n let /** Array */ entries = await this.build.getEntries()\n const /** RegExp*/ regexPath = /IMAGES\\/[a-z_]*\\.map/g\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.map)/g\n entries.forEach(entry => {\n if (entry.filename.match(regexPath)) {\n this.mapFiles.set(entry.filename.match(regexName)![0], entry)\n }\n })\n }\n\n /**\n * According to the .map in the build, build a map for later query.\n * @param {String} partitionName\n * @param {Number} totalLength\n */\n async add(partitionName: string, totalLength: number) {\n let /** Array */ map = []\n const /** RegExp */ regexNumber = /\\d+/g\n const /** Reg */ regexRange = /\\d+\\-\\d+/g\n for (let i = 0; i < totalLength; i++) map[i] = `<${partitionName}>`\n if (this.mapFiles.get(partitionName)) {\n let /** String */ mapText = await this.mapFiles\n .get(partitionName)\n .getData(new TextWriter())\n let /** Array */ fileEntries = mapText.split('\\n')\n // Each line of the .map file in Android build starts with the filename\n // Followed by the block address, either a number or a range, for example:\n // //system/apex/com.android.adbd.apex 54-66 66 66-2663\n for (let entry of fileEntries) {\n let /** Array */ elements = entry.split(' ')\n for (let j = 1; j < elements.length; j++) {\n let /** Number */ left = 0\n let /** Number */ right = 0\n if (elements[j].match(regexRange)) {\n left = parseInt(elements[j].match(/\\d+/g)[0])\n right = parseInt(elements[j].match(/\\d+/g)[1])\n } else {\n left = parseInt(elements[j].match(regexNumber))\n right = parseInt(elements[j].match(regexNumber))\n }\n InsertMap(map, elements[0], left, right)\n }\n }\n this.maps.set(partitionName, map)\n } else {\n this.maps.set(partitionName, map)\n }\n }\n\n /**\n * Return the filename of given address.\n * @param {String} partitionName\n * @param {Array} extents\n * @return {Array}\n */\n query(partitionName: string, extents: Array) {\n let /** Array */ names = []\n let /** Array */ map = this.maps.get(partitionName)\n for (let ext of extents) {\n names.push(queryMap(map, ext.startBlock, ext.startBlock + ext.numBlocks))\n }\n return names\n }\n}\n\n/**\n * Fill in the hashtable from to using .\n * @param {Array} map\n * @param {String} name\n * @param {Number} left\n * @param {Number} right\n */\nfunction InsertMap(\n map: Array,\n name: string,\n left: number,\n right: number\n) {\n for (let i = left; i <= right; i++) {\n map[i] = name\n }\n}\n\n/**\n * Query the hashtable using index
.\n * @param {Array} map\n * @param {Number} left\n * @param {Number} right\n */\nfunction queryMap(map: Array, left: number, right: number) {\n // Assuming the consecutive blocks belong to the same file\n // Only the start block is queried here.\n if (!map[left]) {\n return 'unknown'\n }\n return map[left]\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Offer functions that can be used to parse the partitionUpdate\n * and then do statistics over it. One can use analysePartitions to specify the\n * partitions been analysed and metrics.\n */\n\nimport { OpType, MergeOpType } from './payload'\nimport { EchartsData } from './echarts_data'\nimport { MapParser } from './map_parser'\nimport { chromeos_update_engine } from './update_metadata_pb'\n\n/**\n * Add a to a element associated to . If the element dose not\n * exists than its value will be initialized to zero.\n * @param {Map} map\n * @param {String} key\n * @param {Number} value\n */\nfunction addNumberToMap(map: Map, key: String, value: number) {\n if (!map.get(key)) {\n map.set(key, 0)\n }\n map.set(key, map.get(key)! + value)\n}\n\n/**\n * Return a statistics over the numbers of blocks (in destination) that are\n * being operated by different installation operation (e.g. REPLACE, BSDIFF).\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedBlockStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n operatedBlocks,\n operationType,\n numBlocks(operation.dstExtents)\n )\n }\n }\n return operatedBlocks\n}\n\nexport function mergeOperationStatistics(\n partitions: Array,\n blockSize: number\n) {\n let /** Map */ mergeOperations = new Map()\n let /** MergeOpType */ opType = new MergeOpType()\n let /** Number */ totalBlocks = 0\n for (let partition of partitions) {\n for (let operation of partition.mergeOperations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n mergeOperations,\n operationType,\n operation.dstExtent!.numBlocks\n )\n }\n // The total blocks number should be rounded up\n if (partition.newPartitionInfo == null) {\n throw new Error(\n `Partition ${partition.partitionName} doesn't have new_partition_info field.`\n )\n }\n totalBlocks += Math.ceil(partition.newPartitionInfo.size / blockSize)\n }\n // The COW merge operation is default to be COW_replace and not shown in\n // the manifest info. We have to mannually add that part of operations,\n // by subtracting the total blocks with other blocks.\n mergeOperations.forEach((value, key) => (totalBlocks -= value))\n mergeOperations.set('COW_REPLACE', totalBlocks)\n return mergeOperations\n}\n\n/**\n * Return a statistics over the disk usage of payload.bin, based on the type of\n * installation operations. Only partitions that are being passed in will be\n * included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedPayloadStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(operatedBlocks, operationType, operation.dataLength)\n }\n }\n return operatedBlocks\n}\n/**\n * Return a statistics over the disk usage of each file types in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFileExtensionsStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let filenameStats = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n const fileExtenstionStats = new Map()\n filenameStats.forEach((size, filename) => {\n addNumberToMap(fileExtenstionStats, name2Extension(filename), size)\n })\n return fileExtenstionStats\n}\n\n/**\n * Return a statistics over the disk usage of each file name in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFilenamesStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let /** Map */ operatedFilenames = new Map()\n if (!targetFile) {\n return operatedFilenames\n }\n let buildMap = new MapParser(targetFile)\n await buildMap.init()\n for (let partition of partitions) {\n await buildMap.add(\n partition.partitionName,\n Math.ceil(partition.newPartitionInfo!.size / blockSize)\n )\n for (let operation of partition.operations!) {\n if (!operation.hasOwnProperty('dataLength')) continue\n let operatedFileNames = buildMap.query(\n partition.partitionName,\n operation.dstExtents!\n )\n let extentDataLength = distributeFilenames(\n operatedFileNames,\n operation.dstExtents!,\n operation.dataLength\n )\n extentDataLength!.forEach((value, key) => {\n addNumberToMap(operatedFilenames, key, value)\n })\n }\n }\n return operatedFilenames\n}\n\n/**\n * Analyse the given partitions using the given metrics.\n * @param {String} metrics\n * @param {Array} partitions\n * @return {EchartsData}\n */\nexport async function analysePartitions(\n metrics: String,\n partitions: Array,\n blockSize = 4096,\n targetFile: File | null | URL = null\n) {\n let /** Map */ statisticsData\n let /** Echartsdata */ echartsData\n switch (metrics) {\n case 'blocks':\n statisticsData = operatedBlockStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Operated blocks in target build',\n 'blocks'\n )\n break\n case 'payload':\n statisticsData = operatedPayloadStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Payload disk usage',\n 'bytes'\n )\n break\n case 'COWmerge':\n statisticsData = mergeOperationStatistics(partitions, blockSize)\n echartsData = new EchartsData(\n statisticsData,\n 'COW merge operations',\n 'blocks'\n )\n break\n case 'filenames':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated filenames',\n 'bytes'\n )\n break\n case 'extensions':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFileExtensionsStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated extensions',\n 'bytes'\n )\n break\n }\n if (echartsData) {\n return echartsData\n } else {\n throw 'Please double check if this is a proper AB OTA package.'\n }\n}\n\n/**\n * Calculate the number of blocks being operated\n * @param {Array} exts\n * @return {number}\n */\nexport function numBlocks(\n exts: Array | null | undefined\n) {\n if (!exts) {\n return 0\n }\n const accumulator = (total: number, ext: chromeos_update_engine.IExtent) =>\n total + ext.numBlocks\n return exts.reduce(accumulator, 0)\n}\n\n/**\n * Return a string that indicates the blocks being operated\n * in the manner of (start_block, block_length)\n * @param {Array} exts\n * @return {string}\n */\nexport function displayBlocks(exts: Array) {\n const accumulator = (total: string, ext: chromeos_update_engine.Extent) =>\n total + '(' + ext.startBlock + ',' + ext.numBlocks + ')'\n return exts.reduce(accumulator, '')\n}\n\n/**\n * Return a map with pairs of (file extension, data length used by this\n * extension). The total data length will be distributed by the blocks ratio\n * of each extent.\n * @param {Array} filenames\n * @param {Array} exts\n * @param {Number} length\n * @return {Map}\n */\nexport function distributeFilenames(\n filenames: Array,\n exts: Array,\n length: number\n): Map {\n let totalBlocks = numBlocks(exts)\n let distributedLengths = new Map()\n for (let i = 0; i < filenames.length; i++) {\n addNumberToMap(\n distributedLengths,\n filenames[i],\n Math.round((length * exts[i].numBlocks) / totalBlocks)\n )\n }\n return distributedLengths\n}\n\n/**\n * convert a filename into extension, for example:\n * '//system/apex/com.android.adbd.apex' => 'apex'\n * @param {String} filename\n * @return {String}\n */\nexport function name2Extension(filename: string) {\n let elements = filename.split('.')\n if (elements.length > 1) {\n return elements[elements.length - 1]\n } else if (elements[0] === 'unknown') {\n return 'unknown'\n } else if (filename[0] == '<' && filename.endsWith('>')) {\n return filename\n } else {\n return 'no-extension'\n }\n}\n","\nimport { numBlocks, displayBlocks } from '../services/payload_composition'\nimport { DefaultMap } from '../services/payload'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n operation: {\n type: Object,\n required: true\n },\n mapType: {\n type: DefaultMap,\n required: true\n }\n },\n data() {\n return {\n srcTotalBlocks: 0,\n srcBlocks: '',\n dstTotalBlocks: 0,\n dstBlocks: ''\n }\n },\n mounted() {\n if (this.operation.srcExtents) {\n this.srcTotalBlocks = numBlocks(this.operation.srcExtents)\n this.srcBlocks = displayBlocks(this.operation.srcExtents)\n }\n if (this.operation.dstExtents) {\n this.dstTotalBlocks = numBlocks(this.operation.dstExtents)\n this.dstBlocks = displayBlocks(this.operation.dstExtents)\n }\n }\n})\n","import { render } from \"./OperationDetail.vue?vue&type=template&id=44174082&scoped=true&ts=true\"\nimport script from \"./OperationDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./OperationDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-44174082\"]])\n\nexport default __exports__","\nimport { chromeos_update_engine } from '@/services/update_metadata_pb'\nimport { defineComponent } from 'vue'\nimport { OpType, octToHex } from '../services/payload'\nimport OperationDetail from './OperationDetail.vue'\n\nexport default defineComponent({\n components: {\n OperationDetail\n },\n props: {\n partition: {\n type: chromeos_update_engine.PartitionUpdate,\n required: true\n },\n dynamicPartitionList: {\n type: Array,\n required: true\n }\n },\n data() {\n return {\n showOPs: false,\n showInfo: false,\n opType: new OpType()\n }\n },\n methods: {\n toggle(key: string) {\n ;(this as any)[key] = !(this as any)[key]\n },\n octToHex: octToHex\n },\n computed: {\n readableTimestamp() {\n const unixTimestamp = parseInt(this.partition.version)\n if (isNaN(unixTimestamp)) {\n return ''\n }\n // Unix timestamp is in seconds, but js want milliseconds. So *1000\n return new Date(unixTimestamp * 1000).toString()\n },\n isDynamicPartition(): boolean {\n return (\n this.dynamicPartitionList.indexOf(this.partition.partitionName) >= 0\n )\n }\n }\n})\n","import { render } from \"./PartitionDetail.vue?vue&type=template&id=6dba348a&scoped=true&ts=true\"\nimport script from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PartitionDetail.vue?vue&type=style&index=0&id=6dba348a&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6dba348a\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, openBlock as _openBlock, createElementBlock as _createElementBlock, mergeProps as _mergeProps, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0514c264\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h3\", null, \"Basic infos\", -1))\nconst _hoisted_2 = { class: \"align\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" File name \", -1))\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" File size \", -1))\nconst _hoisted_5 = { class: \"align\" }\nconst _hoisted_6 = { class: \"wrap\" }\nconst _hoisted_7 = { key: 2 }\nconst _hoisted_8 = { class: \"align\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Incremental \", -1))\nconst _hoisted_10 = { key: 0 }\nconst _hoisted_11 = { key: 1 }\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Partial \", -1))\nconst _hoisted_13 = { key: 0 }\nconst _hoisted_14 = { key: 1 }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" A/B update \", -1))\nconst _hoisted_16 = { key: 0 }\nconst _hoisted_17 = { key: 1 }\nconst _hoisted_18 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" VAB \", -1))\nconst _hoisted_19 = { key: 0 }\nconst _hoisted_20 = { key: 1 }\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" VABC \", -1))\nconst _hoisted_22 = { key: 0 }\nconst _hoisted_23 = { key: 1 }\nconst _hoisted_24 = { key: 0 }\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Total Dynamic Partition Size \", -1))\nconst _hoisted_26 = { key: 1 }\nconst _hoisted_27 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Total VABC COW Size \", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n (_ctx.zipFile)\n ? (_openBlock(), _createElementBlock(\"div\", _normalizeProps(_mergeProps({ key: 0 }, _ctx.$attrs)), [\n _createElementVNode(\"ul\", _hoisted_2, [\n _createElementVNode(\"li\", null, [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(_ctx.zipFile.getFileName()), 1)\n ]),\n _createElementVNode(\"li\", null, [\n _hoisted_4,\n _createTextVNode(\" \" + _toDisplayString(_ctx.zipFile.getFileSize()) + \" Bytes\", 1)\n ])\n ])\n ], 16))\n : _createCommentVNode(\"\", true),\n (_ctx.payload && _ctx.payload.metadata)\n ? (_openBlock(), _createElementBlock(\"div\", _normalizeProps(_mergeProps({ key: 1 }, _ctx.$attrs)), [\n _createElementVNode(\"ul\", _hoisted_5, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.otaMetadata, (formatter) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: formatter.name\n }, [\n _createElementVNode(\"strong\", null, _toDisplayString(formatter.name.trim() + ' '), 1),\n _createElementVNode(\"p\", _hoisted_6, _toDisplayString(String(_ctx.payload[formatter.key]).trim()), 1)\n ]))\n }), 128))\n ])\n ], 16))\n : _createCommentVNode(\"\", true),\n (_ctx.payload && _ctx.payload.manifest)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createElementVNode(\"ul\", _hoisted_8, [\n _createElementVNode(\"li\", null, [\n _hoisted_9,\n (_ctx.payload.preBuild)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_10, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_11, \" ❌ \"))\n ]),\n _createElementVNode(\"li\", null, [\n _hoisted_12,\n (_ctx.payload.manifest.partialUpdate)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_13, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_14, \" ❌ \"))\n ]),\n _createElementVNode(\"li\", null, [\n _hoisted_15,\n (!_ctx.payload.manifest.nonAB)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_16, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_17, \" ❌ \"))\n ]),\n _createElementVNode(\"li\", null, [\n _hoisted_18,\n (_ctx.payload.manifest.dynamicPartitionMetadata.snapshotEnabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_19, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_20, \" ❌ \"))\n ]),\n _createElementVNode(\"li\", null, [\n _hoisted_21,\n (_ctx.payload.manifest.dynamicPartitionMetadata.vabcEnabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_22, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_23, \" ❌ \"))\n ]),\n (_ctx.totalDynamicPartitionSize)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_24, [\n _hoisted_25,\n _createTextVNode(\" \" + _toDisplayString(_ctx.totalDynamicPartitionSize), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.totalCOWSize)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_26, [\n _hoisted_27,\n _createTextVNode(\" \" + _toDisplayString(_ctx.totalCOWSize), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}","import * as zip from '@zip.js/zip.js/dist/zip.js'\nimport { ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { Payload } from './payload'\n\nexport class ZipFile {\n public reader: ZipReader\n\n constructor(private file: File | URL) {\n this.reader = getZipReader(file)\n }\n getFileName() {\n return getFileName(this.file)\n }\n getFileSize() {\n if (this.file instanceof File) {\n return this.file.size\n } else {\n // TODO(zhangkelvin) Support getting file size from URL\n return 0\n }\n }\n}\n\nexport async function trimZip(\n file: ZipReader,\n p: (entry: zip.Entry) => boolean\n): Promise {\n const reader = file\n const writer = new zip.ZipWriter(new zip.BlobWriter('application/zip'))\n const entries = await reader.getEntries()\n for (const entry of entries.filter(entry => !!entry && p(entry))) {\n const blobWriter = new zip.BlobWriter()\n const data = (await entry.getData!(blobWriter)) as Blob\n console.log(`Adding ${entry.filename}, ${data.size}`)\n writer.add(entry.filename, new zip.BlobReader(blobWriter.getData()), {\n level: 0 // no compression\n })\n }\n return writer\n}\n\nfunction getZipReader(file: File | URL) {\n if (file instanceof File) {\n return new zip.ZipReader(new zip.BlobReader(file))\n } else {\n return new zip.ZipReader(new zip.HttpReader(file.href))\n }\n}\n\nexport function getFileName(file: File | URL) {\n if (file instanceof File) {\n return file.name\n } else {\n return file.pathname\n }\n}\n\nexport async function trimTargetFiles(file: File | URL): Promise {\n const writer = await trimZip(getZipReader(file), entry => {\n return entry.filename.startsWith('META/') || entry.filename.endsWith('.map')\n })\n return await writer.close()\n}\n\nexport async function trimOTAPackage(payload: Payload): Promise {\n const writer = await trimZip(payload.zipreader, entry => {\n return entry.filename != 'payload.bin'\n })\n await writer.add(\n 'payload.bin',\n new zip.BlobReader(payload.buffer!.slice(0, payload.getMetadataLength())),\n // Most toolings assume that payload.bin and other entries are not\n // compressed, so use level 0\n {\n level: 0\n }\n )\n const blob: Blob = await writer.close()\n return blob\n}\n\nexport function downloadFile(\n blob: Blob,\n downloadNode: HTMLAnchorElement,\n filename: string\n) {\n const url = window.URL.createObjectURL(blob)\n downloadNode.href = url\n downloadNode.download = filename\n downloadNode.click()\n window.URL.revokeObjectURL(url)\n}\n\nexport function ensureSuffix(str: string, suffix: string) {\n if (str.endsWith(suffix)) {\n return str\n } else {\n return str + suffix\n }\n}\n","\nimport { Payload, MetadataFormat } from '../services/payload'\nimport { ZipFile } from '@/services/trim_zip'\n\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n zipFile: {\n type: ZipFile,\n required: true\n },\n payload: {\n type: Payload,\n required: true\n }\n },\n data() {\n return {\n MetadataFormat\n }\n },\n computed: {\n otaMetadata(): {\n prefix: string\n key: string\n name: string\n }[] {\n return MetadataFormat.filter(formatter =>\n String((this.payload as any)[formatter.key]).length > 0\n );\n },\n totalCOWSize(): number {\n const cowSizes = this.payload?.manifest?.partitions.map(p => p.estimateCowSize || 0);\n if (!cowSizes) {\n return 0;\n }\n return cowSizes.reduce((a, b) => a + b);\n },\n totalDynamicPartitionSize(): number {\n const groups = this.payload?.manifest?.dynamicPartitionMetadata?.groups\n if (!groups) {\n return 0\n }\n const dynamicPartitionNamess = new Set(\n groups.flatMap(g => g.partitionNames)\n )\n const dynamicPartitions =\n this.payload.manifest?.partitions.filter(p =>\n dynamicPartitionNamess.has(p.partitionName)\n ) || []\n if (dynamicPartitions.length <= 0) {\n return 0\n }\n return dynamicPartitions\n .map(p => p.newPartitionInfo?.size || 0)\n .reduce((acc, cur) => acc + cur)\n }\n }\n})\n","import { render } from \"./BasicInfo.vue?vue&type=template&id=0514c264&scoped=true&ts=true\"\nimport script from \"./BasicInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./BasicInfo.vue?vue&type=script&lang=ts\"\n\nimport \"./BasicInfo.vue?vue&type=style&index=0&id=0514c264&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0514c264\"]])\n\nexport default __exports__","\nimport PartitionDetail from './PartitionDetail.vue'\nimport BasicInfo from './BasicInfo.vue'\nimport { Payload, octToHex } from '../services/payload'\nimport {\n downloadFile,\n ensureSuffix,\n trimOTAPackage,\n ZipFile\n} from '@/services/trim_zip'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n components: {\n PartitionDetail,\n BasicInfo\n },\n props: {\n zipFile: {\n type: ZipFile,\n default: null\n },\n payload: {\n type: Payload,\n default: null\n }\n },\n methods: {\n octToHex: octToHex,\n async exportOTAPackage() {\n const blob = await trimOTAPackage(this.payload as Payload)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(this.zipFile.getFileName(), '.zip')\n )\n }\n },\n computed: {\n dynamicPartitions(): string[] {\n return (\n this.payload.manifest?.dynamicPartitionMetadata?.groups?.flatMap(\n g => g.partitionNames || []\n ) || []\n )\n }\n }\n})\n","import { render } from \"./PayloadDetail.vue?vue&type=template&id=05db67f2&scoped=true&ts=true\"\nimport script from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-05db67f2\"]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createVNode as _createVNode, createElementBlock as _createElementBlock, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-44b569bd\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/_createTextVNode(\"Export Target File Metadata\")\nconst _hoisted_2 = { ref: \"download\" }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\" Analyse Installed Blocks (in target build) \")\nconst _hoisted_5 = /*#__PURE__*/_createTextVNode(\" Analyse Payload Composition \")\nconst _hoisted_6 = /*#__PURE__*/_createTextVNode(\" Analyse COW Merge Operations \")\nconst _hoisted_7 = {\n key: 0,\n class: \"tooltiptext\"\n}\nconst _hoisted_8 = /*#__PURE__*/_createTextVNode(\" Analyse Filenames \")\nconst _hoisted_9 = /*#__PURE__*/_createTextVNode(\" Analyse File Extensions \")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_btn = _resolveComponent(\"v-btn\")!\n const _component_PartialCheckbox = _resolveComponent(\"PartialCheckbox\")!\n const _component_PieChart = _resolveComponent(\"PieChart\")!\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n const _component_BaseFile = _resolveComponent(\"BaseFile\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (_ctx.targetFile)\n ? (_openBlock(), _createBlock(_component_v_btn, {\n key: 0,\n block: \"\",\n class: \"md-6\",\n onClick: _ctx.exportTargetFileMetadata\n }, {\n default: _withCtx(() => [\n _hoisted_1\n ]),\n _: 1\n }, 8, [\"onClick\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"a\", _hoisted_2, null, 512),\n _createVNode(_component_PartialCheckbox, {\n modelValue: _ctx.partitionInclude,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.partitionInclude) = $event)),\n labels: _ctx.updatePartitions\n }, null, 8, [\"modelValue\", \"labels\"]),\n (_ctx.echartsData)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(_component_PieChart, {\n echartsData: _ctx.echartsData,\n onClick: _ctx.piechartClick\n }, null, 8, [\"echartsData\", \"onClick\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_v_divider),\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n block: \"\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.updateChart('blocks')))\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n block: \"\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.updateChart('payload')))\n }, {\n default: _withCtx(() => [\n _hoisted_5\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\",\n class: \"tooltip\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n disabled: \n _ctx.manifest.nonAB || !_ctx.manifest.dynamicPartitionMetadata.vabcEnabled\n ,\n title: \"Only available for VABC update\",\n block: \"\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.updateChart('COWmerge')))\n }, {\n default: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n (_ctx.manifest.nonAB)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_7, \" This function is only supported in A/B OTA \"))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n block: \"\",\n disabled: !_ctx.targetFile,\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.updateChart('filenames')))\n }, {\n default: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n block: \"\",\n disabled: !_ctx.targetFile,\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.updateChart('extensions')))\n }, {\n default: _withCtx(() => [\n _hoisted_9\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n (!_ctx.demo)\n ? (_openBlock(), _createBlock(_component_BaseFile, {\n key: 0,\n label: \"Drag and drop or Select The target Android build\",\n onFileSelect: _ctx.selectBuild\n }, null, 8, [\"onFileSelect\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ], 64))\n}","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-533f2336\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"value\", \"checked\"]\nconst _hoisted_2 = { key: 0 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_btn = _resolveComponent(\"v-btn\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_v_btn, {\n block: \"\",\n type: \"button\",\n class: \"my-5\",\n onClick: _ctx.revertAllSelection\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.selectAllText[_ctx.selectAll]), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _createVNode(_component_v_row, { class: \"mb-5\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.labels, (label) => {\n return (_openBlock(), _createBlock(_component_v_col, {\n key: label,\n cols: \"12\",\n md: \"4\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n value: label,\n checked: _ctx.modelValue.get(label),\n onChange: _cache[0] || (_cache[0] = ($event: any) => (_ctx.updateSelected($event.target.value)))\n }, null, 40, _hoisted_1),\n label\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_2, _toDisplayString(label), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, 1024))\n }), 128))\n ]),\n _: 1\n })\n ], 64))\n}","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n labels: {\n type: Array,\n default: new Array()\n },\n modelValue: {\n type: Map,\n default: new Map()\n }\n },\n data() {\n return {\n selectAll: 1,\n selectAllText: ['Select All', 'Unselect All']\n }\n },\n mounted() {\n // Set the default value to be true once mounted\n for (let key of this.labels) {\n this.modelValue.set(key, true)\n }\n },\n methods: {\n updateSelected(newSelect: string) {\n this.modelValue.set(newSelect, !this.modelValue.get(newSelect))\n this.$emit('update:modelValue', this.modelValue)\n },\n revertAllSelection() {\n this.selectAll = 1 - this.selectAll\n for (let key of this.modelValue.keys()) {\n this.modelValue.set(key, Boolean(this.selectAll))\n }\n }\n }\n})\n","import { render } from \"./PartialCheckbox.vue?vue&type=template&id=533f2336&scoped=true&ts=true\"\nimport script from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\n\nimport \"./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-533f2336\"]])\n\nexport default __exports__","\n\n\n\n\n\n\n","import { render } from \"./PieChart.vue?vue&type=template&id=5d1cb486&scoped=true\"\nimport script from \"./PieChart.vue?vue&type=script&lang=js\"\nexport * from \"./PieChart.vue?vue&type=script&lang=js\"\n\nimport \"./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5d1cb486\"]])\n\nexport default __exports__","\nimport axios from 'axios'\nimport PartialCheckbox from './PartialCheckbox.vue'\nimport PieChart from './PieChart.vue'\nimport BaseFile from './BaseFile.vue'\nimport { analysePartitions } from '../services/payload_composition'\nimport { chromeos_update_engine as update_metadata_pb } from '../services/update_metadata_pb'\nimport { TooltipComponentPositionCallbackParams } from 'echarts'\nimport { EchartsData } from '@/services/echarts_data'\nimport { defineComponent } from 'vue'\nimport {\n downloadFile,\n ensureSuffix,\n getFileName,\n trimTargetFiles\n} from '@/services/trim_zip'\n\ninterface ComponentState {\n partitionInclude: Map\n echartsData: EchartsData | null\n listData: string\n targetFile: File | URL | null\n}\n\nexport default defineComponent({\n components: {\n PartialCheckbox,\n PieChart,\n BaseFile\n },\n props: {\n manifest: {\n type: update_metadata_pb.DeltaArchiveManifest,\n default: () => []\n },\n demo: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n partitionInclude: new Map(),\n echartsData: null,\n listData: '',\n targetFile: null\n } as ComponentState\n },\n computed: {\n updatePartitions(): string[] {\n return this.manifest.partitions.map(\n (partition: update_metadata_pb.IPartitionUpdate) => {\n return partition.partitionName\n }\n )\n }\n },\n async mounted() {\n if (this.demo) {\n try {\n const download = await axios.get(\n './files/cf_x86_target_file_demo.zip',\n { responseType: 'blob' }\n )\n this.targetFile = new File([download.data], 'target_demo.zip')\n } catch (err) {\n console.log('Please put a proper example target file in /public/files/')\n }\n }\n },\n methods: {\n piechartClick(param: TooltipComponentPositionCallbackParams) {\n console.log(param)\n },\n async updateChart(metrics: string) {\n let partitionSelected = this.manifest.partitions.filter(partition =>\n this.partitionInclude.get(partition.partitionName)\n )\n try {\n this.echartsData = await analysePartitions(\n metrics,\n partitionSelected,\n this.manifest.blockSize,\n this.targetFile\n )\n } catch (err) {\n alert(`Cannot be processed for the following issue: ${err}`)\n }\n },\n selectBuild(file: File | URL) {\n //TODO(lishutong) check the version of target file is same to the OTA target\n this.targetFile = file\n },\n async exportTargetFileMetadata() {\n const blob = await trimTargetFiles(this.targetFile!)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(getFileName(this.targetFile!), '.zip')\n )\n }\n }\n})\n","import { render } from \"./PayloadComposition.vue?vue&type=template&id=44b569bd&scoped=true&ts=true\"\nimport script from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadComposition.vue?vue&type=style&index=0&id=44b569bd&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-44b569bd\"]])\n\nexport default __exports__","\nimport BaseFile from '../components/BaseFile.vue'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n BaseFile,\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return ({\n zipFile: null,\n payload: null\n } as unknown) as {\n zipFile: ZipFile\n payload: Payload\n }\n },\n methods: {\n async unpackOTA(file: File | URL) {\n this.zipFile = new ZipFile(file)\n try {\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n alert(`Please check if this is a correct OTA package (.zip). ${err}`)\n console.log(err)\n }\n }\n }\n})\n","import { render } from \"./PackageAnalysis.vue?vue&type=template&id=0c172053&ts=true\"\nimport script from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nexport * from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createVNode as _createVNode } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_PayloadDetail = _resolveComponent(\"PayloadDetail\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n const _component_PayloadComposition = _resolveComponent(\"PayloadComposition\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n\n return (_openBlock(), _createBlock(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n (_ctx.zipFile && _ctx.payload)\n ? (_openBlock(), _createBlock(_component_PayloadDetail, {\n key: 0,\n zipFile: _ctx.zipFile,\n payload: _ctx.payload\n }, null, 8, [\"zipFile\", \"payload\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_component_v_divider, { vertical: \"\" }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n (_ctx.zipFile && _ctx.payload.manifest)\n ? (_openBlock(), _createBlock(_component_PayloadComposition, {\n key: 0,\n manifest: _ctx.payload.manifest,\n demo: true\n }, null, 8, [\"manifest\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n}","\nimport axios from 'axios'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return {\n zipFile: null,\n payload: null\n } as {\n zipFile: ZipFile | null\n payload: Payload | null\n }\n },\n async created() {\n // put cf_x86_demo.zip and cf_x86_target_file_demo into\n // this directory: /public/files\n try {\n const download = await axios.get('./files/cf_x86_demo.zip', {\n responseType: 'blob'\n })\n this.zipFile = new ZipFile(new File([download.data], 'ota_demo.zip'))\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n console.log('Please put a proper example OTA in /public/files/')\n }\n }\n})\n","import { render } from \"./Demo.vue?vue&type=template&id=1e5d071a&ts=true\"\nimport script from \"./Demo.vue?vue&type=script&lang=ts\"\nexport * from \"./Demo.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./About.vue?vue&type=template&id=67ed0bf6\"\nconst script = {}\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n","import { render } from \"./NotFound.vue?vue&type=template&id=50c6f348&scoped=true\"\nconst script = {}\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-50c6f348\"]])\n\nexport default __exports__","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createRouter, createWebHistory } from 'vue-router'\nimport PackageAnalysis from '@/views/PackageAnalysis.vue'\nimport Demo from'@/views/Demo.vue'\nimport About from '@/views/About.vue'\nimport NotFound from '@/views/NotFound.vue'\n\nconst routes = [\n {\n path: '/',\n name: 'Analysis',\n component: PackageAnalysis,\n meta: {\n title: 'Analyse OTA package - from AOSP'\n }\n },\n {\n path: '/demo',\n name: 'Demo',\n component: Demo\n },\n {\n path: '/about',\n name: 'About',\n component: About\n },\n {\n path: '/:catchAll(.*)',\n name: 'Not Found',\n component: NotFound\n }\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes\n})\n\n// This callback runs before every route change, including on page load.\nrouter.beforeEach((to, from, next) => {\n // This goes through the matched routes from last to first, finding the closest route with a title.\n // e.g., if we have `/some/deep/nested/route` and `/some`, `/deep`, and `/nested` have titles,\n // `/nested`'s will be chosen.\n const nearestWithTitle = to.matched.slice().reverse().find(r => r.meta && r.meta.title);\n\n // Find the nearest route element with meta tags.\n const nearestWithMeta = to.matched.slice().reverse().find(r => r.meta && r.meta.metaTags)!;\n\n const previousNearestWithMeta = from.matched.slice().reverse().find(r => r.meta && r.meta.metaTags);\n\n // If a route with a title was found, set the document (page) title to that value.\n if(nearestWithTitle) {\n document.title = nearestWithTitle.meta.title as string;\n } else if(previousNearestWithMeta) {\n document.title = previousNearestWithMeta.meta.title as string;\n }\n\n // Remove any stale meta tags from the document using the key attribute we set below.\n Array.from(document.querySelectorAll('[data-vue-router-controlled]')).map(el => el.parentNode!.removeChild(el));\n\n next();\n});\n\nexport default router\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createStore } from 'vuex'\n\nexport default createStore({\n state: {},\n mutations: {},\n actions: {},\n modules: {}\n})\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createApp } from 'vue'\nimport vuetify from './plugins/vuetify'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nconst app = createApp(App)\napp.use(router)\napp.use(store)\napp.use(vuetify)\n\napp.mount('#app')","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkota_analyzer\"] = self[\"webpackChunkota_analyzer\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(6758); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["components","directives","theme","defaultTheme","rounded","color","links","link","key","to","class","fluid","data","__exports__","render","_ctx","_cache","$props","$setup","$data","$options","_component_v_alert","_component_v_row","_component_BaseFile","_component_PayloadDetail","_component_v_col","_component_v_divider","_component_PayloadComposition","default","style","_","cols","md","label","onFileSelect","unpackOTA","zipFile","payload","vertical","manifest","_hoisted_2","_hoisted_3","_hoisted_4","onDragover","args","dragover","onDragleave","dragleave","onDrop","drop","fileName","ref","type","accept","onChange","handleFileChange","parsedURL","url","placeholder","$event","onKeyup","urlKeyup","props","String","emits","computed","URL","this","methods","event","currentTarget","target","files","length","selectedFile","$emit","name","preventDefault","classList","contains","add","remove","dataTransfer","console","log","error","value","n","_hoisted_5","_hoisted_6","_hoisted_7","_component_v_btn","_component_BasicInfo","_component_PartitionDetail","_component_v_card","onClick","exportOTAPackage","partitions","partition","partitionName","elevation","hover","shaped","dynamicPartitionList","dynamicPartitions","metadata_signature","nonAB","octToHex","signatures","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_component_OperationDetail","oldPartitionInfo","isDynamicPartition","estimateCowSize","postinstallPath","toggle","active","showInfo","inactive","size","hash","newPartitionInfo","version","readableTimestamp","showOPs","operations","operation","dataSha256Hash","mapType","opType","$Reader","$protobuf","$Writer","$util","$root","chromeos_update_engine","Extent","properties","keys","Object","i","prototype","startBlock","Long","fromBits","numBlocks","create","encode","message","writer","hasOwnProperty","call","uint32","uint64","encodeDelimited","ldelim","decode","reader","end","undefined","len","pos","tag","skipType","decodeDelimited","verify","isInteger","low","high","fromObject","object","fromValue","unsigned","parseInt","LongBits","toNumber","toObject","options","defaults","long","longs","toString","Number","toJSON","constructor","Signatures","emptyArray","Signature","fork","push","Array","isArray","TypeError","arrays","j","newBuffer","unpaddedSignatureSize","bytes","fixed32","isString","base64","slice","PartitionInfo","ImageInfo","board","channel","buildChannel","buildVersion","string","InstallOperation","srcExtents","dstExtents","dataOffset","dataLength","srcLength","dstLength","srcSha256Hash","int32","ProtocolError","instance","enums","Type","valuesById","values","CowMergeOperation","srcExtent","dstExtent","srcOffset","PartitionUpdate","newPartitionSignature","mergeOperations","runPostinstall","filesystemType","postinstallOptional","hashTreeDataExtent","hashTreeExtent","hashTreeAlgorithm","hashTreeSalt","fecDataExtent","fecExtent","fecRoots","bool","Boolean","DynamicPartitionGroup","partitionNames","DynamicPartitionMetadata","groups","snapshotEnabled","vabcEnabled","vabcCompressionParam","cowVersion","ApexInfo","packageName","isCompressed","decompressedSize","int64","ApexMetadata","apexInfo","DeltaArchiveManifest","installOperations","kernelInstallOperations","blockSize","signaturesOffset","signaturesSize","oldKernelInfo","newKernelInfo","oldRootfsInfo","newRootfsInfo","oldImageInfo","newImageInfo","minorVersion","maxTimestamp","dynamicPartitionMetadata","partialUpdate","PayloadNonAB","packedFile","super","Blocksize","regexName","entries","getEntries","entry","filename","match","newPartition","rawText","getData","parseTransferList","lines","split","totalBlocks","entryStashed","maxStashed","Uint8Array","newDataSize","sizeNewData","line","op","elements","reduce","parseRange","RegExp","uncompressedSize","extents","rangeset","regexRange","extent","_MAGIC","_VERSION_SIZE","_MANIFEST_LEN_SIZE","_METADATA_SIGNATURE_LEN_SIZE","_PAYLOAD_HEADER_SIZE","_BRILLO_MAJOR_PAYLOAD_VERSION","MetadataFormat","prefix","StopIteration","Error","AbPayloadHeader","magic","manifest_len","metadata_signature_len","async","readIntAt","buffer","position","view","DataView","arrayBuffer","getBigUint64","offset","a","BigInt","getUint32","b","bigNumber","getUint16","OTAPayloadBlobWriter","blob","cursor","readInt","ret","decoder","TextDecoder","magicBytes","header_version","header","contentType","Blob","prefixLength","array","writeUint8Array","readHeader","Payload","file","File","zipreader","href","getMetadataLength","e","readManifest","metadata","init","alert","manifestBlob","signatureBlob","parseMetadata","formatter","regex","trimEntry","unzip","DefaultMap","Map","getWithDefault","has","get","OpType","types","set","MergeOpType","bufferArray","space","maxLine","hex_table","hex","toUpperCase","srcTotalBlocks","srcBlocks","dstTotalBlocks","dstBlocks","EchartsData","statisticData","title","unit","maximumEntries","trimmedData","trimMap","listData","table","getEchartsOption","option","text","left","tooltip","trigger","legend","orient","top","from","series","radius","center","map","pair","emphasis","itemStyle","shadowBlur","shadowOffsetX","shadowColor","new_map","curr","currKey","restTotal","MapParser","targetFile","build","mapFiles","maps","regexPath","forEach","totalLength","regexNumber","mapText","fileEntries","right","InsertMap","query","names","ext","queryMap","addNumberToMap","operatedBlockStatistics","operatedBlocks","operationType","mergeOperationStatistics","Math","ceil","operatedPayloadStatistics","operatedFileExtensionsStatistics","filenameStats","operatedFilenamesStatistics","fileExtenstionStats","name2Extension","operatedFilenames","buildMap","operatedFileNames","extentDataLength","distributeFilenames","analysePartitions","metrics","statisticsData","echartsData","exts","accumulator","total","displayBlocks","filenames","distributedLengths","round","endsWith","required","mounted","OperationDetail","unixTimestamp","isNaN","Date","indexOf","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","$attrs","getFileName","getFileSize","otaMetadata","trim","preBuild","totalDynamicPartitionSize","totalCOWSize","ZipFile","getZipReader","trimZip","p","zip","filter","blobWriter","level","pathname","trimTargetFiles","startsWith","close","trimOTAPackage","downloadFile","downloadNode","window","createObjectURL","download","click","revokeObjectURL","ensureSuffix","str","suffix","cowSizes","dynamicPartitionNamess","Set","flatMap","g","acc","cur","PartitionDetail","BasicInfo","$refs","_component_PartialCheckbox","_component_PieChart","block","exportTargetFileMetadata","modelValue","partitionInclude","labels","updatePartitions","piechartClick","updateChart","disabled","demo","selectBuild","revertAllSelection","selectAllText","selectAll","checked","updateSelected","newSelect","arguments","VChart","provide","PartialCheckbox","PieChart","BaseFile","responseType","err","param","partitionSelected","PayloadDetail","PayloadComposition","script","routes","path","component","PackageAnalysis","meta","Demo","About","NotFound","router","history","beforeEach","next","nearestWithTitle","matched","reverse","find","r","previousNearestWithMeta","metaTags","document","querySelectorAll","el","parentNode","removeChild","state","mutations","actions","modules","app","App","use","store","vuetify","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","every","splice","getter","__esModule","d","definition","o","defineProperty","enumerable","globalThis","Function","obj","prop","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/analyseOTA/js/app.9f425357.js b/analyseOTA/js/app.9f425357.js new file mode 100644 index 0000000..2a03124 --- /dev/null +++ b/analyseOTA/js/app.9f425357.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var r,i,s=t[0],l=t[1],c=t[2],p=0,f=[];p>>3){case 1:r.startBlock=e.uint64();break;case 2:r.numBlocks=e.uint64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(ne["a"])(e)||null===e?"object expected":null==e.startBlock||!e.hasOwnProperty("startBlock")||ie.isInteger(e.startBlock)||e.startBlock&&ie.isInteger(e.startBlock.low)&&ie.isInteger(e.startBlock.high)?null==e.numBlocks||!e.hasOwnProperty("numBlocks")||ie.isInteger(e.numBlocks)||e.numBlocks&&ie.isInteger(e.numBlocks.low)&&ie.isInteger(e.numBlocks.high)?null:"numBlocks: integer|Long expected":"startBlock: integer|Long expected"},e.fromObject=function(e){if(e instanceof se.chromeos_update_engine.Extent)return e;var t=new se.chromeos_update_engine.Extent;return null!=e.startBlock&&(ie.Long?(t.startBlock=ie.Long.fromValue(e.startBlock)).unsigned=!0:"string"===typeof e.startBlock?t.startBlock=parseInt(e.startBlock,10):"number"===typeof e.startBlock?t.startBlock=e.startBlock:"object"===Object(ne["a"])(e.startBlock)&&(t.startBlock=new ie.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0))),null!=e.numBlocks&&(ie.Long?(t.numBlocks=ie.Long.fromValue(e.numBlocks)).unsigned=!0:"string"===typeof e.numBlocks?t.numBlocks=parseInt(e.numBlocks,10):"number"===typeof e.numBlocks?t.numBlocks=e.numBlocks:"object"===Object(ne["a"])(e.numBlocks)&&(t.numBlocks=new ie.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(ie.Long){var r=new ie.Long(0,0,!0);n.startBlock=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.startBlock=t.longs===String?"0":0;if(ie.Long){var a=new ie.Long(0,0,!0);n.numBlocks=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.numBlocks=t.longs===String?"0":0}return null!=e.startBlock&&e.hasOwnProperty("startBlock")&&("number"===typeof e.startBlock?n.startBlock=t.longs===String?String(e.startBlock):e.startBlock:n.startBlock=t.longs===String?ie.Long.prototype.toString.call(e.startBlock):t.longs===Number?new ie.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0):e.startBlock),null!=e.numBlocks&&e.hasOwnProperty("numBlocks")&&("number"===typeof e.numBlocks?n.numBlocks=t.longs===String?String(e.numBlocks):e.numBlocks:n.numBlocks=t.longs===String?ie.Long.prototype.toString.call(e.numBlocks):t.longs===Number?new ie.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0):e.numBlocks),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,re["util"].toJSONOptions)},e}(),e.Signatures=function(){function e(e){if(this.signatures=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.signatures&&r.signatures.length||(r.signatures=[]),r.signatures.push(se.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ne["a"])(e)||null===e)return"object expected";if(null!=e.signatures&&e.hasOwnProperty("signatures")){if(!Array.isArray(e.signatures))return"signatures: array expected";for(var t=0;t>>3){case 1:r.version=e.uint32();break;case 2:r.data=e.bytes();break;case 3:r.unpaddedSignatureSize=e.fixed32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(ne["a"])(e)||null===e?"object expected":null!=e.version&&e.hasOwnProperty("version")&&!ie.isInteger(e.version)?"version: integer expected":null!=e.data&&e.hasOwnProperty("data")&&!(e.data&&"number"===typeof e.data.length||ie.isString(e.data))?"data: buffer expected":null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&!ie.isInteger(e.unpaddedSignatureSize)?"unpaddedSignatureSize: integer expected":null},e.fromObject=function(e){if(e instanceof se.chromeos_update_engine.Signatures.Signature)return e;var t=new se.chromeos_update_engine.Signatures.Signature;return null!=e.version&&(t.version=e.version>>>0),null!=e.data&&("string"===typeof e.data?ie.base64.decode(e.data,t.data=ie.newBuffer(ie.base64.length(e.data)),0):e.data.length&&(t.data=e.data)),null!=e.unpaddedSignatureSize&&(t.unpaddedSignatureSize=e.unpaddedSignatureSize>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.version=0,t.bytes===String?n.data="":(n.data=[],t.bytes!==Array&&(n.data=ie.newBuffer(n.data))),n.unpaddedSignatureSize=0),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.data&&e.hasOwnProperty("data")&&(n.data=t.bytes===String?ie.base64.encode(e.data,0,e.data.length):t.bytes===Array?Array.prototype.slice.call(e.data):e.data),null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&(n.unpaddedSignatureSize=e.unpaddedSignatureSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,re["util"].toJSONOptions)},e}(),e}(),e.PartitionInfo=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.size=e.uint64();break;case 2:r.hash=e.bytes();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(ne["a"])(e)||null===e?"object expected":null==e.size||!e.hasOwnProperty("size")||ie.isInteger(e.size)||e.size&&ie.isInteger(e.size.low)&&ie.isInteger(e.size.high)?null!=e.hash&&e.hasOwnProperty("hash")&&!(e.hash&&"number"===typeof e.hash.length||ie.isString(e.hash))?"hash: buffer expected":null:"size: integer|Long expected"},e.fromObject=function(e){if(e instanceof se.chromeos_update_engine.PartitionInfo)return e;var t=new se.chromeos_update_engine.PartitionInfo;return null!=e.size&&(ie.Long?(t.size=ie.Long.fromValue(e.size)).unsigned=!0:"string"===typeof e.size?t.size=parseInt(e.size,10):"number"===typeof e.size?t.size=e.size:"object"===Object(ne["a"])(e.size)&&(t.size=new ie.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0))),null!=e.hash&&("string"===typeof e.hash?ie.base64.decode(e.hash,t.hash=ie.newBuffer(ie.base64.length(e.hash)),0):e.hash.length&&(t.hash=e.hash)),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(ie.Long){var r=new ie.Long(0,0,!0);n.size=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.size=t.longs===String?"0":0;t.bytes===String?n.hash="":(n.hash=[],t.bytes!==Array&&(n.hash=ie.newBuffer(n.hash)))}return null!=e.size&&e.hasOwnProperty("size")&&("number"===typeof e.size?n.size=t.longs===String?String(e.size):e.size:n.size=t.longs===String?ie.Long.prototype.toString.call(e.size):t.longs===Number?new ie.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0):e.size),null!=e.hash&&e.hasOwnProperty("hash")&&(n.hash=t.bytes===String?ie.base64.encode(e.hash,0,e.hash.length):t.bytes===Array?Array.prototype.slice.call(e.hash):e.hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,re["util"].toJSONOptions)},e}(),e.ImageInfo=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.board=e.string();break;case 2:r.key=e.string();break;case 3:r.channel=e.string();break;case 4:r.version=e.string();break;case 5:r.buildChannel=e.string();break;case 6:r.buildVersion=e.string();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(ne["a"])(e)||null===e?"object expected":null!=e.board&&e.hasOwnProperty("board")&&!ie.isString(e.board)?"board: string expected":null!=e.key&&e.hasOwnProperty("key")&&!ie.isString(e.key)?"key: string expected":null!=e.channel&&e.hasOwnProperty("channel")&&!ie.isString(e.channel)?"channel: string expected":null!=e.version&&e.hasOwnProperty("version")&&!ie.isString(e.version)?"version: string expected":null!=e.buildChannel&&e.hasOwnProperty("buildChannel")&&!ie.isString(e.buildChannel)?"buildChannel: string expected":null!=e.buildVersion&&e.hasOwnProperty("buildVersion")&&!ie.isString(e.buildVersion)?"buildVersion: string expected":null},e.fromObject=function(e){if(e instanceof se.chromeos_update_engine.ImageInfo)return e;var t=new se.chromeos_update_engine.ImageInfo;return null!=e.board&&(t.board=String(e.board)),null!=e.key&&(t.key=String(e.key)),null!=e.channel&&(t.channel=String(e.channel)),null!=e.version&&(t.version=String(e.version)),null!=e.buildChannel&&(t.buildChannel=String(e.buildChannel)),null!=e.buildVersion&&(t.buildVersion=String(e.buildVersion)),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.board="",n.key="",n.channel="",n.version="",n.buildChannel="",n.buildVersion=""),null!=e.board&&e.hasOwnProperty("board")&&(n.board=e.board),null!=e.key&&e.hasOwnProperty("key")&&(n.key=e.key),null!=e.channel&&e.hasOwnProperty("channel")&&(n.channel=e.channel),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.buildChannel&&e.hasOwnProperty("buildChannel")&&(n.buildChannel=e.buildChannel),null!=e.buildVersion&&e.hasOwnProperty("buildVersion")&&(n.buildVersion=e.buildVersion),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,re["util"].toJSONOptions)},e}(),e.InstallOperation=function(){function e(e){if(this.srcExtents=[],this.dstExtents=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.dataOffset=e.uint64();break;case 3:r.dataLength=e.uint64();break;case 4:r.srcExtents&&r.srcExtents.length||(r.srcExtents=[]),r.srcExtents.push(se.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 5:r.srcLength=e.uint64();break;case 6:r.dstExtents&&r.dstExtents.length||(r.dstExtents=[]),r.dstExtents.push(se.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 7:r.dstLength=e.uint64();break;case 8:r.dataSha256Hash=e.bytes();break;case 9:r.srcSha256Hash=e.bytes();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("type"))throw ie.ProtocolError("missing required 'type'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ne["a"])(e)||null===e)return"object expected";switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 8:case 6:case 7:case 10:case 9:case 11:case 12:case 13:break}if(null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&!ie.isInteger(e.dataOffset)&&!(e.dataOffset&&ie.isInteger(e.dataOffset.low)&&ie.isInteger(e.dataOffset.high)))return"dataOffset: integer|Long expected";if(null!=e.dataLength&&e.hasOwnProperty("dataLength")&&!ie.isInteger(e.dataLength)&&!(e.dataLength&&ie.isInteger(e.dataLength.low)&&ie.isInteger(e.dataLength.high)))return"dataLength: integer|Long expected";if(null!=e.srcExtents&&e.hasOwnProperty("srcExtents")){if(!Array.isArray(e.srcExtents))return"srcExtents: array expected";for(var t=0;t>>0,e.dataOffset.high>>>0).toNumber(!0))),null!=e.dataLength&&(ie.Long?(t.dataLength=ie.Long.fromValue(e.dataLength)).unsigned=!0:"string"===typeof e.dataLength?t.dataLength=parseInt(e.dataLength,10):"number"===typeof e.dataLength?t.dataLength=e.dataLength:"object"===Object(ne["a"])(e.dataLength)&&(t.dataLength=new ie.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0))),e.srcExtents){if(!Array.isArray(e.srcExtents))throw TypeError(".chromeos_update_engine.InstallOperation.srcExtents: array expected");t.srcExtents=[];for(var n=0;n>>0,e.srcLength.high>>>0).toNumber(!0))),e.dstExtents){if(!Array.isArray(e.dstExtents))throw TypeError(".chromeos_update_engine.InstallOperation.dstExtents: array expected");t.dstExtents=[];for(var r=0;r>>0,e.dstLength.high>>>0).toNumber(!0))),null!=e.dataSha256Hash&&("string"===typeof e.dataSha256Hash?ie.base64.decode(e.dataSha256Hash,t.dataSha256Hash=ie.newBuffer(ie.base64.length(e.dataSha256Hash)),0):e.dataSha256Hash.length&&(t.dataSha256Hash=e.dataSha256Hash)),null!=e.srcSha256Hash&&("string"===typeof e.srcSha256Hash?ie.base64.decode(e.srcSha256Hash,t.srcSha256Hash=ie.newBuffer(ie.base64.length(e.srcSha256Hash)),0):e.srcSha256Hash.length&&(t.srcSha256Hash=e.srcSha256Hash)),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.srcExtents=[],n.dstExtents=[]),t.defaults){if(n.type=t.enums===String?"REPLACE":0,ie.Long){var r=new ie.Long(0,0,!0);n.dataOffset=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.dataOffset=t.longs===String?"0":0;if(ie.Long){var a=new ie.Long(0,0,!0);n.dataLength=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.dataLength=t.longs===String?"0":0;if(ie.Long){var o=new ie.Long(0,0,!0);n.srcLength=t.longs===String?o.toString():t.longs===Number?o.toNumber():o}else n.srcLength=t.longs===String?"0":0;if(ie.Long){var i=new ie.Long(0,0,!0);n.dstLength=t.longs===String?i.toString():t.longs===Number?i.toNumber():i}else n.dstLength=t.longs===String?"0":0;t.bytes===String?n.dataSha256Hash="":(n.dataSha256Hash=[],t.bytes!==Array&&(n.dataSha256Hash=ie.newBuffer(n.dataSha256Hash))),t.bytes===String?n.srcSha256Hash="":(n.srcSha256Hash=[],t.bytes!==Array&&(n.srcSha256Hash=ie.newBuffer(n.srcSha256Hash)))}if(null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?se.chromeos_update_engine.InstallOperation.Type[e.type]:e.type),null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&("number"===typeof e.dataOffset?n.dataOffset=t.longs===String?String(e.dataOffset):e.dataOffset:n.dataOffset=t.longs===String?ie.Long.prototype.toString.call(e.dataOffset):t.longs===Number?new ie.LongBits(e.dataOffset.low>>>0,e.dataOffset.high>>>0).toNumber(!0):e.dataOffset),null!=e.dataLength&&e.hasOwnProperty("dataLength")&&("number"===typeof e.dataLength?n.dataLength=t.longs===String?String(e.dataLength):e.dataLength:n.dataLength=t.longs===String?ie.Long.prototype.toString.call(e.dataLength):t.longs===Number?new ie.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0):e.dataLength),e.srcExtents&&e.srcExtents.length){n.srcExtents=[];for(var s=0;s>>0,e.srcLength.high>>>0).toNumber(!0):e.srcLength),e.dstExtents&&e.dstExtents.length){n.dstExtents=[];for(var l=0;l>>0,e.dstLength.high>>>0).toNumber(!0):e.dstLength),null!=e.dataSha256Hash&&e.hasOwnProperty("dataSha256Hash")&&(n.dataSha256Hash=t.bytes===String?ie.base64.encode(e.dataSha256Hash,0,e.dataSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.dataSha256Hash):e.dataSha256Hash),null!=e.srcSha256Hash&&e.hasOwnProperty("srcSha256Hash")&&(n.srcSha256Hash=t.bytes===String?ie.base64.encode(e.srcSha256Hash,0,e.srcSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.srcSha256Hash):e.srcSha256Hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,re["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="REPLACE"]=0,t[e[1]="REPLACE_BZ"]=1,t[e[2]="MOVE"]=2,t[e[3]="BSDIFF"]=3,t[e[4]="SOURCE_COPY"]=4,t[e[5]="SOURCE_BSDIFF"]=5,t[e[8]="REPLACE_XZ"]=8,t[e[6]="ZERO"]=6,t[e[7]="DISCARD"]=7,t[e[10]="BROTLI_BSDIFF"]=10,t[e[9]="PUFFDIFF"]=9,t[e[11]="ZUCCHINI"]=11,t[e[12]="LZ4DIFF_BSDIFF"]=12,t[e[13]="LZ4DIFF_PUFFDIFF"]=13,t}(),e}(),e.CowMergeOperation=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.srcExtent=se.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 3:r.dstExtent=se.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 4:r.srcOffset=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ne["a"])(e)||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:break}if(null!=e.srcExtent&&e.hasOwnProperty("srcExtent")){var t=se.chromeos_update_engine.Extent.verify(e.srcExtent);if(t)return"srcExtent."+t}if(null!=e.dstExtent&&e.hasOwnProperty("dstExtent")){var n=se.chromeos_update_engine.Extent.verify(e.dstExtent);if(n)return"dstExtent."+n}return null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&!ie.isInteger(e.srcOffset)?"srcOffset: integer expected":null},e.fromObject=function(e){if(e instanceof se.chromeos_update_engine.CowMergeOperation)return e;var t=new se.chromeos_update_engine.CowMergeOperation;switch(e.type){case"COW_COPY":case 0:t.type=0;break;case"COW_XOR":case 1:t.type=1;break;case"COW_REPLACE":case 2:t.type=2;break}if(null!=e.srcExtent){if("object"!==Object(ne["a"])(e.srcExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.srcExtent: object expected");t.srcExtent=se.chromeos_update_engine.Extent.fromObject(e.srcExtent)}if(null!=e.dstExtent){if("object"!==Object(ne["a"])(e.dstExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.dstExtent: object expected");t.dstExtent=se.chromeos_update_engine.Extent.fromObject(e.dstExtent)}return null!=e.srcOffset&&(t.srcOffset=e.srcOffset>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.type=t.enums===String?"COW_COPY":0,n.srcExtent=null,n.dstExtent=null,n.srcOffset=0),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?se.chromeos_update_engine.CowMergeOperation.Type[e.type]:e.type),null!=e.srcExtent&&e.hasOwnProperty("srcExtent")&&(n.srcExtent=se.chromeos_update_engine.Extent.toObject(e.srcExtent,t)),null!=e.dstExtent&&e.hasOwnProperty("dstExtent")&&(n.dstExtent=se.chromeos_update_engine.Extent.toObject(e.dstExtent,t)),null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&(n.srcOffset=e.srcOffset),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,re["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="COW_COPY"]=0,t[e[1]="COW_XOR"]=1,t[e[2]="COW_REPLACE"]=2,t}(),e}(),e.PartitionUpdate=function(){function e(e){if(this.newPartitionSignature=[],this.operations=[],this.mergeOperations=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.partitionName=e.string();break;case 2:r.runPostinstall=e.bool();break;case 3:r.postinstallPath=e.string();break;case 4:r.filesystemType=e.string();break;case 5:r.newPartitionSignature&&r.newPartitionSignature.length||(r.newPartitionSignature=[]),r.newPartitionSignature.push(se.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;case 6:r.oldPartitionInfo=se.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:r.newPartitionInfo=se.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:r.operations&&r.operations.length||(r.operations=[]),r.operations.push(se.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 9:r.postinstallOptional=e.bool();break;case 10:r.hashTreeDataExtent=se.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 11:r.hashTreeExtent=se.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 12:r.hashTreeAlgorithm=e.string();break;case 13:r.hashTreeSalt=e.bytes();break;case 14:r.fecDataExtent=se.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 15:r.fecExtent=se.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 16:r.fecRoots=e.uint32();break;case 17:r.version=e.string();break;case 18:r.mergeOperations&&r.mergeOperations.length||(r.mergeOperations=[]),r.mergeOperations.push(se.chromeos_update_engine.CowMergeOperation.decode(e,e.uint32()));break;case 19:r.estimateCowSize=e.uint64();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("partitionName"))throw ie.ProtocolError("missing required 'partitionName'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ne["a"])(e)||null===e)return"object expected";if(!ie.isString(e.partitionName))return"partitionName: string expected";if(null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&"boolean"!==typeof e.runPostinstall)return"runPostinstall: boolean expected";if(null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&!ie.isString(e.postinstallPath))return"postinstallPath: string expected";if(null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&!ie.isString(e.filesystemType))return"filesystemType: string expected";if(null!=e.newPartitionSignature&&e.hasOwnProperty("newPartitionSignature")){if(!Array.isArray(e.newPartitionSignature))return"newPartitionSignature: array expected";for(var t=0;t>>0),null!=e.version&&(t.version=String(e.version)),e.mergeOperations){if(!Array.isArray(e.mergeOperations))throw TypeError(".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected");t.mergeOperations=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.newPartitionSignature=[],n.operations=[],n.mergeOperations=[]),t.defaults)if(n.partitionName="",n.runPostinstall=!1,n.postinstallPath="",n.filesystemType="",n.oldPartitionInfo=null,n.newPartitionInfo=null,n.postinstallOptional=!1,n.hashTreeDataExtent=null,n.hashTreeExtent=null,n.hashTreeAlgorithm="",t.bytes===String?n.hashTreeSalt="":(n.hashTreeSalt=[],t.bytes!==Array&&(n.hashTreeSalt=ie.newBuffer(n.hashTreeSalt))),n.fecDataExtent=null,n.fecExtent=null,n.fecRoots=2,n.version="",ie.Long){var r=new ie.Long(0,0,!0);n.estimateCowSize=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.estimateCowSize=t.longs===String?"0":0;if(null!=e.partitionName&&e.hasOwnProperty("partitionName")&&(n.partitionName=e.partitionName),null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&(n.runPostinstall=e.runPostinstall),null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&(n.postinstallPath=e.postinstallPath),null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&(n.filesystemType=e.filesystemType),e.newPartitionSignature&&e.newPartitionSignature.length){n.newPartitionSignature=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0):e.estimateCowSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,re["util"].toJSONOptions)},e}(),e.DynamicPartitionGroup=function(){function e(e){if(this.partitionNames=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.name=e.string();break;case 2:r.size=e.uint64();break;case 3:r.partitionNames&&r.partitionNames.length||(r.partitionNames=[]),r.partitionNames.push(e.string());break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("name"))throw ie.ProtocolError("missing required 'name'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ne["a"])(e)||null===e)return"object expected";if(!ie.isString(e.name))return"name: string expected";if(null!=e.size&&e.hasOwnProperty("size")&&!ie.isInteger(e.size)&&!(e.size&&ie.isInteger(e.size.low)&&ie.isInteger(e.size.high)))return"size: integer|Long expected";if(null!=e.partitionNames&&e.hasOwnProperty("partitionNames")){if(!Array.isArray(e.partitionNames))return"partitionNames: array expected";for(var t=0;t>>0,e.size.high>>>0).toNumber(!0))),e.partitionNames){if(!Array.isArray(e.partitionNames))throw TypeError(".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected");t.partitionNames=[];for(var n=0;n>>0,e.size.high>>>0).toNumber(!0):e.size),e.partitionNames&&e.partitionNames.length){n.partitionNames=[];for(var a=0;a>>3){case 1:r.groups&&r.groups.length||(r.groups=[]),r.groups.push(se.chromeos_update_engine.DynamicPartitionGroup.decode(e,e.uint32()));break;case 2:r.snapshotEnabled=e.bool();break;case 3:r.vabcEnabled=e.bool();break;case 4:r.vabcCompressionParam=e.string();break;case 5:r.cowVersion=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ne["a"])(e)||null===e)return"object expected";if(null!=e.groups&&e.hasOwnProperty("groups")){if(!Array.isArray(e.groups))return"groups: array expected";for(var t=0;t>>0),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.groups=[]),t.defaults&&(n.snapshotEnabled=!1,n.vabcEnabled=!1,n.vabcCompressionParam="",n.cowVersion=0),e.groups&&e.groups.length){n.groups=[];for(var r=0;r>>3){case 1:r.packageName=e.string();break;case 2:r.version=e.int64();break;case 3:r.isCompressed=e.bool();break;case 4:r.decompressedSize=e.int64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(ne["a"])(e)||null===e?"object expected":null!=e.packageName&&e.hasOwnProperty("packageName")&&!ie.isString(e.packageName)?"packageName: string expected":null==e.version||!e.hasOwnProperty("version")||ie.isInteger(e.version)||e.version&&ie.isInteger(e.version.low)&&ie.isInteger(e.version.high)?null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&"boolean"!==typeof e.isCompressed?"isCompressed: boolean expected":null==e.decompressedSize||!e.hasOwnProperty("decompressedSize")||ie.isInteger(e.decompressedSize)||e.decompressedSize&&ie.isInteger(e.decompressedSize.low)&&ie.isInteger(e.decompressedSize.high)?null:"decompressedSize: integer|Long expected":"version: integer|Long expected"},e.fromObject=function(e){if(e instanceof se.chromeos_update_engine.ApexInfo)return e;var t=new se.chromeos_update_engine.ApexInfo;return null!=e.packageName&&(t.packageName=String(e.packageName)),null!=e.version&&(ie.Long?(t.version=ie.Long.fromValue(e.version)).unsigned=!1:"string"===typeof e.version?t.version=parseInt(e.version,10):"number"===typeof e.version?t.version=e.version:"object"===Object(ne["a"])(e.version)&&(t.version=new ie.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber())),null!=e.isCompressed&&(t.isCompressed=Boolean(e.isCompressed)),null!=e.decompressedSize&&(ie.Long?(t.decompressedSize=ie.Long.fromValue(e.decompressedSize)).unsigned=!1:"string"===typeof e.decompressedSize?t.decompressedSize=parseInt(e.decompressedSize,10):"number"===typeof e.decompressedSize?t.decompressedSize=e.decompressedSize:"object"===Object(ne["a"])(e.decompressedSize)&&(t.decompressedSize=new ie.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber())),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(n.packageName="",ie.Long){var r=new ie.Long(0,0,!1);n.version=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.version=t.longs===String?"0":0;if(n.isCompressed=!1,ie.Long){var a=new ie.Long(0,0,!1);n.decompressedSize=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.decompressedSize=t.longs===String?"0":0}return null!=e.packageName&&e.hasOwnProperty("packageName")&&(n.packageName=e.packageName),null!=e.version&&e.hasOwnProperty("version")&&("number"===typeof e.version?n.version=t.longs===String?String(e.version):e.version:n.version=t.longs===String?ie.Long.prototype.toString.call(e.version):t.longs===Number?new ie.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber():e.version),null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&(n.isCompressed=e.isCompressed),null!=e.decompressedSize&&e.hasOwnProperty("decompressedSize")&&("number"===typeof e.decompressedSize?n.decompressedSize=t.longs===String?String(e.decompressedSize):e.decompressedSize:n.decompressedSize=t.longs===String?ie.Long.prototype.toString.call(e.decompressedSize):t.longs===Number?new ie.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber():e.decompressedSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,re["util"].toJSONOptions)},e}(),e.ApexMetadata=function(){function e(e){if(this.apexInfo=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(se.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ne["a"])(e)||null===e)return"object expected";if(null!=e.apexInfo&&e.hasOwnProperty("apexInfo")){if(!Array.isArray(e.apexInfo))return"apexInfo: array expected";for(var t=0;t>>3){case 1:r.installOperations&&r.installOperations.length||(r.installOperations=[]),r.installOperations.push(se.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 2:r.kernelInstallOperations&&r.kernelInstallOperations.length||(r.kernelInstallOperations=[]),r.kernelInstallOperations.push(se.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 3:r.blockSize=e.uint32();break;case 4:r.signaturesOffset=e.uint64();break;case 5:r.signaturesSize=e.uint64();break;case 6:r.oldKernelInfo=se.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:r.newKernelInfo=se.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:r.oldRootfsInfo=se.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 9:r.newRootfsInfo=se.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 10:r.oldImageInfo=se.chromeos_update_engine.ImageInfo.decode(e,e.uint32());break;case 11:r.newImageInfo=se.chromeos_update_engine.ImageInfo.decode(e,e.uint32());break;case 12:r.minorVersion=e.uint32();break;case 13:r.partitions&&r.partitions.length||(r.partitions=[]),r.partitions.push(se.chromeos_update_engine.PartitionUpdate.decode(e,e.uint32()));break;case 14:r.maxTimestamp=e.int64();break;case 15:r.dynamicPartitionMetadata=se.chromeos_update_engine.DynamicPartitionMetadata.decode(e,e.uint32());break;case 16:r.partialUpdate=e.bool();break;case 17:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(se.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ne["a"])(e)||null===e)return"object expected";if(null!=e.installOperations&&e.hasOwnProperty("installOperations")){if(!Array.isArray(e.installOperations))return"installOperations: array expected";for(var t=0;t>>0),null!=e.signaturesOffset&&(ie.Long?(t.signaturesOffset=ie.Long.fromValue(e.signaturesOffset)).unsigned=!0:"string"===typeof e.signaturesOffset?t.signaturesOffset=parseInt(e.signaturesOffset,10):"number"===typeof e.signaturesOffset?t.signaturesOffset=e.signaturesOffset:"object"===Object(ne["a"])(e.signaturesOffset)&&(t.signaturesOffset=new ie.LongBits(e.signaturesOffset.low>>>0,e.signaturesOffset.high>>>0).toNumber(!0))),null!=e.signaturesSize&&(ie.Long?(t.signaturesSize=ie.Long.fromValue(e.signaturesSize)).unsigned=!0:"string"===typeof e.signaturesSize?t.signaturesSize=parseInt(e.signaturesSize,10):"number"===typeof e.signaturesSize?t.signaturesSize=e.signaturesSize:"object"===Object(ne["a"])(e.signaturesSize)&&(t.signaturesSize=new ie.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0))),null!=e.oldKernelInfo){if("object"!==Object(ne["a"])(e.oldKernelInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.oldKernelInfo: object expected");t.oldKernelInfo=se.chromeos_update_engine.PartitionInfo.fromObject(e.oldKernelInfo)}if(null!=e.newKernelInfo){if("object"!==Object(ne["a"])(e.newKernelInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.newKernelInfo: object expected");t.newKernelInfo=se.chromeos_update_engine.PartitionInfo.fromObject(e.newKernelInfo)}if(null!=e.oldRootfsInfo){if("object"!==Object(ne["a"])(e.oldRootfsInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.oldRootfsInfo: object expected");t.oldRootfsInfo=se.chromeos_update_engine.PartitionInfo.fromObject(e.oldRootfsInfo)}if(null!=e.newRootfsInfo){if("object"!==Object(ne["a"])(e.newRootfsInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.newRootfsInfo: object expected");t.newRootfsInfo=se.chromeos_update_engine.PartitionInfo.fromObject(e.newRootfsInfo)}if(null!=e.oldImageInfo){if("object"!==Object(ne["a"])(e.oldImageInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.oldImageInfo: object expected");t.oldImageInfo=se.chromeos_update_engine.ImageInfo.fromObject(e.oldImageInfo)}if(null!=e.newImageInfo){if("object"!==Object(ne["a"])(e.newImageInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.newImageInfo: object expected");t.newImageInfo=se.chromeos_update_engine.ImageInfo.fromObject(e.newImageInfo)}if(null!=e.minorVersion&&(t.minorVersion=e.minorVersion>>>0),e.partitions){if(!Array.isArray(e.partitions))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected");t.partitions=[];for(var a=0;a>>0,e.maxTimestamp.high>>>0).toNumber())),null!=e.dynamicPartitionMetadata){if("object"!==Object(ne["a"])(e.dynamicPartitionMetadata))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected");t.dynamicPartitionMetadata=se.chromeos_update_engine.DynamicPartitionMetadata.fromObject(e.dynamicPartitionMetadata)}if(null!=e.partialUpdate&&(t.partialUpdate=Boolean(e.partialUpdate)),e.apexInfo){if(!Array.isArray(e.apexInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected");t.apexInfo=[];for(var o=0;o>>0,e.signaturesOffset.high>>>0).toNumber(!0):e.signaturesOffset),null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&("number"===typeof e.signaturesSize?n.signaturesSize=t.longs===String?String(e.signaturesSize):e.signaturesSize:n.signaturesSize=t.longs===String?ie.Long.prototype.toString.call(e.signaturesSize):t.longs===Number?new ie.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0):e.signaturesSize),null!=e.oldKernelInfo&&e.hasOwnProperty("oldKernelInfo")&&(n.oldKernelInfo=se.chromeos_update_engine.PartitionInfo.toObject(e.oldKernelInfo,t)),null!=e.newKernelInfo&&e.hasOwnProperty("newKernelInfo")&&(n.newKernelInfo=se.chromeos_update_engine.PartitionInfo.toObject(e.newKernelInfo,t)),null!=e.oldRootfsInfo&&e.hasOwnProperty("oldRootfsInfo")&&(n.oldRootfsInfo=se.chromeos_update_engine.PartitionInfo.toObject(e.oldRootfsInfo,t)),null!=e.newRootfsInfo&&e.hasOwnProperty("newRootfsInfo")&&(n.newRootfsInfo=se.chromeos_update_engine.PartitionInfo.toObject(e.newRootfsInfo,t)),null!=e.oldImageInfo&&e.hasOwnProperty("oldImageInfo")&&(n.oldImageInfo=se.chromeos_update_engine.ImageInfo.toObject(e.oldImageInfo,t)),null!=e.newImageInfo&&e.hasOwnProperty("newImageInfo")&&(n.newImageInfo=se.chromeos_update_engine.ImageInfo.toObject(e.newImageInfo,t)),null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&(n.minorVersion=e.minorVersion),e.partitions&&e.partitions.length){n.partitions=[];for(var l=0;l>>0,e.maxTimestamp.high>>>0).toNumber():e.maxTimestamp),null!=e.dynamicPartitionMetadata&&e.hasOwnProperty("dynamicPartitionMetadata")&&(n.dynamicPartitionMetadata=se.chromeos_update_engine.DynamicPartitionMetadata.toObject(e.dynamicPartitionMetadata,t)),null!=e.partialUpdate&&e.hasOwnProperty("partialUpdate")&&(n.partialUpdate=e.partialUpdate),e.apexInfo&&e.apexInfo.length){n.apexInfo=[];for(var c=0;c0&&void 0!==arguments[0]?arguments[0]:"";return Object(de["a"])(this,n),e=t.call(this),e.offset=0,e.contentType=r,e.blob=new Blob([],{type:r}),e.prefixLength=0,e}return Object(fe["a"])(n,[{key:"readHeader",value:function(){var e=Object(h["a"])(regeneratorRuntime.mark((function e(t){var n,r,a,o,i,s,l,c,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return n=0,r=function(e){var r=Ee(t,n,e);return n+=e,r},e.next=4,t.slice(0,ke).arrayBuffer();case 4:if(a=e.sent,o=new TextDecoder,i=a.slice(0,je.length),s=o.decode(i),s==je){e.next=10;break}throw new Error("MAGIC is not correct, expected: ".concat(je," actual: ").concat(s));case 10:return n+=je.length,e.next=13,r(we);case 13:return l=e.sent,e.next=16,r(ve);case 16:if(c=e.sent,l==Ie){e.next=19;break}throw new Error("Unexpected major version number: ".concat(l));case 19:return e.next=21,r(xe);case 21:u=e.sent,this.header=new Pe(s,l,c,u);case 23:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"writeUint8Array",value:function(){var e=Object(h["a"])(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(Object(ue["a"])(Object(pe["a"])(n.prototype),"writeUint8Array",this).call(this,t),this.blob=new Blob([this.blob,t.buffer],{type:this.contentType}),this.offset=this.blob.size,!(this.offset>=ke&&0==this.prefixLength)){e.next=9;break}return console.log("Parsing header!"),e.next=7,this.readHeader(this.blob);case 7:this.prefixLength=ke+this.header.manifest_len+this.header.metadata_signature_len,console.log("Computed metadata length: ".concat(this.prefixLength));case 9:if(!(this.prefixLength>0)){e.next=14;break}if(console.log("".concat(this.offset,"/").concat(this.prefixLength)),!(this.offset>=this.prefixLength)){e.next=14;break}throw this.blob=this.blob.slice(0,this.prefixLength),new _e;case 14:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getData",value:function(){return this.blob}}]),n}(me["Writer"]),Ae=function(){function e(t){Object(de["a"])(this,e),t instanceof File?this.zipreader=new me["ZipReader"](new me["BlobReader"](t)):t instanceof URL?this.zipreader=new me["ZipReader"](new me["HttpReader"](t.href)):this.zipreader=t.reader}return Object(fe["a"])(e,[{key:"getMetadataLength",value:function(){return ke+this.header.manifest_len+this.header.metadata_signature_len}},{key:"unzip",value:function(){var e=Object(h["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a,o,i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.zipreader.getEntries();case 2:t=e.sent,n=Object(ce["a"])(t),e.prev=4,n.s();case 6:if((r=n.n()).done){e.next=35;break}if(a=r.value,"payload.bin"!=a.filename){e.next=28;break}return o=new ze(""),e.prev=10,e.next=13,a.getData(o);case 13:e.next=22;break;case 15:if(e.prev=15,e.t0=e["catch"](10),!(e.t0 instanceof _e)){e.next=20;break}e.next=22;break;case 20:throw console.log(e.t0),e.t0;case 22:return this.buffer=o.getData(),e.next=25,this.readManifest(this.buffer,o.header);case 25:console.log("AB OTA manifest parsed"),e.next=33;break;case 28:if("META-INF/com/android/metadata"!=a.filename){e.next=33;break}return e.next=31,a.getData(new me["TextWriter"]);case 31:this.metadata=e.sent,console.log("OTA Package metadata parsed");case 33:e.next=6;break;case 35:e.next=40;break;case 37:e.prev=37,e.t1=e["catch"](4),n.e(e.t1);case 40:return e.prev=40,n.f(),e.finish(40);case 43:if(this.manifest){e.next=57;break}return console.log("Failed to parse AB OTA package, falling back to non-AB"),e.prev=45,i=new Oe(this.zipreader),e.next=49,i.init();case 49:i.nonAB=!0,this.manifest=i,e.next=57;break;case 53:return e.prev=53,e.t2=e["catch"](45),alert("Please select a legit OTA package"),e.abrupt("return");case 57:case"end":return e.stop()}}),e,this,[[4,37,40,43],[10,15],[45,53]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"readManifest",value:function(){var e=Object(h["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,o;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.header=n,r=ke,e.next=4,t.slice(r,r+n.manifest_len).arrayBuffer();case 4:return a=e.sent,r+=n.manifest_len,this.manifest=le.DeltaArchiveManifest.decode(new Uint8Array(a)),e.next=9,t.slice(r,r+n.metadata_signature_len).arrayBuffer();case 9:o=e.sent,r+=n.metadata_signature_len,this.metadata_signature=le.Signatures.decode(new Uint8Array(o)),this.manifest.nonAB=!1;case 13:case"end":return e.stop()}}),e,this)})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"parseMetadata",value:function(){var e,t=Object(ce["a"])(Se);try{for(t.s();!(e=t.n()).done;){var n=e.value,r=new RegExp(n.prefix+".+");this.metadata.match(r)?this[n.key]=De(this.metadata.match(r)[0],n.prefix):this[n.key]=""}}catch(a){t.e(a)}finally{t.f()}}},{key:"init",value:function(){var e=Object(h["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.unzip();case 2:this.parseMetadata();case 3:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}]),e}(),Te=function(e){Object(he["a"])(n,e);var t=Object(ge["a"])(n);function n(){return Object(de["a"])(this,n),t.apply(this,arguments)}return Object(fe["a"])(n,[{key:"getWithDefault",value:function(e){return this.has(e)?this.get(e):e}}]),n}(Object(be["a"])(Map)),Be=Object(fe["a"])((function e(){Object(de["a"])(this,e);var t=le.InstallOperation.Type;this.mapType=new Te;for(var n=0,r=Object.keys(t);n1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:16,r="",a=0;a3&&void 0!==arguments[3]?arguments[3]:15;Object(de["a"])(this,e),this.statisticData=t,this.trimmedData=Ye(t,a),this.title=n,this.unit=r,this.maximumEntries=a}return Object(fe["a"])(e,[{key:"listData",value:function(){var e,t="",n=Object(ce["a"])(this.statisticData);try{for(n.s();!(e=n.n()).done;){var r=Object(Ge["a"])(e.value,2),a=r[0],o=r[1];t+=a+" : "+o.toString()+" Blocks\n"}}catch(i){n.e(i)}finally{n.f()}return t}},{key:"getEchartsOption",value:function(){var e={};return e.title={text:this.title,left:"center"},e.tooltip={trigger:"item",formatter:"{a}
{b} : {c} "+this.unit+" ({d}%)"},e.legend={orient:"horizontal",left:"top",top:"10%",data:Array.from(this.trimmedData.keys())},e.series=[{name:this.title,type:"pie",radius:"55%",center:["50%","60%"],data:Array.from(this.trimmedData).map((function(e){return{value:e[1],name:e[0]}})),emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],e}}]),e}();function Ye(e,t){if(e.size<=t)return e;for(var n=new Map,r=0;ro&&(o=u,i=c)}}catch(m){s.e(m)}finally{s.f()}n.set(i,o)}var p,f=0,d=Object(ce["a"])(e);try{for(d.s();!(p=d.n()).done;){var h=Object(Ge["a"])(p.value,2),g=h[0],b=h[1];n.get(g)||(f+=b)}}catch(m){d.e(m)}finally{d.f()}return n.set("other",f),n}var Qe=function(){function e(t){Object(de["a"])(this,e),t instanceof File?this.build=new me["ZipReader"](new me["BlobReader"](t)):this.build=new me["ZipReader"](new me["HttpReader"](t.href)),this.mapFiles=new Map,this.maps=new Map}return Object(fe["a"])(e,[{key:"init",value:function(){var e=Object(h["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a=this;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.build.getEntries();case 2:t=e.sent,n=/IMAGES\/[a-z_]*\.map/g,r=/[\w_]+(?=\.map)/g,t.forEach((function(e){e.filename.match(n)&&a.mapFiles.set(e.filename.match(r)[0],e)}));case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"add",value:function(){var e=Object(h["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,o,i,s,l,c,u,p,f,d,h,g;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:for(r=[],a=/\d+/g,o=/\d+\-\d+/g,i=0;i");if(!this.mapFiles.get(t)){e.next=14;break}return e.next=7,this.mapFiles.get(t).getData(new me["TextWriter"]);case 7:s=e.sent,l=s.split("\n"),c=Object(ce["a"])(l);try{for(c.s();!(u=c.n()).done;)for(p=u.value,f=p.split(" "),d=1;d2&&void 0!==s[2]?s[2]:4096,a=s.length>3&&void 0!==s[3]?s[3]:null,e.t0=t,e.next="blocks"===e.t0?5:"payload"===e.t0?8:"COWmerge"===e.t0?11:"filenames"===e.t0?14:"extensions"===e.t0?21:28;break;case 5:return o=rt(n),i=new $e(o,"Operated blocks in target build","blocks"),e.abrupt("break",28);case 8:return o=ot(n),i=new $e(o,"Payload disk usage","bytes"),e.abrupt("break",28);case 11:return o=at(n,r),i=new $e(o,"COW merge operations","blocks"),e.abrupt("break",28);case 14:if(null!=a){e.next=16;break}throw new Error("Target file is required for filenames analysis");case 16:return e.next=18,lt(n,r,a);case 18:return o=e.sent,i=new $e(o,"Size of operated filenames","bytes"),e.abrupt("break",28);case 21:if(null!=a){e.next=23;break}throw new Error("Target file is required for filenames analysis");case 23:return e.next=25,it(n,r,a);case 25:return o=e.sent,i=new $e(o,"Size of operated extensions","bytes"),e.abrupt("break",28);case 28:if(!i){e.next=32;break}return e.abrupt("return",i);case 32:throw"Please double check if this is a proper AB OTA package.";case 33:case"end":return e.stop()}}),e)}))),pt.apply(this,arguments)}function ft(e){if(!e)return 0;var t=function(e,t){return e+t.numBlocks};return e.reduce(t,0)}function dt(e){var t=function(e,t){return e+"("+t.startBlock+","+t.numBlocks+")"};return e.reduce(t,"")}function ht(e,t,n){for(var r=ft(t),a=new Map,o=0;o1?t[t.length-1]:"unknown"===t[0]?"unknown":"<"==e[0]&&e.endsWith(">")?e:"no-extension"}var bt=Object(r["m"])({props:{operation:{type:Object,required:!0},mapType:{type:Te,required:!0}},data:function(){return{srcTotalBlocks:0,srcBlocks:"",dstTotalBlocks:0,dstBlocks:""}},mounted:function(){this.operation.srcExtents&&(this.srcTotalBlocks=ft(this.operation.srcExtents),this.srcBlocks=dt(this.operation.srcExtents)),this.operation.dstExtents&&(this.dstTotalBlocks=ft(this.operation.dstExtents),this.dstBlocks=dt(this.operation.dstExtents))}});n("8edb");bt.render=qe,bt.__scopeId="data-v-44174082";var mt=bt,Ot=Object(r["m"])({components:{OperationDetail:mt},props:{partition:{type:le.PartitionUpdate,required:!0},dynamicPartitionList:{type:Array,required:!0}},data:function(){return{showOPs:!1,showInfo:!1,opType:new Be}},methods:{toggle:function(e){this[e]=!this[e]},octToHex:Ce},computed:{readableTimestamp:function(){var e=parseInt(this.partition.version);return isNaN(e)?"":new Date(1e3*e).toString()},isDynamicPartition:function(){return this.dynamicPartitionList.indexOf(this.partition.partitionName)>=0}}});n("edc2");Ot.render=te,Ot.__scopeId="data-v-6dba348a";var yt=Ot,jt=(n("498a"),Object(r["Z"])("data-v-0514c264"));Object(r["D"])("data-v-0514c264");var wt=Object(r["l"])("h3",null,"Basic infos",-1),vt={class:"align"},xt=Object(r["l"])("strong",null," File name ",-1),kt=Object(r["l"])("strong",null," File size ",-1),It={class:"align"},St={class:"wrap"},_t={key:2},Pt={class:"align"},Et=Object(r["l"])("strong",null," Incremental ",-1),Lt={key:0},zt={key:1},At=Object(r["l"])("strong",null," Partial ",-1),Tt={key:0},Bt={key:1},Nt=Object(r["l"])("strong",null," A/B update ",-1),Ct={key:0},Dt={key:1},Rt=Object(r["l"])("strong",null," VAB ",-1),Mt={key:0},Ft={key:1},Vt=Object(r["l"])("strong",null," VABC ",-1),Ut={key:0},Ht={key:1},Kt={key:0},Wt=Object(r["l"])("strong",null," Total Dynamic Partition Size ",-1),Jt={key:1},Zt=Object(r["l"])("strong",null," Total VABC COW Size ",-1);Object(r["B"])();var Xt=jt((function(e,t,n,a,o,i){return Object(r["A"])(),Object(r["i"])(r["a"],null,[wt,e.zipFile?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:0},e.$attrs),[Object(r["l"])("ul",vt,[Object(r["l"])("li",null,[xt,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileName()),1)]),Object(r["l"])("li",null,[kt,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileSize())+" Bytes",1)])])],16)):Object(r["j"])("",!0),e.payload&&e.payload.metadata?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:1},e.$attrs),[Object(r["l"])("ul",It,[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.otaMetadata,(function(t){return Object(r["A"])(),Object(r["i"])("li",{key:t.name},[Object(r["l"])("strong",null,Object(r["N"])(t.name.trim()+" "),1),Object(r["l"])("p",St,Object(r["N"])(String(e.payload[t.key]).trim()),1)])})),128))])],16)):Object(r["j"])("",!0),e.payload&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])("div",_t,[Object(r["l"])("ul",Pt,[Object(r["l"])("li",null,[Et,e.payload.preBuild?(Object(r["A"])(),Object(r["i"])("span",Lt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",zt," ❌ "))]),Object(r["l"])("li",null,[At,e.payload.manifest.partialUpdate?(Object(r["A"])(),Object(r["i"])("span",Tt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Bt," ❌ "))]),Object(r["l"])("li",null,[Nt,e.payload.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",Dt," ❌ ")):(Object(r["A"])(),Object(r["i"])("span",Ct," ✅ "))]),Object(r["l"])("li",null,[Rt,e.payload.manifest.dynamicPartitionMetadata.snapshotEnabled?(Object(r["A"])(),Object(r["i"])("span",Mt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Ft," ❌ "))]),Object(r["l"])("li",null,[Vt,e.payload.manifest.dynamicPartitionMetadata.vabcEnabled?(Object(r["A"])(),Object(r["i"])("span",Ut," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Ht," ❌ "))]),e.totalDynamicPartitionSize?(Object(r["A"])(),Object(r["i"])("li",Kt,[Wt,Object(r["k"])(" "+Object(r["N"])(e.totalDynamicPartitionSize),1)])):Object(r["j"])("",!0),e.totalCOWSize?(Object(r["A"])(),Object(r["i"])("li",Jt,[Zt,Object(r["k"])(" "+Object(r["N"])(e.totalCOWSize),1)])):Object(r["j"])("",!0)])])):Object(r["j"])("",!0)],64)})),qt=(n("4de4"),n("6062"),n("2ca0"),function(){function e(t){Object(de["a"])(this,e),this.file=t,this.reader=Yt(t)}return Object(fe["a"])(e,[{key:"getFileName",value:function(){return Qt(this.file)}},{key:"getFileSize",value:function(){return this.file instanceof File?this.file.size:0}}]),e}());function Gt(e,t){return $t.apply(this,arguments)}function $t(){return $t=Object(h["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,o,i,s,l,c,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return r=t,a=new me["ZipWriter"](new me["BlobWriter"]("application/zip")),e.next=4,r.getEntries();case 4:o=e.sent,i=Object(ce["a"])(o.filter((function(e){return!!e&&n(e)}))),e.prev=6,i.s();case 8:if((s=i.n()).done){e.next=18;break}return l=s.value,c=new me["BlobWriter"],e.next=13,l.getData(c);case 13:u=e.sent,console.log("Adding ".concat(l.filename,", ").concat(u.size)),a.add(l.filename,new me["BlobReader"](c.getData()),{level:0});case 16:e.next=8;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e["catch"](6),i.e(e.t0);case 23:return e.prev=23,i.f(),e.finish(23);case 26:return e.abrupt("return",a);case 27:case"end":return e.stop()}}),e,null,[[6,20,23,26]])}))),$t.apply(this,arguments)}function Yt(e){return e instanceof File?new me["ZipReader"](new me["BlobReader"](e)):new me["ZipReader"](new me["HttpReader"](e.href))}function Qt(e){return e instanceof File?e.name:e.pathname}function en(e){return tn.apply(this,arguments)}function tn(){return tn=Object(h["a"])(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Gt(Yt(t),(function(e){return e.filename.startsWith("META/")||e.filename.endsWith(".map")}));case 2:return n=e.sent,e.next=5,n.close();case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)}))),tn.apply(this,arguments)}function nn(e){return rn.apply(this,arguments)}function rn(){return rn=Object(h["a"])(regeneratorRuntime.mark((function e(t){var n,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Gt(t.zipreader,(function(e){return"payload.bin"!=e.filename}));case 2:return n=e.sent,e.next=5,n.add("payload.bin",new me["BlobReader"](t.buffer.slice(0,t.getMetadataLength())),{level:0});case 5:return e.next=7,n.close();case 7:return r=e.sent,e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)}))),rn.apply(this,arguments)}function an(e,t,n){var r=window.URL.createObjectURL(e);t.href=r,t.download=n,t.click(),window.URL.revokeObjectURL(r)}function on(e,t){return e.endsWith(t)?e:e+t}var sn=Object(r["m"])({props:{zipFile:{type:qt,required:!0},payload:{type:Ae,required:!0}},data:function(){return{MetadataFormat:Se}},computed:{otaMetadata:function(){var e=this;return Se.filter((function(t){return String(e.payload[t.key]).length>0}))},totalCOWSize:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.partitions.map((function(e){return e.estimateCowSize||0}));return n?n.reduce((function(e,t){return e+t})):0},totalDynamicPartitionSize:function(){var e,t,n,r,a=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.groups;if(!a)return 0;var o=new Set(a.flatMap((function(e){return e.partitionNames}))),i=(null===(r=this.payload.manifest)||void 0===r?void 0:r.partitions.filter((function(e){return o.has(e.partitionName)})))||[];return i.length<=0?0:i.map((function(e){var t;return(null===(t=e.newPartitionInfo)||void 0===t?void 0:t.size)||0})).reduce((function(e,t){return e+t}))}}});n("afa7");sn.render=Xt,sn.__scopeId="data-v-0514c264";var ln=sn,cn=Object(r["m"])({components:{PartitionDetail:yt,BasicInfo:ln},props:{zipFile:{type:qt,default:null},payload:{type:Ae,default:null}},methods:{octToHex:Ce,exportOTAPackage:function(){var e=this;return Object(h["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,nn(e.payload);case 2:n=t.sent,r=e.$refs["download"],an(n,r,"trimmed_"+on(e.zipFile.getFileName(),".zip"));case 5:case"end":return t.stop()}}),t)})))()}},computed:{dynamicPartitions:function(){var e,t,n;return(null===(e=this.payload.manifest)||void 0===e||null===(t=e.dynamicPartitionMetadata)||void 0===t||null===(n=t.groups)||void 0===n?void 0:n.flatMap((function(e){return e.partitionNames||[]})))||[]}}});n("dc41");cn.render=z,cn.__scopeId="data-v-05db67f2";var un=cn,pn=Object(r["Z"])("data-v-44b569bd");Object(r["D"])("data-v-44b569bd");var fn=Object(r["k"])("Export Target File Metadata"),dn={ref:"download"},hn={key:1},gn=Object(r["k"])(" Analyse Installed Blocks (in target build) "),bn=Object(r["k"])(" Analyse Payload Composition "),mn=Object(r["k"])(" Analyse COW Merge Operations "),On={key:0,class:"tooltiptext"},yn=Object(r["k"])(" Analyse Filenames "),jn=Object(r["k"])(" Analyse File Extensions ");Object(r["B"])();var wn=pn((function(e,t,n,a,o,i){var s=Object(r["I"])("v-btn"),l=Object(r["I"])("PartialCheckbox"),c=Object(r["I"])("PieChart"),u=Object(r["I"])("v-divider"),p=Object(r["I"])("v-col"),f=Object(r["I"])("v-row"),d=Object(r["I"])("BaseFile");return Object(r["A"])(),Object(r["i"])(r["a"],null,[e.targetFile?(Object(r["A"])(),Object(r["i"])(s,{key:0,block:"",class:"md-6",onClick:e.exportTargetFileMetadata},{default:pn((function(){return[fn]})),_:1},8,["onClick"])):Object(r["j"])("",!0),Object(r["l"])("a",dn,null,512),Object(r["l"])(l,{modelValue:e.partitionInclude,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.partitionInclude=t}),labels:e.updatePartitions},null,8,["modelValue","labels"]),e.echartsData?(Object(r["A"])(),Object(r["i"])("div",hn,[Object(r["l"])(c,{echartsData:e.echartsData,onClick:e.piechartClick},null,8,["echartsData","onClick"])])):Object(r["j"])("",!0),Object(r["l"])(u),Object(r["l"])(f,null,{default:pn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"},{default:pn((function(){return[Object(r["l"])(s,{block:"",onClick:t[2]||(t[2]=function(t){return e.updateChart("blocks")})},{default:pn((function(){return[gn]})),_:1})]})),_:1}),Object(r["l"])(p,{cols:"12",md:"6"},{default:pn((function(){return[Object(r["l"])(s,{block:"",onClick:t[3]||(t[3]=function(t){return e.updateChart("payload")})},{default:pn((function(){return[bn]})),_:1})]})),_:1})]})),_:1}),Object(r["l"])(f,null,{default:pn((function(){return[Object(r["l"])(p,{cols:"12",md:"6",class:"tooltip"},{default:pn((function(){return[Object(r["l"])(s,{disabled:e.manifest.nonAB||!e.manifest.dynamicPartitionMetadata.vabcEnabled,title:"Only available for VABC update",block:"",onClick:t[4]||(t[4]=function(t){return e.updateChart("COWmerge")})},{default:pn((function(){return[mn]})),_:1},8,["disabled"]),e.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",On," This function is only supported in A/B OTA ")):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(p,{cols:"12",md:"6"},{default:pn((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[5]||(t[5]=function(t){return e.updateChart("filenames")})},{default:pn((function(){return[yn]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),Object(r["l"])(f,null,{default:pn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"},{default:pn((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[6]||(t[6]=function(t){return e.updateChart("extensions")})},{default:pn((function(){return[jn]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),Object(r["l"])(f,null,{default:pn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"}),Object(r["l"])(p,{cols:"12",md:"6"},{default:pn((function(){return[e.demo?Object(r["j"])("",!0):(Object(r["A"])(),Object(r["i"])(d,{key:0,label:"Drag and drop or Select The target Android build",onFileSelect:e.selectBuild},null,8,["onFileSelect"]))]})),_:1})]})),_:1})],64)})),vn=n("bc3a"),xn=n.n(vn),kn=Object(r["Z"])("data-v-533f2336");Object(r["D"])("data-v-533f2336");var In={key:0};Object(r["B"])();var Sn=kn((function(e,t,n,a,o,i){var s=Object(r["I"])("v-btn"),l=Object(r["I"])("v-col"),c=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(r["a"],null,[Object(r["l"])(s,{block:"",type:"button",class:"my-5",onClick:e.revertAllSelection},{default:kn((function(){return[Object(r["k"])(Object(r["N"])(e.selectAllText[e.selectAll]),1)]})),_:1},8,["onClick"]),Object(r["l"])(c,{class:"mb-5"},{default:kn((function(){return[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.labels,(function(n){return Object(r["A"])(),Object(r["i"])(l,{key:n,cols:"12",md:"4"},{default:kn((function(){return[Object(r["l"])("input",{type:"checkbox",value:n,checked:e.modelValue.get(n),onChange:t[1]||(t[1]=function(t){return e.updateSelected(t.target.value)})},null,40,["value","checked"]),n?(Object(r["A"])(),Object(r["i"])("label",In,Object(r["N"])(n),1)):Object(r["j"])("",!0)]})),_:2},1024)})),128))]})),_:1})],64)})),_n=Object(r["m"])({props:{labels:{type:Array,default:new Array},modelValue:{type:Map,default:new Map}},data:function(){return{selectAll:1,selectAllText:["Select All","Unselect All"]}},mounted:function(){var e,t=Object(ce["a"])(this.labels);try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,!0)}}catch(r){t.e(r)}finally{t.f()}},methods:{updateSelected:function(e){this.modelValue.set(e,!this.modelValue.get(e)),this.$emit("update:modelValue",this.modelValue)},revertAllSelection:function(){this.selectAll=1-this.selectAll;var e,t=Object(ce["a"])(this.modelValue.keys());try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,Boolean(this.selectAll))}}catch(r){t.e(r)}finally{t.f()}}}});n("a75a");_n.render=Sn,_n.__scopeId="data-v-533f2336";var Pn=_n,En=n("2909"),Ln="undefined"===typeof arguments?void 0:arguments,zn=Object(r["Z"])("data-v-5d1cb486"),An=zn((function(e,t,n,a,o,i){var s=Object(r["I"])("v-chart");return Object(r["A"])(),Object(r["i"])(s,{class:"chart",option:i.getEchartsOption,onClick:t[1]||(t[1]=function(t){return e.$emit.apply(e,["click"].concat(Object(En["a"])(Ln)))})},null,8,["option"])})),Tn=n("ade3"),Bn=n("22b4"),Nn=n("f95e"),Cn=n("49bb"),Dn=n("9394"),Rn=n("2da7"),Mn=n("ff32"),Fn=n("5c7f");Object(Bn["a"])([Nn["a"],Cn["a"],Dn["a"],Rn["a"],Mn["a"]]);var Vn={components:{VChart:Fn["b"]},provide:Object(Tn["a"])({},Fn["a"],"dark"),props:{echartsData:{type:$e,required:!0}},computed:{getEchartsOption:function(){return this.echartsData.getEchartsOption()}}};n("47e0");Vn.render=An,Vn.__scopeId="data-v-5d1cb486";var Un=Vn,Hn=Object(r["m"])({components:{PartialCheckbox:Pn,PieChart:Un,BaseFile:v},props:{manifest:{type:le.DeltaArchiveManifest,default:function(){return[]}},demo:{type:Boolean,default:!1}},data:function(){return{partitionInclude:new Map,echartsData:null,listData:"",targetFile:null}},computed:{updatePartitions:function(){return this.manifest.partitions.map((function(e){return e.partitionName}))}},mounted:function(){var e=this;return Object(h["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(!e.demo){t.next=11;break}return t.prev=1,t.next=4,xn.a.get("./files/cf_x86_target_file_demo.zip",{responseType:"blob"});case 4:n=t.sent,e.targetFile=new File([n.data],"target_demo.zip"),t.next=11;break;case 8:t.prev=8,t.t0=t["catch"](1),console.log("Please put a proper example target file in /public/files/");case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))()},methods:{piechartClick:function(e){console.log(e)},updateChart:function(e){var t=this;return Object(h["a"])(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return r=t.manifest.partitions.filter((function(e){return t.partitionInclude.get(e.partitionName)})),n.prev=1,n.next=4,ut(e,r,t.manifest.blockSize,t.targetFile);case 4:t.echartsData=n.sent,n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Cannot be processed for the following issue: ".concat(n.t0));case 10:case"end":return n.stop()}}),n,null,[[1,7]])})))()},selectBuild:function(e){this.targetFile=e},exportTargetFileMetadata:function(){var e=this;return Object(h["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,en(e.targetFile);case 2:n=t.sent,r=e.$refs["download"],an(n,r,"trimmed_"+on(Qt(e.targetFile),".zip"));case 5:case"end":return t.stop()}}),t)})))()}}});n("4b95");Hn.render=wn,Hn.__scopeId="data-v-44b569bd";var Kn=Hn,Wn=Object(r["m"])({components:{BaseFile:v,PayloadDetail:un,PayloadComposition:Kn},data:function(){return{zipFile:null,payload:null}},methods:{unpackOTA:function(e){var t=this;return Object(h["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return t.zipFile=new qt(e),n.prev=1,t.payload=new Ae(t.zipFile),n.next=5,t.payload.init();case 5:n.next=11;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Please check if this is a correct OTA package (.zip). ".concat(n.t0)),console.log(n.t0);case 11:case"end":return n.stop()}}),n,null,[[1,7]])})))()}}});Wn.render=d;var Jn=Wn;function Zn(e,t,n,a,o,i){var s=Object(r["I"])("PayloadDetail"),l=Object(r["I"])("v-col"),c=Object(r["I"])("v-divider"),u=Object(r["I"])("PayloadComposition"),p=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(p,null,{default:Object(r["X"])((function(){return[Object(r["l"])(l,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload?(Object(r["A"])(),Object(r["i"])(s,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(c,{vertical:""}),Object(r["l"])(l,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])(u,{key:0,manifest:e.payload.manifest,demo:!0},null,8,["manifest"])):Object(r["j"])("",!0)]})),_:1})]})),_:1})}var Xn=Object(r["m"])({components:{PayloadDetail:un,PayloadComposition:Kn},data:function(){return{zipFile:null,payload:null}},created:function(){var e=this;return Object(h["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,xn.a.get("./files/cf_x86_demo.zip",{responseType:"blob"});case 3:return n=t.sent,e.zipFile=new qt(new File([n.data],"ota_demo.zip")),e.payload=new Ae(e.zipFile),t.next=8,e.payload.init();case 8:t.next=13;break;case 10:t.prev=10,t.t0=t["catch"](0),console.log("Please put a proper example OTA in /public/files/");case 13:case"end":return t.stop()}}),t,null,[[0,10]])})))()}});Xn.render=Zn;var qn=Xn,Gn={class:"about"},$n=Object(r["l"])("p",null,"A web based tool to inspect Android OTA packages.",-1);function Yn(e,t){return Object(r["A"])(),Object(r["i"])("div",Gn,[$n])}const Qn={};Qn.render=Yn;var er=Qn,tr=Object(r["Z"])("data-v-50c6f348");Object(r["D"])("data-v-50c6f348");var nr=Object(r["l"])("h1",null,"Not Found!",-1),rr=Object(r["l"])("p",null,[Object(r["l"])("a",{href:"/"},"Go home?")],-1);Object(r["B"])();var ar=tr((function(e,t){var n=Object(r["I"])("center");return Object(r["A"])(),Object(r["i"])(n,null,{default:tr((function(){return[nr,rr]})),_:1})}));n("8e71");const or={};or.render=ar,or.__scopeId="data-v-50c6f348";var ir=or,sr=[{path:"/",name:"Analysis",component:Jn,meta:{title:"Analyse OTA package - from AOSP"}},{path:"/demo",name:"Demo",component:qn},{path:"/about",name:"About",component:er},{path:"/:catchAll(.*)",name:"Not Found",component:ir}],lr=Object(f["a"])({history:Object(f["b"])("/analyseOTA/"),routes:sr});lr.beforeEach((function(e,t,n){var r=e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.title})),a=(e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})),t.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})));r?document.title=r.meta.title:a&&(document.title=a.meta.title),Array.from(document.querySelectorAll("[data-vue-router-controlled]")).map((function(e){return e.parentNode.removeChild(e)})),n()}));var cr=lr,ur=n("5502"),pr=Object(ur["a"])({state:{},mutations:{},actions:{},modules:{}}),fr=Object(r["h"])(p);fr.use(cr),fr.use(pr),fr.use(s),fr.mount("#app")},d978:function(e,t,n){},dc41:function(e,t,n){"use strict";n("027d")},edc2:function(e,t,n){"use strict";n("c021")}}); +//# sourceMappingURL=app.9f425357.js.map \ No newline at end of file diff --git a/analyseOTA/js/app.9f425357.js.map b/analyseOTA/js/app.9f425357.js.map new file mode 100644 index 0000000..5435c2d --- /dev/null +++ b/analyseOTA/js/app.9f425357.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?1825","webpack:///./src/components/PieChart.vue?3f25","webpack:///./src/components/BaseFile.vue?5b74","webpack:///./src/components/PayloadComposition.vue?8d59","webpack:///./src/views/NotFound.vue?18b8","webpack:///./src/components/OperationDetail.vue?7823","webpack:///./src/components/PartialCheckbox.vue?cce7","webpack:///./src/components/BasicInfo.vue?a804","webpack:///./src/plugins/vuetify.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?6697","webpack:///./src/views/PackageAnalysis.vue","webpack:///./src/components/BaseFile.vue","webpack:///./src/components/BaseFile.vue?5af0","webpack:///./src/components/BaseFile.vue?408d","webpack:///./src/components/PayloadDetail.vue","webpack:///./src/components/PartitionDetail.vue","webpack:///./src/services/update_metadata_pb.js","webpack:///./src/services/payload_nonab.ts","webpack:///./src/services/payload.ts","webpack:///./src/components/OperationDetail.vue","webpack:///./src/services/echarts_data.ts","webpack:///./src/services/map_parser.ts","webpack:///./src/services/payload_composition.ts","webpack:///./src/components/OperationDetail.vue?0239","webpack:///./src/components/OperationDetail.vue?19cd","webpack:///./src/components/PartitionDetail.vue?7d27","webpack:///./src/components/PartitionDetail.vue?b40d","webpack:///./src/components/BasicInfo.vue","webpack:///./src/services/trim_zip.ts","webpack:///./src/components/BasicInfo.vue?bb39","webpack:///./src/components/BasicInfo.vue?e053","webpack:///./src/components/PayloadDetail.vue?cdd8","webpack:///./src/components/PayloadDetail.vue?a20c","webpack:///./src/components/PayloadComposition.vue","webpack:///./src/components/PartialCheckbox.vue","webpack:///./src/components/PartialCheckbox.vue?fbe3","webpack:///./src/components/PartialCheckbox.vue?59db","webpack:///./src/components/PieChart.vue","webpack:///./src/components/PieChart.vue?1278","webpack:///./src/components/PayloadComposition.vue?3e04","webpack:///./src/components/PayloadComposition.vue?d59c","webpack:///./src/views/PackageAnalysis.vue?3fdf","webpack:///./src/views/PackageAnalysis.vue?2d24","webpack:///./src/views/Demo.vue","webpack:///./src/views/Demo.vue?9616","webpack:///./src/views/Demo.vue?e633","webpack:///./src/views/About.vue","webpack:///./src/views/About.vue?aa81","webpack:///./src/views/NotFound.vue","webpack:///./src/views/NotFound.vue?2812","webpack:///./src/router/index.ts","webpack:///./src/store/index.ts","webpack:///./src/main.ts","webpack:///./src/components/PayloadDetail.vue?0b74","webpack:///./src/components/PartitionDetail.vue?3d89"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","components","directives","theme","defaultTheme","rounded","color","links","link","to","class","fluid","render","cols","md","label","unpackOTA","zipFile","payload","vertical","manifest","dragover","dragleave","drop","fileName","ref","type","accept","handleFileChange","placeholder","url","urlKeyup","props","String","default","emits","computed","parsedURL","URL","this","methods","event","currentTarget","target","files","selectedFile","$emit","preventDefault","classList","contains","add","remove","dataTransfer","console","log","error","__scopeId","style","exportOTAPackage","partitions","partition","partitionName","elevation","hover","shaped","dynamicPartitionList","dynamicPartitions","metadata_signature","nonAB","octToHex","signatures","oldPartitionInfo","isDynamicPartition","estimateCowSize","postinstallPath","toggle","showInfo","size","hash","newPartitionInfo","version","readableTimestamp","showOPs","operations","operation","dataSha256Hash","mapType","opType","$Reader","$protobuf","$Writer","$util","$root","chromeos_update_engine","Extent","properties","keys","startBlock","Long","fromBits","numBlocks","encode","message","writer","uint32","uint64","encodeDelimited","ldelim","decode","reader","end","undefined","len","pos","tag","skipType","decodeDelimited","verify","isInteger","low","high","fromObject","fromValue","unsigned","parseInt","LongBits","toNumber","toObject","options","defaults","long","longs","toString","Number","toJSON","constructor","toJSONOptions","Signatures","emptyArray","Signature","fork","Array","isArray","TypeError","arrays","newBuffer","unpaddedSignatureSize","bytes","fixed32","isString","base64","PartitionInfo","ImageInfo","board","channel","buildChannel","buildVersion","string","InstallOperation","srcExtents","dstExtents","dataOffset","dataLength","srcLength","dstLength","srcSha256Hash","int32","ProtocolError","instance","enums","Type","valuesById","values","CowMergeOperation","srcExtent","dstExtent","srcOffset","PartitionUpdate","newPartitionSignature","mergeOperations","runPostinstall","filesystemType","postinstallOptional","hashTreeDataExtent","hashTreeExtent","hashTreeAlgorithm","hashTreeSalt","fecDataExtent","fecExtent","fecRoots","bool","Boolean","DynamicPartitionGroup","partitionNames","DynamicPartitionMetadata","groups","snapshotEnabled","vabcEnabled","vabcCompressionParam","cowVersion","ApexInfo","packageName","isCompressed","decompressedSize","int64","ApexMetadata","apexInfo","DeltaArchiveManifest","installOperations","kernelInstallOperations","blockSize","signaturesOffset","signaturesSize","oldKernelInfo","newKernelInfo","oldRootfsInfo","newRootfsInfo","oldImageInfo","newImageInfo","minorVersion","maxTimestamp","dynamicPartitionMetadata","partialUpdate","packedFile","Blocksize","regexName","getEntries","entries","entry","filename","match","newPartition","getData","rawText","parseTransferList","lines","split","totalBlocks","entryStashed","maxStashed","Uint8Array","sizeNewData","newDataSize","line","op","elements","reduce","parseRange","RegExp","uncompressedSize","extents","rangeset","regexRange","extent","_MAGIC","_VERSION_SIZE","_MANIFEST_LEN_SIZE","_METADATA_SIGNATURE_LEN_SIZE","_PAYLOAD_HEADER_SIZE","_BRILLO_MAJOR_PAYLOAD_VERSION","MetadataFormat","prefix","Error","magic","manifest_len","metadata_signature_len","readIntAt","buffer","position","DataView","arrayBuffer","view","getBigUint64","offset","a","BigInt","getUint32","b","bigNumber","getUint16","contentType","blob","Blob","prefixLength","cursor","readInt","ret","decoder","TextDecoder","magicBytes","header_version","header","array","readHeader","file","File","zipreader","href","readManifest","metadata","init","alert","manifestBlob","signatureBlob","formatter","regex","trimEntry","unzip","parseMetadata","has","Map","types","set","bufferArray","space","maxLine","hex_table","hex","toUpperCase","getWithDefault","srcTotalBlocks","srcBlocks","dstTotalBlocks","dstBlocks","statisticData","title","unit","maximumEntries","trimmedData","trimMap","table","option","text","left","tooltip","trigger","legend","orient","top","from","series","radius","center","map","pair","emphasis","itemStyle","shadowBlur","shadowOffsetX","shadowColor","new_map","curr","currKey","restTotal","targetFile","build","mapFiles","maps","regexPath","forEach","totalLength","regexNumber","mapText","fileEntries","right","InsertMap","names","ext","queryMap","addNumberToMap","operatedBlockStatistics","operatedBlocks","operationType","mergeOperationStatistics","Math","ceil","operatedPayloadStatistics","operatedFileExtensionsStatistics","operatedFilenamesStatistics","filenameStats","fileExtenstionStats","name2Extension","operatedFilenames","buildMap","operatedFileNames","query","extentDataLength","distributeFilenames","analysePartitions","metrics","statisticsData","echartsData","exts","accumulator","total","displayBlocks","filenames","distributedLengths","round","endsWith","required","mounted","OperationDetail","unixTimestamp","isNaN","Date","indexOf","$attrs","getFileName","getFileSize","otaMetadata","trim","preBuild","totalDynamicPartitionSize","totalCOWSize","getZipReader","trimZip","zip","filter","blobWriter","level","pathname","trimTargetFiles","startsWith","close","trimOTAPackage","getMetadataLength","downloadFile","downloadNode","createObjectURL","download","click","revokeObjectURL","ensureSuffix","str","suffix","cowSizes","dynamicPartitionNamess","Set","flatMap","g","acc","cur","PartitionDetail","BasicInfo","$refs","block","exportTargetFileMetadata","partitionInclude","labels","updatePartitions","piechartClick","updateChart","disabled","demo","selectBuild","revertAllSelection","selectAllText","selectAll","checked","modelValue","updateSelected","$event","newSelect","getEchartsOption","VChart","provide","PartialCheckbox","PieChart","BaseFile","listData","responseType","param","partitionSelected","PayloadDetail","PayloadComposition","created","script","routes","path","component","PackageAnalysis","meta","Demo","About","NotFound","router","history","beforeEach","next","nearestWithTitle","matched","reverse","find","previousNearestWithMeta","metaTags","document","querySelectorAll","el","parentNode","removeChild","state","mutations","actions","app","App","use","store","vuetify","mount"],"mappings":"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","file":"js/app.9f425357.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/analyseOTA/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadComposition.vue?vue&type=style&index=0&id=44b569bd&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BasicInfo.vue?vue&type=style&index=0&id=0514c264&scoped=true&lang=css\"","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport 'vuetify/lib/styles/main.sass'\nimport { createVuetify } from 'vuetify'\nimport * as components from 'vuetify/lib/components'\nimport * as directives from 'vuetify/lib/directives'\n\nexport default createVuetify({\n components,\n directives,\n theme: {\n defaultTheme: 'dark'\n }\n})\n","\n\n\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=ee415730\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n label: {\n type: String,\n default: ''\n }\n },\n emits: {\n 'file-select': null\n },\n data() {\n return {\n fileName: '',\n url: ''\n }\n },\n computed: {\n parsedURL(): URL | null {\n try {\n return new URL(this.url)\n } catch {\n return null\n }\n }\n },\n\n methods: {\n handleFileChange(event: any) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (target.files == null || target.files.length < 1) {\n return\n }\n const selectedFile = target.files![0]\n this.$emit('file-select', selectedFile)\n // If user selects a file, clear the URL component\n this.url = ''\n this.fileName = target.files![0].name\n },\n dragover(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!target.classList.contains('file-hover')) {\n target.classList.add('file-hover')\n }\n },\n dragleave(event: DragEvent) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n target.classList.remove('file-hover')\n },\n drop(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!event.dataTransfer || event.dataTransfer.files.length == 0) {\n return\n }\n target.files = event.dataTransfer.files\n this.handleFileChange(event)\n target.classList.remove('file-hover')\n },\n urlKeyup(event: KeyboardEvent) {\n console.log(this.url)\n if (event.key == 'Enter') {\n const target = event.target as HTMLInputElement\n if (this.parsedURL == null) {\n console.error(`${target.value} is an invalid URL`)\n return\n }\n this.$emit('file-select', this.parsedURL)\n }\n }\n }\n})\n","import { render } from \"./BaseFile.vue?vue&type=template&id=0630c5ec&scoped=true\"\nimport script from \"./BaseFile.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseFile.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-0630c5ec\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\nimport * as $protobuf from \"protobufjs/minimal\";\n\n// Common aliases\nconst $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nconst $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\nexport const chromeos_update_engine = $root.chromeos_update_engine = (() => {\n\n /**\n * Namespace chromeos_update_engine.\n * @exports chromeos_update_engine\n * @namespace\n */\n const chromeos_update_engine = {};\n\n chromeos_update_engine.Extent = (function() {\n\n /**\n * Properties of an Extent.\n * @memberof chromeos_update_engine\n * @interface IExtent\n * @property {number|Long|null} [startBlock] Extent startBlock\n * @property {number|Long|null} [numBlocks] Extent numBlocks\n */\n\n /**\n * Constructs a new Extent.\n * @memberof chromeos_update_engine\n * @classdesc Represents an Extent.\n * @implements IExtent\n * @constructor\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n */\n function Extent(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Extent startBlock.\n * @member {number|Long} startBlock\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.startBlock = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Extent numBlocks.\n * @member {number|Long} numBlocks\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.numBlocks = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new Extent instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n * @returns {chromeos_update_engine.Extent} Extent instance\n */\n Extent.create = function create(properties) {\n return new Extent(properties);\n };\n\n /**\n * Encodes the specified Extent message. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startBlock != null && Object.hasOwnProperty.call(message, \"startBlock\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.startBlock);\n if (message.numBlocks != null && Object.hasOwnProperty.call(message, \"numBlocks\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.numBlocks);\n return writer;\n };\n\n /**\n * Encodes the specified Extent message, length delimited. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Extent();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.startBlock = reader.uint64();\n break;\n case 2:\n message.numBlocks = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an Extent message.\n * @function verify\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Extent.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (!$util.isInteger(message.startBlock) && !(message.startBlock && $util.isInteger(message.startBlock.low) && $util.isInteger(message.startBlock.high)))\n return \"startBlock: integer|Long expected\";\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (!$util.isInteger(message.numBlocks) && !(message.numBlocks && $util.isInteger(message.numBlocks.low) && $util.isInteger(message.numBlocks.high)))\n return \"numBlocks: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an Extent message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Extent} Extent\n */\n Extent.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Extent)\n return object;\n let message = new $root.chromeos_update_engine.Extent();\n if (object.startBlock != null)\n if ($util.Long)\n (message.startBlock = $util.Long.fromValue(object.startBlock)).unsigned = true;\n else if (typeof object.startBlock === \"string\")\n message.startBlock = parseInt(object.startBlock, 10);\n else if (typeof object.startBlock === \"number\")\n message.startBlock = object.startBlock;\n else if (typeof object.startBlock === \"object\")\n message.startBlock = new $util.LongBits(object.startBlock.low >>> 0, object.startBlock.high >>> 0).toNumber(true);\n if (object.numBlocks != null)\n if ($util.Long)\n (message.numBlocks = $util.Long.fromValue(object.numBlocks)).unsigned = true;\n else if (typeof object.numBlocks === \"string\")\n message.numBlocks = parseInt(object.numBlocks, 10);\n else if (typeof object.numBlocks === \"number\")\n message.numBlocks = object.numBlocks;\n else if (typeof object.numBlocks === \"object\")\n message.numBlocks = new $util.LongBits(object.numBlocks.low >>> 0, object.numBlocks.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from an Extent message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.Extent} message Extent\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Extent.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.startBlock = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.startBlock = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.numBlocks = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.numBlocks = options.longs === String ? \"0\" : 0;\n }\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (typeof message.startBlock === \"number\")\n object.startBlock = options.longs === String ? String(message.startBlock) : message.startBlock;\n else\n object.startBlock = options.longs === String ? $util.Long.prototype.toString.call(message.startBlock) : options.longs === Number ? new $util.LongBits(message.startBlock.low >>> 0, message.startBlock.high >>> 0).toNumber(true) : message.startBlock;\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (typeof message.numBlocks === \"number\")\n object.numBlocks = options.longs === String ? String(message.numBlocks) : message.numBlocks;\n else\n object.numBlocks = options.longs === String ? $util.Long.prototype.toString.call(message.numBlocks) : options.longs === Number ? new $util.LongBits(message.numBlocks.low >>> 0, message.numBlocks.high >>> 0).toNumber(true) : message.numBlocks;\n return object;\n };\n\n /**\n * Converts this Extent to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Extent\n * @instance\n * @returns {Object.} JSON object\n */\n Extent.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Extent;\n })();\n\n chromeos_update_engine.Signatures = (function() {\n\n /**\n * Properties of a Signatures.\n * @memberof chromeos_update_engine\n * @interface ISignatures\n * @property {Array.|null} [signatures] Signatures signatures\n */\n\n /**\n * Constructs a new Signatures.\n * @memberof chromeos_update_engine\n * @classdesc Represents a Signatures.\n * @implements ISignatures\n * @constructor\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n */\n function Signatures(properties) {\n this.signatures = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signatures signatures.\n * @member {Array.} signatures\n * @memberof chromeos_update_engine.Signatures\n * @instance\n */\n Signatures.prototype.signatures = $util.emptyArray;\n\n /**\n * Creates a new Signatures instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures} Signatures instance\n */\n Signatures.create = function create(properties) {\n return new Signatures(properties);\n };\n\n /**\n * Encodes the specified Signatures message. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.signatures != null && message.signatures.length)\n for (let i = 0; i < message.signatures.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.signatures[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Signatures message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.signatures && message.signatures.length))\n message.signatures = [];\n message.signatures.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signatures message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signatures.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.signatures != null && message.hasOwnProperty(\"signatures\")) {\n if (!Array.isArray(message.signatures))\n return \"signatures: array expected\";\n for (let i = 0; i < message.signatures.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.signatures[i]);\n if (error)\n return \"signatures.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a Signatures message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures} Signatures\n */\n Signatures.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures)\n return object;\n let message = new $root.chromeos_update_engine.Signatures();\n if (object.signatures) {\n if (!Array.isArray(object.signatures))\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: array expected\");\n message.signatures = [];\n for (let i = 0; i < object.signatures.length; ++i) {\n if (typeof object.signatures[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: object expected\");\n message.signatures[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.signatures[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Signatures message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.Signatures} message Signatures\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signatures.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.signatures = [];\n if (message.signatures && message.signatures.length) {\n object.signatures = [];\n for (let j = 0; j < message.signatures.length; ++j)\n object.signatures[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.signatures[j], options);\n }\n return object;\n };\n\n /**\n * Converts this Signatures to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures\n * @instance\n * @returns {Object.} JSON object\n */\n Signatures.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n Signatures.Signature = (function() {\n\n /**\n * Properties of a Signature.\n * @memberof chromeos_update_engine.Signatures\n * @interface ISignature\n * @property {number|null} [version] Signature version\n * @property {Uint8Array|null} [data] Signature data\n * @property {number|null} [unpaddedSignatureSize] Signature unpaddedSignatureSize\n */\n\n /**\n * Constructs a new Signature.\n * @memberof chromeos_update_engine.Signatures\n * @classdesc Represents a Signature.\n * @implements ISignature\n * @constructor\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n */\n function Signature(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signature version.\n * @member {number} version\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.version = 0;\n\n /**\n * Signature data.\n * @member {Uint8Array} data\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.data = $util.newBuffer([]);\n\n /**\n * Signature unpaddedSignatureSize.\n * @member {number} unpaddedSignatureSize\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.unpaddedSignatureSize = 0;\n\n /**\n * Creates a new Signature instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures.Signature} Signature instance\n */\n Signature.create = function create(properties) {\n return new Signature(properties);\n };\n\n /**\n * Encodes the specified Signature message. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.version);\n if (message.data != null && Object.hasOwnProperty.call(message, \"data\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.data);\n if (message.unpaddedSignatureSize != null && Object.hasOwnProperty.call(message, \"unpaddedSignatureSize\"))\n writer.uint32(/* id 3, wireType 5 =*/29).fixed32(message.unpaddedSignatureSize);\n return writer;\n };\n\n /**\n * Encodes the specified Signature message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures.Signature();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.version = reader.uint32();\n break;\n case 2:\n message.data = reader.bytes();\n break;\n case 3:\n message.unpaddedSignatureSize = reader.fixed32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signature message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signature.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version))\n return \"version: integer expected\";\n if (message.data != null && message.hasOwnProperty(\"data\"))\n if (!(message.data && typeof message.data.length === \"number\" || $util.isString(message.data)))\n return \"data: buffer expected\";\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n if (!$util.isInteger(message.unpaddedSignatureSize))\n return \"unpaddedSignatureSize: integer expected\";\n return null;\n };\n\n /**\n * Creates a Signature message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n */\n Signature.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures.Signature)\n return object;\n let message = new $root.chromeos_update_engine.Signatures.Signature();\n if (object.version != null)\n message.version = object.version >>> 0;\n if (object.data != null)\n if (typeof object.data === \"string\")\n $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);\n else if (object.data.length)\n message.data = object.data;\n if (object.unpaddedSignatureSize != null)\n message.unpaddedSignatureSize = object.unpaddedSignatureSize >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a Signature message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.Signature} message Signature\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signature.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.version = 0;\n if (options.bytes === String)\n object.data = \"\";\n else {\n object.data = [];\n if (options.bytes !== Array)\n object.data = $util.newBuffer(object.data);\n }\n object.unpaddedSignatureSize = 0;\n }\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.data != null && message.hasOwnProperty(\"data\"))\n object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n object.unpaddedSignatureSize = message.unpaddedSignatureSize;\n return object;\n };\n\n /**\n * Converts this Signature to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n * @returns {Object.} JSON object\n */\n Signature.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Signature;\n })();\n\n return Signatures;\n })();\n\n chromeos_update_engine.PartitionInfo = (function() {\n\n /**\n * Properties of a PartitionInfo.\n * @memberof chromeos_update_engine\n * @interface IPartitionInfo\n * @property {number|Long|null} [size] PartitionInfo size\n * @property {Uint8Array|null} [hash] PartitionInfo hash\n */\n\n /**\n * Constructs a new PartitionInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionInfo.\n * @implements IPartitionInfo\n * @constructor\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n */\n function PartitionInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionInfo size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * PartitionInfo hash.\n * @member {Uint8Array} hash\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.hash = $util.newBuffer([]);\n\n /**\n * Creates a new PartitionInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo instance\n */\n PartitionInfo.create = function create(properties) {\n return new PartitionInfo(properties);\n };\n\n /**\n * Encodes the specified PartitionInfo message. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.size);\n if (message.hash != null && Object.hasOwnProperty.call(message, \"hash\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.hash);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.size = reader.uint64();\n break;\n case 2:\n message.hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionInfo message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n if (!(message.hash && typeof message.hash.length === \"number\" || $util.isString(message.hash)))\n return \"hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates a PartitionInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n */\n PartitionInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionInfo)\n return object;\n let message = new $root.chromeos_update_engine.PartitionInfo();\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.hash != null)\n if (typeof object.hash === \"string\")\n $util.base64.decode(object.hash, message.hash = $util.newBuffer($util.base64.length(object.hash)), 0);\n else if (object.hash.length)\n message.hash = object.hash;\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.PartitionInfo} message PartitionInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.hash = \"\";\n else {\n object.hash = [];\n if (options.bytes !== Array)\n object.hash = $util.newBuffer(object.hash);\n }\n }\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n object.hash = options.bytes === String ? $util.base64.encode(message.hash, 0, message.hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.hash) : message.hash;\n return object;\n };\n\n /**\n * Converts this PartitionInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionInfo;\n })();\n\n chromeos_update_engine.ImageInfo = (function() {\n\n /**\n * Properties of an ImageInfo.\n * @memberof chromeos_update_engine\n * @interface IImageInfo\n * @property {string|null} [board] ImageInfo board\n * @property {string|null} [key] ImageInfo key\n * @property {string|null} [channel] ImageInfo channel\n * @property {string|null} [version] ImageInfo version\n * @property {string|null} [buildChannel] ImageInfo buildChannel\n * @property {string|null} [buildVersion] ImageInfo buildVersion\n */\n\n /**\n * Constructs a new ImageInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ImageInfo.\n * @implements IImageInfo\n * @constructor\n * @param {chromeos_update_engine.IImageInfo=} [properties] Properties to set\n */\n function ImageInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ImageInfo board.\n * @member {string} board\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.board = \"\";\n\n /**\n * ImageInfo key.\n * @member {string} key\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.key = \"\";\n\n /**\n * ImageInfo channel.\n * @member {string} channel\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.channel = \"\";\n\n /**\n * ImageInfo version.\n * @member {string} version\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.version = \"\";\n\n /**\n * ImageInfo buildChannel.\n * @member {string} buildChannel\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.buildChannel = \"\";\n\n /**\n * ImageInfo buildVersion.\n * @member {string} buildVersion\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.buildVersion = \"\";\n\n /**\n * Creates a new ImageInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.IImageInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo instance\n */\n ImageInfo.create = function create(properties) {\n return new ImageInfo(properties);\n };\n\n /**\n * Encodes the specified ImageInfo message. Does not implicitly {@link chromeos_update_engine.ImageInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.IImageInfo} message ImageInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ImageInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.board != null && Object.hasOwnProperty.call(message, \"board\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.board);\n if (message.key != null && Object.hasOwnProperty.call(message, \"key\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.key);\n if (message.channel != null && Object.hasOwnProperty.call(message, \"channel\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.channel);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.version);\n if (message.buildChannel != null && Object.hasOwnProperty.call(message, \"buildChannel\"))\n writer.uint32(/* id 5, wireType 2 =*/42).string(message.buildChannel);\n if (message.buildVersion != null && Object.hasOwnProperty.call(message, \"buildVersion\"))\n writer.uint32(/* id 6, wireType 2 =*/50).string(message.buildVersion);\n return writer;\n };\n\n /**\n * Encodes the specified ImageInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ImageInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.IImageInfo} message ImageInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ImageInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ImageInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ImageInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ImageInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.board = reader.string();\n break;\n case 2:\n message.key = reader.string();\n break;\n case 3:\n message.channel = reader.string();\n break;\n case 4:\n message.version = reader.string();\n break;\n case 5:\n message.buildChannel = reader.string();\n break;\n case 6:\n message.buildVersion = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ImageInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ImageInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ImageInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ImageInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.board != null && message.hasOwnProperty(\"board\"))\n if (!$util.isString(message.board))\n return \"board: string expected\";\n if (message.key != null && message.hasOwnProperty(\"key\"))\n if (!$util.isString(message.key))\n return \"key: string expected\";\n if (message.channel != null && message.hasOwnProperty(\"channel\"))\n if (!$util.isString(message.channel))\n return \"channel: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.buildChannel != null && message.hasOwnProperty(\"buildChannel\"))\n if (!$util.isString(message.buildChannel))\n return \"buildChannel: string expected\";\n if (message.buildVersion != null && message.hasOwnProperty(\"buildVersion\"))\n if (!$util.isString(message.buildVersion))\n return \"buildVersion: string expected\";\n return null;\n };\n\n /**\n * Creates an ImageInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo\n */\n ImageInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ImageInfo)\n return object;\n let message = new $root.chromeos_update_engine.ImageInfo();\n if (object.board != null)\n message.board = String(object.board);\n if (object.key != null)\n message.key = String(object.key);\n if (object.channel != null)\n message.channel = String(object.channel);\n if (object.version != null)\n message.version = String(object.version);\n if (object.buildChannel != null)\n message.buildChannel = String(object.buildChannel);\n if (object.buildVersion != null)\n message.buildVersion = String(object.buildVersion);\n return message;\n };\n\n /**\n * Creates a plain object from an ImageInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.ImageInfo} message ImageInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ImageInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.board = \"\";\n object.key = \"\";\n object.channel = \"\";\n object.version = \"\";\n object.buildChannel = \"\";\n object.buildVersion = \"\";\n }\n if (message.board != null && message.hasOwnProperty(\"board\"))\n object.board = message.board;\n if (message.key != null && message.hasOwnProperty(\"key\"))\n object.key = message.key;\n if (message.channel != null && message.hasOwnProperty(\"channel\"))\n object.channel = message.channel;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.buildChannel != null && message.hasOwnProperty(\"buildChannel\"))\n object.buildChannel = message.buildChannel;\n if (message.buildVersion != null && message.hasOwnProperty(\"buildVersion\"))\n object.buildVersion = message.buildVersion;\n return object;\n };\n\n /**\n * Converts this ImageInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ImageInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ImageInfo;\n })();\n\n chromeos_update_engine.InstallOperation = (function() {\n\n /**\n * Properties of an InstallOperation.\n * @memberof chromeos_update_engine\n * @interface IInstallOperation\n * @property {chromeos_update_engine.InstallOperation.Type} type InstallOperation type\n * @property {number|Long|null} [dataOffset] InstallOperation dataOffset\n * @property {number|Long|null} [dataLength] InstallOperation dataLength\n * @property {Array.|null} [srcExtents] InstallOperation srcExtents\n * @property {number|Long|null} [srcLength] InstallOperation srcLength\n * @property {Array.|null} [dstExtents] InstallOperation dstExtents\n * @property {number|Long|null} [dstLength] InstallOperation dstLength\n * @property {Uint8Array|null} [dataSha256Hash] InstallOperation dataSha256Hash\n * @property {Uint8Array|null} [srcSha256Hash] InstallOperation srcSha256Hash\n */\n\n /**\n * Constructs a new InstallOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents an InstallOperation.\n * @implements IInstallOperation\n * @constructor\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n */\n function InstallOperation(properties) {\n this.srcExtents = [];\n this.dstExtents = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * InstallOperation type.\n * @member {chromeos_update_engine.InstallOperation.Type} type\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.type = 0;\n\n /**\n * InstallOperation dataOffset.\n * @member {number|Long} dataOffset\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataLength.\n * @member {number|Long} dataLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation srcExtents.\n * @member {Array.} srcExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcExtents = $util.emptyArray;\n\n /**\n * InstallOperation srcLength.\n * @member {number|Long} srcLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dstExtents.\n * @member {Array.} dstExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstExtents = $util.emptyArray;\n\n /**\n * InstallOperation dstLength.\n * @member {number|Long} dstLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataSha256Hash.\n * @member {Uint8Array} dataSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataSha256Hash = $util.newBuffer([]);\n\n /**\n * InstallOperation srcSha256Hash.\n * @member {Uint8Array} srcSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcSha256Hash = $util.newBuffer([]);\n\n /**\n * Creates a new InstallOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation instance\n */\n InstallOperation.create = function create(properties) {\n return new InstallOperation(properties);\n };\n\n /**\n * Encodes the specified InstallOperation message. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.dataOffset != null && Object.hasOwnProperty.call(message, \"dataOffset\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.dataOffset);\n if (message.dataLength != null && Object.hasOwnProperty.call(message, \"dataLength\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.dataLength);\n if (message.srcExtents != null && message.srcExtents.length)\n for (let i = 0; i < message.srcExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.srcExtents[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.srcLength != null && Object.hasOwnProperty.call(message, \"srcLength\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.srcLength);\n if (message.dstExtents != null && message.dstExtents.length)\n for (let i = 0; i < message.dstExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.dstExtents[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.dstLength != null && Object.hasOwnProperty.call(message, \"dstLength\"))\n writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.dstLength);\n if (message.dataSha256Hash != null && Object.hasOwnProperty.call(message, \"dataSha256Hash\"))\n writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.dataSha256Hash);\n if (message.srcSha256Hash != null && Object.hasOwnProperty.call(message, \"srcSha256Hash\"))\n writer.uint32(/* id 9, wireType 2 =*/74).bytes(message.srcSha256Hash);\n return writer;\n };\n\n /**\n * Encodes the specified InstallOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.InstallOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.dataOffset = reader.uint64();\n break;\n case 3:\n message.dataLength = reader.uint64();\n break;\n case 4:\n if (!(message.srcExtents && message.srcExtents.length))\n message.srcExtents = [];\n message.srcExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 5:\n message.srcLength = reader.uint64();\n break;\n case 6:\n if (!(message.dstExtents && message.dstExtents.length))\n message.dstExtents = [];\n message.dstExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 7:\n message.dstLength = reader.uint64();\n break;\n case 8:\n message.dataSha256Hash = reader.bytes();\n break;\n case 9:\n message.srcSha256Hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"type\"))\n throw $util.ProtocolError(\"missing required 'type'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an InstallOperation message.\n * @function verify\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n InstallOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 8:\n case 6:\n case 7:\n case 10:\n case 9:\n case 11:\n case 12:\n case 13:\n break;\n }\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (!$util.isInteger(message.dataOffset) && !(message.dataOffset && $util.isInteger(message.dataOffset.low) && $util.isInteger(message.dataOffset.high)))\n return \"dataOffset: integer|Long expected\";\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (!$util.isInteger(message.dataLength) && !(message.dataLength && $util.isInteger(message.dataLength.low) && $util.isInteger(message.dataLength.high)))\n return \"dataLength: integer|Long expected\";\n if (message.srcExtents != null && message.hasOwnProperty(\"srcExtents\")) {\n if (!Array.isArray(message.srcExtents))\n return \"srcExtents: array expected\";\n for (let i = 0; i < message.srcExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtents[i]);\n if (error)\n return \"srcExtents.\" + error;\n }\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (!$util.isInteger(message.srcLength) && !(message.srcLength && $util.isInteger(message.srcLength.low) && $util.isInteger(message.srcLength.high)))\n return \"srcLength: integer|Long expected\";\n if (message.dstExtents != null && message.hasOwnProperty(\"dstExtents\")) {\n if (!Array.isArray(message.dstExtents))\n return \"dstExtents: array expected\";\n for (let i = 0; i < message.dstExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtents[i]);\n if (error)\n return \"dstExtents.\" + error;\n }\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (!$util.isInteger(message.dstLength) && !(message.dstLength && $util.isInteger(message.dstLength.low) && $util.isInteger(message.dstLength.high)))\n return \"dstLength: integer|Long expected\";\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n if (!(message.dataSha256Hash && typeof message.dataSha256Hash.length === \"number\" || $util.isString(message.dataSha256Hash)))\n return \"dataSha256Hash: buffer expected\";\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n if (!(message.srcSha256Hash && typeof message.srcSha256Hash.length === \"number\" || $util.isString(message.srcSha256Hash)))\n return \"srcSha256Hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates an InstallOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n */\n InstallOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.InstallOperation)\n return object;\n let message = new $root.chromeos_update_engine.InstallOperation();\n switch (object.type) {\n case \"REPLACE\":\n case 0:\n message.type = 0;\n break;\n case \"REPLACE_BZ\":\n case 1:\n message.type = 1;\n break;\n case \"MOVE\":\n case 2:\n message.type = 2;\n break;\n case \"BSDIFF\":\n case 3:\n message.type = 3;\n break;\n case \"SOURCE_COPY\":\n case 4:\n message.type = 4;\n break;\n case \"SOURCE_BSDIFF\":\n case 5:\n message.type = 5;\n break;\n case \"REPLACE_XZ\":\n case 8:\n message.type = 8;\n break;\n case \"ZERO\":\n case 6:\n message.type = 6;\n break;\n case \"DISCARD\":\n case 7:\n message.type = 7;\n break;\n case \"BROTLI_BSDIFF\":\n case 10:\n message.type = 10;\n break;\n case \"PUFFDIFF\":\n case 9:\n message.type = 9;\n break;\n case \"ZUCCHINI\":\n case 11:\n message.type = 11;\n break;\n case \"LZ4DIFF_BSDIFF\":\n case 12:\n message.type = 12;\n break;\n case \"LZ4DIFF_PUFFDIFF\":\n case 13:\n message.type = 13;\n break;\n }\n if (object.dataOffset != null)\n if ($util.Long)\n (message.dataOffset = $util.Long.fromValue(object.dataOffset)).unsigned = true;\n else if (typeof object.dataOffset === \"string\")\n message.dataOffset = parseInt(object.dataOffset, 10);\n else if (typeof object.dataOffset === \"number\")\n message.dataOffset = object.dataOffset;\n else if (typeof object.dataOffset === \"object\")\n message.dataOffset = new $util.LongBits(object.dataOffset.low >>> 0, object.dataOffset.high >>> 0).toNumber(true);\n if (object.dataLength != null)\n if ($util.Long)\n (message.dataLength = $util.Long.fromValue(object.dataLength)).unsigned = true;\n else if (typeof object.dataLength === \"string\")\n message.dataLength = parseInt(object.dataLength, 10);\n else if (typeof object.dataLength === \"number\")\n message.dataLength = object.dataLength;\n else if (typeof object.dataLength === \"object\")\n message.dataLength = new $util.LongBits(object.dataLength.low >>> 0, object.dataLength.high >>> 0).toNumber(true);\n if (object.srcExtents) {\n if (!Array.isArray(object.srcExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: array expected\");\n message.srcExtents = [];\n for (let i = 0; i < object.srcExtents.length; ++i) {\n if (typeof object.srcExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: object expected\");\n message.srcExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.srcExtents[i]);\n }\n }\n if (object.srcLength != null)\n if ($util.Long)\n (message.srcLength = $util.Long.fromValue(object.srcLength)).unsigned = true;\n else if (typeof object.srcLength === \"string\")\n message.srcLength = parseInt(object.srcLength, 10);\n else if (typeof object.srcLength === \"number\")\n message.srcLength = object.srcLength;\n else if (typeof object.srcLength === \"object\")\n message.srcLength = new $util.LongBits(object.srcLength.low >>> 0, object.srcLength.high >>> 0).toNumber(true);\n if (object.dstExtents) {\n if (!Array.isArray(object.dstExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: array expected\");\n message.dstExtents = [];\n for (let i = 0; i < object.dstExtents.length; ++i) {\n if (typeof object.dstExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: object expected\");\n message.dstExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.dstExtents[i]);\n }\n }\n if (object.dstLength != null)\n if ($util.Long)\n (message.dstLength = $util.Long.fromValue(object.dstLength)).unsigned = true;\n else if (typeof object.dstLength === \"string\")\n message.dstLength = parseInt(object.dstLength, 10);\n else if (typeof object.dstLength === \"number\")\n message.dstLength = object.dstLength;\n else if (typeof object.dstLength === \"object\")\n message.dstLength = new $util.LongBits(object.dstLength.low >>> 0, object.dstLength.high >>> 0).toNumber(true);\n if (object.dataSha256Hash != null)\n if (typeof object.dataSha256Hash === \"string\")\n $util.base64.decode(object.dataSha256Hash, message.dataSha256Hash = $util.newBuffer($util.base64.length(object.dataSha256Hash)), 0);\n else if (object.dataSha256Hash.length)\n message.dataSha256Hash = object.dataSha256Hash;\n if (object.srcSha256Hash != null)\n if (typeof object.srcSha256Hash === \"string\")\n $util.base64.decode(object.srcSha256Hash, message.srcSha256Hash = $util.newBuffer($util.base64.length(object.srcSha256Hash)), 0);\n else if (object.srcSha256Hash.length)\n message.srcSha256Hash = object.srcSha256Hash;\n return message;\n };\n\n /**\n * Creates a plain object from an InstallOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.InstallOperation} message InstallOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n InstallOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.srcExtents = [];\n object.dstExtents = [];\n }\n if (options.defaults) {\n object.type = options.enums === String ? \"REPLACE\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.srcLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.srcLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dstLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dstLength = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.dataSha256Hash = \"\";\n else {\n object.dataSha256Hash = [];\n if (options.bytes !== Array)\n object.dataSha256Hash = $util.newBuffer(object.dataSha256Hash);\n }\n if (options.bytes === String)\n object.srcSha256Hash = \"\";\n else {\n object.srcSha256Hash = [];\n if (options.bytes !== Array)\n object.srcSha256Hash = $util.newBuffer(object.srcSha256Hash);\n }\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.InstallOperation.Type[message.type] : message.type;\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (typeof message.dataOffset === \"number\")\n object.dataOffset = options.longs === String ? String(message.dataOffset) : message.dataOffset;\n else\n object.dataOffset = options.longs === String ? $util.Long.prototype.toString.call(message.dataOffset) : options.longs === Number ? new $util.LongBits(message.dataOffset.low >>> 0, message.dataOffset.high >>> 0).toNumber(true) : message.dataOffset;\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (typeof message.dataLength === \"number\")\n object.dataLength = options.longs === String ? String(message.dataLength) : message.dataLength;\n else\n object.dataLength = options.longs === String ? $util.Long.prototype.toString.call(message.dataLength) : options.longs === Number ? new $util.LongBits(message.dataLength.low >>> 0, message.dataLength.high >>> 0).toNumber(true) : message.dataLength;\n if (message.srcExtents && message.srcExtents.length) {\n object.srcExtents = [];\n for (let j = 0; j < message.srcExtents.length; ++j)\n object.srcExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.srcExtents[j], options);\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (typeof message.srcLength === \"number\")\n object.srcLength = options.longs === String ? String(message.srcLength) : message.srcLength;\n else\n object.srcLength = options.longs === String ? $util.Long.prototype.toString.call(message.srcLength) : options.longs === Number ? new $util.LongBits(message.srcLength.low >>> 0, message.srcLength.high >>> 0).toNumber(true) : message.srcLength;\n if (message.dstExtents && message.dstExtents.length) {\n object.dstExtents = [];\n for (let j = 0; j < message.dstExtents.length; ++j)\n object.dstExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.dstExtents[j], options);\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (typeof message.dstLength === \"number\")\n object.dstLength = options.longs === String ? String(message.dstLength) : message.dstLength;\n else\n object.dstLength = options.longs === String ? $util.Long.prototype.toString.call(message.dstLength) : options.longs === Number ? new $util.LongBits(message.dstLength.low >>> 0, message.dstLength.high >>> 0).toNumber(true) : message.dstLength;\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n object.dataSha256Hash = options.bytes === String ? $util.base64.encode(message.dataSha256Hash, 0, message.dataSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.dataSha256Hash) : message.dataSha256Hash;\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n object.srcSha256Hash = options.bytes === String ? $util.base64.encode(message.srcSha256Hash, 0, message.srcSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.srcSha256Hash) : message.srcSha256Hash;\n return object;\n };\n\n /**\n * Converts this InstallOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n * @returns {Object.} JSON object\n */\n InstallOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.InstallOperation.Type\n * @enum {number}\n * @property {number} REPLACE=0 REPLACE value\n * @property {number} REPLACE_BZ=1 REPLACE_BZ value\n * @property {number} MOVE=2 MOVE value\n * @property {number} BSDIFF=3 BSDIFF value\n * @property {number} SOURCE_COPY=4 SOURCE_COPY value\n * @property {number} SOURCE_BSDIFF=5 SOURCE_BSDIFF value\n * @property {number} REPLACE_XZ=8 REPLACE_XZ value\n * @property {number} ZERO=6 ZERO value\n * @property {number} DISCARD=7 DISCARD value\n * @property {number} BROTLI_BSDIFF=10 BROTLI_BSDIFF value\n * @property {number} PUFFDIFF=9 PUFFDIFF value\n * @property {number} ZUCCHINI=11 ZUCCHINI value\n * @property {number} LZ4DIFF_BSDIFF=12 LZ4DIFF_BSDIFF value\n * @property {number} LZ4DIFF_PUFFDIFF=13 LZ4DIFF_PUFFDIFF value\n */\n InstallOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"REPLACE\"] = 0;\n values[valuesById[1] = \"REPLACE_BZ\"] = 1;\n values[valuesById[2] = \"MOVE\"] = 2;\n values[valuesById[3] = \"BSDIFF\"] = 3;\n values[valuesById[4] = \"SOURCE_COPY\"] = 4;\n values[valuesById[5] = \"SOURCE_BSDIFF\"] = 5;\n values[valuesById[8] = \"REPLACE_XZ\"] = 8;\n values[valuesById[6] = \"ZERO\"] = 6;\n values[valuesById[7] = \"DISCARD\"] = 7;\n values[valuesById[10] = \"BROTLI_BSDIFF\"] = 10;\n values[valuesById[9] = \"PUFFDIFF\"] = 9;\n values[valuesById[11] = \"ZUCCHINI\"] = 11;\n values[valuesById[12] = \"LZ4DIFF_BSDIFF\"] = 12;\n values[valuesById[13] = \"LZ4DIFF_PUFFDIFF\"] = 13;\n return values;\n })();\n\n return InstallOperation;\n })();\n\n chromeos_update_engine.CowMergeOperation = (function() {\n\n /**\n * Properties of a CowMergeOperation.\n * @memberof chromeos_update_engine\n * @interface ICowMergeOperation\n * @property {chromeos_update_engine.CowMergeOperation.Type|null} [type] CowMergeOperation type\n * @property {chromeos_update_engine.IExtent|null} [srcExtent] CowMergeOperation srcExtent\n * @property {chromeos_update_engine.IExtent|null} [dstExtent] CowMergeOperation dstExtent\n * @property {number|null} [srcOffset] CowMergeOperation srcOffset\n */\n\n /**\n * Constructs a new CowMergeOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents a CowMergeOperation.\n * @implements ICowMergeOperation\n * @constructor\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n */\n function CowMergeOperation(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * CowMergeOperation type.\n * @member {chromeos_update_engine.CowMergeOperation.Type} type\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.type = 0;\n\n /**\n * CowMergeOperation srcExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} srcExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcExtent = null;\n\n /**\n * CowMergeOperation dstExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} dstExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.dstExtent = null;\n\n /**\n * CowMergeOperation srcOffset.\n * @member {number} srcOffset\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcOffset = 0;\n\n /**\n * Creates a new CowMergeOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation instance\n */\n CowMergeOperation.create = function create(properties) {\n return new CowMergeOperation(properties);\n };\n\n /**\n * Encodes the specified CowMergeOperation message. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.srcExtent != null && Object.hasOwnProperty.call(message, \"srcExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.srcExtent, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.dstExtent != null && Object.hasOwnProperty.call(message, \"dstExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.dstExtent, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.srcOffset != null && Object.hasOwnProperty.call(message, \"srcOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.srcOffset);\n return writer;\n };\n\n /**\n * Encodes the specified CowMergeOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.CowMergeOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.srcExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 3:\n message.dstExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 4:\n message.srcOffset = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a CowMergeOperation message.\n * @function verify\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n CowMergeOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtent);\n if (error)\n return \"srcExtent.\" + error;\n }\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtent);\n if (error)\n return \"dstExtent.\" + error;\n }\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n if (!$util.isInteger(message.srcOffset))\n return \"srcOffset: integer expected\";\n return null;\n };\n\n /**\n * Creates a CowMergeOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n */\n CowMergeOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.CowMergeOperation)\n return object;\n let message = new $root.chromeos_update_engine.CowMergeOperation();\n switch (object.type) {\n case \"COW_COPY\":\n case 0:\n message.type = 0;\n break;\n case \"COW_XOR\":\n case 1:\n message.type = 1;\n break;\n case \"COW_REPLACE\":\n case 2:\n message.type = 2;\n break;\n }\n if (object.srcExtent != null) {\n if (typeof object.srcExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.srcExtent: object expected\");\n message.srcExtent = $root.chromeos_update_engine.Extent.fromObject(object.srcExtent);\n }\n if (object.dstExtent != null) {\n if (typeof object.dstExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.dstExtent: object expected\");\n message.dstExtent = $root.chromeos_update_engine.Extent.fromObject(object.dstExtent);\n }\n if (object.srcOffset != null)\n message.srcOffset = object.srcOffset >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a CowMergeOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.CowMergeOperation} message CowMergeOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n CowMergeOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"COW_COPY\" : 0;\n object.srcExtent = null;\n object.dstExtent = null;\n object.srcOffset = 0;\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.CowMergeOperation.Type[message.type] : message.type;\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\"))\n object.srcExtent = $root.chromeos_update_engine.Extent.toObject(message.srcExtent, options);\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\"))\n object.dstExtent = $root.chromeos_update_engine.Extent.toObject(message.dstExtent, options);\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n object.srcOffset = message.srcOffset;\n return object;\n };\n\n /**\n * Converts this CowMergeOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n * @returns {Object.} JSON object\n */\n CowMergeOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.CowMergeOperation.Type\n * @enum {number}\n * @property {number} COW_COPY=0 COW_COPY value\n * @property {number} COW_XOR=1 COW_XOR value\n * @property {number} COW_REPLACE=2 COW_REPLACE value\n */\n CowMergeOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"COW_COPY\"] = 0;\n values[valuesById[1] = \"COW_XOR\"] = 1;\n values[valuesById[2] = \"COW_REPLACE\"] = 2;\n return values;\n })();\n\n return CowMergeOperation;\n })();\n\n chromeos_update_engine.PartitionUpdate = (function() {\n\n /**\n * Properties of a PartitionUpdate.\n * @memberof chromeos_update_engine\n * @interface IPartitionUpdate\n * @property {string} partitionName PartitionUpdate partitionName\n * @property {boolean|null} [runPostinstall] PartitionUpdate runPostinstall\n * @property {string|null} [postinstallPath] PartitionUpdate postinstallPath\n * @property {string|null} [filesystemType] PartitionUpdate filesystemType\n * @property {Array.|null} [newPartitionSignature] PartitionUpdate newPartitionSignature\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldPartitionInfo] PartitionUpdate oldPartitionInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newPartitionInfo] PartitionUpdate newPartitionInfo\n * @property {Array.|null} [operations] PartitionUpdate operations\n * @property {boolean|null} [postinstallOptional] PartitionUpdate postinstallOptional\n * @property {chromeos_update_engine.IExtent|null} [hashTreeDataExtent] PartitionUpdate hashTreeDataExtent\n * @property {chromeos_update_engine.IExtent|null} [hashTreeExtent] PartitionUpdate hashTreeExtent\n * @property {string|null} [hashTreeAlgorithm] PartitionUpdate hashTreeAlgorithm\n * @property {Uint8Array|null} [hashTreeSalt] PartitionUpdate hashTreeSalt\n * @property {chromeos_update_engine.IExtent|null} [fecDataExtent] PartitionUpdate fecDataExtent\n * @property {chromeos_update_engine.IExtent|null} [fecExtent] PartitionUpdate fecExtent\n * @property {number|null} [fecRoots] PartitionUpdate fecRoots\n * @property {string|null} [version] PartitionUpdate version\n * @property {Array.|null} [mergeOperations] PartitionUpdate mergeOperations\n * @property {number|Long|null} [estimateCowSize] PartitionUpdate estimateCowSize\n */\n\n /**\n * Constructs a new PartitionUpdate.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionUpdate.\n * @implements IPartitionUpdate\n * @constructor\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n */\n function PartitionUpdate(properties) {\n this.newPartitionSignature = [];\n this.operations = [];\n this.mergeOperations = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionUpdate partitionName.\n * @member {string} partitionName\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.partitionName = \"\";\n\n /**\n * PartitionUpdate runPostinstall.\n * @member {boolean} runPostinstall\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.runPostinstall = false;\n\n /**\n * PartitionUpdate postinstallPath.\n * @member {string} postinstallPath\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallPath = \"\";\n\n /**\n * PartitionUpdate filesystemType.\n * @member {string} filesystemType\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.filesystemType = \"\";\n\n /**\n * PartitionUpdate newPartitionSignature.\n * @member {Array.} newPartitionSignature\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionSignature = $util.emptyArray;\n\n /**\n * PartitionUpdate oldPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.oldPartitionInfo = null;\n\n /**\n * PartitionUpdate newPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionInfo = null;\n\n /**\n * PartitionUpdate operations.\n * @member {Array.} operations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.operations = $util.emptyArray;\n\n /**\n * PartitionUpdate postinstallOptional.\n * @member {boolean} postinstallOptional\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallOptional = false;\n\n /**\n * PartitionUpdate hashTreeDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeDataExtent = null;\n\n /**\n * PartitionUpdate hashTreeExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeExtent = null;\n\n /**\n * PartitionUpdate hashTreeAlgorithm.\n * @member {string} hashTreeAlgorithm\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeAlgorithm = \"\";\n\n /**\n * PartitionUpdate hashTreeSalt.\n * @member {Uint8Array} hashTreeSalt\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeSalt = $util.newBuffer([]);\n\n /**\n * PartitionUpdate fecDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecDataExtent = null;\n\n /**\n * PartitionUpdate fecExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecExtent = null;\n\n /**\n * PartitionUpdate fecRoots.\n * @member {number} fecRoots\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecRoots = 2;\n\n /**\n * PartitionUpdate version.\n * @member {string} version\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.version = \"\";\n\n /**\n * PartitionUpdate mergeOperations.\n * @member {Array.} mergeOperations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.mergeOperations = $util.emptyArray;\n\n /**\n * PartitionUpdate estimateCowSize.\n * @member {number|Long} estimateCowSize\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.estimateCowSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new PartitionUpdate instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate instance\n */\n PartitionUpdate.create = function create(properties) {\n return new PartitionUpdate(properties);\n };\n\n /**\n * Encodes the specified PartitionUpdate message. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.partitionName);\n if (message.runPostinstall != null && Object.hasOwnProperty.call(message, \"runPostinstall\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.runPostinstall);\n if (message.postinstallPath != null && Object.hasOwnProperty.call(message, \"postinstallPath\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.postinstallPath);\n if (message.filesystemType != null && Object.hasOwnProperty.call(message, \"filesystemType\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.filesystemType);\n if (message.newPartitionSignature != null && message.newPartitionSignature.length)\n for (let i = 0; i < message.newPartitionSignature.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.newPartitionSignature[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.oldPartitionInfo != null && Object.hasOwnProperty.call(message, \"oldPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldPartitionInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newPartitionInfo != null && Object.hasOwnProperty.call(message, \"newPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newPartitionInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.operations != null && message.operations.length)\n for (let i = 0; i < message.operations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.operations[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.postinstallOptional != null && Object.hasOwnProperty.call(message, \"postinstallOptional\"))\n writer.uint32(/* id 9, wireType 0 =*/72).bool(message.postinstallOptional);\n if (message.hashTreeDataExtent != null && Object.hasOwnProperty.call(message, \"hashTreeDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeDataExtent, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.hashTreeExtent != null && Object.hasOwnProperty.call(message, \"hashTreeExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeExtent, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.hashTreeAlgorithm != null && Object.hasOwnProperty.call(message, \"hashTreeAlgorithm\"))\n writer.uint32(/* id 12, wireType 2 =*/98).string(message.hashTreeAlgorithm);\n if (message.hashTreeSalt != null && Object.hasOwnProperty.call(message, \"hashTreeSalt\"))\n writer.uint32(/* id 13, wireType 2 =*/106).bytes(message.hashTreeSalt);\n if (message.fecDataExtent != null && Object.hasOwnProperty.call(message, \"fecDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecDataExtent, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.fecExtent != null && Object.hasOwnProperty.call(message, \"fecExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecExtent, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.fecRoots != null && Object.hasOwnProperty.call(message, \"fecRoots\"))\n writer.uint32(/* id 16, wireType 0 =*/128).uint32(message.fecRoots);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 17, wireType 2 =*/138).string(message.version);\n if (message.mergeOperations != null && message.mergeOperations.length)\n for (let i = 0; i < message.mergeOperations.length; ++i)\n $root.chromeos_update_engine.CowMergeOperation.encode(message.mergeOperations[i], writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n if (message.estimateCowSize != null && Object.hasOwnProperty.call(message, \"estimateCowSize\"))\n writer.uint32(/* id 19, wireType 0 =*/152).uint64(message.estimateCowSize);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionUpdate message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionUpdate();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.partitionName = reader.string();\n break;\n case 2:\n message.runPostinstall = reader.bool();\n break;\n case 3:\n message.postinstallPath = reader.string();\n break;\n case 4:\n message.filesystemType = reader.string();\n break;\n case 5:\n if (!(message.newPartitionSignature && message.newPartitionSignature.length))\n message.newPartitionSignature = [];\n message.newPartitionSignature.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n case 6:\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n if (!(message.operations && message.operations.length))\n message.operations = [];\n message.operations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 9:\n message.postinstallOptional = reader.bool();\n break;\n case 10:\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 11:\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 12:\n message.hashTreeAlgorithm = reader.string();\n break;\n case 13:\n message.hashTreeSalt = reader.bytes();\n break;\n case 14:\n message.fecDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 15:\n message.fecExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 16:\n message.fecRoots = reader.uint32();\n break;\n case 17:\n message.version = reader.string();\n break;\n case 18:\n if (!(message.mergeOperations && message.mergeOperations.length))\n message.mergeOperations = [];\n message.mergeOperations.push($root.chromeos_update_engine.CowMergeOperation.decode(reader, reader.uint32()));\n break;\n case 19:\n message.estimateCowSize = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"partitionName\"))\n throw $util.ProtocolError(\"missing required 'partitionName'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionUpdate message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionUpdate.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.partitionName))\n return \"partitionName: string expected\";\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n if (typeof message.runPostinstall !== \"boolean\")\n return \"runPostinstall: boolean expected\";\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n if (!$util.isString(message.postinstallPath))\n return \"postinstallPath: string expected\";\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n if (!$util.isString(message.filesystemType))\n return \"filesystemType: string expected\";\n if (message.newPartitionSignature != null && message.hasOwnProperty(\"newPartitionSignature\")) {\n if (!Array.isArray(message.newPartitionSignature))\n return \"newPartitionSignature: array expected\";\n for (let i = 0; i < message.newPartitionSignature.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.newPartitionSignature[i]);\n if (error)\n return \"newPartitionSignature.\" + error;\n }\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldPartitionInfo);\n if (error)\n return \"oldPartitionInfo.\" + error;\n }\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newPartitionInfo);\n if (error)\n return \"newPartitionInfo.\" + error;\n }\n if (message.operations != null && message.hasOwnProperty(\"operations\")) {\n if (!Array.isArray(message.operations))\n return \"operations: array expected\";\n for (let i = 0; i < message.operations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.operations[i]);\n if (error)\n return \"operations.\" + error;\n }\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n if (typeof message.postinstallOptional !== \"boolean\")\n return \"postinstallOptional: boolean expected\";\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeDataExtent);\n if (error)\n return \"hashTreeDataExtent.\" + error;\n }\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeExtent);\n if (error)\n return \"hashTreeExtent.\" + error;\n }\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n if (!$util.isString(message.hashTreeAlgorithm))\n return \"hashTreeAlgorithm: string expected\";\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n if (!(message.hashTreeSalt && typeof message.hashTreeSalt.length === \"number\" || $util.isString(message.hashTreeSalt)))\n return \"hashTreeSalt: buffer expected\";\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecDataExtent);\n if (error)\n return \"fecDataExtent.\" + error;\n }\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecExtent);\n if (error)\n return \"fecExtent.\" + error;\n }\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n if (!$util.isInteger(message.fecRoots))\n return \"fecRoots: integer expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.mergeOperations != null && message.hasOwnProperty(\"mergeOperations\")) {\n if (!Array.isArray(message.mergeOperations))\n return \"mergeOperations: array expected\";\n for (let i = 0; i < message.mergeOperations.length; ++i) {\n let error = $root.chromeos_update_engine.CowMergeOperation.verify(message.mergeOperations[i]);\n if (error)\n return \"mergeOperations.\" + error;\n }\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (!$util.isInteger(message.estimateCowSize) && !(message.estimateCowSize && $util.isInteger(message.estimateCowSize.low) && $util.isInteger(message.estimateCowSize.high)))\n return \"estimateCowSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a PartitionUpdate message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n */\n PartitionUpdate.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionUpdate)\n return object;\n let message = new $root.chromeos_update_engine.PartitionUpdate();\n if (object.partitionName != null)\n message.partitionName = String(object.partitionName);\n if (object.runPostinstall != null)\n message.runPostinstall = Boolean(object.runPostinstall);\n if (object.postinstallPath != null)\n message.postinstallPath = String(object.postinstallPath);\n if (object.filesystemType != null)\n message.filesystemType = String(object.filesystemType);\n if (object.newPartitionSignature) {\n if (!Array.isArray(object.newPartitionSignature))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: array expected\");\n message.newPartitionSignature = [];\n for (let i = 0; i < object.newPartitionSignature.length; ++i) {\n if (typeof object.newPartitionSignature[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: object expected\");\n message.newPartitionSignature[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.newPartitionSignature[i]);\n }\n }\n if (object.oldPartitionInfo != null) {\n if (typeof object.oldPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.oldPartitionInfo: object expected\");\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldPartitionInfo);\n }\n if (object.newPartitionInfo != null) {\n if (typeof object.newPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionInfo: object expected\");\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newPartitionInfo);\n }\n if (object.operations) {\n if (!Array.isArray(object.operations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: array expected\");\n message.operations = [];\n for (let i = 0; i < object.operations.length; ++i) {\n if (typeof object.operations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: object expected\");\n message.operations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.operations[i]);\n }\n }\n if (object.postinstallOptional != null)\n message.postinstallOptional = Boolean(object.postinstallOptional);\n if (object.hashTreeDataExtent != null) {\n if (typeof object.hashTreeDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeDataExtent: object expected\");\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeDataExtent);\n }\n if (object.hashTreeExtent != null) {\n if (typeof object.hashTreeExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeExtent: object expected\");\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeExtent);\n }\n if (object.hashTreeAlgorithm != null)\n message.hashTreeAlgorithm = String(object.hashTreeAlgorithm);\n if (object.hashTreeSalt != null)\n if (typeof object.hashTreeSalt === \"string\")\n $util.base64.decode(object.hashTreeSalt, message.hashTreeSalt = $util.newBuffer($util.base64.length(object.hashTreeSalt)), 0);\n else if (object.hashTreeSalt.length)\n message.hashTreeSalt = object.hashTreeSalt;\n if (object.fecDataExtent != null) {\n if (typeof object.fecDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecDataExtent: object expected\");\n message.fecDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecDataExtent);\n }\n if (object.fecExtent != null) {\n if (typeof object.fecExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecExtent: object expected\");\n message.fecExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecExtent);\n }\n if (object.fecRoots != null)\n message.fecRoots = object.fecRoots >>> 0;\n if (object.version != null)\n message.version = String(object.version);\n if (object.mergeOperations) {\n if (!Array.isArray(object.mergeOperations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected\");\n message.mergeOperations = [];\n for (let i = 0; i < object.mergeOperations.length; ++i) {\n if (typeof object.mergeOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: object expected\");\n message.mergeOperations[i] = $root.chromeos_update_engine.CowMergeOperation.fromObject(object.mergeOperations[i]);\n }\n }\n if (object.estimateCowSize != null)\n if ($util.Long)\n (message.estimateCowSize = $util.Long.fromValue(object.estimateCowSize)).unsigned = true;\n else if (typeof object.estimateCowSize === \"string\")\n message.estimateCowSize = parseInt(object.estimateCowSize, 10);\n else if (typeof object.estimateCowSize === \"number\")\n message.estimateCowSize = object.estimateCowSize;\n else if (typeof object.estimateCowSize === \"object\")\n message.estimateCowSize = new $util.LongBits(object.estimateCowSize.low >>> 0, object.estimateCowSize.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionUpdate message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.PartitionUpdate} message PartitionUpdate\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionUpdate.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.newPartitionSignature = [];\n object.operations = [];\n object.mergeOperations = [];\n }\n if (options.defaults) {\n object.partitionName = \"\";\n object.runPostinstall = false;\n object.postinstallPath = \"\";\n object.filesystemType = \"\";\n object.oldPartitionInfo = null;\n object.newPartitionInfo = null;\n object.postinstallOptional = false;\n object.hashTreeDataExtent = null;\n object.hashTreeExtent = null;\n object.hashTreeAlgorithm = \"\";\n if (options.bytes === String)\n object.hashTreeSalt = \"\";\n else {\n object.hashTreeSalt = [];\n if (options.bytes !== Array)\n object.hashTreeSalt = $util.newBuffer(object.hashTreeSalt);\n }\n object.fecDataExtent = null;\n object.fecExtent = null;\n object.fecRoots = 2;\n object.version = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.estimateCowSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.estimateCowSize = options.longs === String ? \"0\" : 0;\n }\n if (message.partitionName != null && message.hasOwnProperty(\"partitionName\"))\n object.partitionName = message.partitionName;\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n object.runPostinstall = message.runPostinstall;\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n object.postinstallPath = message.postinstallPath;\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n object.filesystemType = message.filesystemType;\n if (message.newPartitionSignature && message.newPartitionSignature.length) {\n object.newPartitionSignature = [];\n for (let j = 0; j < message.newPartitionSignature.length; ++j)\n object.newPartitionSignature[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.newPartitionSignature[j], options);\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\"))\n object.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldPartitionInfo, options);\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\"))\n object.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newPartitionInfo, options);\n if (message.operations && message.operations.length) {\n object.operations = [];\n for (let j = 0; j < message.operations.length; ++j)\n object.operations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.operations[j], options);\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n object.postinstallOptional = message.postinstallOptional;\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\"))\n object.hashTreeDataExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeDataExtent, options);\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\"))\n object.hashTreeExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeExtent, options);\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n object.hashTreeAlgorithm = message.hashTreeAlgorithm;\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n object.hashTreeSalt = options.bytes === String ? $util.base64.encode(message.hashTreeSalt, 0, message.hashTreeSalt.length) : options.bytes === Array ? Array.prototype.slice.call(message.hashTreeSalt) : message.hashTreeSalt;\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\"))\n object.fecDataExtent = $root.chromeos_update_engine.Extent.toObject(message.fecDataExtent, options);\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\"))\n object.fecExtent = $root.chromeos_update_engine.Extent.toObject(message.fecExtent, options);\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n object.fecRoots = message.fecRoots;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.mergeOperations && message.mergeOperations.length) {\n object.mergeOperations = [];\n for (let j = 0; j < message.mergeOperations.length; ++j)\n object.mergeOperations[j] = $root.chromeos_update_engine.CowMergeOperation.toObject(message.mergeOperations[j], options);\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (typeof message.estimateCowSize === \"number\")\n object.estimateCowSize = options.longs === String ? String(message.estimateCowSize) : message.estimateCowSize;\n else\n object.estimateCowSize = options.longs === String ? $util.Long.prototype.toString.call(message.estimateCowSize) : options.longs === Number ? new $util.LongBits(message.estimateCowSize.low >>> 0, message.estimateCowSize.high >>> 0).toNumber(true) : message.estimateCowSize;\n return object;\n };\n\n /**\n * Converts this PartitionUpdate to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionUpdate.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionUpdate;\n })();\n\n chromeos_update_engine.DynamicPartitionGroup = (function() {\n\n /**\n * Properties of a DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionGroup\n * @property {string} name DynamicPartitionGroup name\n * @property {number|Long|null} [size] DynamicPartitionGroup size\n * @property {Array.|null} [partitionNames] DynamicPartitionGroup partitionNames\n */\n\n /**\n * Constructs a new DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionGroup.\n * @implements IDynamicPartitionGroup\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n */\n function DynamicPartitionGroup(properties) {\n this.partitionNames = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionGroup name.\n * @member {string} name\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.name = \"\";\n\n /**\n * DynamicPartitionGroup size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DynamicPartitionGroup partitionNames.\n * @member {Array.} partitionNames\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.partitionNames = $util.emptyArray;\n\n /**\n * Creates a new DynamicPartitionGroup instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup instance\n */\n DynamicPartitionGroup.create = function create(properties) {\n return new DynamicPartitionGroup(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.size);\n if (message.partitionNames != null && message.partitionNames.length)\n for (let i = 0; i < message.partitionNames.length; ++i)\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.partitionNames[i]);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.name = reader.string();\n break;\n case 2:\n message.size = reader.uint64();\n break;\n case 3:\n if (!(message.partitionNames && message.partitionNames.length))\n message.partitionNames = [];\n message.partitionNames.push(reader.string());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"name\"))\n throw $util.ProtocolError(\"missing required 'name'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionGroup message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionGroup.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.partitionNames != null && message.hasOwnProperty(\"partitionNames\")) {\n if (!Array.isArray(message.partitionNames))\n return \"partitionNames: array expected\";\n for (let i = 0; i < message.partitionNames.length; ++i)\n if (!$util.isString(message.partitionNames[i]))\n return \"partitionNames: string[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a DynamicPartitionGroup message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n */\n DynamicPartitionGroup.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionGroup)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n if (object.name != null)\n message.name = String(object.name);\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.partitionNames) {\n if (!Array.isArray(object.partitionNames))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected\");\n message.partitionNames = [];\n for (let i = 0; i < object.partitionNames.length; ++i)\n message.partitionNames[i] = String(object.partitionNames[i]);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionGroup message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.DynamicPartitionGroup} message DynamicPartitionGroup\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionGroup.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.partitionNames = [];\n if (options.defaults) {\n object.name = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.partitionNames && message.partitionNames.length) {\n object.partitionNames = [];\n for (let j = 0; j < message.partitionNames.length; ++j)\n object.partitionNames[j] = message.partitionNames[j];\n }\n return object;\n };\n\n /**\n * Converts this DynamicPartitionGroup to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionGroup.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionGroup;\n })();\n\n chromeos_update_engine.DynamicPartitionMetadata = (function() {\n\n /**\n * Properties of a DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionMetadata\n * @property {Array.|null} [groups] DynamicPartitionMetadata groups\n * @property {boolean|null} [snapshotEnabled] DynamicPartitionMetadata snapshotEnabled\n * @property {boolean|null} [vabcEnabled] DynamicPartitionMetadata vabcEnabled\n * @property {string|null} [vabcCompressionParam] DynamicPartitionMetadata vabcCompressionParam\n * @property {number|null} [cowVersion] DynamicPartitionMetadata cowVersion\n */\n\n /**\n * Constructs a new DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionMetadata.\n * @implements IDynamicPartitionMetadata\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n */\n function DynamicPartitionMetadata(properties) {\n this.groups = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionMetadata groups.\n * @member {Array.} groups\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.groups = $util.emptyArray;\n\n /**\n * DynamicPartitionMetadata snapshotEnabled.\n * @member {boolean} snapshotEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.snapshotEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcEnabled.\n * @member {boolean} vabcEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcCompressionParam.\n * @member {string} vabcCompressionParam\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcCompressionParam = \"\";\n\n /**\n * DynamicPartitionMetadata cowVersion.\n * @member {number} cowVersion\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.cowVersion = 0;\n\n /**\n * Creates a new DynamicPartitionMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata instance\n */\n DynamicPartitionMetadata.create = function create(properties) {\n return new DynamicPartitionMetadata(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.groups != null && message.groups.length)\n for (let i = 0; i < message.groups.length; ++i)\n $root.chromeos_update_engine.DynamicPartitionGroup.encode(message.groups[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.snapshotEnabled != null && Object.hasOwnProperty.call(message, \"snapshotEnabled\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.snapshotEnabled);\n if (message.vabcEnabled != null && Object.hasOwnProperty.call(message, \"vabcEnabled\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.vabcEnabled);\n if (message.vabcCompressionParam != null && Object.hasOwnProperty.call(message, \"vabcCompressionParam\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.vabcCompressionParam);\n if (message.cowVersion != null && Object.hasOwnProperty.call(message, \"cowVersion\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.cowVersion);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.groups && message.groups.length))\n message.groups = [];\n message.groups.push($root.chromeos_update_engine.DynamicPartitionGroup.decode(reader, reader.uint32()));\n break;\n case 2:\n message.snapshotEnabled = reader.bool();\n break;\n case 3:\n message.vabcEnabled = reader.bool();\n break;\n case 4:\n message.vabcCompressionParam = reader.string();\n break;\n case 5:\n message.cowVersion = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.groups != null && message.hasOwnProperty(\"groups\")) {\n if (!Array.isArray(message.groups))\n return \"groups: array expected\";\n for (let i = 0; i < message.groups.length; ++i) {\n let error = $root.chromeos_update_engine.DynamicPartitionGroup.verify(message.groups[i]);\n if (error)\n return \"groups.\" + error;\n }\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n if (typeof message.snapshotEnabled !== \"boolean\")\n return \"snapshotEnabled: boolean expected\";\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n if (typeof message.vabcEnabled !== \"boolean\")\n return \"vabcEnabled: boolean expected\";\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n if (!$util.isString(message.vabcCompressionParam))\n return \"vabcCompressionParam: string expected\";\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n if (!$util.isInteger(message.cowVersion))\n return \"cowVersion: integer expected\";\n return null;\n };\n\n /**\n * Creates a DynamicPartitionMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n */\n DynamicPartitionMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionMetadata)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n if (object.groups) {\n if (!Array.isArray(object.groups))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: array expected\");\n message.groups = [];\n for (let i = 0; i < object.groups.length; ++i) {\n if (typeof object.groups[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: object expected\");\n message.groups[i] = $root.chromeos_update_engine.DynamicPartitionGroup.fromObject(object.groups[i]);\n }\n }\n if (object.snapshotEnabled != null)\n message.snapshotEnabled = Boolean(object.snapshotEnabled);\n if (object.vabcEnabled != null)\n message.vabcEnabled = Boolean(object.vabcEnabled);\n if (object.vabcCompressionParam != null)\n message.vabcCompressionParam = String(object.vabcCompressionParam);\n if (object.cowVersion != null)\n message.cowVersion = object.cowVersion >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.DynamicPartitionMetadata} message DynamicPartitionMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.groups = [];\n if (options.defaults) {\n object.snapshotEnabled = false;\n object.vabcEnabled = false;\n object.vabcCompressionParam = \"\";\n object.cowVersion = 0;\n }\n if (message.groups && message.groups.length) {\n object.groups = [];\n for (let j = 0; j < message.groups.length; ++j)\n object.groups[j] = $root.chromeos_update_engine.DynamicPartitionGroup.toObject(message.groups[j], options);\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n object.snapshotEnabled = message.snapshotEnabled;\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n object.vabcEnabled = message.vabcEnabled;\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n object.vabcCompressionParam = message.vabcCompressionParam;\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n object.cowVersion = message.cowVersion;\n return object;\n };\n\n /**\n * Converts this DynamicPartitionMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionMetadata;\n })();\n\n chromeos_update_engine.ApexInfo = (function() {\n\n /**\n * Properties of an ApexInfo.\n * @memberof chromeos_update_engine\n * @interface IApexInfo\n * @property {string|null} [packageName] ApexInfo packageName\n * @property {number|Long|null} [version] ApexInfo version\n * @property {boolean|null} [isCompressed] ApexInfo isCompressed\n * @property {number|Long|null} [decompressedSize] ApexInfo decompressedSize\n */\n\n /**\n * Constructs a new ApexInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexInfo.\n * @implements IApexInfo\n * @constructor\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n */\n function ApexInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexInfo packageName.\n * @member {string} packageName\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.packageName = \"\";\n\n /**\n * ApexInfo version.\n * @member {number|Long} version\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * ApexInfo isCompressed.\n * @member {boolean} isCompressed\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.isCompressed = false;\n\n /**\n * ApexInfo decompressedSize.\n * @member {number|Long} decompressedSize\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.decompressedSize = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * Creates a new ApexInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo instance\n */\n ApexInfo.create = function create(properties) {\n return new ApexInfo(properties);\n };\n\n /**\n * Encodes the specified ApexInfo message. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.packageName != null && Object.hasOwnProperty.call(message, \"packageName\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.packageName);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.version);\n if (message.isCompressed != null && Object.hasOwnProperty.call(message, \"isCompressed\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isCompressed);\n if (message.decompressedSize != null && Object.hasOwnProperty.call(message, \"decompressedSize\"))\n writer.uint32(/* id 4, wireType 0 =*/32).int64(message.decompressedSize);\n return writer;\n };\n\n /**\n * Encodes the specified ApexInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.packageName = reader.string();\n break;\n case 2:\n message.version = reader.int64();\n break;\n case 3:\n message.isCompressed = reader.bool();\n break;\n case 4:\n message.decompressedSize = reader.int64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n if (!$util.isString(message.packageName))\n return \"packageName: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high)))\n return \"version: integer|Long expected\";\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n if (typeof message.isCompressed !== \"boolean\")\n return \"isCompressed: boolean expected\";\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (!$util.isInteger(message.decompressedSize) && !(message.decompressedSize && $util.isInteger(message.decompressedSize.low) && $util.isInteger(message.decompressedSize.high)))\n return \"decompressedSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an ApexInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n */\n ApexInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexInfo)\n return object;\n let message = new $root.chromeos_update_engine.ApexInfo();\n if (object.packageName != null)\n message.packageName = String(object.packageName);\n if (object.version != null)\n if ($util.Long)\n (message.version = $util.Long.fromValue(object.version)).unsigned = false;\n else if (typeof object.version === \"string\")\n message.version = parseInt(object.version, 10);\n else if (typeof object.version === \"number\")\n message.version = object.version;\n else if (typeof object.version === \"object\")\n message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber();\n if (object.isCompressed != null)\n message.isCompressed = Boolean(object.isCompressed);\n if (object.decompressedSize != null)\n if ($util.Long)\n (message.decompressedSize = $util.Long.fromValue(object.decompressedSize)).unsigned = false;\n else if (typeof object.decompressedSize === \"string\")\n message.decompressedSize = parseInt(object.decompressedSize, 10);\n else if (typeof object.decompressedSize === \"number\")\n message.decompressedSize = object.decompressedSize;\n else if (typeof object.decompressedSize === \"object\")\n message.decompressedSize = new $util.LongBits(object.decompressedSize.low >>> 0, object.decompressedSize.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from an ApexInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.ApexInfo} message ApexInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.packageName = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.version = options.longs === String ? \"0\" : 0;\n object.isCompressed = false;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.decompressedSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.decompressedSize = options.longs === String ? \"0\" : 0;\n }\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n object.packageName = message.packageName;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (typeof message.version === \"number\")\n object.version = options.longs === String ? String(message.version) : message.version;\n else\n object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version;\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n object.isCompressed = message.isCompressed;\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (typeof message.decompressedSize === \"number\")\n object.decompressedSize = options.longs === String ? String(message.decompressedSize) : message.decompressedSize;\n else\n object.decompressedSize = options.longs === String ? $util.Long.prototype.toString.call(message.decompressedSize) : options.longs === Number ? new $util.LongBits(message.decompressedSize.low >>> 0, message.decompressedSize.high >>> 0).toNumber() : message.decompressedSize;\n return object;\n };\n\n /**\n * Converts this ApexInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ApexInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexInfo;\n })();\n\n chromeos_update_engine.ApexMetadata = (function() {\n\n /**\n * Properties of an ApexMetadata.\n * @memberof chromeos_update_engine\n * @interface IApexMetadata\n * @property {Array.|null} [apexInfo] ApexMetadata apexInfo\n */\n\n /**\n * Constructs a new ApexMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexMetadata.\n * @implements IApexMetadata\n * @constructor\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n */\n function ApexMetadata(properties) {\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexMetadata apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n */\n ApexMetadata.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new ApexMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata instance\n */\n ApexMetadata.create = function create(properties) {\n return new ApexMetadata(properties);\n };\n\n /**\n * Encodes the specified ApexMetadata message. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified ApexMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates an ApexMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n */\n ApexMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexMetadata)\n return object;\n let message = new $root.chromeos_update_engine.ApexMetadata();\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from an ApexMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.ApexMetadata} message ApexMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.apexInfo = [];\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this ApexMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n ApexMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexMetadata;\n })();\n\n chromeos_update_engine.DeltaArchiveManifest = (function() {\n\n /**\n * Properties of a DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @interface IDeltaArchiveManifest\n * @property {Array.|null} [installOperations] DeltaArchiveManifest installOperations\n * @property {Array.|null} [kernelInstallOperations] DeltaArchiveManifest kernelInstallOperations\n * @property {number|null} [blockSize] DeltaArchiveManifest blockSize\n * @property {number|Long|null} [signaturesOffset] DeltaArchiveManifest signaturesOffset\n * @property {number|Long|null} [signaturesSize] DeltaArchiveManifest signaturesSize\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldKernelInfo] DeltaArchiveManifest oldKernelInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newKernelInfo] DeltaArchiveManifest newKernelInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldRootfsInfo] DeltaArchiveManifest oldRootfsInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newRootfsInfo] DeltaArchiveManifest newRootfsInfo\n * @property {chromeos_update_engine.IImageInfo|null} [oldImageInfo] DeltaArchiveManifest oldImageInfo\n * @property {chromeos_update_engine.IImageInfo|null} [newImageInfo] DeltaArchiveManifest newImageInfo\n * @property {number|null} [minorVersion] DeltaArchiveManifest minorVersion\n * @property {Array.|null} [partitions] DeltaArchiveManifest partitions\n * @property {number|Long|null} [maxTimestamp] DeltaArchiveManifest maxTimestamp\n * @property {chromeos_update_engine.IDynamicPartitionMetadata|null} [dynamicPartitionMetadata] DeltaArchiveManifest dynamicPartitionMetadata\n * @property {boolean|null} [partialUpdate] DeltaArchiveManifest partialUpdate\n * @property {Array.|null} [apexInfo] DeltaArchiveManifest apexInfo\n */\n\n /**\n * Constructs a new DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DeltaArchiveManifest.\n * @implements IDeltaArchiveManifest\n * @constructor\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n */\n function DeltaArchiveManifest(properties) {\n this.installOperations = [];\n this.kernelInstallOperations = [];\n this.partitions = [];\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DeltaArchiveManifest installOperations.\n * @member {Array.} installOperations\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.installOperations = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest kernelInstallOperations.\n * @member {Array.} kernelInstallOperations\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.kernelInstallOperations = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest blockSize.\n * @member {number} blockSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.blockSize = 4096;\n\n /**\n * DeltaArchiveManifest signaturesOffset.\n * @member {number|Long} signaturesOffset\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest signaturesSize.\n * @member {number|Long} signaturesSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest oldKernelInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldKernelInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.oldKernelInfo = null;\n\n /**\n * DeltaArchiveManifest newKernelInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newKernelInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.newKernelInfo = null;\n\n /**\n * DeltaArchiveManifest oldRootfsInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldRootfsInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.oldRootfsInfo = null;\n\n /**\n * DeltaArchiveManifest newRootfsInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newRootfsInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.newRootfsInfo = null;\n\n /**\n * DeltaArchiveManifest oldImageInfo.\n * @member {chromeos_update_engine.IImageInfo|null|undefined} oldImageInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.oldImageInfo = null;\n\n /**\n * DeltaArchiveManifest newImageInfo.\n * @member {chromeos_update_engine.IImageInfo|null|undefined} newImageInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.newImageInfo = null;\n\n /**\n * DeltaArchiveManifest minorVersion.\n * @member {number} minorVersion\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.minorVersion = 0;\n\n /**\n * DeltaArchiveManifest partitions.\n * @member {Array.} partitions\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partitions = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest maxTimestamp.\n * @member {number|Long} maxTimestamp\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.maxTimestamp = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * DeltaArchiveManifest dynamicPartitionMetadata.\n * @member {chromeos_update_engine.IDynamicPartitionMetadata|null|undefined} dynamicPartitionMetadata\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.dynamicPartitionMetadata = null;\n\n /**\n * DeltaArchiveManifest partialUpdate.\n * @member {boolean} partialUpdate\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partialUpdate = false;\n\n /**\n * DeltaArchiveManifest apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new DeltaArchiveManifest instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest instance\n */\n DeltaArchiveManifest.create = function create(properties) {\n return new DeltaArchiveManifest(properties);\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.installOperations != null && message.installOperations.length)\n for (let i = 0; i < message.installOperations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.installOperations[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.kernelInstallOperations != null && message.kernelInstallOperations.length)\n for (let i = 0; i < message.kernelInstallOperations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.kernelInstallOperations[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.blockSize != null && Object.hasOwnProperty.call(message, \"blockSize\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.blockSize);\n if (message.signaturesOffset != null && Object.hasOwnProperty.call(message, \"signaturesOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.signaturesOffset);\n if (message.signaturesSize != null && Object.hasOwnProperty.call(message, \"signaturesSize\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.signaturesSize);\n if (message.oldKernelInfo != null && Object.hasOwnProperty.call(message, \"oldKernelInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldKernelInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newKernelInfo != null && Object.hasOwnProperty.call(message, \"newKernelInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newKernelInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.oldRootfsInfo != null && Object.hasOwnProperty.call(message, \"oldRootfsInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldRootfsInfo, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.newRootfsInfo != null && Object.hasOwnProperty.call(message, \"newRootfsInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newRootfsInfo, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim();\n if (message.oldImageInfo != null && Object.hasOwnProperty.call(message, \"oldImageInfo\"))\n $root.chromeos_update_engine.ImageInfo.encode(message.oldImageInfo, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.newImageInfo != null && Object.hasOwnProperty.call(message, \"newImageInfo\"))\n $root.chromeos_update_engine.ImageInfo.encode(message.newImageInfo, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.minorVersion != null && Object.hasOwnProperty.call(message, \"minorVersion\"))\n writer.uint32(/* id 12, wireType 0 =*/96).uint32(message.minorVersion);\n if (message.partitions != null && message.partitions.length)\n for (let i = 0; i < message.partitions.length; ++i)\n $root.chromeos_update_engine.PartitionUpdate.encode(message.partitions[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();\n if (message.maxTimestamp != null && Object.hasOwnProperty.call(message, \"maxTimestamp\"))\n writer.uint32(/* id 14, wireType 0 =*/112).int64(message.maxTimestamp);\n if (message.dynamicPartitionMetadata != null && Object.hasOwnProperty.call(message, \"dynamicPartitionMetadata\"))\n $root.chromeos_update_engine.DynamicPartitionMetadata.encode(message.dynamicPartitionMetadata, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.partialUpdate != null && Object.hasOwnProperty.call(message, \"partialUpdate\"))\n writer.uint32(/* id 16, wireType 0 =*/128).bool(message.partialUpdate);\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message, length delimited. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.installOperations && message.installOperations.length))\n message.installOperations = [];\n message.installOperations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 2:\n if (!(message.kernelInstallOperations && message.kernelInstallOperations.length))\n message.kernelInstallOperations = [];\n message.kernelInstallOperations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 3:\n message.blockSize = reader.uint32();\n break;\n case 4:\n message.signaturesOffset = reader.uint64();\n break;\n case 5:\n message.signaturesSize = reader.uint64();\n break;\n case 6:\n message.oldKernelInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newKernelInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n message.oldRootfsInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 9:\n message.newRootfsInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 10:\n message.oldImageInfo = $root.chromeos_update_engine.ImageInfo.decode(reader, reader.uint32());\n break;\n case 11:\n message.newImageInfo = $root.chromeos_update_engine.ImageInfo.decode(reader, reader.uint32());\n break;\n case 12:\n message.minorVersion = reader.uint32();\n break;\n case 13:\n if (!(message.partitions && message.partitions.length))\n message.partitions = [];\n message.partitions.push($root.chromeos_update_engine.PartitionUpdate.decode(reader, reader.uint32()));\n break;\n case 14:\n message.maxTimestamp = reader.int64();\n break;\n case 15:\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.decode(reader, reader.uint32());\n break;\n case 16:\n message.partialUpdate = reader.bool();\n break;\n case 17:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DeltaArchiveManifest message.\n * @function verify\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DeltaArchiveManifest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.installOperations != null && message.hasOwnProperty(\"installOperations\")) {\n if (!Array.isArray(message.installOperations))\n return \"installOperations: array expected\";\n for (let i = 0; i < message.installOperations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.installOperations[i]);\n if (error)\n return \"installOperations.\" + error;\n }\n }\n if (message.kernelInstallOperations != null && message.hasOwnProperty(\"kernelInstallOperations\")) {\n if (!Array.isArray(message.kernelInstallOperations))\n return \"kernelInstallOperations: array expected\";\n for (let i = 0; i < message.kernelInstallOperations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.kernelInstallOperations[i]);\n if (error)\n return \"kernelInstallOperations.\" + error;\n }\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n if (!$util.isInteger(message.blockSize))\n return \"blockSize: integer expected\";\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (!$util.isInteger(message.signaturesOffset) && !(message.signaturesOffset && $util.isInteger(message.signaturesOffset.low) && $util.isInteger(message.signaturesOffset.high)))\n return \"signaturesOffset: integer|Long expected\";\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (!$util.isInteger(message.signaturesSize) && !(message.signaturesSize && $util.isInteger(message.signaturesSize.low) && $util.isInteger(message.signaturesSize.high)))\n return \"signaturesSize: integer|Long expected\";\n if (message.oldKernelInfo != null && message.hasOwnProperty(\"oldKernelInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldKernelInfo);\n if (error)\n return \"oldKernelInfo.\" + error;\n }\n if (message.newKernelInfo != null && message.hasOwnProperty(\"newKernelInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newKernelInfo);\n if (error)\n return \"newKernelInfo.\" + error;\n }\n if (message.oldRootfsInfo != null && message.hasOwnProperty(\"oldRootfsInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldRootfsInfo);\n if (error)\n return \"oldRootfsInfo.\" + error;\n }\n if (message.newRootfsInfo != null && message.hasOwnProperty(\"newRootfsInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newRootfsInfo);\n if (error)\n return \"newRootfsInfo.\" + error;\n }\n if (message.oldImageInfo != null && message.hasOwnProperty(\"oldImageInfo\")) {\n let error = $root.chromeos_update_engine.ImageInfo.verify(message.oldImageInfo);\n if (error)\n return \"oldImageInfo.\" + error;\n }\n if (message.newImageInfo != null && message.hasOwnProperty(\"newImageInfo\")) {\n let error = $root.chromeos_update_engine.ImageInfo.verify(message.newImageInfo);\n if (error)\n return \"newImageInfo.\" + error;\n }\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n if (!$util.isInteger(message.minorVersion))\n return \"minorVersion: integer expected\";\n if (message.partitions != null && message.hasOwnProperty(\"partitions\")) {\n if (!Array.isArray(message.partitions))\n return \"partitions: array expected\";\n for (let i = 0; i < message.partitions.length; ++i) {\n let error = $root.chromeos_update_engine.PartitionUpdate.verify(message.partitions[i]);\n if (error)\n return \"partitions.\" + error;\n }\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (!$util.isInteger(message.maxTimestamp) && !(message.maxTimestamp && $util.isInteger(message.maxTimestamp.low) && $util.isInteger(message.maxTimestamp.high)))\n return \"maxTimestamp: integer|Long expected\";\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\")) {\n let error = $root.chromeos_update_engine.DynamicPartitionMetadata.verify(message.dynamicPartitionMetadata);\n if (error)\n return \"dynamicPartitionMetadata.\" + error;\n }\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n if (typeof message.partialUpdate !== \"boolean\")\n return \"partialUpdate: boolean expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a DeltaArchiveManifest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n */\n DeltaArchiveManifest.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DeltaArchiveManifest)\n return object;\n let message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n if (object.installOperations) {\n if (!Array.isArray(object.installOperations))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.installOperations: array expected\");\n message.installOperations = [];\n for (let i = 0; i < object.installOperations.length; ++i) {\n if (typeof object.installOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.installOperations: object expected\");\n message.installOperations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.installOperations[i]);\n }\n }\n if (object.kernelInstallOperations) {\n if (!Array.isArray(object.kernelInstallOperations))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.kernelInstallOperations: array expected\");\n message.kernelInstallOperations = [];\n for (let i = 0; i < object.kernelInstallOperations.length; ++i) {\n if (typeof object.kernelInstallOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.kernelInstallOperations: object expected\");\n message.kernelInstallOperations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.kernelInstallOperations[i]);\n }\n }\n if (object.blockSize != null)\n message.blockSize = object.blockSize >>> 0;\n if (object.signaturesOffset != null)\n if ($util.Long)\n (message.signaturesOffset = $util.Long.fromValue(object.signaturesOffset)).unsigned = true;\n else if (typeof object.signaturesOffset === \"string\")\n message.signaturesOffset = parseInt(object.signaturesOffset, 10);\n else if (typeof object.signaturesOffset === \"number\")\n message.signaturesOffset = object.signaturesOffset;\n else if (typeof object.signaturesOffset === \"object\")\n message.signaturesOffset = new $util.LongBits(object.signaturesOffset.low >>> 0, object.signaturesOffset.high >>> 0).toNumber(true);\n if (object.signaturesSize != null)\n if ($util.Long)\n (message.signaturesSize = $util.Long.fromValue(object.signaturesSize)).unsigned = true;\n else if (typeof object.signaturesSize === \"string\")\n message.signaturesSize = parseInt(object.signaturesSize, 10);\n else if (typeof object.signaturesSize === \"number\")\n message.signaturesSize = object.signaturesSize;\n else if (typeof object.signaturesSize === \"object\")\n message.signaturesSize = new $util.LongBits(object.signaturesSize.low >>> 0, object.signaturesSize.high >>> 0).toNumber(true);\n if (object.oldKernelInfo != null) {\n if (typeof object.oldKernelInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.oldKernelInfo: object expected\");\n message.oldKernelInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldKernelInfo);\n }\n if (object.newKernelInfo != null) {\n if (typeof object.newKernelInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.newKernelInfo: object expected\");\n message.newKernelInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newKernelInfo);\n }\n if (object.oldRootfsInfo != null) {\n if (typeof object.oldRootfsInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.oldRootfsInfo: object expected\");\n message.oldRootfsInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldRootfsInfo);\n }\n if (object.newRootfsInfo != null) {\n if (typeof object.newRootfsInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.newRootfsInfo: object expected\");\n message.newRootfsInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newRootfsInfo);\n }\n if (object.oldImageInfo != null) {\n if (typeof object.oldImageInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.oldImageInfo: object expected\");\n message.oldImageInfo = $root.chromeos_update_engine.ImageInfo.fromObject(object.oldImageInfo);\n }\n if (object.newImageInfo != null) {\n if (typeof object.newImageInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.newImageInfo: object expected\");\n message.newImageInfo = $root.chromeos_update_engine.ImageInfo.fromObject(object.newImageInfo);\n }\n if (object.minorVersion != null)\n message.minorVersion = object.minorVersion >>> 0;\n if (object.partitions) {\n if (!Array.isArray(object.partitions))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected\");\n message.partitions = [];\n for (let i = 0; i < object.partitions.length; ++i) {\n if (typeof object.partitions[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: object expected\");\n message.partitions[i] = $root.chromeos_update_engine.PartitionUpdate.fromObject(object.partitions[i]);\n }\n }\n if (object.maxTimestamp != null)\n if ($util.Long)\n (message.maxTimestamp = $util.Long.fromValue(object.maxTimestamp)).unsigned = false;\n else if (typeof object.maxTimestamp === \"string\")\n message.maxTimestamp = parseInt(object.maxTimestamp, 10);\n else if (typeof object.maxTimestamp === \"number\")\n message.maxTimestamp = object.maxTimestamp;\n else if (typeof object.maxTimestamp === \"object\")\n message.maxTimestamp = new $util.LongBits(object.maxTimestamp.low >>> 0, object.maxTimestamp.high >>> 0).toNumber();\n if (object.dynamicPartitionMetadata != null) {\n if (typeof object.dynamicPartitionMetadata !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected\");\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.fromObject(object.dynamicPartitionMetadata);\n }\n if (object.partialUpdate != null)\n message.partialUpdate = Boolean(object.partialUpdate);\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DeltaArchiveManifest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.DeltaArchiveManifest} message DeltaArchiveManifest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DeltaArchiveManifest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.installOperations = [];\n object.kernelInstallOperations = [];\n object.partitions = [];\n object.apexInfo = [];\n }\n if (options.defaults) {\n object.blockSize = 4096;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesSize = options.longs === String ? \"0\" : 0;\n object.oldKernelInfo = null;\n object.newKernelInfo = null;\n object.oldRootfsInfo = null;\n object.newRootfsInfo = null;\n object.oldImageInfo = null;\n object.newImageInfo = null;\n object.minorVersion = 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.maxTimestamp = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.maxTimestamp = options.longs === String ? \"0\" : 0;\n object.dynamicPartitionMetadata = null;\n object.partialUpdate = false;\n }\n if (message.installOperations && message.installOperations.length) {\n object.installOperations = [];\n for (let j = 0; j < message.installOperations.length; ++j)\n object.installOperations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.installOperations[j], options);\n }\n if (message.kernelInstallOperations && message.kernelInstallOperations.length) {\n object.kernelInstallOperations = [];\n for (let j = 0; j < message.kernelInstallOperations.length; ++j)\n object.kernelInstallOperations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.kernelInstallOperations[j], options);\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n object.blockSize = message.blockSize;\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (typeof message.signaturesOffset === \"number\")\n object.signaturesOffset = options.longs === String ? String(message.signaturesOffset) : message.signaturesOffset;\n else\n object.signaturesOffset = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesOffset) : options.longs === Number ? new $util.LongBits(message.signaturesOffset.low >>> 0, message.signaturesOffset.high >>> 0).toNumber(true) : message.signaturesOffset;\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (typeof message.signaturesSize === \"number\")\n object.signaturesSize = options.longs === String ? String(message.signaturesSize) : message.signaturesSize;\n else\n object.signaturesSize = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesSize) : options.longs === Number ? new $util.LongBits(message.signaturesSize.low >>> 0, message.signaturesSize.high >>> 0).toNumber(true) : message.signaturesSize;\n if (message.oldKernelInfo != null && message.hasOwnProperty(\"oldKernelInfo\"))\n object.oldKernelInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldKernelInfo, options);\n if (message.newKernelInfo != null && message.hasOwnProperty(\"newKernelInfo\"))\n object.newKernelInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newKernelInfo, options);\n if (message.oldRootfsInfo != null && message.hasOwnProperty(\"oldRootfsInfo\"))\n object.oldRootfsInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldRootfsInfo, options);\n if (message.newRootfsInfo != null && message.hasOwnProperty(\"newRootfsInfo\"))\n object.newRootfsInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newRootfsInfo, options);\n if (message.oldImageInfo != null && message.hasOwnProperty(\"oldImageInfo\"))\n object.oldImageInfo = $root.chromeos_update_engine.ImageInfo.toObject(message.oldImageInfo, options);\n if (message.newImageInfo != null && message.hasOwnProperty(\"newImageInfo\"))\n object.newImageInfo = $root.chromeos_update_engine.ImageInfo.toObject(message.newImageInfo, options);\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n object.minorVersion = message.minorVersion;\n if (message.partitions && message.partitions.length) {\n object.partitions = [];\n for (let j = 0; j < message.partitions.length; ++j)\n object.partitions[j] = $root.chromeos_update_engine.PartitionUpdate.toObject(message.partitions[j], options);\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (typeof message.maxTimestamp === \"number\")\n object.maxTimestamp = options.longs === String ? String(message.maxTimestamp) : message.maxTimestamp;\n else\n object.maxTimestamp = options.longs === String ? $util.Long.prototype.toString.call(message.maxTimestamp) : options.longs === Number ? new $util.LongBits(message.maxTimestamp.low >>> 0, message.maxTimestamp.high >>> 0).toNumber() : message.maxTimestamp;\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\"))\n object.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.toObject(message.dynamicPartitionMetadata, options);\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n object.partialUpdate = message.partialUpdate;\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this DeltaArchiveManifest to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n * @returns {Object.} JSON object\n */\n DeltaArchiveManifest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DeltaArchiveManifest;\n })();\n\n return chromeos_update_engine;\n})();\n\nexport { $root as default };\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TextWriter, ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { chromeos_update_engine } from './update_metadata_pb.js'\n\n/**\n * Parse the non-A/B OTA package and return it as a DeltaArchiveManifest\n * @param {ZipReader} packedFile\n */\nexport class PayloadNonAB extends chromeos_update_engine.DeltaArchiveManifest {\n nonAB: boolean = true\n Blocksize: number = 4096\n packedFile: ZipReader\n constructor(packedFile: ZipReader) {\n super()\n this.packedFile = packedFile\n }\n\n async init() {\n this.Blocksize = 4096\n this.partialUpdate = false\n this.dynamicPartitionMetadata = new chromeos_update_engine.DynamicPartitionMetadata(\n { snapshotEnabled: false, vabcEnabled: false }\n )\n this.partitions = []\n\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.transfer.list)/g\n const /** Array */ entries = await this.packedFile.getEntries()\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n const match = entry.filename.match(regexName)![0]\n let newPartition = new chromeos_update_engine.PartitionUpdate({\n partitionName: match\n })\n newPartition.rawText = await entry.getData!(new TextWriter())\n await this.parseTransferList(newPartition)\n this.partitions.push(newPartition)\n }\n }\n }\n\n async parseTransferList(partition: chromeos_update_engine.PartitionUpdate) {\n let /** Array */ lines = partition.rawText.split('\\n')\n // First four line in header: version, total blocks,\n // number of stashed entries, maximum used memory for stash\n if (lines.length < 4) {\n throw 'At least 4 lines in header should be provided.'\n }\n partition.version = lines[0]\n partition.totalBlocks = parseInt(lines[1])\n partition.entryStashed = parseInt(lines[2])\n partition.maxStashed = parseInt(lines[3])\n partition.newPartitionInfo = new chromeos_update_engine.PartitionInfo()\n partition.newPartitionInfo.hash = new Uint8Array()\n partition.newPartitionInfo.size = 'unknown'\n /**\n * The main body have 8 different ops:\n * zero [rangeset] : fill zeros\n * new [rangeset] : fill with new data from \n * erase [rangeset] : mark given blocks as empty\n * move <...>\n * bsdiff <...>\n * imgdiff <...> :\n * Read the source blocks and apply (not for move op) to the target blocks\n * stash : load the given source range to memory\n * free : free the given \n * format:\n * [rangeset]: <# of pairs>, , , ...\n * : a hex number with length of 40\n * <...>: We expect to parse the remainder of the parameter tokens as one of:\n * (loads data from source image only)\n * - <[stash_id:stash_range] ...> (loads data from stashes only)\n * <[stash_id:stash_range] ...>\n * (loads data from both source image and stashes)\n */\n partition.operations = new Array()\n let newDataSize = await this.sizeNewData(partition.partitionName)\n for (const line of lines.slice(4)) {\n let op = new chromeos_update_engine.InstallOperation()\n let elements = line.split(' ')\n op.type = elements[0]\n switch ((op.type as unknown) as string) {\n case 'zero':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'new':\n // unlike an A/B OTA, the payload only exists in the payload.bin,\n // in an non-A/B OTA, the payload exists in both .new.data and .patch.data.\n // The new ops do not have any information about data length.\n // what we do here is: read in the size of .new.data, assume the first new\n // op have the data length of the size of .new.data.\n op.dataLength = newDataSize\n newDataSize = 0\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'erase':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'move':\n op.dstExtents = parseRange([], elements[2])\n break\n case 'bsdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'imgdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'stash':\n break\n case 'free':\n break\n }\n partition.operations.push(op)\n }\n }\n\n /**\n * Return the size of .new.data.*\n * @param {String} partitionName\n * @return {Number}\n */\n async sizeNewData(partitionName: string) {\n const /** Array */ entries = await this.packedFile.getEntries()\n const /** RegExp */ regexName = new RegExp(partitionName + '.new.dat.*')\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n return entry.uncompressedSize\n }\n }\n }\n}\n\n/**\n * Parse the range string and return it as an array of extents\n * @param {extents} Array\n * @param {String} rangeset\n * @return Array\n */\nfunction parseRange(extents: Object[], rangeset: string) {\n const regexRange = new RegExp('[d,]+')\n if (rangeset.match(regexRange)) {\n let elements = rangeset.split(',')\n for (let i = 1; i < elements.length; i = i + 2) {\n let extent = new Object({\n startBlock: parseInt(elements[i]),\n numBlocks: parseInt(elements[i + 1]) - parseInt(elements[i])\n })\n extents.push(extent)\n }\n }\n return extents\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class paypload is used to read in and\n * parse the payload.bin file from a OTA.zip file.\n * Class OpType creates a Map that can resolve the\n * operation type.\n * @package zip.js\n * @package protobufjs\n */\n\nimport {\n BlobReader,\n TextWriter,\n Writer,\n ZipReader,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\n// import '@zip.js/zip.js'\nimport { chromeos_update_engine as update_metadata_pb } from './update_metadata_pb'\nimport { PayloadNonAB } from './payload_nonab'\nimport { ZipFile } from './trim_zip'\n// import { Zip_js } from 'zip.js'\n\nconst /** String */ _MAGIC = 'CrAU'\nconst /** Number */ _VERSION_SIZE = 8\nconst /** Number */ _MANIFEST_LEN_SIZE = 8\nconst /** Number */ _METADATA_SIGNATURE_LEN_SIZE = 4\n\nconst /** Number */ _PAYLOAD_HEADER_SIZE =\n _MAGIC.length +\n _VERSION_SIZE +\n _MANIFEST_LEN_SIZE +\n _METADATA_SIGNATURE_LEN_SIZE\n\nconst /** Number */ _BRILLO_MAJOR_PAYLOAD_VERSION = 2\nexport const /** Array */ MetadataFormat = [\n {\n prefix: 'pre-build',\n key: 'preBuild',\n name: 'Pre-build'\n },\n {\n prefix: 'pre-build-incremental',\n key: 'preBuildVersion',\n name: 'Pre-build version'\n },\n {\n prefix: 'post-build',\n key: 'postBuild',\n name: 'Post-build'\n },\n {\n prefix: 'post-build-incremental',\n key: 'postBuildVersion',\n name: 'Post-build version'\n }\n ]\n\nclass StopIteration extends Error {}\n\nclass AbPayloadHeader {\n constructor(\n public magic: string,\n public version: number,\n public manifest_len: number,\n public metadata_signature_len: number\n ) {}\n}\n\n/**\n * Read in an integer from binary bufferArray.\n * @param {Int} size the size of a integer being read in\n * @return {Int} an integer.\n */\nasync function readIntAt(buffer: Blob, position: number, size: number) {\n let /** DataView */ view = new DataView(\n await buffer!.slice(position, position + size).arrayBuffer()\n )\n if (typeof view.getBigUint64 !== 'function') {\n view.getBigUint64 = function(offset) {\n const a = BigInt(view.getUint32(offset))\n const b = BigInt(view.getUint32(offset + 4))\n const bigNumber = a * 4294967296n + b\n return bigNumber\n }\n }\n switch (size) {\n case 2:\n return view.getUint16(0)\n case 4:\n return view.getUint32(0)\n case 8:\n return Number(view.getBigUint64(0))\n default:\n throw 'Cannot read this integer with size ' + size\n }\n}\n\nclass OTAPayloadBlobWriter extends Writer {\n offset: number\n contentType: string\n blob: Blob\n prefixLength: number\n\n header?: AbPayloadHeader\n\n async readHeader(blob: Blob) {\n let cursor = 0\n const readInt = (size: number) => {\n const ret = readIntAt(blob, cursor, size)\n cursor += size\n return ret\n }\n let buffer = await blob.slice(0, _PAYLOAD_HEADER_SIZE).arrayBuffer()\n let /** TextDecoder */ decoder = new TextDecoder()\n let magicBytes = buffer.slice(0, _MAGIC.length)\n const magic = decoder.decode(magicBytes)\n if (magic != _MAGIC) {\n throw new Error(\n `MAGIC is not correct, expected: ${_MAGIC} actual: ${magic}`\n )\n }\n cursor += _MAGIC.length\n const header_version = await readInt(_VERSION_SIZE)\n const manifest_len = await readInt(_MANIFEST_LEN_SIZE)\n if (header_version != _BRILLO_MAJOR_PAYLOAD_VERSION) {\n throw new Error(`Unexpected major version number: ${header_version}`)\n }\n const metadata_signature_len = await readInt(_METADATA_SIGNATURE_LEN_SIZE)\n this.header = new AbPayloadHeader(\n magic,\n header_version,\n manifest_len,\n metadata_signature_len\n )\n }\n /**\n * A zip.Writer that is tailored for OTA payload.bin read-in.\n * Instead of reading in all the contents in payload.bin, this writer will\n * throw an 'StopIteration' error when the header is read in.\n * The header will be stored into the .\n * @param {Payload} payload\n * @param {String} contentType\n */\n constructor(contentType = '') {\n super()\n this.offset = 0\n this.contentType = contentType\n this.blob = new Blob([], { type: contentType })\n this.prefixLength = 0\n }\n\n async writeUint8Array(array: Uint8Array) {\n super.writeUint8Array(array)\n this.blob = new Blob([this.blob, array.buffer], { type: this.contentType })\n this.offset = this.blob.size\n // Once the prefixLength is non-zero, the address of manifest and signature\n // become known and can be read in. Otherwise the header needs to be read\n // in first to determine the prefixLength.\n if (this.offset >= _PAYLOAD_HEADER_SIZE && this.prefixLength == 0) {\n console.log('Parsing header!')\n await this.readHeader(this.blob)\n this.prefixLength =\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n console.log(`Computed metadata length: ${this.prefixLength}`)\n }\n if (this.prefixLength > 0) {\n console.log(`${this.offset}/${this.prefixLength}`)\n if (this.offset >= this.prefixLength) {\n // The prefix has everything we need (header, manifest, signature). Once\n // the offset is beyond the prefix, no need to move on.\n this.blob = this.blob.slice(0, this.prefixLength)\n throw new StopIteration()\n }\n }\n }\n\n getData() {\n return this.blob\n }\n}\n\nexport class Payload {\n zipreader: ZipReader\n buffer: Blob | undefined\n private metadata: any\n manifest: update_metadata_pb.DeltaArchiveManifest | undefined\n metadata_signature!: update_metadata_pb.Signatures\n\n header?: AbPayloadHeader\n\n /**\n * This class parses the metadata of a OTA package.\n * @param {File} file A OTA.zip file read from user's machine.\n */\n constructor(file: File | URL | ZipFile) {\n if (file instanceof File) {\n this.zipreader = new ZipReader(new BlobReader(file))\n } else if (file instanceof URL) {\n this.zipreader = new ZipReader(new HttpReader(file.href))\n } else {\n this.zipreader = file.reader\n }\n }\n\n getMetadataLength(): number {\n return (\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n )\n }\n\n /**\n * Unzip the OTA package, get payload.bin and metadata\n */\n async unzip() {\n let entries = await this.zipreader.getEntries()\n for (let entry of entries) {\n if (entry.filename == 'payload.bin') {\n let writer = new OTAPayloadBlobWriter('')\n try {\n await entry.getData!(writer)\n } catch (e) {\n if (e instanceof StopIteration) {\n // Exception used as a hack to stop reading from zip. NO need to do anything\n // Ideally zip.js would provide an API to partialll read a zip\n // entry, but they don't. So this is what we get\n } else {\n console.log(e)\n throw e\n }\n }\n this.buffer = writer.getData()\n await this.readManifest(this.buffer, writer.header!)\n console.log('AB OTA manifest parsed')\n } else if (entry.filename == 'META-INF/com/android/metadata') {\n this.metadata = await entry.getData!(new TextWriter())\n console.log('OTA Package metadata parsed')\n }\n }\n if (!this.manifest) {\n console.log('Failed to parse AB OTA package, falling back to non-AB')\n try {\n // The temporary variable manifest has to be used here, to prevent the html page\n // being rendered before everything is read in properly\n let manifest = new PayloadNonAB(this.zipreader)\n await manifest.init()\n manifest.nonAB = true\n this.manifest = manifest\n } catch (error) {\n alert('Please select a legit OTA package')\n return\n }\n }\n }\n\n /**\n * Read the header of payload.bin, including the magic, header_version,\n * manifest_len, metadata_signature_len.\n */\n /**\n * Read in the manifest in an OTA.zip file.\n * The structure of the manifest can be found in:\n * aosp/system/update_engine/update_metadata.proto\n */\n async readManifest(buffer: Blob, header: AbPayloadHeader) {\n this.header = header\n let cursor = _PAYLOAD_HEADER_SIZE\n let manifestBlob = await buffer\n .slice(cursor, cursor + header.manifest_len)\n .arrayBuffer()\n cursor += header.manifest_len\n this.manifest = update_metadata_pb.DeltaArchiveManifest.decode(\n new Uint8Array(manifestBlob)\n )\n let signatureBlob = await buffer\n .slice(cursor, cursor + header.metadata_signature_len)\n .arrayBuffer()\n cursor += header.metadata_signature_len\n this.metadata_signature = update_metadata_pb.Signatures.decode(\n new Uint8Array(signatureBlob)\n )\n this.manifest!.nonAB = false\n }\n\n parseMetadata() {\n for (let formatter of MetadataFormat) {\n let regex = new RegExp(formatter.prefix + '.+')\n if (this.metadata.match(regex)) {\n ;(this as any)[formatter.key] = trimEntry(\n this.metadata.match(regex)[0],\n formatter.prefix\n )\n } else {\n ;(this as any)[formatter.key] = ''\n }\n }\n }\n\n async init() {\n await this.unzip()\n this.parseMetadata()\n }\n}\n\nexport class DefaultMap extends Map {\n /** Reload the original get method. Return the original key value if\n * the key does not exist.\n * @param {Any} key\n */\n getWithDefault(key: any) {\n if (!this.has(key)) return key\n return this.get(key)\n }\n}\n\nexport class OpType {\n mapType: DefaultMap\n /**\n * OpType.mapType create a map that could resolve the operation\n * types. The operation types are encoded as numbers in\n * update_metadata.proto and must be decoded before any usage.\n */\n constructor() {\n let types = update_metadata_pb.InstallOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport class MergeOpType {\n mapType: DefaultMap\n /**\n * MergeOpType create a map that could resolve the COW merge operation\n * types. This is very similar to OpType class except that one is for\n * installation operations.\n */\n constructor() {\n let /** Array<{String: Number}>*/ types =\n update_metadata_pb.CowMergeOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport function octToHex(bufferArray: Uint8Array, space = true, maxLine = 16) {\n let hex_table = ''\n for (let i = 0; i < bufferArray.length; i++) {\n const hex /** String **/ = bufferArray[i].toString(16).toUpperCase()\n if (hex.length === 2) {\n hex_table += hex + (space ? ' ' : '')\n } else {\n hex_table += '0' + hex + (space ? ' ' : '')\n }\n if ((i + 1) % maxLine == 0 && space) {\n hex_table += '\\n'\n }\n }\n return hex_table\n}\n\n/**\n * Trim the prefix in an entry. This is required because the lookbehind\n * regular expression is not supported in safari yet.\n * @param {String} entry\n * @param {String} prefix\n * @return String\n */\nfunction trimEntry(entry: string, prefix: string) {\n return entry.slice(prefix.length + 1, entry.length)\n}\n","\n\n\n\n\n\n\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EChartsOption } from 'echarts'\n\nexport class EchartsData {\n statisticData: Map\n trimmedData: Map\n title: string\n unit: string\n maximumEntries: number\n /**\n * Given a set of [key, value] pairs and title, create an object for further\n * usage in Vue-Echarts.\n * @param {Map} statisticData\n * @param {String} title\n * @param {String} unit\n * @param {Number} maximumEntries\n */\n constructor(\n statisticData: Map,\n title: string,\n unit: string,\n maximumEntries = 15\n ) {\n this.statisticData = statisticData\n this.trimmedData = trimMap(statisticData, maximumEntries)\n this.title = title\n this.unit = unit\n this.maximumEntries = maximumEntries\n }\n\n /**\n * Convert the raw data into a string.\n * @return {String} A list of [key, value].\n */\n listData() {\n let /** String */ table = ''\n for (let [key, value] of this.statisticData) {\n table += key + ' : ' + value.toString() + ' Blocks' + '\\n'\n }\n return table\n }\n\n /**\n * Generate necessary parameters (option) for vue-echarts.\n * Format of the parameters can be found here:\n * https://echarts.apache.org/en/option.html\n * @param {String} unit\n * @return {Object} an ECharts option object.\n */\n getEchartsOption(): EChartsOption {\n let /** Object */ option: EChartsOption = {}\n option.title = {\n text: this.title,\n left: 'center'\n }\n option.tooltip = {\n trigger: 'item',\n formatter: '{a}
{b} : {c} ' + this.unit + ' ({d}%)'\n }\n option.legend = {\n orient: 'horizontal',\n left: 'top',\n top: '10%',\n data: Array.from(this.trimmedData.keys())\n }\n option.series = [\n {\n name: this.title,\n type: 'pie',\n radius: '55%',\n center: ['50%', '60%'],\n data: Array.from(this.trimmedData).map((pair: any) => {\n return { value: pair[1], name: pair[0] }\n }),\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)'\n }\n }\n }\n ]\n return option\n }\n}\n\n/**\n * When there are too many entries in the map, the pie chart can be very\n * crowded. This function will return the entries that have high values.\n * Specifically, the top will be stored and the others\n * will be added into an entry called 'other'.\n * @param {Map} map\n * @param {Number} maximumEntries\n * @return {Map}\n */\nfunction trimMap(map: Map, maximumEntries: number) {\n if (map.size <= maximumEntries) return map\n let /** Map */ new_map = new Map()\n for (let i = 0; i < maximumEntries; i++) {\n let /** Number */ curr = 0\n let /** String */ currKey = ''\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n if (value > curr) {\n curr = value\n currKey = key\n }\n }\n }\n new_map.set(currKey, curr)\n }\n let /** Number */ restTotal = 0\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n restTotal += value\n }\n }\n new_map.set('other', restTotal)\n return new_map\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class MapParser will take in a Android build and construct\n * several file name maps (physical address: file name) according to it.\n * The map of each partitions is added by calling MapParser.add(partitionName).\n * You can query the file name being operated by calling\n * MapParser.query(address, datalength).\n */\n\nimport {\n ZipReader,\n BlobReader,\n TextWriter,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\nimport { chromeos_update_engine } from './update_metadata_pb'\n\nexport class MapParser {\n build: ZipReader\n mapFiles: Map\n maps: Map\n /**\n * This class will take in a .zip Android build and construct a file type map\n * @param {File} targetFile\n */\n constructor(targetFile: File | URL) {\n if (targetFile instanceof File) {\n this.build = new ZipReader(new BlobReader(targetFile))\n } else {\n this.build = new ZipReader(new HttpReader(targetFile.href))\n }\n this.mapFiles = new Map()\n this.maps = new Map()\n }\n\n /**\n * Find the .map entries in the .zip build file. Store them as a map with\n * pairs of (partition name: zip.js entry).\n */\n async init() {\n let /** Array */ entries = await this.build.getEntries()\n const /** RegExp*/ regexPath = /IMAGES\\/[a-z_]*\\.map/g\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.map)/g\n entries.forEach(entry => {\n if (entry.filename.match(regexPath)) {\n this.mapFiles.set(entry.filename.match(regexName)![0], entry)\n }\n })\n }\n\n /**\n * According to the .map in the build, build a map for later query.\n * @param {String} partitionName\n * @param {Number} totalLength\n */\n async add(partitionName: string, totalLength: number) {\n let /** Array */ map = []\n const /** RegExp */ regexNumber = /\\d+/g\n const /** Reg */ regexRange = /\\d+\\-\\d+/g\n for (let i = 0; i < totalLength; i++) map[i] = `<${partitionName}>`\n if (this.mapFiles.get(partitionName)) {\n let /** String */ mapText = await this.mapFiles\n .get(partitionName)\n .getData(new TextWriter())\n let /** Array */ fileEntries = mapText.split('\\n')\n // Each line of the .map file in Android build starts with the filename\n // Followed by the block address, either a number or a range, for example:\n // //system/apex/com.android.adbd.apex 54-66 66 66-2663\n for (let entry of fileEntries) {\n let /** Array */ elements = entry.split(' ')\n for (let j = 1; j < elements.length; j++) {\n let /** Number */ left = 0\n let /** Number */ right = 0\n if (elements[j].match(regexRange)) {\n left = parseInt(elements[j].match(/\\d+/g)[0])\n right = parseInt(elements[j].match(/\\d+/g)[1])\n } else {\n left = parseInt(elements[j].match(regexNumber))\n right = parseInt(elements[j].match(regexNumber))\n }\n InsertMap(map, elements[0], left, right)\n }\n }\n this.maps.set(partitionName, map)\n } else {\n this.maps.set(partitionName, map)\n }\n }\n\n /**\n * Return the filename of given address.\n * @param {String} partitionName\n * @param {Array} extents\n * @return {Array}\n */\n query(partitionName: string, extents: Array) {\n let /** Array */ names = []\n let /** Array */ map = this.maps.get(partitionName)\n for (let ext of extents) {\n names.push(queryMap(map, ext.startBlock, ext.startBlock + ext.numBlocks))\n }\n return names\n }\n}\n\n/**\n * Fill in the hashtable from to using .\n * @param {Array} map\n * @param {String} name\n * @param {Number} left\n * @param {Number} right\n */\nfunction InsertMap(\n map: Array,\n name: string,\n left: number,\n right: number\n) {\n for (let i = left; i <= right; i++) {\n map[i] = name\n }\n}\n\n/**\n * Query the hashtable using index
.\n * @param {Array} map\n * @param {Number} left\n * @param {Number} right\n */\nfunction queryMap(map: Array, left: number, right: number) {\n // Assuming the consecutive blocks belong to the same file\n // Only the start block is queried here.\n if (!map[left]) {\n return 'unknown'\n }\n return map[left]\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Offer functions that can be used to parse the partitionUpdate\n * and then do statistics over it. One can use analysePartitions to specify the\n * partitions been analysed and metrics.\n */\n\nimport { OpType, MergeOpType } from './payload'\nimport { EchartsData } from './echarts_data'\nimport { MapParser } from './map_parser'\nimport { chromeos_update_engine } from './update_metadata_pb'\n\n/**\n * Add a to a element associated to . If the element dose not\n * exists than its value will be initialized to zero.\n * @param {Map} map\n * @param {String} key\n * @param {Number} value\n */\nfunction addNumberToMap(map: Map, key: String, value: number) {\n if (!map.get(key)) {\n map.set(key, 0)\n }\n map.set(key, map.get(key)! + value)\n}\n\n/**\n * Return a statistics over the numbers of blocks (in destination) that are\n * being operated by different installation operation (e.g. REPLACE, BSDIFF).\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedBlockStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n operatedBlocks,\n operationType,\n numBlocks(operation.dstExtents)\n )\n }\n }\n return operatedBlocks\n}\n\nexport function mergeOperationStatistics(\n partitions: Array,\n blockSize: number\n) {\n let /** Map */ mergeOperations = new Map()\n let /** MergeOpType */ opType = new MergeOpType()\n let /** Number */ totalBlocks = 0\n for (let partition of partitions) {\n for (let operation of partition.mergeOperations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n mergeOperations,\n operationType,\n operation.dstExtent!.numBlocks\n )\n }\n // The total blocks number should be rounded up\n if (partition.newPartitionInfo == null) {\n throw new Error(\n `Partition ${partition.partitionName} doesn't have new_partition_info field.`\n )\n }\n totalBlocks += Math.ceil(partition.newPartitionInfo.size / blockSize)\n }\n // The COW merge operation is default to be COW_replace and not shown in\n // the manifest info. We have to mannually add that part of operations,\n // by subtracting the total blocks with other blocks.\n mergeOperations.forEach((value, key) => (totalBlocks -= value))\n mergeOperations.set('COW_REPLACE', totalBlocks)\n return mergeOperations\n}\n\n/**\n * Return a statistics over the disk usage of payload.bin, based on the type of\n * installation operations. Only partitions that are being passed in will be\n * included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedPayloadStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(operatedBlocks, operationType, operation.dataLength)\n }\n }\n return operatedBlocks\n}\n/**\n * Return a statistics over the disk usage of each file types in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFileExtensionsStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let filenameStats = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n const fileExtenstionStats = new Map()\n filenameStats.forEach((size, filename) => {\n addNumberToMap(fileExtenstionStats, name2Extension(filename), size)\n })\n return fileExtenstionStats\n}\n\n/**\n * Return a statistics over the disk usage of each file name in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFilenamesStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let /** Map */ operatedFilenames = new Map()\n if (!targetFile) {\n return operatedFilenames\n }\n let buildMap = new MapParser(targetFile)\n await buildMap.init()\n for (let partition of partitions) {\n await buildMap.add(\n partition.partitionName,\n Math.ceil(partition.newPartitionInfo!.size / blockSize)\n )\n for (let operation of partition.operations!) {\n if (!operation.hasOwnProperty('dataLength')) continue\n let operatedFileNames = buildMap.query(\n partition.partitionName,\n operation.dstExtents!\n )\n let extentDataLength = distributeFilenames(\n operatedFileNames,\n operation.dstExtents!,\n operation.dataLength\n )\n extentDataLength!.forEach((value, key) => {\n addNumberToMap(operatedFilenames, key, value)\n })\n }\n }\n return operatedFilenames\n}\n\n/**\n * Analyse the given partitions using the given metrics.\n * @param {String} metrics\n * @param {Array} partitions\n * @return {EchartsData}\n */\nexport async function analysePartitions(\n metrics: String,\n partitions: Array,\n blockSize = 4096,\n targetFile: File | null | URL = null\n) {\n let /** Map */ statisticsData\n let /** Echartsdata */ echartsData\n switch (metrics) {\n case 'blocks':\n statisticsData = operatedBlockStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Operated blocks in target build',\n 'blocks'\n )\n break\n case 'payload':\n statisticsData = operatedPayloadStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Payload disk usage',\n 'bytes'\n )\n break\n case 'COWmerge':\n statisticsData = mergeOperationStatistics(partitions, blockSize)\n echartsData = new EchartsData(\n statisticsData,\n 'COW merge operations',\n 'blocks'\n )\n break\n case 'filenames':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated filenames',\n 'bytes'\n )\n break\n case 'extensions':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFileExtensionsStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated extensions',\n 'bytes'\n )\n break\n }\n if (echartsData) {\n return echartsData\n } else {\n throw 'Please double check if this is a proper AB OTA package.'\n }\n}\n\n/**\n * Calculate the number of blocks being operated\n * @param {Array} exts\n * @return {number}\n */\nexport function numBlocks(\n exts: Array | null | undefined\n) {\n if (!exts) {\n return 0\n }\n const accumulator = (total: number, ext: chromeos_update_engine.IExtent) =>\n total + ext.numBlocks\n return exts.reduce(accumulator, 0)\n}\n\n/**\n * Return a string that indicates the blocks being operated\n * in the manner of (start_block, block_length)\n * @param {Array} exts\n * @return {string}\n */\nexport function displayBlocks(exts: Array) {\n const accumulator = (total: string, ext: chromeos_update_engine.Extent) =>\n total + '(' + ext.startBlock + ',' + ext.numBlocks + ')'\n return exts.reduce(accumulator, '')\n}\n\n/**\n * Return a map with pairs of (file extension, data length used by this\n * extension). The total data length will be distributed by the blocks ratio\n * of each extent.\n * @param {Array} filenames\n * @param {Array} exts\n * @param {Number} length\n * @return {Map}\n */\nexport function distributeFilenames(\n filenames: Array,\n exts: Array,\n length: number\n): Map {\n let totalBlocks = numBlocks(exts)\n let distributedLengths = new Map()\n for (let i = 0; i < filenames.length; i++) {\n addNumberToMap(\n distributedLengths,\n filenames[i],\n Math.round((length * exts[i].numBlocks) / totalBlocks)\n )\n }\n return distributedLengths\n}\n\n/**\n * convert a filename into extension, for example:\n * '//system/apex/com.android.adbd.apex' => 'apex'\n * @param {String} filename\n * @return {String}\n */\nexport function name2Extension(filename: string) {\n let elements = filename.split('.')\n if (elements.length > 1) {\n return elements[elements.length - 1]\n } else if (elements[0] === 'unknown') {\n return 'unknown'\n } else if (filename[0] == '<' && filename.endsWith('>')) {\n return filename\n } else {\n return 'no-extension'\n }\n}\n","\nimport { numBlocks, displayBlocks } from '../services/payload_composition'\nimport { DefaultMap } from '../services/payload'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n operation: {\n type: Object,\n required: true\n },\n mapType: {\n type: DefaultMap,\n required: true\n }\n },\n data() {\n return {\n srcTotalBlocks: 0,\n srcBlocks: '',\n dstTotalBlocks: 0,\n dstBlocks: ''\n }\n },\n mounted() {\n if (this.operation.srcExtents) {\n this.srcTotalBlocks = numBlocks(this.operation.srcExtents)\n this.srcBlocks = displayBlocks(this.operation.srcExtents)\n }\n if (this.operation.dstExtents) {\n this.dstTotalBlocks = numBlocks(this.operation.dstExtents)\n this.dstBlocks = displayBlocks(this.operation.dstExtents)\n }\n }\n})\n","import { render } from \"./OperationDetail.vue?vue&type=template&id=44174082&scoped=true\"\nimport script from \"./OperationDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./OperationDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-44174082\"\n\nexport default script","\nimport { chromeos_update_engine } from '@/services/update_metadata_pb'\nimport { defineComponent } from 'vue'\nimport { OpType, octToHex } from '../services/payload'\nimport OperationDetail from './OperationDetail.vue'\n\nexport default defineComponent({\n components: {\n OperationDetail\n },\n props: {\n partition: {\n type: chromeos_update_engine.PartitionUpdate,\n required: true\n },\n dynamicPartitionList: {\n type: Array,\n required: true\n }\n },\n data() {\n return {\n showOPs: false,\n showInfo: false,\n opType: new OpType()\n }\n },\n methods: {\n toggle(key: string) {\n ;(this as any)[key] = !(this as any)[key]\n },\n octToHex: octToHex\n },\n computed: {\n readableTimestamp() {\n const unixTimestamp = parseInt(this.partition.version)\n if (isNaN(unixTimestamp)) {\n return ''\n }\n // Unix timestamp is in seconds, but js want milliseconds. So *1000\n return new Date(unixTimestamp * 1000).toString()\n },\n isDynamicPartition(): boolean {\n return (\n this.dynamicPartitionList.indexOf(this.partition.partitionName) >= 0\n )\n }\n }\n})\n","import { render } from \"./PartitionDetail.vue?vue&type=template&id=6dba348a&scoped=true\"\nimport script from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PartitionDetail.vue?vue&type=style&index=0&id=6dba348a&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-6dba348a\"\n\nexport default script","\n\n\n\n\n\n\n","import * as zip from '@zip.js/zip.js/dist/zip.js'\nimport { ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { Payload } from './payload'\n\nexport class ZipFile {\n public reader: ZipReader\n\n constructor(private file: File | URL) {\n this.reader = getZipReader(file)\n }\n getFileName() {\n return getFileName(this.file)\n }\n getFileSize() {\n if (this.file instanceof File) {\n return this.file.size\n } else {\n // TODO(zhangkelvin) Support getting file size from URL\n return 0\n }\n }\n}\n\nexport async function trimZip(\n file: ZipReader,\n p: (entry: zip.Entry) => boolean\n): Promise {\n const reader = file\n const writer = new zip.ZipWriter(new zip.BlobWriter('application/zip'))\n const entries = await reader.getEntries()\n for (const entry of entries.filter(entry => !!entry && p(entry))) {\n const blobWriter = new zip.BlobWriter()\n const data = (await entry.getData!(blobWriter)) as Blob\n console.log(`Adding ${entry.filename}, ${data.size}`)\n writer.add(entry.filename, new zip.BlobReader(blobWriter.getData()), {\n level: 0 // no compression\n })\n }\n return writer\n}\n\nfunction getZipReader(file: File | URL) {\n if (file instanceof File) {\n return new zip.ZipReader(new zip.BlobReader(file))\n } else {\n return new zip.ZipReader(new zip.HttpReader(file.href))\n }\n}\n\nexport function getFileName(file: File | URL) {\n if (file instanceof File) {\n return file.name\n } else {\n return file.pathname\n }\n}\n\nexport async function trimTargetFiles(file: File | URL): Promise {\n const writer = await trimZip(getZipReader(file), entry => {\n return entry.filename.startsWith('META/') || entry.filename.endsWith('.map')\n })\n return await writer.close()\n}\n\nexport async function trimOTAPackage(payload: Payload): Promise {\n const writer = await trimZip(payload.zipreader, entry => {\n return entry.filename != 'payload.bin'\n })\n await writer.add(\n 'payload.bin',\n new zip.BlobReader(payload.buffer!.slice(0, payload.getMetadataLength())),\n // Most toolings assume that payload.bin and other entries are not\n // compressed, so use level 0\n {\n level: 0\n }\n )\n const blob: Blob = await writer.close()\n return blob\n}\n\nexport function downloadFile(\n blob: Blob,\n downloadNode: HTMLAnchorElement,\n filename: string\n) {\n const url = window.URL.createObjectURL(blob)\n downloadNode.href = url\n downloadNode.download = filename\n downloadNode.click()\n window.URL.revokeObjectURL(url)\n}\n\nexport function ensureSuffix(str: string, suffix: string) {\n if (str.endsWith(suffix)) {\n return str\n } else {\n return str + suffix\n }\n}\n","\nimport { Payload, MetadataFormat } from '../services/payload'\nimport { ZipFile } from '@/services/trim_zip'\n\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n zipFile: {\n type: ZipFile,\n required: true\n },\n payload: {\n type: Payload,\n required: true\n }\n },\n data() {\n return {\n MetadataFormat\n }\n },\n computed: {\n otaMetadata(): {\n prefix: string\n key: string\n name: string\n }[] {\n return MetadataFormat.filter(formatter =>\n String((this.payload as any)[formatter.key]).length > 0\n );\n },\n totalCOWSize(): number {\n const cowSizes = this.payload?.manifest?.partitions.map(p => p.estimateCowSize || 0);\n if (!cowSizes) {\n return 0;\n }\n return cowSizes.reduce((a, b) => a + b);\n },\n totalDynamicPartitionSize(): number {\n const groups = this.payload?.manifest?.dynamicPartitionMetadata?.groups\n if (!groups) {\n return 0\n }\n const dynamicPartitionNamess = new Set(\n groups.flatMap(g => g.partitionNames)\n )\n const dynamicPartitions =\n this.payload.manifest?.partitions.filter(p =>\n dynamicPartitionNamess.has(p.partitionName)\n ) || []\n if (dynamicPartitions.length <= 0) {\n return 0\n }\n return dynamicPartitions\n .map(p => p.newPartitionInfo?.size || 0)\n .reduce((acc, cur) => acc + cur)\n }\n }\n})\n","import { render } from \"./BasicInfo.vue?vue&type=template&id=0514c264&scoped=true\"\nimport script from \"./BasicInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./BasicInfo.vue?vue&type=script&lang=ts\"\n\nimport \"./BasicInfo.vue?vue&type=style&index=0&id=0514c264&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-0514c264\"\n\nexport default script","\nimport PartitionDetail from './PartitionDetail.vue'\nimport BasicInfo from './BasicInfo.vue'\nimport { Payload, octToHex } from '../services/payload'\nimport {\n downloadFile,\n ensureSuffix,\n trimOTAPackage,\n ZipFile\n} from '@/services/trim_zip'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n components: {\n PartitionDetail,\n BasicInfo\n },\n props: {\n zipFile: {\n type: ZipFile,\n default: null\n },\n payload: {\n type: Payload,\n default: null\n }\n },\n methods: {\n octToHex: octToHex,\n async exportOTAPackage() {\n const blob = await trimOTAPackage(this.payload as Payload)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(this.zipFile.getFileName(), '.zip')\n )\n }\n },\n computed: {\n dynamicPartitions(): string[] {\n return (\n this.payload.manifest?.dynamicPartitionMetadata?.groups?.flatMap(\n g => g.partitionNames || []\n ) || []\n )\n }\n }\n})\n","import { render } from \"./PayloadDetail.vue?vue&type=template&id=05db67f2&scoped=true\"\nimport script from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-05db67f2\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n labels: {\n type: Array,\n default: new Array()\n },\n modelValue: {\n type: Map,\n default: new Map()\n }\n },\n data() {\n return {\n selectAll: 1,\n selectAllText: ['Select All', 'Unselect All']\n }\n },\n mounted() {\n // Set the default value to be true once mounted\n for (let key of this.labels) {\n this.modelValue.set(key, true)\n }\n },\n methods: {\n updateSelected(newSelect: string) {\n this.modelValue.set(newSelect, !this.modelValue.get(newSelect))\n this.$emit('update:modelValue', this.modelValue)\n },\n revertAllSelection() {\n this.selectAll = 1 - this.selectAll\n for (let key of this.modelValue.keys()) {\n this.modelValue.set(key, Boolean(this.selectAll))\n }\n }\n }\n})\n","import { render } from \"./PartialCheckbox.vue?vue&type=template&id=533f2336&scoped=true\"\nimport script from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\n\nimport \"./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-533f2336\"\n\nexport default script","\n\n\n\n\n\n\n","import { render } from \"./PieChart.vue?vue&type=template&id=5d1cb486&scoped=true\"\nimport script from \"./PieChart.vue?vue&type=script&lang=js\"\nexport * from \"./PieChart.vue?vue&type=script&lang=js\"\n\nimport \"./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-5d1cb486\"\n\nexport default script","\nimport axios from 'axios'\nimport PartialCheckbox from './PartialCheckbox.vue'\nimport PieChart from './PieChart.vue'\nimport BaseFile from './BaseFile.vue'\nimport { analysePartitions } from '../services/payload_composition'\nimport { chromeos_update_engine as update_metadata_pb } from '../services/update_metadata_pb'\nimport { TooltipComponentPositionCallbackParams } from 'echarts'\nimport { EchartsData } from '@/services/echarts_data'\nimport { defineComponent } from 'vue'\nimport {\n downloadFile,\n ensureSuffix,\n getFileName,\n trimTargetFiles\n} from '@/services/trim_zip'\n\ninterface ComponentState {\n partitionInclude: Map\n echartsData: EchartsData | null\n listData: string\n targetFile: File | URL | null\n}\n\nexport default defineComponent({\n components: {\n PartialCheckbox,\n PieChart,\n BaseFile\n },\n props: {\n manifest: {\n type: update_metadata_pb.DeltaArchiveManifest,\n default: () => []\n },\n demo: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n partitionInclude: new Map(),\n echartsData: null,\n listData: '',\n targetFile: null\n } as ComponentState\n },\n computed: {\n updatePartitions(): string[] {\n return this.manifest.partitions.map(\n (partition: update_metadata_pb.IPartitionUpdate) => {\n return partition.partitionName\n }\n )\n }\n },\n async mounted() {\n if (this.demo) {\n try {\n const download = await axios.get(\n './files/cf_x86_target_file_demo.zip',\n { responseType: 'blob' }\n )\n this.targetFile = new File([download.data], 'target_demo.zip')\n } catch (err) {\n console.log('Please put a proper example target file in /public/files/')\n }\n }\n },\n methods: {\n piechartClick(param: TooltipComponentPositionCallbackParams) {\n console.log(param)\n },\n async updateChart(metrics: string) {\n let partitionSelected = this.manifest.partitions.filter(partition =>\n this.partitionInclude.get(partition.partitionName)\n )\n try {\n this.echartsData = await analysePartitions(\n metrics,\n partitionSelected,\n this.manifest.blockSize,\n this.targetFile\n )\n } catch (err) {\n alert(`Cannot be processed for the following issue: ${err}`)\n }\n },\n selectBuild(file: File | URL) {\n //TODO(lishutong) check the version of target file is same to the OTA target\n this.targetFile = file\n },\n async exportTargetFileMetadata() {\n const blob = await trimTargetFiles(this.targetFile!)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(getFileName(this.targetFile!), '.zip')\n )\n }\n }\n})\n","import { render } from \"./PayloadComposition.vue?vue&type=template&id=44b569bd&scoped=true\"\nimport script from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadComposition.vue?vue&type=style&index=0&id=44b569bd&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-44b569bd\"\n\nexport default script","\nimport BaseFile from '../components/BaseFile.vue'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n BaseFile,\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return ({\n zipFile: null,\n payload: null\n } as unknown) as {\n zipFile: ZipFile\n payload: Payload\n }\n },\n methods: {\n async unpackOTA(file: File | URL) {\n this.zipFile = new ZipFile(file)\n try {\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n alert(`Please check if this is a correct OTA package (.zip). ${err}`)\n console.log(err)\n }\n }\n }\n})\n","import { render } from \"./PackageAnalysis.vue?vue&type=template&id=62e63758\"\nimport script from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nexport * from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\nimport axios from 'axios'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return {\n zipFile: null,\n payload: null\n } as {\n zipFile: ZipFile | null\n payload: Payload | null\n }\n },\n async created() {\n // put cf_x86_demo.zip and cf_x86_target_file_demo into\n // this directory: /public/files\n try {\n const download = await axios.get('./files/cf_x86_demo.zip', {\n responseType: 'blob'\n })\n this.zipFile = new ZipFile(new File([download.data], 'ota_demo.zip'))\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n console.log('Please put a proper example OTA in /public/files/')\n }\n }\n})\n","import { render } from \"./Demo.vue?vue&type=template&id=1e5d071a\"\nimport script from \"./Demo.vue?vue&type=script&lang=ts\"\nexport * from \"./Demo.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n","import { render } from \"./About.vue?vue&type=template&id=67ed0bf6\"\nconst script = {}\nscript.render = render\n\nexport default script","\n\n\n\n","import { render } from \"./NotFound.vue?vue&type=template&id=50c6f348&scoped=true\"\nconst script = {}\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-50c6f348\"\n\nexport default script","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createRouter, createWebHistory } from 'vue-router'\nimport PackageAnalysis from '@/views/PackageAnalysis.vue'\nimport Demo from'@/views/Demo.vue'\nimport About from '@/views/About.vue'\nimport NotFound from '@/views/NotFound.vue'\n\nconst routes = [\n {\n path: '/',\n name: 'Analysis',\n component: PackageAnalysis,\n meta: {\n title: 'Analyse OTA package - from AOSP'\n }\n },\n {\n path: '/demo',\n name: 'Demo',\n component: Demo\n },\n {\n path: '/about',\n name: 'About',\n component: About\n },\n {\n path: '/:catchAll(.*)',\n name: 'Not Found',\n component: NotFound\n }\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes\n})\n\n// This callback runs before every route change, including on page load.\nrouter.beforeEach((to, from, next) => {\n // This goes through the matched routes from last to first, finding the closest route with a title.\n // e.g., if we have `/some/deep/nested/route` and `/some`, `/deep`, and `/nested` have titles,\n // `/nested`'s will be chosen.\n const nearestWithTitle = to.matched.slice().reverse().find(r => r.meta && r.meta.title);\n\n // Find the nearest route element with meta tags.\n const nearestWithMeta = to.matched.slice().reverse().find(r => r.meta && r.meta.metaTags)!;\n\n const previousNearestWithMeta = from.matched.slice().reverse().find(r => r.meta && r.meta.metaTags);\n\n // If a route with a title was found, set the document (page) title to that value.\n if(nearestWithTitle) {\n document.title = nearestWithTitle.meta.title as string;\n } else if(previousNearestWithMeta) {\n document.title = previousNearestWithMeta.meta.title as string;\n }\n\n // Remove any stale meta tags from the document using the key attribute we set below.\n Array.from(document.querySelectorAll('[data-vue-router-controlled]')).map(el => el.parentNode!.removeChild(el));\n\n next();\n});\n\nexport default router\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createStore } from 'vuex'\n\nexport default createStore({\n state: {},\n mutations: {},\n actions: {},\n modules: {}\n})\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createApp } from 'vue'\nimport vuetify from './plugins/vuetify'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nconst app = createApp(App)\napp.use(router)\napp.use(store)\napp.use(vuetify)\n\napp.mount('#app')","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartitionDetail.vue?vue&type=style&index=0&id=6dba348a&scoped=true&lang=css\""],"sourceRoot":""} \ No newline at end of file diff --git a/analyseOTA/js/app.a143b6a4.js b/analyseOTA/js/app.a143b6a4.js new file mode 100644 index 0000000..7f5a681 --- /dev/null +++ b/analyseOTA/js/app.a143b6a4.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var r,o,s=t[0],c=t[1],l=t[2],p=0,d=[];p>>3){case 1:r.startBlock=e.uint64();break;case 2:r.numBlocks=e.uint64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(pe["a"])(e)||null===e?"object expected":null==e.startBlock||!e.hasOwnProperty("startBlock")||ge.isInteger(e.startBlock)||e.startBlock&&ge.isInteger(e.startBlock.low)&&ge.isInteger(e.startBlock.high)?null==e.numBlocks||!e.hasOwnProperty("numBlocks")||ge.isInteger(e.numBlocks)||e.numBlocks&&ge.isInteger(e.numBlocks.low)&&ge.isInteger(e.numBlocks.high)?null:"numBlocks: integer|Long expected":"startBlock: integer|Long expected"},e.fromObject=function(e){if(e instanceof be.chromeos_update_engine.Extent)return e;var t=new be.chromeos_update_engine.Extent;return null!=e.startBlock&&(ge.Long?(t.startBlock=ge.Long.fromValue(e.startBlock)).unsigned=!0:"string"===typeof e.startBlock?t.startBlock=parseInt(e.startBlock,10):"number"===typeof e.startBlock?t.startBlock=e.startBlock:"object"===Object(pe["a"])(e.startBlock)&&(t.startBlock=new ge.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0))),null!=e.numBlocks&&(ge.Long?(t.numBlocks=ge.Long.fromValue(e.numBlocks)).unsigned=!0:"string"===typeof e.numBlocks?t.numBlocks=parseInt(e.numBlocks,10):"number"===typeof e.numBlocks?t.numBlocks=e.numBlocks:"object"===Object(pe["a"])(e.numBlocks)&&(t.numBlocks=new ge.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(ge.Long){var r=new ge.Long(0,0,!0);n.startBlock=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.startBlock=t.longs===String?"0":0;if(ge.Long){var a=new ge.Long(0,0,!0);n.numBlocks=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.numBlocks=t.longs===String?"0":0}return null!=e.startBlock&&e.hasOwnProperty("startBlock")&&("number"===typeof e.startBlock?n.startBlock=t.longs===String?String(e.startBlock):e.startBlock:n.startBlock=t.longs===String?ge.Long.prototype.toString.call(e.startBlock):t.longs===Number?new ge.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0):e.startBlock),null!=e.numBlocks&&e.hasOwnProperty("numBlocks")&&("number"===typeof e.numBlocks?n.numBlocks=t.longs===String?String(e.numBlocks):e.numBlocks:n.numBlocks=t.longs===String?ge.Long.prototype.toString.call(e.numBlocks):t.longs===Number?new ge.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0):e.numBlocks),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e}(),e.Signatures=function(){function e(e){if(this.signatures=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.signatures&&r.signatures.length||(r.signatures=[]),r.signatures.push(be.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(null!=e.signatures&&e.hasOwnProperty("signatures")){if(!Array.isArray(e.signatures))return"signatures: array expected";for(var t=0;t>>3){case 1:r.version=e.uint32();break;case 2:r.data=e.bytes();break;case 3:r.unpaddedSignatureSize=e.fixed32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(pe["a"])(e)||null===e?"object expected":null!=e.version&&e.hasOwnProperty("version")&&!ge.isInteger(e.version)?"version: integer expected":null!=e.data&&e.hasOwnProperty("data")&&!(e.data&&"number"===typeof e.data.length||ge.isString(e.data))?"data: buffer expected":null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&!ge.isInteger(e.unpaddedSignatureSize)?"unpaddedSignatureSize: integer expected":null},e.fromObject=function(e){if(e instanceof be.chromeos_update_engine.Signatures.Signature)return e;var t=new be.chromeos_update_engine.Signatures.Signature;return null!=e.version&&(t.version=e.version>>>0),null!=e.data&&("string"===typeof e.data?ge.base64.decode(e.data,t.data=ge.newBuffer(ge.base64.length(e.data)),0):e.data.length&&(t.data=e.data)),null!=e.unpaddedSignatureSize&&(t.unpaddedSignatureSize=e.unpaddedSignatureSize>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.version=0,t.bytes===String?n.data="":(n.data=[],t.bytes!==Array&&(n.data=ge.newBuffer(n.data))),n.unpaddedSignatureSize=0),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.data&&e.hasOwnProperty("data")&&(n.data=t.bytes===String?ge.base64.encode(e.data,0,e.data.length):t.bytes===Array?Array.prototype.slice.call(e.data):e.data),null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&(n.unpaddedSignatureSize=e.unpaddedSignatureSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e}(),e}(),e.PartitionInfo=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.size=e.uint64();break;case 2:r.hash=e.bytes();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(pe["a"])(e)||null===e?"object expected":null==e.size||!e.hasOwnProperty("size")||ge.isInteger(e.size)||e.size&&ge.isInteger(e.size.low)&&ge.isInteger(e.size.high)?null!=e.hash&&e.hasOwnProperty("hash")&&!(e.hash&&"number"===typeof e.hash.length||ge.isString(e.hash))?"hash: buffer expected":null:"size: integer|Long expected"},e.fromObject=function(e){if(e instanceof be.chromeos_update_engine.PartitionInfo)return e;var t=new be.chromeos_update_engine.PartitionInfo;return null!=e.size&&(ge.Long?(t.size=ge.Long.fromValue(e.size)).unsigned=!0:"string"===typeof e.size?t.size=parseInt(e.size,10):"number"===typeof e.size?t.size=e.size:"object"===Object(pe["a"])(e.size)&&(t.size=new ge.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0))),null!=e.hash&&("string"===typeof e.hash?ge.base64.decode(e.hash,t.hash=ge.newBuffer(ge.base64.length(e.hash)),0):e.hash.length&&(t.hash=e.hash)),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(ge.Long){var r=new ge.Long(0,0,!0);n.size=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.size=t.longs===String?"0":0;t.bytes===String?n.hash="":(n.hash=[],t.bytes!==Array&&(n.hash=ge.newBuffer(n.hash)))}return null!=e.size&&e.hasOwnProperty("size")&&("number"===typeof e.size?n.size=t.longs===String?String(e.size):e.size:n.size=t.longs===String?ge.Long.prototype.toString.call(e.size):t.longs===Number?new ge.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0):e.size),null!=e.hash&&e.hasOwnProperty("hash")&&(n.hash=t.bytes===String?ge.base64.encode(e.hash,0,e.hash.length):t.bytes===Array?Array.prototype.slice.call(e.hash):e.hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e}(),e.InstallOperation=function(){function e(e){if(this.srcExtents=[],this.dstExtents=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.dataOffset=e.uint64();break;case 3:r.dataLength=e.uint64();break;case 4:r.srcExtents&&r.srcExtents.length||(r.srcExtents=[]),r.srcExtents.push(be.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 5:r.srcLength=e.uint64();break;case 6:r.dstExtents&&r.dstExtents.length||(r.dstExtents=[]),r.dstExtents.push(be.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 7:r.dstLength=e.uint64();break;case 8:r.dataSha256Hash=e.bytes();break;case 9:r.srcSha256Hash=e.bytes();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("type"))throw ge.ProtocolError("missing required 'type'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 8:case 6:case 7:case 10:case 9:case 11:case 12:case 13:break}if(null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&!ge.isInteger(e.dataOffset)&&!(e.dataOffset&&ge.isInteger(e.dataOffset.low)&&ge.isInteger(e.dataOffset.high)))return"dataOffset: integer|Long expected";if(null!=e.dataLength&&e.hasOwnProperty("dataLength")&&!ge.isInteger(e.dataLength)&&!(e.dataLength&&ge.isInteger(e.dataLength.low)&&ge.isInteger(e.dataLength.high)))return"dataLength: integer|Long expected";if(null!=e.srcExtents&&e.hasOwnProperty("srcExtents")){if(!Array.isArray(e.srcExtents))return"srcExtents: array expected";for(var t=0;t>>0,e.dataOffset.high>>>0).toNumber(!0))),null!=e.dataLength&&(ge.Long?(t.dataLength=ge.Long.fromValue(e.dataLength)).unsigned=!0:"string"===typeof e.dataLength?t.dataLength=parseInt(e.dataLength,10):"number"===typeof e.dataLength?t.dataLength=e.dataLength:"object"===Object(pe["a"])(e.dataLength)&&(t.dataLength=new ge.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0))),e.srcExtents){if(!Array.isArray(e.srcExtents))throw TypeError(".chromeos_update_engine.InstallOperation.srcExtents: array expected");t.srcExtents=[];for(var n=0;n>>0,e.srcLength.high>>>0).toNumber(!0))),e.dstExtents){if(!Array.isArray(e.dstExtents))throw TypeError(".chromeos_update_engine.InstallOperation.dstExtents: array expected");t.dstExtents=[];for(var r=0;r>>0,e.dstLength.high>>>0).toNumber(!0))),null!=e.dataSha256Hash&&("string"===typeof e.dataSha256Hash?ge.base64.decode(e.dataSha256Hash,t.dataSha256Hash=ge.newBuffer(ge.base64.length(e.dataSha256Hash)),0):e.dataSha256Hash.length&&(t.dataSha256Hash=e.dataSha256Hash)),null!=e.srcSha256Hash&&("string"===typeof e.srcSha256Hash?ge.base64.decode(e.srcSha256Hash,t.srcSha256Hash=ge.newBuffer(ge.base64.length(e.srcSha256Hash)),0):e.srcSha256Hash.length&&(t.srcSha256Hash=e.srcSha256Hash)),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.srcExtents=[],n.dstExtents=[]),t.defaults){if(n.type=t.enums===String?"REPLACE":0,ge.Long){var r=new ge.Long(0,0,!0);n.dataOffset=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.dataOffset=t.longs===String?"0":0;if(ge.Long){var a=new ge.Long(0,0,!0);n.dataLength=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.dataLength=t.longs===String?"0":0;if(ge.Long){var i=new ge.Long(0,0,!0);n.srcLength=t.longs===String?i.toString():t.longs===Number?i.toNumber():i}else n.srcLength=t.longs===String?"0":0;if(ge.Long){var o=new ge.Long(0,0,!0);n.dstLength=t.longs===String?o.toString():t.longs===Number?o.toNumber():o}else n.dstLength=t.longs===String?"0":0;t.bytes===String?n.dataSha256Hash="":(n.dataSha256Hash=[],t.bytes!==Array&&(n.dataSha256Hash=ge.newBuffer(n.dataSha256Hash))),t.bytes===String?n.srcSha256Hash="":(n.srcSha256Hash=[],t.bytes!==Array&&(n.srcSha256Hash=ge.newBuffer(n.srcSha256Hash)))}if(null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?be.chromeos_update_engine.InstallOperation.Type[e.type]:e.type),null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&("number"===typeof e.dataOffset?n.dataOffset=t.longs===String?String(e.dataOffset):e.dataOffset:n.dataOffset=t.longs===String?ge.Long.prototype.toString.call(e.dataOffset):t.longs===Number?new ge.LongBits(e.dataOffset.low>>>0,e.dataOffset.high>>>0).toNumber(!0):e.dataOffset),null!=e.dataLength&&e.hasOwnProperty("dataLength")&&("number"===typeof e.dataLength?n.dataLength=t.longs===String?String(e.dataLength):e.dataLength:n.dataLength=t.longs===String?ge.Long.prototype.toString.call(e.dataLength):t.longs===Number?new ge.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0):e.dataLength),e.srcExtents&&e.srcExtents.length){n.srcExtents=[];for(var s=0;s>>0,e.srcLength.high>>>0).toNumber(!0):e.srcLength),e.dstExtents&&e.dstExtents.length){n.dstExtents=[];for(var c=0;c>>0,e.dstLength.high>>>0).toNumber(!0):e.dstLength),null!=e.dataSha256Hash&&e.hasOwnProperty("dataSha256Hash")&&(n.dataSha256Hash=t.bytes===String?ge.base64.encode(e.dataSha256Hash,0,e.dataSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.dataSha256Hash):e.dataSha256Hash),null!=e.srcSha256Hash&&e.hasOwnProperty("srcSha256Hash")&&(n.srcSha256Hash=t.bytes===String?ge.base64.encode(e.srcSha256Hash,0,e.srcSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.srcSha256Hash):e.srcSha256Hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="REPLACE"]=0,t[e[1]="REPLACE_BZ"]=1,t[e[2]="MOVE"]=2,t[e[3]="BSDIFF"]=3,t[e[4]="SOURCE_COPY"]=4,t[e[5]="SOURCE_BSDIFF"]=5,t[e[8]="REPLACE_XZ"]=8,t[e[6]="ZERO"]=6,t[e[7]="DISCARD"]=7,t[e[10]="BROTLI_BSDIFF"]=10,t[e[9]="PUFFDIFF"]=9,t[e[11]="ZUCCHINI"]=11,t[e[12]="LZ4DIFF_BSDIFF"]=12,t[e[13]="LZ4DIFF_PUFFDIFF"]=13,t}(),e}(),e.CowMergeOperation=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.srcExtent=be.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 3:r.dstExtent=be.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 4:r.srcOffset=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:break}if(null!=e.srcExtent&&e.hasOwnProperty("srcExtent")){var t=be.chromeos_update_engine.Extent.verify(e.srcExtent);if(t)return"srcExtent."+t}if(null!=e.dstExtent&&e.hasOwnProperty("dstExtent")){var n=be.chromeos_update_engine.Extent.verify(e.dstExtent);if(n)return"dstExtent."+n}return null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&!ge.isInteger(e.srcOffset)?"srcOffset: integer expected":null},e.fromObject=function(e){if(e instanceof be.chromeos_update_engine.CowMergeOperation)return e;var t=new be.chromeos_update_engine.CowMergeOperation;switch(e.type){case"COW_COPY":case 0:t.type=0;break;case"COW_XOR":case 1:t.type=1;break;case"COW_REPLACE":case 2:t.type=2;break}if(null!=e.srcExtent){if("object"!==Object(pe["a"])(e.srcExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.srcExtent: object expected");t.srcExtent=be.chromeos_update_engine.Extent.fromObject(e.srcExtent)}if(null!=e.dstExtent){if("object"!==Object(pe["a"])(e.dstExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.dstExtent: object expected");t.dstExtent=be.chromeos_update_engine.Extent.fromObject(e.dstExtent)}return null!=e.srcOffset&&(t.srcOffset=e.srcOffset>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.type=t.enums===String?"COW_COPY":0,n.srcExtent=null,n.dstExtent=null,n.srcOffset=0),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?be.chromeos_update_engine.CowMergeOperation.Type[e.type]:e.type),null!=e.srcExtent&&e.hasOwnProperty("srcExtent")&&(n.srcExtent=be.chromeos_update_engine.Extent.toObject(e.srcExtent,t)),null!=e.dstExtent&&e.hasOwnProperty("dstExtent")&&(n.dstExtent=be.chromeos_update_engine.Extent.toObject(e.dstExtent,t)),null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&(n.srcOffset=e.srcOffset),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="COW_COPY"]=0,t[e[1]="COW_XOR"]=1,t[e[2]="COW_REPLACE"]=2,t}(),e}(),e.PartitionUpdate=function(){function e(e){if(this.newPartitionSignature=[],this.operations=[],this.mergeOperations=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.partitionName=e.string();break;case 2:r.runPostinstall=e.bool();break;case 3:r.postinstallPath=e.string();break;case 4:r.filesystemType=e.string();break;case 5:r.newPartitionSignature&&r.newPartitionSignature.length||(r.newPartitionSignature=[]),r.newPartitionSignature.push(be.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;case 6:r.oldPartitionInfo=be.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:r.newPartitionInfo=be.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:r.operations&&r.operations.length||(r.operations=[]),r.operations.push(be.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 9:r.postinstallOptional=e.bool();break;case 10:r.hashTreeDataExtent=be.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 11:r.hashTreeExtent=be.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 12:r.hashTreeAlgorithm=e.string();break;case 13:r.hashTreeSalt=e.bytes();break;case 14:r.fecDataExtent=be.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 15:r.fecExtent=be.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 16:r.fecRoots=e.uint32();break;case 17:r.version=e.string();break;case 18:r.mergeOperations&&r.mergeOperations.length||(r.mergeOperations=[]),r.mergeOperations.push(be.chromeos_update_engine.CowMergeOperation.decode(e,e.uint32()));break;case 19:r.estimateCowSize=e.uint64();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("partitionName"))throw ge.ProtocolError("missing required 'partitionName'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(!ge.isString(e.partitionName))return"partitionName: string expected";if(null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&"boolean"!==typeof e.runPostinstall)return"runPostinstall: boolean expected";if(null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&!ge.isString(e.postinstallPath))return"postinstallPath: string expected";if(null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&!ge.isString(e.filesystemType))return"filesystemType: string expected";if(null!=e.newPartitionSignature&&e.hasOwnProperty("newPartitionSignature")){if(!Array.isArray(e.newPartitionSignature))return"newPartitionSignature: array expected";for(var t=0;t>>0),null!=e.version&&(t.version=String(e.version)),e.mergeOperations){if(!Array.isArray(e.mergeOperations))throw TypeError(".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected");t.mergeOperations=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.newPartitionSignature=[],n.operations=[],n.mergeOperations=[]),t.defaults)if(n.partitionName="",n.runPostinstall=!1,n.postinstallPath="",n.filesystemType="",n.oldPartitionInfo=null,n.newPartitionInfo=null,n.postinstallOptional=!1,n.hashTreeDataExtent=null,n.hashTreeExtent=null,n.hashTreeAlgorithm="",t.bytes===String?n.hashTreeSalt="":(n.hashTreeSalt=[],t.bytes!==Array&&(n.hashTreeSalt=ge.newBuffer(n.hashTreeSalt))),n.fecDataExtent=null,n.fecExtent=null,n.fecRoots=2,n.version="",ge.Long){var r=new ge.Long(0,0,!0);n.estimateCowSize=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.estimateCowSize=t.longs===String?"0":0;if(null!=e.partitionName&&e.hasOwnProperty("partitionName")&&(n.partitionName=e.partitionName),null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&(n.runPostinstall=e.runPostinstall),null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&(n.postinstallPath=e.postinstallPath),null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&(n.filesystemType=e.filesystemType),e.newPartitionSignature&&e.newPartitionSignature.length){n.newPartitionSignature=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0):e.estimateCowSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e}(),e.DynamicPartitionGroup=function(){function e(e){if(this.partitionNames=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.name=e.string();break;case 2:r.size=e.uint64();break;case 3:r.partitionNames&&r.partitionNames.length||(r.partitionNames=[]),r.partitionNames.push(e.string());break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("name"))throw ge.ProtocolError("missing required 'name'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(!ge.isString(e.name))return"name: string expected";if(null!=e.size&&e.hasOwnProperty("size")&&!ge.isInteger(e.size)&&!(e.size&&ge.isInteger(e.size.low)&&ge.isInteger(e.size.high)))return"size: integer|Long expected";if(null!=e.partitionNames&&e.hasOwnProperty("partitionNames")){if(!Array.isArray(e.partitionNames))return"partitionNames: array expected";for(var t=0;t>>0,e.size.high>>>0).toNumber(!0))),e.partitionNames){if(!Array.isArray(e.partitionNames))throw TypeError(".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected");t.partitionNames=[];for(var n=0;n>>0,e.size.high>>>0).toNumber(!0):e.size),e.partitionNames&&e.partitionNames.length){n.partitionNames=[];for(var a=0;a>>3){case 1:r.groups&&r.groups.length||(r.groups=[]),r.groups.push(be.chromeos_update_engine.DynamicPartitionGroup.decode(e,e.uint32()));break;case 2:r.snapshotEnabled=e.bool();break;case 3:r.vabcEnabled=e.bool();break;case 4:r.vabcCompressionParam=e.string();break;case 5:r.cowVersion=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(null!=e.groups&&e.hasOwnProperty("groups")){if(!Array.isArray(e.groups))return"groups: array expected";for(var t=0;t>>0),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.groups=[]),t.defaults&&(n.snapshotEnabled=!1,n.vabcEnabled=!1,n.vabcCompressionParam="",n.cowVersion=0),e.groups&&e.groups.length){n.groups=[];for(var r=0;r>>3){case 1:r.packageName=e.string();break;case 2:r.version=e.int64();break;case 3:r.isCompressed=e.bool();break;case 4:r.decompressedSize=e.int64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(pe["a"])(e)||null===e?"object expected":null!=e.packageName&&e.hasOwnProperty("packageName")&&!ge.isString(e.packageName)?"packageName: string expected":null==e.version||!e.hasOwnProperty("version")||ge.isInteger(e.version)||e.version&&ge.isInteger(e.version.low)&&ge.isInteger(e.version.high)?null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&"boolean"!==typeof e.isCompressed?"isCompressed: boolean expected":null==e.decompressedSize||!e.hasOwnProperty("decompressedSize")||ge.isInteger(e.decompressedSize)||e.decompressedSize&&ge.isInteger(e.decompressedSize.low)&&ge.isInteger(e.decompressedSize.high)?null:"decompressedSize: integer|Long expected":"version: integer|Long expected"},e.fromObject=function(e){if(e instanceof be.chromeos_update_engine.ApexInfo)return e;var t=new be.chromeos_update_engine.ApexInfo;return null!=e.packageName&&(t.packageName=String(e.packageName)),null!=e.version&&(ge.Long?(t.version=ge.Long.fromValue(e.version)).unsigned=!1:"string"===typeof e.version?t.version=parseInt(e.version,10):"number"===typeof e.version?t.version=e.version:"object"===Object(pe["a"])(e.version)&&(t.version=new ge.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber())),null!=e.isCompressed&&(t.isCompressed=Boolean(e.isCompressed)),null!=e.decompressedSize&&(ge.Long?(t.decompressedSize=ge.Long.fromValue(e.decompressedSize)).unsigned=!1:"string"===typeof e.decompressedSize?t.decompressedSize=parseInt(e.decompressedSize,10):"number"===typeof e.decompressedSize?t.decompressedSize=e.decompressedSize:"object"===Object(pe["a"])(e.decompressedSize)&&(t.decompressedSize=new ge.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber())),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(n.packageName="",ge.Long){var r=new ge.Long(0,0,!1);n.version=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.version=t.longs===String?"0":0;if(n.isCompressed=!1,ge.Long){var a=new ge.Long(0,0,!1);n.decompressedSize=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.decompressedSize=t.longs===String?"0":0}return null!=e.packageName&&e.hasOwnProperty("packageName")&&(n.packageName=e.packageName),null!=e.version&&e.hasOwnProperty("version")&&("number"===typeof e.version?n.version=t.longs===String?String(e.version):e.version:n.version=t.longs===String?ge.Long.prototype.toString.call(e.version):t.longs===Number?new ge.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber():e.version),null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&(n.isCompressed=e.isCompressed),null!=e.decompressedSize&&e.hasOwnProperty("decompressedSize")&&("number"===typeof e.decompressedSize?n.decompressedSize=t.longs===String?String(e.decompressedSize):e.decompressedSize:n.decompressedSize=t.longs===String?ge.Long.prototype.toString.call(e.decompressedSize):t.longs===Number?new ge.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber():e.decompressedSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e}(),e.ApexMetadata=function(){function e(e){if(this.apexInfo=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(be.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(null!=e.apexInfo&&e.hasOwnProperty("apexInfo")){if(!Array.isArray(e.apexInfo))return"apexInfo: array expected";for(var t=0;t>>3){case 3:r.blockSize=e.uint32();break;case 4:r.signaturesOffset=e.uint64();break;case 5:r.signaturesSize=e.uint64();break;case 12:r.minorVersion=e.uint32();break;case 13:r.partitions&&r.partitions.length||(r.partitions=[]),r.partitions.push(be.chromeos_update_engine.PartitionUpdate.decode(e,e.uint32()));break;case 14:r.maxTimestamp=e.int64();break;case 15:r.dynamicPartitionMetadata=be.chromeos_update_engine.DynamicPartitionMetadata.decode(e,e.uint32());break;case 16:r.partialUpdate=e.bool();break;case 17:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(be.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;case 18:r.securityPatchLevel=e.string();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(null!=e.blockSize&&e.hasOwnProperty("blockSize")&&!ge.isInteger(e.blockSize))return"blockSize: integer expected";if(null!=e.signaturesOffset&&e.hasOwnProperty("signaturesOffset")&&!ge.isInteger(e.signaturesOffset)&&!(e.signaturesOffset&&ge.isInteger(e.signaturesOffset.low)&&ge.isInteger(e.signaturesOffset.high)))return"signaturesOffset: integer|Long expected";if(null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&!ge.isInteger(e.signaturesSize)&&!(e.signaturesSize&&ge.isInteger(e.signaturesSize.low)&&ge.isInteger(e.signaturesSize.high)))return"signaturesSize: integer|Long expected";if(null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&!ge.isInteger(e.minorVersion))return"minorVersion: integer expected";if(null!=e.partitions&&e.hasOwnProperty("partitions")){if(!Array.isArray(e.partitions))return"partitions: array expected";for(var t=0;t>>0),null!=e.signaturesOffset&&(ge.Long?(t.signaturesOffset=ge.Long.fromValue(e.signaturesOffset)).unsigned=!0:"string"===typeof e.signaturesOffset?t.signaturesOffset=parseInt(e.signaturesOffset,10):"number"===typeof e.signaturesOffset?t.signaturesOffset=e.signaturesOffset:"object"===Object(pe["a"])(e.signaturesOffset)&&(t.signaturesOffset=new ge.LongBits(e.signaturesOffset.low>>>0,e.signaturesOffset.high>>>0).toNumber(!0))),null!=e.signaturesSize&&(ge.Long?(t.signaturesSize=ge.Long.fromValue(e.signaturesSize)).unsigned=!0:"string"===typeof e.signaturesSize?t.signaturesSize=parseInt(e.signaturesSize,10):"number"===typeof e.signaturesSize?t.signaturesSize=e.signaturesSize:"object"===Object(pe["a"])(e.signaturesSize)&&(t.signaturesSize=new ge.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0))),null!=e.minorVersion&&(t.minorVersion=e.minorVersion>>>0),e.partitions){if(!Array.isArray(e.partitions))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected");t.partitions=[];for(var n=0;n>>0,e.maxTimestamp.high>>>0).toNumber())),null!=e.dynamicPartitionMetadata){if("object"!==Object(pe["a"])(e.dynamicPartitionMetadata))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected");t.dynamicPartitionMetadata=be.chromeos_update_engine.DynamicPartitionMetadata.fromObject(e.dynamicPartitionMetadata)}if(null!=e.partialUpdate&&(t.partialUpdate=Boolean(e.partialUpdate)),e.apexInfo){if(!Array.isArray(e.apexInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected");t.apexInfo=[];for(var r=0;r>>0,e.signaturesOffset.high>>>0).toNumber(!0):e.signaturesOffset),null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&("number"===typeof e.signaturesSize?n.signaturesSize=t.longs===String?String(e.signaturesSize):e.signaturesSize:n.signaturesSize=t.longs===String?ge.Long.prototype.toString.call(e.signaturesSize):t.longs===Number?new ge.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0):e.signaturesSize),null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&(n.minorVersion=e.minorVersion),e.partitions&&e.partitions.length){n.partitions=[];for(var o=0;o>>0,e.maxTimestamp.high>>>0).toNumber():e.maxTimestamp),null!=e.dynamicPartitionMetadata&&e.hasOwnProperty("dynamicPartitionMetadata")&&(n.dynamicPartitionMetadata=be.chromeos_update_engine.DynamicPartitionMetadata.toObject(e.dynamicPartitionMetadata,t)),null!=e.partialUpdate&&e.hasOwnProperty("partialUpdate")&&(n.partialUpdate=e.partialUpdate),e.apexInfo&&e.apexInfo.length){n.apexInfo=[];for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:"";return Object(we["a"])(this,n),e=t.call(this),e.offset=0,e.contentType=r,e.blob=new Blob([],{type:r}),e.prefixLength=0,e}return Object(ve["a"])(n,[{key:"readHeader",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r,a,i,o,s,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return n=0,r=function(e){var r=Fe(t,n,e);return n+=e,r},e.next=4,t.slice(0,Te).arrayBuffer();case 4:if(a=e.sent,i=new TextDecoder,o=a.slice(0,Le.length),s=i.decode(o),s==Le){e.next=10;break}throw new Error("MAGIC is not correct, expected: ".concat(Le," actual: ").concat(s));case 10:return n+=Le.length,e.next=13,r(Ie);case 13:return c=e.sent,e.next=16,r(ze);case 16:if(l=e.sent,c==Be){e.next=19;break}throw new Error("Unexpected major version number: ".concat(c));case 19:return e.next=21,r(Ae);case 21:u=e.sent,this.header=new De(s,c,l,u);case 23:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"writeUint8Array",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(Object(ye["a"])(Object(je["a"])(n.prototype),"writeUint8Array",this).call(this,t),this.blob=new Blob([this.blob,t.buffer],{type:this.contentType}),this.offset=this.blob.size,!(this.offset>=Te&&0==this.prefixLength)){e.next=9;break}return console.log("Parsing header!"),e.next=7,this.readHeader(this.blob);case 7:this.prefixLength=Te+this.header.manifest_len+this.header.metadata_signature_len,console.log("Computed metadata length: ".concat(this.prefixLength));case 9:if(!(this.prefixLength>0)){e.next=14;break}if(console.log("".concat(this.offset,"/").concat(this.prefixLength)),!(this.offset>=this.prefixLength)){e.next=14;break}throw this.blob=this.blob.slice(0,this.prefixLength),new Ce;case 14:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getData",value:function(){return this.blob}}]),n}(Pe["Writer"]),He=function(){function e(t){Object(we["a"])(this,e),t instanceof File?this.zipreader=new Pe["ZipReader"](new Pe["BlobReader"](t)):t instanceof URL?this.zipreader=new Pe["ZipReader"](new Pe["HttpReader"](t.href)):this.zipreader=t.reader}return Object(ve["a"])(e,[{key:"getMetadataLength",value:function(){return Te+this.header.manifest_len+this.header.metadata_signature_len}},{key:"unzip",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a,i,o,s;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.zipreader.getEntries();case 2:t=e.sent,n=Object(Oe["a"])(t),e.prev=4,n.s();case 6:if((r=n.n()).done){e.next=44;break}if(a=r.value,"payload.bin"!=a.filename){e.next=28;break}return i=new Me(""),e.prev=10,e.next=13,a.getData(i);case 13:e.next=22;break;case 15:if(e.prev=15,e.t0=e["catch"](10),!(e.t0 instanceof Ce)){e.next=20;break}e.next=22;break;case 20:throw console.log(e.t0),e.t0;case 22:return this.buffer=i.getData(),e.next=25,this.readManifest(this.buffer,i.header);case 25:console.log("AB OTA manifest parsed"),e.next=42;break;case 28:if("META-INF/com/android/metadata"!=a.filename){e.next=35;break}return e.next=31,a.getData(new Pe["TextWriter"]);case 31:this.metadata=e.sent,console.log("OTA Package metadata parsed"),e.next=42;break;case 35:if("payload_properties.txt"!=a.filename){e.next=42;break}return e.next=38,a.getData(new Pe["TextWriter"]);case 38:o=e.sent,this.payload_properties=o.split("\n"),console.log("OTA payload_properties.txt parsed"),console.log(this.getPayloadHash());case 42:e.next=6;break;case 44:e.next=49;break;case 46:e.prev=46,e.t1=e["catch"](4),n.e(e.t1);case 49:return e.prev=49,n.f(),e.finish(49);case 52:if(this.manifest){e.next=66;break}return console.log("Failed to parse AB OTA package, falling back to non-AB"),e.prev=54,s=new _e(this.zipreader),e.next=58,s.init();case 58:s.nonAB=!0,this.manifest=s,e.next=66;break;case 62:return e.prev=62,e.t2=e["catch"](54),alert("Please select a legit OTA package"),e.abrupt("return");case 66:case"end":return e.stop()}}),e,this,[[4,46,49,52],[10,15],[54,62]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"getPayloadHash",value:function(){var e,t="FILE_HASH=",n=Object(Oe["a"])(this.payload_properties);try{for(n.s();!(e=n.n()).done;){var r=e.value;if(r.startsWith(t))return Xe(r.substring(t.length))}}catch(a){n.e(a)}finally{n.f()}}},{key:"readManifest",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.header=n,r=Te,e.next=4,t.slice(r,r+n.manifest_len).arrayBuffer();case 4:return a=e.sent,r+=n.manifest_len,this.manifest=me.DeltaArchiveManifest.decode(new Uint8Array(a)),e.next=9,t.slice(r,r+n.metadata_signature_len).arrayBuffer();case 9:i=e.sent,r+=n.metadata_signature_len,this.metadata_signature=me.Signatures.decode(new Uint8Array(i)),this.manifest.nonAB=!1;case 13:case"end":return e.stop()}}),e,this)})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"parseMetadata",value:function(){var e,t=Object(Oe["a"])(Ne);try{for(t.s();!(e=t.n()).done;){var n=e.value,r=new RegExp(n.prefix+".+");this.metadata.match(r)?this[n.key]=Je(this.metadata.match(r)[0],n.prefix):this[n.key]=""}}catch(a){t.e(a)}finally{t.f()}}},{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.unzip();case 2:this.parseMetadata();case 3:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}]),e}(),Ue=function(e){Object(xe["a"])(n,e);var t=Object(ke["a"])(n);function n(){return Object(we["a"])(this,n),t.apply(this,arguments)}return Object(ve["a"])(n,[{key:"getWithDefault",value:function(e){return this.has(e)?this.get(e):e}}]),n}(Object(Se["a"])(Map)),Ve=Object(ve["a"])((function e(){Object(we["a"])(this,e);var t=me.InstallOperation.Type;this.mapType=new Ue;for(var n=0,r=Object.keys(t);n1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:16,r="",a=0;a3&&void 0!==arguments[3]?arguments[3]:15;Object(we["a"])(this,e),this.statisticData=t,this.trimmedData=ct(t,a),this.title=n,this.unit=r,this.maximumEntries=a}return Object(ve["a"])(e,[{key:"listData",value:function(){var e,t="",n=Object(Oe["a"])(this.statisticData);try{for(n.s();!(e=n.n()).done;){var r=Object(ot["a"])(e.value,2),a=r[0],i=r[1];t+=a+" : "+i.toString()+" Blocks\n"}}catch(o){n.e(o)}finally{n.f()}return t}},{key:"getEchartsOption",value:function(){var e={};return e.title={text:this.title,left:"center"},e.tooltip={trigger:"item",formatter:"{a}
{b} : {c} "+this.unit+" ({d}%)"},e.legend={orient:"horizontal",left:"top",top:"10%",data:Array.from(this.trimmedData.keys())},e.series=[{name:this.title,type:"pie",radius:"55%",center:["50%","60%"],data:Array.from(this.trimmedData).map((function(e){return{value:e[1],name:e[0]}})),emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],e}}]),e}();function ct(e,t){if(e.size<=t)return e;for(var n=new Map,r=0;ri&&(i=u,o=l)}}catch(m){s.e(m)}finally{s.f()}n.set(o,i)}var p,d=0,f=Object(Oe["a"])(e);try{for(f.s();!(p=f.n()).done;){var h=Object(ot["a"])(p.value,2),g=h[0],b=h[1];n.get(g)||(d+=b)}}catch(m){f.e(m)}finally{f.f()}return n.set("other",d),n}var lt=function(){function e(t){Object(we["a"])(this,e),t instanceof File?this.build=new Pe["ZipReader"](new Pe["BlobReader"](t)):this.build=new Pe["ZipReader"](new Pe["HttpReader"](t.href)),this.mapFiles=new Map,this.maps=new Map}return Object(ve["a"])(e,[{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a=this;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.build.getEntries();case 2:t=e.sent,n=/IMAGES\/[a-z_]*\.map/g,r=/[\w_]+(?=\.map)/g,t.forEach((function(e){e.filename.match(n)&&a.mapFiles.set(e.filename.match(r)[0],e)}));case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"add",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,c,l,u,p,d,f,h,g;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:for(r=[],a=/\d+/g,i=/\d+\-\d+/g,o=0;o");if(!this.mapFiles.get(t)){e.next=14;break}return e.next=7,this.mapFiles.get(t).getData(new Pe["TextWriter"]);case 7:s=e.sent,c=s.split("\n"),l=Object(Oe["a"])(c);try{for(l.s();!(u=l.n()).done;)for(p=u.value,d=p.split(" "),f=1;f2&&void 0!==s[2]?s[2]:4096,a=s.length>3&&void 0!==s[3]?s[3]:null,e.t0=t,e.next="blocks"===e.t0?5:"payload"===e.t0?8:"COWmerge"===e.t0?11:"filenames"===e.t0?14:"extensions"===e.t0?21:"partitions"===e.t0?28:31;break;case 5:return i=ft(n),o=new st(i,"Operated blocks in target build","blocks"),e.abrupt("break",31);case 8:return i=mt(n),o=new st(i,"Payload disk usage","bytes"),e.abrupt("break",31);case 11:return i=bt(n,r),o=new st(i,"COW merge operations","blocks"),e.abrupt("break",31);case 14:if(null!=a){e.next=16;break}throw new Error("Target file is required for filenames analysis");case 16:return e.next=18,jt(n,r,a);case 18:return i=e.sent,o=new st(i,"Size of operated filenames","bytes"),e.abrupt("break",31);case 21:if(null!=a){e.next=23;break}throw new Error("Target file is required for filenames analysis");case 23:return e.next=25,Ot(n,r,a);case 25:return i=e.sent,o=new st(i,"Size of operated extensions","bytes"),e.abrupt("break",31);case 28:return i=gt(n),o=new st(i,"Partition payload size","bytes"),e.abrupt("break",31);case 31:if(!o){e.next=35;break}return e.abrupt("return",o);case 35:throw"Please double check if this is a proper AB OTA package.";case 36:case"end":return e.stop()}}),e)}))),xt.apply(this,arguments)}function kt(e){if(!e)return 0;var t=function(e,t){return e+t.numBlocks};return e.reduce(t,0)}function St(e){var t=function(e,t){return e+"("+t.startBlock+","+t.numBlocks+")"};return e.reduce(t,"")}function Pt(e,t,n){for(var r=kt(t),a=new Map,i=0;i1?t[t.length-1]:"unknown"===t[0]?"unknown":"<"==e[0]&&e.endsWith(">")?e:"no-extension"}var Et=Object(r["m"])({props:{operation:{type:Object,required:!0},mapType:{type:Ue,required:!0}},data:function(){return{srcTotalBlocks:0,srcBlocks:"",dstTotalBlocks:0,dstBlocks:""}},mounted:function(){this.operation.srcExtents&&(this.srcTotalBlocks=kt(this.operation.srcExtents),this.srcBlocks=St(this.operation.srcExtents)),this.operation.dstExtents&&(this.dstTotalBlocks=kt(this.operation.dstExtents),this.dstBlocks=St(this.operation.dstExtents))}});n("8edb");Et.render=it,Et.__scopeId="data-v-44174082";var Lt=Et,It=Object(r["m"])({components:{OperationDetail:Lt},props:{partition:{type:me.PartitionUpdate,required:!0},dynamicPartitionList:{type:Array,required:!0}},data:function(){return{showOPs:!1,showInfo:!1,opType:new Ve}},methods:{toggle:function(e){this[e]=!this[e]},octToHex:Ze},computed:{readableTimestamp:function(){var e=parseInt(this.partition.version);return isNaN(e)?"":new Date(1e3*e).toString()},isDynamicPartition:function(){return this.dynamicPartitionList.indexOf(this.partition.partitionName)>=0},isFECEnabled:function(){var e;return(null===(e=this.partition.fecExtent)||void 0===e?void 0:e.numBlocks)>0},isHashtreeEnabled:function(){var e;return(null===(e=this.partition.hashTreeExtent)||void 0===e?void 0:e.numBlocks)>0}}});n("c622");It.render=ue,It.__scopeId="data-v-21e569e9";var zt=It,At=(n("498a"),Object(r["Z"])("data-v-4b9027e2"));Object(r["D"])("data-v-4b9027e2");var Tt=Object(r["l"])("h3",null,"Basic infos",-1),Bt={class:"align"},Nt=Object(r["l"])("strong",null," File name ",-1),Ct=Object(r["l"])("strong",null," File size ",-1),Dt={class:"align"},Ft={class:"wrap"},Rt={key:2},Mt={class:"align"},Ht=Object(r["l"])("strong",null," Incremental ",-1),Ut={key:0},Vt={key:1},Wt=Object(r["l"])("strong",null," Partial ",-1),Zt={key:0},Jt={key:1},Xt=Object(r["l"])("strong",null," A/B update ",-1),qt={key:0},Gt={key:1},$t=Object(r["l"])("strong",null," VAB ",-1),Yt={key:0},Kt={key:1},Qt=Object(r["l"])("strong",null," VABC ",-1),en={key:0},tn={key:1},nn=Object(r["l"])("strong",null," Wipes Data ",-1),rn={key:0},an={key:1},on={key:0},sn=Object(r["l"])("strong",null," Total Dynamic Partition Size ",-1),cn={key:1},ln=Object(r["l"])("strong",null," Total VABC COW Size ",-1),un={key:2},pn=Object(r["l"])("strong",null," VABC Compression Param ",-1),dn={key:3},fn=Object(r["l"])("strong",null," Security Patch Level ",-1);Object(r["B"])();var hn=At((function(e,t,n,a,i,o){return Object(r["A"])(),Object(r["i"])(r["a"],null,[Tt,e.zipFile?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:0},e.$attrs),[Object(r["l"])("ul",Bt,[Object(r["l"])("li",null,[Nt,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileName()),1)]),Object(r["l"])("li",null,[Ct,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileSize())+" Bytes",1)])])],16)):Object(r["j"])("",!0),e.payload&&e.payload.metadata?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:1},e.$attrs),[Object(r["l"])("ul",Dt,[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.otaMetadata,(function(t){return Object(r["A"])(),Object(r["i"])("li",{key:t.name},[Object(r["l"])("strong",null,Object(r["N"])(t.name.trim()+" "),1),Object(r["l"])("p",Ft,Object(r["N"])(String(e.payload[t.key]).trim()),1)])})),128))])],16)):Object(r["j"])("",!0),e.payload&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])("div",Rt,[Object(r["l"])("ul",Mt,[Object(r["l"])("li",null,[Ht,e.payload.preBuild?(Object(r["A"])(),Object(r["i"])("span",Ut," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Vt," ❌ "))]),Object(r["l"])("li",null,[Wt,e.payload.manifest.partialUpdate?(Object(r["A"])(),Object(r["i"])("span",Zt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Jt," ❌ "))]),Object(r["l"])("li",null,[Xt,e.payload.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",Gt," ❌ ")):(Object(r["A"])(),Object(r["i"])("span",qt," ✅ "))]),Object(r["l"])("li",null,[$t,e.payload.manifest.dynamicPartitionMetadata.snapshotEnabled?(Object(r["A"])(),Object(r["i"])("span",Yt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Kt," ❌ "))]),Object(r["l"])("li",null,[Qt,e.payload.manifest.dynamicPartitionMetadata.vabcEnabled?(Object(r["A"])(),Object(r["i"])("span",en," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",tn," ❌ "))]),Object(r["l"])("li",null,[nn,e.isDataWipePackage?(Object(r["A"])(),Object(r["i"])("span",rn," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",an," ❌ "))]),e.totalDynamicPartitionSize?(Object(r["A"])(),Object(r["i"])("li",on,[sn,Object(r["k"])(" "+Object(r["N"])(e.totalDynamicPartitionSize),1)])):Object(r["j"])("",!0),e.totalCOWSize?(Object(r["A"])(),Object(r["i"])("li",cn,[ln,Object(r["k"])(" "+Object(r["N"])(e.totalCOWSize),1)])):Object(r["j"])("",!0),e.vabcCompressionParam?(Object(r["A"])(),Object(r["i"])("li",un,[pn,Object(r["k"])(" "+Object(r["N"])(e.vabcCompressionParam),1)])):Object(r["j"])("",!0),e.securityPatchLevel?(Object(r["A"])(),Object(r["i"])("li",dn,[fn,Object(r["k"])(" "+Object(r["N"])(e.securityPatchLevel),1)])):Object(r["j"])("",!0)])])):Object(r["j"])("",!0)],64)})),gn=(n("caad"),n("2532"),n("4de4"),n("6062"),function(){function e(t){Object(we["a"])(this,e),this.file=t,this.reader=On(t)}return Object(ve["a"])(e,[{key:"getFileName",value:function(){return yn(this.file)}},{key:"getFileSize",value:function(){return this.file instanceof File?this.file.size:0}}]),e}());function bn(e,t){return mn.apply(this,arguments)}function mn(){return mn=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return r=t,a=new Pe["ZipWriter"](new Pe["BlobWriter"]("application/zip")),e.next=4,r.getEntries();case 4:i=e.sent,o=Object(Oe["a"])(i.filter((function(e){return!!e&&n(e)}))),e.prev=6,o.s();case 8:if((s=o.n()).done){e.next=18;break}return c=s.value,l=new Pe["BlobWriter"],e.next=13,c.getData(l);case 13:u=e.sent,console.log("Adding ".concat(c.filename,", ").concat(u.size)),a.add(c.filename,new Pe["BlobReader"](l.getData()),{level:0});case 16:e.next=8;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e["catch"](6),o.e(e.t0);case 23:return e.prev=23,o.f(),e.finish(23);case 26:return e.abrupt("return",a);case 27:case"end":return e.stop()}}),e,null,[[6,20,23,26]])}))),mn.apply(this,arguments)}function On(e){return e instanceof File?new Pe["ZipReader"](new Pe["BlobReader"](e)):new Pe["ZipReader"](new Pe["HttpReader"](e.href))}function yn(e){return e instanceof File?e.name:e.pathname}function jn(e){return vn.apply(this,arguments)}function vn(){return vn=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,bn(On(t),(function(e){return e.filename.startsWith("META/")||e.filename.endsWith(".map")||e.filename.endsWith(".prop")||"prop.default"==e.filename}));case 2:return n=e.sent,e.next=5,n.close();case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)}))),vn.apply(this,arguments)}function wn(e){return xn.apply(this,arguments)}function xn(){return xn=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,bn(t.zipreader,(function(e){return"payload.bin"!=e.filename}));case 2:return n=e.sent,e.next=5,n.add("payload.bin",new Pe["BlobReader"](t.buffer.slice(0,t.getMetadataLength())),{level:0});case 5:return e.next=7,n.close();case 7:return r=e.sent,e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)}))),xn.apply(this,arguments)}function kn(e,t,n){var r=window.URL.createObjectURL(e);t.href=r,t.download=n,t.click(),window.URL.revokeObjectURL(r)}function Sn(e,t){return e.endsWith(t)?e:e+t}var Pn=Object(r["m"])({props:{zipFile:{type:gn,required:!0},payload:{type:He,required:!0}},data:function(){return{MetadataFormat:Ne}},computed:{isDataWipePackage:function(){return this.payload.payload_properties.includes("POWERWASH=1")},otaMetadata:function(){var e=this;return Ne.filter((function(t){return String(e.payload[t.key]).length>0}))},totalCOWSize:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.partitions.map((function(e){return e.estimateCowSize||0}));return n?n.reduce((function(e,t){return e+t})):0},vabcCompressionParam:function(){var e,t,n;return(null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.vabcCompressionParam)||""},securityPatchLevel:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.securityPatchLevel;return n||""},totalDynamicPartitionSize:function(){var e,t,n,r,a=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.groups;if(!a)return 0;var i=new Set(a.flatMap((function(e){return e.partitionNames}))),o=(null===(r=this.payload.manifest)||void 0===r?void 0:r.partitions.filter((function(e){return i.has(e.partitionName)})))||[];return o.length<=0?0:o.map((function(e){var t;return(null===(t=e.newPartitionInfo)||void 0===t?void 0:t.size)||0})).reduce((function(e,t){return e+t}))}}});n("828c");Pn.render=hn,Pn.__scopeId="data-v-4b9027e2";var _n=Pn,En=Object(r["m"])({components:{PartitionDetail:zt,BasicInfo:_n},props:{zipFile:{type:gn,default:null},payload:{type:He,default:null}},methods:{octToHex:Ze,exportOTAPackage:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,wn(e.payload);case 2:n=t.sent,r=e.$refs["download"],kn(n,r,"trimmed_"+Sn(e.zipFile.getFileName(),".zip"));case 5:case"end":return t.stop()}}),t)})))()}},computed:{dynamicPartitions:function(){var e,t,n;return(null===(e=this.payload.manifest)||void 0===e||null===(t=e.dynamicPartitionMetadata)||void 0===t||null===(n=t.groups)||void 0===n?void 0:n.flatMap((function(e){return e.partitionNames||[]})))||[]},payloadHash:function(){var e,t=null===(e=this.payload)||void 0===e?void 0:e.getPayloadHash();return t?Ze(t,!1):""}}});n("2948");En.render=N,En.__scopeId="data-v-5dd4ca12";var Ln=En,In=Object(r["Z"])("data-v-b6f71732");Object(r["D"])("data-v-b6f71732");var zn=Object(r["k"])("Export Target File Metadata"),An={ref:"download"},Tn={key:1},Bn=Object(r["k"])(" Analyse Installed Blocks (in target build) "),Nn=Object(r["k"])(" Analyse Payload Composition "),Cn=Object(r["k"])(" Analyse Partition Payload Composition "),Dn=Object(r["k"])(" Analyse COW Merge Operations "),Fn={key:0,class:"tooltiptext"},Rn=Object(r["k"])(" Analyse Filenames "),Mn=Object(r["k"])(" Analyse File Extensions ");Object(r["B"])();var Hn=In((function(e,t,n,a,i,o){var s=Object(r["I"])("v-btn"),c=Object(r["I"])("PartialCheckbox"),l=Object(r["I"])("PieChart"),u=Object(r["I"])("v-divider"),p=Object(r["I"])("v-col"),d=Object(r["I"])("v-row"),f=Object(r["I"])("BaseFile");return Object(r["A"])(),Object(r["i"])(r["a"],null,[e.targetFile?(Object(r["A"])(),Object(r["i"])(s,{key:0,block:"",class:"md-6",onClick:e.exportTargetFileMetadata},{default:In((function(){return[zn]})),_:1},8,["onClick"])):Object(r["j"])("",!0),Object(r["l"])("a",An,null,512),Object(r["l"])(c,{modelValue:e.partitionInclude,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.partitionInclude=t}),labels:e.updatePartitions},null,8,["modelValue","labels"]),e.echartsData?(Object(r["A"])(),Object(r["i"])("div",Tn,[Object(r["l"])(l,{echartsData:e.echartsData,onClick:e.piechartClick},null,8,["echartsData","onClick"])])):Object(r["j"])("",!0),Object(r["l"])(u),Object(r["l"])(d,null,{default:In((function(){return[Object(r["l"])(p,{cols:"12",md:"4"},{default:In((function(){return[Object(r["l"])(s,{block:"",onClick:t[2]||(t[2]=function(t){return e.updateChart("blocks")})},{default:In((function(){return[Bn]})),_:1})]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:In((function(){return[Object(r["l"])(s,{block:"",onClick:t[3]||(t[3]=function(t){return e.updateChart("payload")})},{default:In((function(){return[Nn]})),_:1})]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:In((function(){return[Object(r["l"])(s,{block:"",onClick:t[4]||(t[4]=function(t){return e.updateChart("partitions")})},{default:In((function(){return[Cn]})),_:1})]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:In((function(){return[Object(r["l"])(p,{cols:"12",md:"4",class:"tooltip"},{default:In((function(){return[Object(r["l"])(s,{disabled:e.manifest.nonAB||!e.manifest.dynamicPartitionMetadata.vabcEnabled,title:"Only available for VABC update",block:"",onClick:t[5]||(t[5]=function(t){return e.updateChart("COWmerge")})},{default:In((function(){return[Dn]})),_:1},8,["disabled"]),e.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",Fn," This function is only supported in A/B OTA ")):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:In((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[6]||(t[6]=function(t){return e.updateChart("filenames")})},{default:In((function(){return[Rn]})),_:1},8,["disabled"])]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:In((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[7]||(t[7]=function(t){return e.updateChart("extensions")})},{default:In((function(){return[Mn]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:In((function(){return[Object(r["l"])(p,{cols:"12",md:"6"}),Object(r["l"])(p,{cols:"12",md:"6"},{default:In((function(){return[e.demo?Object(r["j"])("",!0):(Object(r["A"])(),Object(r["i"])(f,{key:0,label:"Drag and drop or Select The target Android build",onFileSelect:e.selectBuild},null,8,["onFileSelect"]))]})),_:1})]})),_:1})],64)})),Un=n("bc3a"),Vn=n.n(Un),Wn=Object(r["Z"])("data-v-533f2336");Object(r["D"])("data-v-533f2336");var Zn={key:0};Object(r["B"])();var Jn=Wn((function(e,t,n,a,i,o){var s=Object(r["I"])("v-btn"),c=Object(r["I"])("v-col"),l=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(r["a"],null,[Object(r["l"])(s,{block:"",type:"button",class:"my-5",onClick:e.revertAllSelection},{default:Wn((function(){return[Object(r["k"])(Object(r["N"])(e.selectAllText[e.selectAll]),1)]})),_:1},8,["onClick"]),Object(r["l"])(l,{class:"mb-5"},{default:Wn((function(){return[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.labels,(function(n){return Object(r["A"])(),Object(r["i"])(c,{key:n,cols:"12",md:"4"},{default:Wn((function(){return[Object(r["l"])("input",{type:"checkbox",value:n,checked:e.modelValue.get(n),onChange:t[1]||(t[1]=function(t){return e.updateSelected(t.target.value)})},null,40,["value","checked"]),n?(Object(r["A"])(),Object(r["i"])("label",Zn,Object(r["N"])(n),1)):Object(r["j"])("",!0)]})),_:2},1024)})),128))]})),_:1})],64)})),Xn=Object(r["m"])({props:{labels:{type:Array,default:new Array},modelValue:{type:Map,default:new Map}},data:function(){return{selectAll:1,selectAllText:["Select All","Unselect All"]}},mounted:function(){var e,t=Object(Oe["a"])(this.labels);try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,!0)}}catch(r){t.e(r)}finally{t.f()}},methods:{updateSelected:function(e){this.modelValue.set(e,!this.modelValue.get(e)),this.$emit("update:modelValue",this.modelValue)},revertAllSelection:function(){this.selectAll=1-this.selectAll;var e,t=Object(Oe["a"])(this.modelValue.keys());try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,Boolean(this.selectAll))}}catch(r){t.e(r)}finally{t.f()}}}});n("a75a");Xn.render=Jn,Xn.__scopeId="data-v-533f2336";var qn=Xn,Gn=n("2909"),$n="undefined"===typeof arguments?void 0:arguments,Yn=Object(r["Z"])("data-v-5d1cb486"),Kn=Yn((function(e,t,n,a,i,o){var s=Object(r["I"])("v-chart");return Object(r["A"])(),Object(r["i"])(s,{class:"chart",option:o.getEchartsOption,onClick:t[1]||(t[1]=function(t){return e.$emit.apply(e,["click"].concat(Object(Gn["a"])($n)))})},null,8,["option"])})),Qn=n("ade3"),er=n("22b4"),tr=n("f95e"),nr=n("49bb"),rr=n("9394"),ar=n("2da7"),ir=n("ff32"),or=n("5c7f");Object(er["a"])([tr["a"],nr["a"],rr["a"],ar["a"],ir["a"]]);var sr={components:{VChart:or["b"]},provide:Object(Qn["a"])({},or["a"],"dark"),props:{echartsData:{type:st,required:!0}},computed:{getEchartsOption:function(){return this.echartsData.getEchartsOption()}}};n("47e0");sr.render=Kn,sr.__scopeId="data-v-5d1cb486";var cr=sr,lr=Object(r["m"])({components:{PartialCheckbox:qn,PieChart:cr,BaseFile:x},props:{manifest:{type:me.DeltaArchiveManifest,default:function(){return[]}},demo:{type:Boolean,default:!1}},data:function(){return{partitionInclude:new Map,echartsData:null,listData:"",targetFile:null}},computed:{updatePartitions:function(){return this.manifest.partitions.map((function(e){return e.partitionName}))}},mounted:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(!e.demo){t.next=11;break}return t.prev=1,t.next=4,Vn.a.get("./files/cf_x86_target_file_demo.zip",{responseType:"blob"});case 4:n=t.sent,e.targetFile=new File([n.data],"target_demo.zip"),t.next=11;break;case 8:t.prev=8,t.t0=t["catch"](1),console.log("Please put a proper example target file in /public/files/");case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))()},methods:{piechartClick:function(e){console.log(e)},updateChart:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return r=t.manifest.partitions.filter((function(e){return t.partitionInclude.get(e.partitionName)})),n.prev=1,n.next=4,wt(e,r,t.manifest.blockSize,t.targetFile);case 4:t.echartsData=n.sent,n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Cannot be processed for the following issue: ".concat(n.t0));case 10:case"end":return n.stop()}}),n,null,[[1,7]])})))()},selectBuild:function(e){this.targetFile=e},exportTargetFileMetadata:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,jn(e.targetFile);case 2:n=t.sent,r=e.$refs["download"],kn(n,r,"trimmed_"+Sn(yn(e.targetFile),".zip"));case 5:case"end":return t.stop()}}),t)})))()}}});n("9120");lr.render=Hn,lr.__scopeId="data-v-b6f71732";var ur=lr,pr=Object(r["m"])({components:{BaseFile:x,PayloadDetail:Ln,PayloadComposition:ur},data:function(){return{zipFile:null,payload:null}},methods:{unpackOTA:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return t.zipFile=new gn(e),n.prev=1,r=new He(t.zipFile),n.next=5,r.init();case 5:t.payload=r,n.next=12;break;case 8:n.prev=8,n.t0=n["catch"](1),alert("Please check if this is a correct OTA package (.zip). ".concat(n.t0)),console.log(n.t0);case 12:case"end":return n.stop()}}),n,null,[[1,8]])})))()}}});pr.render=h;var dr=pr;function fr(e,t,n,a,i,o){var s=Object(r["I"])("PayloadDetail"),c=Object(r["I"])("v-col"),l=Object(r["I"])("v-divider"),u=Object(r["I"])("PayloadComposition"),p=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(p,null,{default:Object(r["X"])((function(){return[Object(r["l"])(c,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload?(Object(r["A"])(),Object(r["i"])(s,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(l,{vertical:""}),Object(r["l"])(c,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])(u,{key:0,manifest:e.payload.manifest,demo:!0},null,8,["manifest"])):Object(r["j"])("",!0)]})),_:1})]})),_:1})}var hr=Object(r["m"])({components:{PayloadDetail:Ln,PayloadComposition:ur},data:function(){return{zipFile:null,payload:null}},created:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,Vn.a.get("./files/cf_x86_demo.zip",{responseType:"blob"});case 3:return n=t.sent,e.zipFile=new gn(new File([n.data],"ota_demo.zip")),e.payload=new He(e.zipFile),t.next=8,e.payload.init();case 8:t.next=13;break;case 10:t.prev=10,t.t0=t["catch"](0),console.log("Please put a proper example OTA in /public/files/");case 13:case"end":return t.stop()}}),t,null,[[0,10]])})))()}});hr.render=fr;var gr=hr,br={class:"about"},mr=Object(r["l"])("p",null,"A web based tool to inspect Android OTA packages.",-1);function Or(e,t){return Object(r["A"])(),Object(r["i"])("div",br,[mr])}const yr={};yr.render=Or;var jr=yr,vr=Object(r["Z"])("data-v-50c6f348");Object(r["D"])("data-v-50c6f348");var wr=Object(r["l"])("h1",null,"Not Found!",-1),xr=Object(r["l"])("p",null,[Object(r["l"])("a",{href:"/"},"Go home?")],-1);Object(r["B"])();var kr=vr((function(e,t){var n=Object(r["I"])("center");return Object(r["A"])(),Object(r["i"])(n,null,{default:vr((function(){return[wr,xr]})),_:1})}));n("8e71");const Sr={};Sr.render=kr,Sr.__scopeId="data-v-50c6f348";var Pr=Sr,_r=[{path:"/",name:"Analysis",component:dr,meta:{title:"Analyse OTA package - from AOSP"}},{path:"/demo",name:"Demo",component:gr},{path:"/about",name:"About",component:jr},{path:"/:catchAll(.*)",name:"Not Found",component:Pr}],Er=Object(d["a"])({history:Object(d["b"])("/analyseOTA/"),routes:_r});Er.beforeEach((function(e,t,n){var r=e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.title})),a=(e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})),t.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})));r?document.title=r.meta.title:a&&(document.title=a.meta.title),Array.from(document.querySelectorAll("[data-vue-router-controlled]")).map((function(e){return e.parentNode.removeChild(e)})),n()}));var Lr=Er,Ir=n("5502"),zr=Object(Ir["a"])({state:{},mutations:{},actions:{},modules:{}}),Ar=Object(r["h"])(p);Ar.use(Lr),Ar.use(zr),Ar.use(s),Ar.mount("#app")},d978:function(e,t,n){}}); +//# sourceMappingURL=app.a143b6a4.js.map \ No newline at end of file diff --git a/analyseOTA/js/app.a143b6a4.js.map b/analyseOTA/js/app.a143b6a4.js.map new file mode 100644 index 0000000..f0cc4df --- /dev/null +++ b/analyseOTA/js/app.a143b6a4.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/PayloadDetail.vue?8f9f","webpack:///./src/App.vue?1825","webpack:///./src/components/PieChart.vue?3f25","webpack:///./src/components/BaseFile.vue?5b74","webpack:///./src/components/BasicInfo.vue?c9d8","webpack:///./src/views/NotFound.vue?18b8","webpack:///./src/components/OperationDetail.vue?7823","webpack:///./src/components/PayloadComposition.vue?be7e","webpack:///./src/components/PartialCheckbox.vue?cce7","webpack:///./src/components/PartitionDetail.vue?e22f","webpack:///./src/plugins/vuetify.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?6697","webpack:///./src/views/PackageAnalysis.vue","webpack:///./src/components/BaseFile.vue","webpack:///./src/components/BaseFile.vue?5af0","webpack:///./src/components/BaseFile.vue?408d","webpack:///./src/components/PayloadDetail.vue","webpack:///./src/components/PartitionDetail.vue","webpack:///./src/services/update_metadata_pb.js","webpack:///./src/services/payload_nonab.ts","webpack:///./src/services/payload.ts","webpack:///./src/components/OperationDetail.vue","webpack:///./src/services/echarts_data.ts","webpack:///./src/services/map_parser.ts","webpack:///./src/services/payload_composition.ts","webpack:///./src/components/OperationDetail.vue?0239","webpack:///./src/components/OperationDetail.vue?19cd","webpack:///./src/components/PartitionDetail.vue?7d27","webpack:///./src/components/PartitionDetail.vue?b40d","webpack:///./src/components/BasicInfo.vue","webpack:///./src/services/trim_zip.ts","webpack:///./src/components/BasicInfo.vue?bb39","webpack:///./src/components/BasicInfo.vue?e053","webpack:///./src/components/PayloadDetail.vue?cdd8","webpack:///./src/components/PayloadDetail.vue?a20c","webpack:///./src/components/PayloadComposition.vue","webpack:///./src/components/PartialCheckbox.vue","webpack:///./src/components/PartialCheckbox.vue?fbe3","webpack:///./src/components/PartialCheckbox.vue?59db","webpack:///./src/components/PieChart.vue","webpack:///./src/components/PieChart.vue?1278","webpack:///./src/components/PayloadComposition.vue?3e04","webpack:///./src/components/PayloadComposition.vue?d59c","webpack:///./src/views/PackageAnalysis.vue?3fdf","webpack:///./src/views/PackageAnalysis.vue?2d24","webpack:///./src/views/Demo.vue","webpack:///./src/views/Demo.vue?9616","webpack:///./src/views/Demo.vue?e633","webpack:///./src/views/About.vue","webpack:///./src/views/About.vue?aa81","webpack:///./src/views/NotFound.vue","webpack:///./src/views/NotFound.vue?2812","webpack:///./src/router/index.ts","webpack:///./src/store/index.ts","webpack:///./src/main.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","components","directives","theme","defaultTheme","rounded","color","links","link","to","class","fluid","render","style","cols","md","label","unpackOTA","zipFile","payload","vertical","manifest","dragover","dragleave","drop","fileName","ref","type","accept","handleFileChange","placeholder","url","urlKeyup","props","String","default","emits","computed","parsedURL","URL","this","methods","event","currentTarget","target","files","selectedFile","$emit","preventDefault","classList","contains","add","remove","dataTransfer","console","log","error","__scopeId","exportOTAPackage","partitions","partition","partitionName","elevation","hover","shaped","dynamicPartitionList","dynamicPartitions","nonAB","payloadHash","metadata_signature","octToHex","signatures","oldPartitionInfo","isDynamicPartition","isFECEnabled","isHashtreeEnabled","estimateCowSize","postinstallPath","toggle","showInfo","size","hash","newPartitionInfo","version","readableTimestamp","showOPs","operations","operation","dataSha256Hash","mapType","opType","$Reader","$protobuf","$Writer","$util","$root","chromeos_update_engine","Extent","properties","keys","startBlock","Long","fromBits","numBlocks","encode","message","writer","uint32","uint64","encodeDelimited","ldelim","decode","reader","end","undefined","len","pos","tag","skipType","decodeDelimited","verify","isInteger","low","high","fromObject","fromValue","unsigned","parseInt","LongBits","toNumber","toObject","options","defaults","long","longs","toString","Number","toJSON","constructor","toJSONOptions","Signatures","emptyArray","Signature","fork","Array","isArray","TypeError","arrays","newBuffer","unpaddedSignatureSize","bytes","fixed32","isString","base64","PartitionInfo","InstallOperation","srcExtents","dstExtents","dataOffset","dataLength","srcLength","dstLength","srcSha256Hash","int32","ProtocolError","instance","enums","Type","valuesById","values","CowMergeOperation","srcExtent","dstExtent","srcOffset","PartitionUpdate","newPartitionSignature","mergeOperations","runPostinstall","filesystemType","postinstallOptional","hashTreeDataExtent","hashTreeExtent","hashTreeAlgorithm","hashTreeSalt","fecDataExtent","fecExtent","fecRoots","string","bool","Boolean","DynamicPartitionGroup","partitionNames","DynamicPartitionMetadata","groups","snapshotEnabled","vabcEnabled","vabcCompressionParam","cowVersion","ApexInfo","packageName","isCompressed","decompressedSize","int64","ApexMetadata","apexInfo","DeltaArchiveManifest","blockSize","signaturesOffset","signaturesSize","minorVersion","maxTimestamp","dynamicPartitionMetadata","partialUpdate","securityPatchLevel","packedFile","Blocksize","regexName","getEntries","entries","entry","filename","match","newPartition","getData","rawText","parseTransferList","lines","split","totalBlocks","entryStashed","maxStashed","Uint8Array","sizeNewData","newDataSize","line","op","elements","reduce","parseRange","RegExp","uncompressedSize","extents","rangeset","regexRange","extent","_MAGIC","_VERSION_SIZE","_MANIFEST_LEN_SIZE","_METADATA_SIGNATURE_LEN_SIZE","_PAYLOAD_HEADER_SIZE","_BRILLO_MAJOR_PAYLOAD_VERSION","MetadataFormat","prefix","Error","magic","manifest_len","metadata_signature_len","readIntAt","buffer","position","DataView","arrayBuffer","view","getBigUint64","offset","a","BigInt","getUint32","b","bigNumber","getUint16","contentType","blob","Blob","prefixLength","cursor","readInt","ret","decoder","TextDecoder","magicBytes","header_version","header","array","readHeader","file","File","zipreader","href","readManifest","metadata","payload_properties","getPayloadHash","init","alert","file_hash_prefix","startsWith","base64ToBytes","substring","manifestBlob","signatureBlob","formatter","regex","trimEntry","unzip","parseMetadata","has","Map","types","set","bufferArray","space","maxLine","hex_table","hex","toUpperCase","binString","atob","from","codePointAt","getWithDefault","srcTotalBlocks","srcBlocks","dstTotalBlocks","dstBlocks","statisticData","title","unit","maximumEntries","trimmedData","trimMap","table","option","text","left","tooltip","trigger","legend","orient","top","series","radius","center","map","pair","emphasis","itemStyle","shadowBlur","shadowOffsetX","shadowColor","new_map","curr","currKey","restTotal","targetFile","build","mapFiles","maps","regexPath","forEach","totalLength","regexNumber","mapText","fileEntries","right","InsertMap","names","ext","queryMap","addNumberToMap","operatedBlockStatistics","operatedBlocks","operationType","partitionPayloadSize","partitionPayloadSizeStatistics","partitionStats","mergeOperationStatistics","Math","ceil","operatedPayloadStatistics","operatedFileExtensionsStatistics","operatedFilenamesStatistics","filenameStats","fileExtenstionStats","name2Extension","operatedFilenames","buildMap","operatedFileNames","query","extentDataLength","distributeFilenames","analysePartitions","metrics","statisticsData","echartsData","exts","accumulator","total","displayBlocks","filenames","distributedLengths","round","endsWith","required","mounted","OperationDetail","unixTimestamp","isNaN","Date","indexOf","$attrs","getFileName","getFileSize","otaMetadata","trim","preBuild","isDataWipePackage","totalDynamicPartitionSize","totalCOWSize","getZipReader","trimZip","zip","filter","blobWriter","level","pathname","trimTargetFiles","close","trimOTAPackage","getMetadataLength","downloadFile","downloadNode","createObjectURL","download","click","revokeObjectURL","ensureSuffix","str","suffix","includes","cowSizes","spl","dynamicPartitionNamess","Set","flatMap","g","acc","cur","PartitionDetail","BasicInfo","$refs","block","exportTargetFileMetadata","partitionInclude","labels","updatePartitions","piechartClick","updateChart","disabled","demo","selectBuild","revertAllSelection","selectAllText","selectAll","checked","modelValue","updateSelected","$event","newSelect","getEchartsOption","VChart","provide","PartialCheckbox","PieChart","BaseFile","listData","responseType","param","partitionSelected","PayloadDetail","PayloadComposition","created","script","routes","path","component","PackageAnalysis","meta","Demo","About","NotFound","router","history","beforeEach","next","nearestWithTitle","matched","reverse","find","previousNearestWithMeta","metaTags","document","querySelectorAll","el","parentNode","removeChild","state","mutations","actions","app","App","use","store","vuetify","mount"],"mappings":"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","file":"js/app.a143b6a4.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/analyseOTA/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadDetail.vue?vue&type=style&index=0&id=5dd4ca12&scoped=true&lang=css\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BasicInfo.vue?vue&type=style&index=0&id=4b9027e2&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadComposition.vue?vue&type=style&index=0&id=b6f71732&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartitionDetail.vue?vue&type=style&index=0&id=21e569e9&scoped=true&lang=css\"","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport 'vuetify/lib/styles/main.sass'\nimport { createVuetify } from 'vuetify'\nimport * as components from 'vuetify/lib/components'\nimport * as directives from 'vuetify/lib/directives'\n\nexport default createVuetify({\n components,\n directives,\n theme: {\n defaultTheme: 'dark'\n }\n})\n","\n\n\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=ee415730\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n label: {\n type: String,\n default: ''\n }\n },\n emits: {\n 'file-select': null\n },\n data() {\n return {\n fileName: '',\n url: ''\n }\n },\n computed: {\n parsedURL(): URL | null {\n try {\n return new URL(this.url)\n } catch {\n return null\n }\n }\n },\n\n methods: {\n handleFileChange(event: any) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (target.files == null || target.files.length < 1) {\n return\n }\n const selectedFile = target.files![0]\n this.$emit('file-select', selectedFile)\n // If user selects a file, clear the URL component\n this.url = ''\n this.fileName = target.files![0].name\n },\n dragover(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!target.classList.contains('file-hover')) {\n target.classList.add('file-hover')\n }\n },\n dragleave(event: DragEvent) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n target.classList.remove('file-hover')\n },\n drop(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!event.dataTransfer || event.dataTransfer.files.length == 0) {\n return\n }\n target.files = event.dataTransfer.files\n this.handleFileChange(event)\n target.classList.remove('file-hover')\n },\n urlKeyup(event: KeyboardEvent) {\n console.log(this.url)\n if (event.key == 'Enter') {\n const target = event.target as HTMLInputElement\n if (this.parsedURL == null) {\n console.error(`${target.value} is an invalid URL`)\n return\n }\n this.$emit('file-select', this.parsedURL)\n }\n }\n }\n})\n","import { render } from \"./BaseFile.vue?vue&type=template&id=0630c5ec&scoped=true\"\nimport script from \"./BaseFile.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseFile.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-0630c5ec\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\nimport * as $protobuf from \"protobufjs/minimal\";\n\n// Common aliases\nconst $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nconst $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\nexport const chromeos_update_engine = $root.chromeos_update_engine = (() => {\n\n /**\n * Namespace chromeos_update_engine.\n * @exports chromeos_update_engine\n * @namespace\n */\n const chromeos_update_engine = {};\n\n chromeos_update_engine.Extent = (function() {\n\n /**\n * Properties of an Extent.\n * @memberof chromeos_update_engine\n * @interface IExtent\n * @property {number|Long|null} [startBlock] Extent startBlock\n * @property {number|Long|null} [numBlocks] Extent numBlocks\n */\n\n /**\n * Constructs a new Extent.\n * @memberof chromeos_update_engine\n * @classdesc Represents an Extent.\n * @implements IExtent\n * @constructor\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n */\n function Extent(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Extent startBlock.\n * @member {number|Long} startBlock\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.startBlock = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Extent numBlocks.\n * @member {number|Long} numBlocks\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.numBlocks = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new Extent instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n * @returns {chromeos_update_engine.Extent} Extent instance\n */\n Extent.create = function create(properties) {\n return new Extent(properties);\n };\n\n /**\n * Encodes the specified Extent message. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startBlock != null && Object.hasOwnProperty.call(message, \"startBlock\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.startBlock);\n if (message.numBlocks != null && Object.hasOwnProperty.call(message, \"numBlocks\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.numBlocks);\n return writer;\n };\n\n /**\n * Encodes the specified Extent message, length delimited. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Extent();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.startBlock = reader.uint64();\n break;\n case 2:\n message.numBlocks = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an Extent message.\n * @function verify\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Extent.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (!$util.isInteger(message.startBlock) && !(message.startBlock && $util.isInteger(message.startBlock.low) && $util.isInteger(message.startBlock.high)))\n return \"startBlock: integer|Long expected\";\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (!$util.isInteger(message.numBlocks) && !(message.numBlocks && $util.isInteger(message.numBlocks.low) && $util.isInteger(message.numBlocks.high)))\n return \"numBlocks: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an Extent message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Extent} Extent\n */\n Extent.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Extent)\n return object;\n let message = new $root.chromeos_update_engine.Extent();\n if (object.startBlock != null)\n if ($util.Long)\n (message.startBlock = $util.Long.fromValue(object.startBlock)).unsigned = true;\n else if (typeof object.startBlock === \"string\")\n message.startBlock = parseInt(object.startBlock, 10);\n else if (typeof object.startBlock === \"number\")\n message.startBlock = object.startBlock;\n else if (typeof object.startBlock === \"object\")\n message.startBlock = new $util.LongBits(object.startBlock.low >>> 0, object.startBlock.high >>> 0).toNumber(true);\n if (object.numBlocks != null)\n if ($util.Long)\n (message.numBlocks = $util.Long.fromValue(object.numBlocks)).unsigned = true;\n else if (typeof object.numBlocks === \"string\")\n message.numBlocks = parseInt(object.numBlocks, 10);\n else if (typeof object.numBlocks === \"number\")\n message.numBlocks = object.numBlocks;\n else if (typeof object.numBlocks === \"object\")\n message.numBlocks = new $util.LongBits(object.numBlocks.low >>> 0, object.numBlocks.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from an Extent message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.Extent} message Extent\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Extent.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.startBlock = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.startBlock = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.numBlocks = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.numBlocks = options.longs === String ? \"0\" : 0;\n }\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (typeof message.startBlock === \"number\")\n object.startBlock = options.longs === String ? String(message.startBlock) : message.startBlock;\n else\n object.startBlock = options.longs === String ? $util.Long.prototype.toString.call(message.startBlock) : options.longs === Number ? new $util.LongBits(message.startBlock.low >>> 0, message.startBlock.high >>> 0).toNumber(true) : message.startBlock;\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (typeof message.numBlocks === \"number\")\n object.numBlocks = options.longs === String ? String(message.numBlocks) : message.numBlocks;\n else\n object.numBlocks = options.longs === String ? $util.Long.prototype.toString.call(message.numBlocks) : options.longs === Number ? new $util.LongBits(message.numBlocks.low >>> 0, message.numBlocks.high >>> 0).toNumber(true) : message.numBlocks;\n return object;\n };\n\n /**\n * Converts this Extent to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Extent\n * @instance\n * @returns {Object.} JSON object\n */\n Extent.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Extent;\n })();\n\n chromeos_update_engine.Signatures = (function() {\n\n /**\n * Properties of a Signatures.\n * @memberof chromeos_update_engine\n * @interface ISignatures\n * @property {Array.|null} [signatures] Signatures signatures\n */\n\n /**\n * Constructs a new Signatures.\n * @memberof chromeos_update_engine\n * @classdesc Represents a Signatures.\n * @implements ISignatures\n * @constructor\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n */\n function Signatures(properties) {\n this.signatures = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signatures signatures.\n * @member {Array.} signatures\n * @memberof chromeos_update_engine.Signatures\n * @instance\n */\n Signatures.prototype.signatures = $util.emptyArray;\n\n /**\n * Creates a new Signatures instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures} Signatures instance\n */\n Signatures.create = function create(properties) {\n return new Signatures(properties);\n };\n\n /**\n * Encodes the specified Signatures message. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.signatures != null && message.signatures.length)\n for (let i = 0; i < message.signatures.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.signatures[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Signatures message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.signatures && message.signatures.length))\n message.signatures = [];\n message.signatures.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signatures message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signatures.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.signatures != null && message.hasOwnProperty(\"signatures\")) {\n if (!Array.isArray(message.signatures))\n return \"signatures: array expected\";\n for (let i = 0; i < message.signatures.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.signatures[i]);\n if (error)\n return \"signatures.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a Signatures message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures} Signatures\n */\n Signatures.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures)\n return object;\n let message = new $root.chromeos_update_engine.Signatures();\n if (object.signatures) {\n if (!Array.isArray(object.signatures))\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: array expected\");\n message.signatures = [];\n for (let i = 0; i < object.signatures.length; ++i) {\n if (typeof object.signatures[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: object expected\");\n message.signatures[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.signatures[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Signatures message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.Signatures} message Signatures\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signatures.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.signatures = [];\n if (message.signatures && message.signatures.length) {\n object.signatures = [];\n for (let j = 0; j < message.signatures.length; ++j)\n object.signatures[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.signatures[j], options);\n }\n return object;\n };\n\n /**\n * Converts this Signatures to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures\n * @instance\n * @returns {Object.} JSON object\n */\n Signatures.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n Signatures.Signature = (function() {\n\n /**\n * Properties of a Signature.\n * @memberof chromeos_update_engine.Signatures\n * @interface ISignature\n * @property {number|null} [version] Signature version\n * @property {Uint8Array|null} [data] Signature data\n * @property {number|null} [unpaddedSignatureSize] Signature unpaddedSignatureSize\n */\n\n /**\n * Constructs a new Signature.\n * @memberof chromeos_update_engine.Signatures\n * @classdesc Represents a Signature.\n * @implements ISignature\n * @constructor\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n */\n function Signature(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signature version.\n * @member {number} version\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.version = 0;\n\n /**\n * Signature data.\n * @member {Uint8Array} data\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.data = $util.newBuffer([]);\n\n /**\n * Signature unpaddedSignatureSize.\n * @member {number} unpaddedSignatureSize\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.unpaddedSignatureSize = 0;\n\n /**\n * Creates a new Signature instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures.Signature} Signature instance\n */\n Signature.create = function create(properties) {\n return new Signature(properties);\n };\n\n /**\n * Encodes the specified Signature message. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.version);\n if (message.data != null && Object.hasOwnProperty.call(message, \"data\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.data);\n if (message.unpaddedSignatureSize != null && Object.hasOwnProperty.call(message, \"unpaddedSignatureSize\"))\n writer.uint32(/* id 3, wireType 5 =*/29).fixed32(message.unpaddedSignatureSize);\n return writer;\n };\n\n /**\n * Encodes the specified Signature message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures.Signature();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.version = reader.uint32();\n break;\n case 2:\n message.data = reader.bytes();\n break;\n case 3:\n message.unpaddedSignatureSize = reader.fixed32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signature message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signature.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version))\n return \"version: integer expected\";\n if (message.data != null && message.hasOwnProperty(\"data\"))\n if (!(message.data && typeof message.data.length === \"number\" || $util.isString(message.data)))\n return \"data: buffer expected\";\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n if (!$util.isInteger(message.unpaddedSignatureSize))\n return \"unpaddedSignatureSize: integer expected\";\n return null;\n };\n\n /**\n * Creates a Signature message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n */\n Signature.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures.Signature)\n return object;\n let message = new $root.chromeos_update_engine.Signatures.Signature();\n if (object.version != null)\n message.version = object.version >>> 0;\n if (object.data != null)\n if (typeof object.data === \"string\")\n $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);\n else if (object.data.length)\n message.data = object.data;\n if (object.unpaddedSignatureSize != null)\n message.unpaddedSignatureSize = object.unpaddedSignatureSize >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a Signature message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.Signature} message Signature\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signature.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.version = 0;\n if (options.bytes === String)\n object.data = \"\";\n else {\n object.data = [];\n if (options.bytes !== Array)\n object.data = $util.newBuffer(object.data);\n }\n object.unpaddedSignatureSize = 0;\n }\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.data != null && message.hasOwnProperty(\"data\"))\n object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n object.unpaddedSignatureSize = message.unpaddedSignatureSize;\n return object;\n };\n\n /**\n * Converts this Signature to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n * @returns {Object.} JSON object\n */\n Signature.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Signature;\n })();\n\n return Signatures;\n })();\n\n chromeos_update_engine.PartitionInfo = (function() {\n\n /**\n * Properties of a PartitionInfo.\n * @memberof chromeos_update_engine\n * @interface IPartitionInfo\n * @property {number|Long|null} [size] PartitionInfo size\n * @property {Uint8Array|null} [hash] PartitionInfo hash\n */\n\n /**\n * Constructs a new PartitionInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionInfo.\n * @implements IPartitionInfo\n * @constructor\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n */\n function PartitionInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionInfo size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * PartitionInfo hash.\n * @member {Uint8Array} hash\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.hash = $util.newBuffer([]);\n\n /**\n * Creates a new PartitionInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo instance\n */\n PartitionInfo.create = function create(properties) {\n return new PartitionInfo(properties);\n };\n\n /**\n * Encodes the specified PartitionInfo message. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.size);\n if (message.hash != null && Object.hasOwnProperty.call(message, \"hash\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.hash);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.size = reader.uint64();\n break;\n case 2:\n message.hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionInfo message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n if (!(message.hash && typeof message.hash.length === \"number\" || $util.isString(message.hash)))\n return \"hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates a PartitionInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n */\n PartitionInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionInfo)\n return object;\n let message = new $root.chromeos_update_engine.PartitionInfo();\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.hash != null)\n if (typeof object.hash === \"string\")\n $util.base64.decode(object.hash, message.hash = $util.newBuffer($util.base64.length(object.hash)), 0);\n else if (object.hash.length)\n message.hash = object.hash;\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.PartitionInfo} message PartitionInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.hash = \"\";\n else {\n object.hash = [];\n if (options.bytes !== Array)\n object.hash = $util.newBuffer(object.hash);\n }\n }\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n object.hash = options.bytes === String ? $util.base64.encode(message.hash, 0, message.hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.hash) : message.hash;\n return object;\n };\n\n /**\n * Converts this PartitionInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionInfo;\n })();\n\n chromeos_update_engine.InstallOperation = (function() {\n\n /**\n * Properties of an InstallOperation.\n * @memberof chromeos_update_engine\n * @interface IInstallOperation\n * @property {chromeos_update_engine.InstallOperation.Type} type InstallOperation type\n * @property {number|Long|null} [dataOffset] InstallOperation dataOffset\n * @property {number|Long|null} [dataLength] InstallOperation dataLength\n * @property {Array.|null} [srcExtents] InstallOperation srcExtents\n * @property {number|Long|null} [srcLength] InstallOperation srcLength\n * @property {Array.|null} [dstExtents] InstallOperation dstExtents\n * @property {number|Long|null} [dstLength] InstallOperation dstLength\n * @property {Uint8Array|null} [dataSha256Hash] InstallOperation dataSha256Hash\n * @property {Uint8Array|null} [srcSha256Hash] InstallOperation srcSha256Hash\n */\n\n /**\n * Constructs a new InstallOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents an InstallOperation.\n * @implements IInstallOperation\n * @constructor\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n */\n function InstallOperation(properties) {\n this.srcExtents = [];\n this.dstExtents = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * InstallOperation type.\n * @member {chromeos_update_engine.InstallOperation.Type} type\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.type = 0;\n\n /**\n * InstallOperation dataOffset.\n * @member {number|Long} dataOffset\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataLength.\n * @member {number|Long} dataLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation srcExtents.\n * @member {Array.} srcExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcExtents = $util.emptyArray;\n\n /**\n * InstallOperation srcLength.\n * @member {number|Long} srcLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dstExtents.\n * @member {Array.} dstExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstExtents = $util.emptyArray;\n\n /**\n * InstallOperation dstLength.\n * @member {number|Long} dstLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataSha256Hash.\n * @member {Uint8Array} dataSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataSha256Hash = $util.newBuffer([]);\n\n /**\n * InstallOperation srcSha256Hash.\n * @member {Uint8Array} srcSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcSha256Hash = $util.newBuffer([]);\n\n /**\n * Creates a new InstallOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation instance\n */\n InstallOperation.create = function create(properties) {\n return new InstallOperation(properties);\n };\n\n /**\n * Encodes the specified InstallOperation message. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.dataOffset != null && Object.hasOwnProperty.call(message, \"dataOffset\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.dataOffset);\n if (message.dataLength != null && Object.hasOwnProperty.call(message, \"dataLength\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.dataLength);\n if (message.srcExtents != null && message.srcExtents.length)\n for (let i = 0; i < message.srcExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.srcExtents[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.srcLength != null && Object.hasOwnProperty.call(message, \"srcLength\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.srcLength);\n if (message.dstExtents != null && message.dstExtents.length)\n for (let i = 0; i < message.dstExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.dstExtents[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.dstLength != null && Object.hasOwnProperty.call(message, \"dstLength\"))\n writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.dstLength);\n if (message.dataSha256Hash != null && Object.hasOwnProperty.call(message, \"dataSha256Hash\"))\n writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.dataSha256Hash);\n if (message.srcSha256Hash != null && Object.hasOwnProperty.call(message, \"srcSha256Hash\"))\n writer.uint32(/* id 9, wireType 2 =*/74).bytes(message.srcSha256Hash);\n return writer;\n };\n\n /**\n * Encodes the specified InstallOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.InstallOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.dataOffset = reader.uint64();\n break;\n case 3:\n message.dataLength = reader.uint64();\n break;\n case 4:\n if (!(message.srcExtents && message.srcExtents.length))\n message.srcExtents = [];\n message.srcExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 5:\n message.srcLength = reader.uint64();\n break;\n case 6:\n if (!(message.dstExtents && message.dstExtents.length))\n message.dstExtents = [];\n message.dstExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 7:\n message.dstLength = reader.uint64();\n break;\n case 8:\n message.dataSha256Hash = reader.bytes();\n break;\n case 9:\n message.srcSha256Hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"type\"))\n throw $util.ProtocolError(\"missing required 'type'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an InstallOperation message.\n * @function verify\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n InstallOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 8:\n case 6:\n case 7:\n case 10:\n case 9:\n case 11:\n case 12:\n case 13:\n break;\n }\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (!$util.isInteger(message.dataOffset) && !(message.dataOffset && $util.isInteger(message.dataOffset.low) && $util.isInteger(message.dataOffset.high)))\n return \"dataOffset: integer|Long expected\";\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (!$util.isInteger(message.dataLength) && !(message.dataLength && $util.isInteger(message.dataLength.low) && $util.isInteger(message.dataLength.high)))\n return \"dataLength: integer|Long expected\";\n if (message.srcExtents != null && message.hasOwnProperty(\"srcExtents\")) {\n if (!Array.isArray(message.srcExtents))\n return \"srcExtents: array expected\";\n for (let i = 0; i < message.srcExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtents[i]);\n if (error)\n return \"srcExtents.\" + error;\n }\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (!$util.isInteger(message.srcLength) && !(message.srcLength && $util.isInteger(message.srcLength.low) && $util.isInteger(message.srcLength.high)))\n return \"srcLength: integer|Long expected\";\n if (message.dstExtents != null && message.hasOwnProperty(\"dstExtents\")) {\n if (!Array.isArray(message.dstExtents))\n return \"dstExtents: array expected\";\n for (let i = 0; i < message.dstExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtents[i]);\n if (error)\n return \"dstExtents.\" + error;\n }\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (!$util.isInteger(message.dstLength) && !(message.dstLength && $util.isInteger(message.dstLength.low) && $util.isInteger(message.dstLength.high)))\n return \"dstLength: integer|Long expected\";\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n if (!(message.dataSha256Hash && typeof message.dataSha256Hash.length === \"number\" || $util.isString(message.dataSha256Hash)))\n return \"dataSha256Hash: buffer expected\";\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n if (!(message.srcSha256Hash && typeof message.srcSha256Hash.length === \"number\" || $util.isString(message.srcSha256Hash)))\n return \"srcSha256Hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates an InstallOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n */\n InstallOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.InstallOperation)\n return object;\n let message = new $root.chromeos_update_engine.InstallOperation();\n switch (object.type) {\n case \"REPLACE\":\n case 0:\n message.type = 0;\n break;\n case \"REPLACE_BZ\":\n case 1:\n message.type = 1;\n break;\n case \"MOVE\":\n case 2:\n message.type = 2;\n break;\n case \"BSDIFF\":\n case 3:\n message.type = 3;\n break;\n case \"SOURCE_COPY\":\n case 4:\n message.type = 4;\n break;\n case \"SOURCE_BSDIFF\":\n case 5:\n message.type = 5;\n break;\n case \"REPLACE_XZ\":\n case 8:\n message.type = 8;\n break;\n case \"ZERO\":\n case 6:\n message.type = 6;\n break;\n case \"DISCARD\":\n case 7:\n message.type = 7;\n break;\n case \"BROTLI_BSDIFF\":\n case 10:\n message.type = 10;\n break;\n case \"PUFFDIFF\":\n case 9:\n message.type = 9;\n break;\n case \"ZUCCHINI\":\n case 11:\n message.type = 11;\n break;\n case \"LZ4DIFF_BSDIFF\":\n case 12:\n message.type = 12;\n break;\n case \"LZ4DIFF_PUFFDIFF\":\n case 13:\n message.type = 13;\n break;\n }\n if (object.dataOffset != null)\n if ($util.Long)\n (message.dataOffset = $util.Long.fromValue(object.dataOffset)).unsigned = true;\n else if (typeof object.dataOffset === \"string\")\n message.dataOffset = parseInt(object.dataOffset, 10);\n else if (typeof object.dataOffset === \"number\")\n message.dataOffset = object.dataOffset;\n else if (typeof object.dataOffset === \"object\")\n message.dataOffset = new $util.LongBits(object.dataOffset.low >>> 0, object.dataOffset.high >>> 0).toNumber(true);\n if (object.dataLength != null)\n if ($util.Long)\n (message.dataLength = $util.Long.fromValue(object.dataLength)).unsigned = true;\n else if (typeof object.dataLength === \"string\")\n message.dataLength = parseInt(object.dataLength, 10);\n else if (typeof object.dataLength === \"number\")\n message.dataLength = object.dataLength;\n else if (typeof object.dataLength === \"object\")\n message.dataLength = new $util.LongBits(object.dataLength.low >>> 0, object.dataLength.high >>> 0).toNumber(true);\n if (object.srcExtents) {\n if (!Array.isArray(object.srcExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: array expected\");\n message.srcExtents = [];\n for (let i = 0; i < object.srcExtents.length; ++i) {\n if (typeof object.srcExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: object expected\");\n message.srcExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.srcExtents[i]);\n }\n }\n if (object.srcLength != null)\n if ($util.Long)\n (message.srcLength = $util.Long.fromValue(object.srcLength)).unsigned = true;\n else if (typeof object.srcLength === \"string\")\n message.srcLength = parseInt(object.srcLength, 10);\n else if (typeof object.srcLength === \"number\")\n message.srcLength = object.srcLength;\n else if (typeof object.srcLength === \"object\")\n message.srcLength = new $util.LongBits(object.srcLength.low >>> 0, object.srcLength.high >>> 0).toNumber(true);\n if (object.dstExtents) {\n if (!Array.isArray(object.dstExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: array expected\");\n message.dstExtents = [];\n for (let i = 0; i < object.dstExtents.length; ++i) {\n if (typeof object.dstExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: object expected\");\n message.dstExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.dstExtents[i]);\n }\n }\n if (object.dstLength != null)\n if ($util.Long)\n (message.dstLength = $util.Long.fromValue(object.dstLength)).unsigned = true;\n else if (typeof object.dstLength === \"string\")\n message.dstLength = parseInt(object.dstLength, 10);\n else if (typeof object.dstLength === \"number\")\n message.dstLength = object.dstLength;\n else if (typeof object.dstLength === \"object\")\n message.dstLength = new $util.LongBits(object.dstLength.low >>> 0, object.dstLength.high >>> 0).toNumber(true);\n if (object.dataSha256Hash != null)\n if (typeof object.dataSha256Hash === \"string\")\n $util.base64.decode(object.dataSha256Hash, message.dataSha256Hash = $util.newBuffer($util.base64.length(object.dataSha256Hash)), 0);\n else if (object.dataSha256Hash.length)\n message.dataSha256Hash = object.dataSha256Hash;\n if (object.srcSha256Hash != null)\n if (typeof object.srcSha256Hash === \"string\")\n $util.base64.decode(object.srcSha256Hash, message.srcSha256Hash = $util.newBuffer($util.base64.length(object.srcSha256Hash)), 0);\n else if (object.srcSha256Hash.length)\n message.srcSha256Hash = object.srcSha256Hash;\n return message;\n };\n\n /**\n * Creates a plain object from an InstallOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.InstallOperation} message InstallOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n InstallOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.srcExtents = [];\n object.dstExtents = [];\n }\n if (options.defaults) {\n object.type = options.enums === String ? \"REPLACE\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.srcLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.srcLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dstLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dstLength = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.dataSha256Hash = \"\";\n else {\n object.dataSha256Hash = [];\n if (options.bytes !== Array)\n object.dataSha256Hash = $util.newBuffer(object.dataSha256Hash);\n }\n if (options.bytes === String)\n object.srcSha256Hash = \"\";\n else {\n object.srcSha256Hash = [];\n if (options.bytes !== Array)\n object.srcSha256Hash = $util.newBuffer(object.srcSha256Hash);\n }\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.InstallOperation.Type[message.type] : message.type;\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (typeof message.dataOffset === \"number\")\n object.dataOffset = options.longs === String ? String(message.dataOffset) : message.dataOffset;\n else\n object.dataOffset = options.longs === String ? $util.Long.prototype.toString.call(message.dataOffset) : options.longs === Number ? new $util.LongBits(message.dataOffset.low >>> 0, message.dataOffset.high >>> 0).toNumber(true) : message.dataOffset;\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (typeof message.dataLength === \"number\")\n object.dataLength = options.longs === String ? String(message.dataLength) : message.dataLength;\n else\n object.dataLength = options.longs === String ? $util.Long.prototype.toString.call(message.dataLength) : options.longs === Number ? new $util.LongBits(message.dataLength.low >>> 0, message.dataLength.high >>> 0).toNumber(true) : message.dataLength;\n if (message.srcExtents && message.srcExtents.length) {\n object.srcExtents = [];\n for (let j = 0; j < message.srcExtents.length; ++j)\n object.srcExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.srcExtents[j], options);\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (typeof message.srcLength === \"number\")\n object.srcLength = options.longs === String ? String(message.srcLength) : message.srcLength;\n else\n object.srcLength = options.longs === String ? $util.Long.prototype.toString.call(message.srcLength) : options.longs === Number ? new $util.LongBits(message.srcLength.low >>> 0, message.srcLength.high >>> 0).toNumber(true) : message.srcLength;\n if (message.dstExtents && message.dstExtents.length) {\n object.dstExtents = [];\n for (let j = 0; j < message.dstExtents.length; ++j)\n object.dstExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.dstExtents[j], options);\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (typeof message.dstLength === \"number\")\n object.dstLength = options.longs === String ? String(message.dstLength) : message.dstLength;\n else\n object.dstLength = options.longs === String ? $util.Long.prototype.toString.call(message.dstLength) : options.longs === Number ? new $util.LongBits(message.dstLength.low >>> 0, message.dstLength.high >>> 0).toNumber(true) : message.dstLength;\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n object.dataSha256Hash = options.bytes === String ? $util.base64.encode(message.dataSha256Hash, 0, message.dataSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.dataSha256Hash) : message.dataSha256Hash;\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n object.srcSha256Hash = options.bytes === String ? $util.base64.encode(message.srcSha256Hash, 0, message.srcSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.srcSha256Hash) : message.srcSha256Hash;\n return object;\n };\n\n /**\n * Converts this InstallOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n * @returns {Object.} JSON object\n */\n InstallOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.InstallOperation.Type\n * @enum {number}\n * @property {number} REPLACE=0 REPLACE value\n * @property {number} REPLACE_BZ=1 REPLACE_BZ value\n * @property {number} MOVE=2 MOVE value\n * @property {number} BSDIFF=3 BSDIFF value\n * @property {number} SOURCE_COPY=4 SOURCE_COPY value\n * @property {number} SOURCE_BSDIFF=5 SOURCE_BSDIFF value\n * @property {number} REPLACE_XZ=8 REPLACE_XZ value\n * @property {number} ZERO=6 ZERO value\n * @property {number} DISCARD=7 DISCARD value\n * @property {number} BROTLI_BSDIFF=10 BROTLI_BSDIFF value\n * @property {number} PUFFDIFF=9 PUFFDIFF value\n * @property {number} ZUCCHINI=11 ZUCCHINI value\n * @property {number} LZ4DIFF_BSDIFF=12 LZ4DIFF_BSDIFF value\n * @property {number} LZ4DIFF_PUFFDIFF=13 LZ4DIFF_PUFFDIFF value\n */\n InstallOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"REPLACE\"] = 0;\n values[valuesById[1] = \"REPLACE_BZ\"] = 1;\n values[valuesById[2] = \"MOVE\"] = 2;\n values[valuesById[3] = \"BSDIFF\"] = 3;\n values[valuesById[4] = \"SOURCE_COPY\"] = 4;\n values[valuesById[5] = \"SOURCE_BSDIFF\"] = 5;\n values[valuesById[8] = \"REPLACE_XZ\"] = 8;\n values[valuesById[6] = \"ZERO\"] = 6;\n values[valuesById[7] = \"DISCARD\"] = 7;\n values[valuesById[10] = \"BROTLI_BSDIFF\"] = 10;\n values[valuesById[9] = \"PUFFDIFF\"] = 9;\n values[valuesById[11] = \"ZUCCHINI\"] = 11;\n values[valuesById[12] = \"LZ4DIFF_BSDIFF\"] = 12;\n values[valuesById[13] = \"LZ4DIFF_PUFFDIFF\"] = 13;\n return values;\n })();\n\n return InstallOperation;\n })();\n\n chromeos_update_engine.CowMergeOperation = (function() {\n\n /**\n * Properties of a CowMergeOperation.\n * @memberof chromeos_update_engine\n * @interface ICowMergeOperation\n * @property {chromeos_update_engine.CowMergeOperation.Type|null} [type] CowMergeOperation type\n * @property {chromeos_update_engine.IExtent|null} [srcExtent] CowMergeOperation srcExtent\n * @property {chromeos_update_engine.IExtent|null} [dstExtent] CowMergeOperation dstExtent\n * @property {number|null} [srcOffset] CowMergeOperation srcOffset\n */\n\n /**\n * Constructs a new CowMergeOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents a CowMergeOperation.\n * @implements ICowMergeOperation\n * @constructor\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n */\n function CowMergeOperation(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * CowMergeOperation type.\n * @member {chromeos_update_engine.CowMergeOperation.Type} type\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.type = 0;\n\n /**\n * CowMergeOperation srcExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} srcExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcExtent = null;\n\n /**\n * CowMergeOperation dstExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} dstExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.dstExtent = null;\n\n /**\n * CowMergeOperation srcOffset.\n * @member {number} srcOffset\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcOffset = 0;\n\n /**\n * Creates a new CowMergeOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation instance\n */\n CowMergeOperation.create = function create(properties) {\n return new CowMergeOperation(properties);\n };\n\n /**\n * Encodes the specified CowMergeOperation message. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.srcExtent != null && Object.hasOwnProperty.call(message, \"srcExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.srcExtent, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.dstExtent != null && Object.hasOwnProperty.call(message, \"dstExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.dstExtent, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.srcOffset != null && Object.hasOwnProperty.call(message, \"srcOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.srcOffset);\n return writer;\n };\n\n /**\n * Encodes the specified CowMergeOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.CowMergeOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.srcExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 3:\n message.dstExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 4:\n message.srcOffset = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a CowMergeOperation message.\n * @function verify\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n CowMergeOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtent);\n if (error)\n return \"srcExtent.\" + error;\n }\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtent);\n if (error)\n return \"dstExtent.\" + error;\n }\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n if (!$util.isInteger(message.srcOffset))\n return \"srcOffset: integer expected\";\n return null;\n };\n\n /**\n * Creates a CowMergeOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n */\n CowMergeOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.CowMergeOperation)\n return object;\n let message = new $root.chromeos_update_engine.CowMergeOperation();\n switch (object.type) {\n case \"COW_COPY\":\n case 0:\n message.type = 0;\n break;\n case \"COW_XOR\":\n case 1:\n message.type = 1;\n break;\n case \"COW_REPLACE\":\n case 2:\n message.type = 2;\n break;\n }\n if (object.srcExtent != null) {\n if (typeof object.srcExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.srcExtent: object expected\");\n message.srcExtent = $root.chromeos_update_engine.Extent.fromObject(object.srcExtent);\n }\n if (object.dstExtent != null) {\n if (typeof object.dstExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.dstExtent: object expected\");\n message.dstExtent = $root.chromeos_update_engine.Extent.fromObject(object.dstExtent);\n }\n if (object.srcOffset != null)\n message.srcOffset = object.srcOffset >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a CowMergeOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.CowMergeOperation} message CowMergeOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n CowMergeOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"COW_COPY\" : 0;\n object.srcExtent = null;\n object.dstExtent = null;\n object.srcOffset = 0;\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.CowMergeOperation.Type[message.type] : message.type;\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\"))\n object.srcExtent = $root.chromeos_update_engine.Extent.toObject(message.srcExtent, options);\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\"))\n object.dstExtent = $root.chromeos_update_engine.Extent.toObject(message.dstExtent, options);\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n object.srcOffset = message.srcOffset;\n return object;\n };\n\n /**\n * Converts this CowMergeOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n * @returns {Object.} JSON object\n */\n CowMergeOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.CowMergeOperation.Type\n * @enum {number}\n * @property {number} COW_COPY=0 COW_COPY value\n * @property {number} COW_XOR=1 COW_XOR value\n * @property {number} COW_REPLACE=2 COW_REPLACE value\n */\n CowMergeOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"COW_COPY\"] = 0;\n values[valuesById[1] = \"COW_XOR\"] = 1;\n values[valuesById[2] = \"COW_REPLACE\"] = 2;\n return values;\n })();\n\n return CowMergeOperation;\n })();\n\n chromeos_update_engine.PartitionUpdate = (function() {\n\n /**\n * Properties of a PartitionUpdate.\n * @memberof chromeos_update_engine\n * @interface IPartitionUpdate\n * @property {string} partitionName PartitionUpdate partitionName\n * @property {boolean|null} [runPostinstall] PartitionUpdate runPostinstall\n * @property {string|null} [postinstallPath] PartitionUpdate postinstallPath\n * @property {string|null} [filesystemType] PartitionUpdate filesystemType\n * @property {Array.|null} [newPartitionSignature] PartitionUpdate newPartitionSignature\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldPartitionInfo] PartitionUpdate oldPartitionInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newPartitionInfo] PartitionUpdate newPartitionInfo\n * @property {Array.|null} [operations] PartitionUpdate operations\n * @property {boolean|null} [postinstallOptional] PartitionUpdate postinstallOptional\n * @property {chromeos_update_engine.IExtent|null} [hashTreeDataExtent] PartitionUpdate hashTreeDataExtent\n * @property {chromeos_update_engine.IExtent|null} [hashTreeExtent] PartitionUpdate hashTreeExtent\n * @property {string|null} [hashTreeAlgorithm] PartitionUpdate hashTreeAlgorithm\n * @property {Uint8Array|null} [hashTreeSalt] PartitionUpdate hashTreeSalt\n * @property {chromeos_update_engine.IExtent|null} [fecDataExtent] PartitionUpdate fecDataExtent\n * @property {chromeos_update_engine.IExtent|null} [fecExtent] PartitionUpdate fecExtent\n * @property {number|null} [fecRoots] PartitionUpdate fecRoots\n * @property {string|null} [version] PartitionUpdate version\n * @property {Array.|null} [mergeOperations] PartitionUpdate mergeOperations\n * @property {number|Long|null} [estimateCowSize] PartitionUpdate estimateCowSize\n */\n\n /**\n * Constructs a new PartitionUpdate.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionUpdate.\n * @implements IPartitionUpdate\n * @constructor\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n */\n function PartitionUpdate(properties) {\n this.newPartitionSignature = [];\n this.operations = [];\n this.mergeOperations = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionUpdate partitionName.\n * @member {string} partitionName\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.partitionName = \"\";\n\n /**\n * PartitionUpdate runPostinstall.\n * @member {boolean} runPostinstall\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.runPostinstall = false;\n\n /**\n * PartitionUpdate postinstallPath.\n * @member {string} postinstallPath\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallPath = \"\";\n\n /**\n * PartitionUpdate filesystemType.\n * @member {string} filesystemType\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.filesystemType = \"\";\n\n /**\n * PartitionUpdate newPartitionSignature.\n * @member {Array.} newPartitionSignature\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionSignature = $util.emptyArray;\n\n /**\n * PartitionUpdate oldPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.oldPartitionInfo = null;\n\n /**\n * PartitionUpdate newPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionInfo = null;\n\n /**\n * PartitionUpdate operations.\n * @member {Array.} operations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.operations = $util.emptyArray;\n\n /**\n * PartitionUpdate postinstallOptional.\n * @member {boolean} postinstallOptional\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallOptional = false;\n\n /**\n * PartitionUpdate hashTreeDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeDataExtent = null;\n\n /**\n * PartitionUpdate hashTreeExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeExtent = null;\n\n /**\n * PartitionUpdate hashTreeAlgorithm.\n * @member {string} hashTreeAlgorithm\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeAlgorithm = \"\";\n\n /**\n * PartitionUpdate hashTreeSalt.\n * @member {Uint8Array} hashTreeSalt\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeSalt = $util.newBuffer([]);\n\n /**\n * PartitionUpdate fecDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecDataExtent = null;\n\n /**\n * PartitionUpdate fecExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecExtent = null;\n\n /**\n * PartitionUpdate fecRoots.\n * @member {number} fecRoots\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecRoots = 2;\n\n /**\n * PartitionUpdate version.\n * @member {string} version\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.version = \"\";\n\n /**\n * PartitionUpdate mergeOperations.\n * @member {Array.} mergeOperations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.mergeOperations = $util.emptyArray;\n\n /**\n * PartitionUpdate estimateCowSize.\n * @member {number|Long} estimateCowSize\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.estimateCowSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new PartitionUpdate instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate instance\n */\n PartitionUpdate.create = function create(properties) {\n return new PartitionUpdate(properties);\n };\n\n /**\n * Encodes the specified PartitionUpdate message. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.partitionName);\n if (message.runPostinstall != null && Object.hasOwnProperty.call(message, \"runPostinstall\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.runPostinstall);\n if (message.postinstallPath != null && Object.hasOwnProperty.call(message, \"postinstallPath\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.postinstallPath);\n if (message.filesystemType != null && Object.hasOwnProperty.call(message, \"filesystemType\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.filesystemType);\n if (message.newPartitionSignature != null && message.newPartitionSignature.length)\n for (let i = 0; i < message.newPartitionSignature.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.newPartitionSignature[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.oldPartitionInfo != null && Object.hasOwnProperty.call(message, \"oldPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldPartitionInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newPartitionInfo != null && Object.hasOwnProperty.call(message, \"newPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newPartitionInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.operations != null && message.operations.length)\n for (let i = 0; i < message.operations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.operations[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.postinstallOptional != null && Object.hasOwnProperty.call(message, \"postinstallOptional\"))\n writer.uint32(/* id 9, wireType 0 =*/72).bool(message.postinstallOptional);\n if (message.hashTreeDataExtent != null && Object.hasOwnProperty.call(message, \"hashTreeDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeDataExtent, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.hashTreeExtent != null && Object.hasOwnProperty.call(message, \"hashTreeExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeExtent, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.hashTreeAlgorithm != null && Object.hasOwnProperty.call(message, \"hashTreeAlgorithm\"))\n writer.uint32(/* id 12, wireType 2 =*/98).string(message.hashTreeAlgorithm);\n if (message.hashTreeSalt != null && Object.hasOwnProperty.call(message, \"hashTreeSalt\"))\n writer.uint32(/* id 13, wireType 2 =*/106).bytes(message.hashTreeSalt);\n if (message.fecDataExtent != null && Object.hasOwnProperty.call(message, \"fecDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecDataExtent, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.fecExtent != null && Object.hasOwnProperty.call(message, \"fecExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecExtent, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.fecRoots != null && Object.hasOwnProperty.call(message, \"fecRoots\"))\n writer.uint32(/* id 16, wireType 0 =*/128).uint32(message.fecRoots);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 17, wireType 2 =*/138).string(message.version);\n if (message.mergeOperations != null && message.mergeOperations.length)\n for (let i = 0; i < message.mergeOperations.length; ++i)\n $root.chromeos_update_engine.CowMergeOperation.encode(message.mergeOperations[i], writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n if (message.estimateCowSize != null && Object.hasOwnProperty.call(message, \"estimateCowSize\"))\n writer.uint32(/* id 19, wireType 0 =*/152).uint64(message.estimateCowSize);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionUpdate message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionUpdate();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.partitionName = reader.string();\n break;\n case 2:\n message.runPostinstall = reader.bool();\n break;\n case 3:\n message.postinstallPath = reader.string();\n break;\n case 4:\n message.filesystemType = reader.string();\n break;\n case 5:\n if (!(message.newPartitionSignature && message.newPartitionSignature.length))\n message.newPartitionSignature = [];\n message.newPartitionSignature.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n case 6:\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n if (!(message.operations && message.operations.length))\n message.operations = [];\n message.operations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 9:\n message.postinstallOptional = reader.bool();\n break;\n case 10:\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 11:\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 12:\n message.hashTreeAlgorithm = reader.string();\n break;\n case 13:\n message.hashTreeSalt = reader.bytes();\n break;\n case 14:\n message.fecDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 15:\n message.fecExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 16:\n message.fecRoots = reader.uint32();\n break;\n case 17:\n message.version = reader.string();\n break;\n case 18:\n if (!(message.mergeOperations && message.mergeOperations.length))\n message.mergeOperations = [];\n message.mergeOperations.push($root.chromeos_update_engine.CowMergeOperation.decode(reader, reader.uint32()));\n break;\n case 19:\n message.estimateCowSize = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"partitionName\"))\n throw $util.ProtocolError(\"missing required 'partitionName'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionUpdate message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionUpdate.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.partitionName))\n return \"partitionName: string expected\";\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n if (typeof message.runPostinstall !== \"boolean\")\n return \"runPostinstall: boolean expected\";\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n if (!$util.isString(message.postinstallPath))\n return \"postinstallPath: string expected\";\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n if (!$util.isString(message.filesystemType))\n return \"filesystemType: string expected\";\n if (message.newPartitionSignature != null && message.hasOwnProperty(\"newPartitionSignature\")) {\n if (!Array.isArray(message.newPartitionSignature))\n return \"newPartitionSignature: array expected\";\n for (let i = 0; i < message.newPartitionSignature.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.newPartitionSignature[i]);\n if (error)\n return \"newPartitionSignature.\" + error;\n }\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldPartitionInfo);\n if (error)\n return \"oldPartitionInfo.\" + error;\n }\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newPartitionInfo);\n if (error)\n return \"newPartitionInfo.\" + error;\n }\n if (message.operations != null && message.hasOwnProperty(\"operations\")) {\n if (!Array.isArray(message.operations))\n return \"operations: array expected\";\n for (let i = 0; i < message.operations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.operations[i]);\n if (error)\n return \"operations.\" + error;\n }\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n if (typeof message.postinstallOptional !== \"boolean\")\n return \"postinstallOptional: boolean expected\";\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeDataExtent);\n if (error)\n return \"hashTreeDataExtent.\" + error;\n }\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeExtent);\n if (error)\n return \"hashTreeExtent.\" + error;\n }\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n if (!$util.isString(message.hashTreeAlgorithm))\n return \"hashTreeAlgorithm: string expected\";\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n if (!(message.hashTreeSalt && typeof message.hashTreeSalt.length === \"number\" || $util.isString(message.hashTreeSalt)))\n return \"hashTreeSalt: buffer expected\";\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecDataExtent);\n if (error)\n return \"fecDataExtent.\" + error;\n }\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecExtent);\n if (error)\n return \"fecExtent.\" + error;\n }\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n if (!$util.isInteger(message.fecRoots))\n return \"fecRoots: integer expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.mergeOperations != null && message.hasOwnProperty(\"mergeOperations\")) {\n if (!Array.isArray(message.mergeOperations))\n return \"mergeOperations: array expected\";\n for (let i = 0; i < message.mergeOperations.length; ++i) {\n let error = $root.chromeos_update_engine.CowMergeOperation.verify(message.mergeOperations[i]);\n if (error)\n return \"mergeOperations.\" + error;\n }\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (!$util.isInteger(message.estimateCowSize) && !(message.estimateCowSize && $util.isInteger(message.estimateCowSize.low) && $util.isInteger(message.estimateCowSize.high)))\n return \"estimateCowSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a PartitionUpdate message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n */\n PartitionUpdate.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionUpdate)\n return object;\n let message = new $root.chromeos_update_engine.PartitionUpdate();\n if (object.partitionName != null)\n message.partitionName = String(object.partitionName);\n if (object.runPostinstall != null)\n message.runPostinstall = Boolean(object.runPostinstall);\n if (object.postinstallPath != null)\n message.postinstallPath = String(object.postinstallPath);\n if (object.filesystemType != null)\n message.filesystemType = String(object.filesystemType);\n if (object.newPartitionSignature) {\n if (!Array.isArray(object.newPartitionSignature))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: array expected\");\n message.newPartitionSignature = [];\n for (let i = 0; i < object.newPartitionSignature.length; ++i) {\n if (typeof object.newPartitionSignature[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: object expected\");\n message.newPartitionSignature[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.newPartitionSignature[i]);\n }\n }\n if (object.oldPartitionInfo != null) {\n if (typeof object.oldPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.oldPartitionInfo: object expected\");\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldPartitionInfo);\n }\n if (object.newPartitionInfo != null) {\n if (typeof object.newPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionInfo: object expected\");\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newPartitionInfo);\n }\n if (object.operations) {\n if (!Array.isArray(object.operations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: array expected\");\n message.operations = [];\n for (let i = 0; i < object.operations.length; ++i) {\n if (typeof object.operations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: object expected\");\n message.operations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.operations[i]);\n }\n }\n if (object.postinstallOptional != null)\n message.postinstallOptional = Boolean(object.postinstallOptional);\n if (object.hashTreeDataExtent != null) {\n if (typeof object.hashTreeDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeDataExtent: object expected\");\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeDataExtent);\n }\n if (object.hashTreeExtent != null) {\n if (typeof object.hashTreeExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeExtent: object expected\");\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeExtent);\n }\n if (object.hashTreeAlgorithm != null)\n message.hashTreeAlgorithm = String(object.hashTreeAlgorithm);\n if (object.hashTreeSalt != null)\n if (typeof object.hashTreeSalt === \"string\")\n $util.base64.decode(object.hashTreeSalt, message.hashTreeSalt = $util.newBuffer($util.base64.length(object.hashTreeSalt)), 0);\n else if (object.hashTreeSalt.length)\n message.hashTreeSalt = object.hashTreeSalt;\n if (object.fecDataExtent != null) {\n if (typeof object.fecDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecDataExtent: object expected\");\n message.fecDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecDataExtent);\n }\n if (object.fecExtent != null) {\n if (typeof object.fecExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecExtent: object expected\");\n message.fecExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecExtent);\n }\n if (object.fecRoots != null)\n message.fecRoots = object.fecRoots >>> 0;\n if (object.version != null)\n message.version = String(object.version);\n if (object.mergeOperations) {\n if (!Array.isArray(object.mergeOperations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected\");\n message.mergeOperations = [];\n for (let i = 0; i < object.mergeOperations.length; ++i) {\n if (typeof object.mergeOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: object expected\");\n message.mergeOperations[i] = $root.chromeos_update_engine.CowMergeOperation.fromObject(object.mergeOperations[i]);\n }\n }\n if (object.estimateCowSize != null)\n if ($util.Long)\n (message.estimateCowSize = $util.Long.fromValue(object.estimateCowSize)).unsigned = true;\n else if (typeof object.estimateCowSize === \"string\")\n message.estimateCowSize = parseInt(object.estimateCowSize, 10);\n else if (typeof object.estimateCowSize === \"number\")\n message.estimateCowSize = object.estimateCowSize;\n else if (typeof object.estimateCowSize === \"object\")\n message.estimateCowSize = new $util.LongBits(object.estimateCowSize.low >>> 0, object.estimateCowSize.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionUpdate message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.PartitionUpdate} message PartitionUpdate\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionUpdate.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.newPartitionSignature = [];\n object.operations = [];\n object.mergeOperations = [];\n }\n if (options.defaults) {\n object.partitionName = \"\";\n object.runPostinstall = false;\n object.postinstallPath = \"\";\n object.filesystemType = \"\";\n object.oldPartitionInfo = null;\n object.newPartitionInfo = null;\n object.postinstallOptional = false;\n object.hashTreeDataExtent = null;\n object.hashTreeExtent = null;\n object.hashTreeAlgorithm = \"\";\n if (options.bytes === String)\n object.hashTreeSalt = \"\";\n else {\n object.hashTreeSalt = [];\n if (options.bytes !== Array)\n object.hashTreeSalt = $util.newBuffer(object.hashTreeSalt);\n }\n object.fecDataExtent = null;\n object.fecExtent = null;\n object.fecRoots = 2;\n object.version = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.estimateCowSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.estimateCowSize = options.longs === String ? \"0\" : 0;\n }\n if (message.partitionName != null && message.hasOwnProperty(\"partitionName\"))\n object.partitionName = message.partitionName;\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n object.runPostinstall = message.runPostinstall;\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n object.postinstallPath = message.postinstallPath;\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n object.filesystemType = message.filesystemType;\n if (message.newPartitionSignature && message.newPartitionSignature.length) {\n object.newPartitionSignature = [];\n for (let j = 0; j < message.newPartitionSignature.length; ++j)\n object.newPartitionSignature[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.newPartitionSignature[j], options);\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\"))\n object.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldPartitionInfo, options);\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\"))\n object.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newPartitionInfo, options);\n if (message.operations && message.operations.length) {\n object.operations = [];\n for (let j = 0; j < message.operations.length; ++j)\n object.operations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.operations[j], options);\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n object.postinstallOptional = message.postinstallOptional;\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\"))\n object.hashTreeDataExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeDataExtent, options);\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\"))\n object.hashTreeExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeExtent, options);\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n object.hashTreeAlgorithm = message.hashTreeAlgorithm;\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n object.hashTreeSalt = options.bytes === String ? $util.base64.encode(message.hashTreeSalt, 0, message.hashTreeSalt.length) : options.bytes === Array ? Array.prototype.slice.call(message.hashTreeSalt) : message.hashTreeSalt;\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\"))\n object.fecDataExtent = $root.chromeos_update_engine.Extent.toObject(message.fecDataExtent, options);\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\"))\n object.fecExtent = $root.chromeos_update_engine.Extent.toObject(message.fecExtent, options);\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n object.fecRoots = message.fecRoots;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.mergeOperations && message.mergeOperations.length) {\n object.mergeOperations = [];\n for (let j = 0; j < message.mergeOperations.length; ++j)\n object.mergeOperations[j] = $root.chromeos_update_engine.CowMergeOperation.toObject(message.mergeOperations[j], options);\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (typeof message.estimateCowSize === \"number\")\n object.estimateCowSize = options.longs === String ? String(message.estimateCowSize) : message.estimateCowSize;\n else\n object.estimateCowSize = options.longs === String ? $util.Long.prototype.toString.call(message.estimateCowSize) : options.longs === Number ? new $util.LongBits(message.estimateCowSize.low >>> 0, message.estimateCowSize.high >>> 0).toNumber(true) : message.estimateCowSize;\n return object;\n };\n\n /**\n * Converts this PartitionUpdate to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionUpdate.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionUpdate;\n })();\n\n chromeos_update_engine.DynamicPartitionGroup = (function() {\n\n /**\n * Properties of a DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionGroup\n * @property {string} name DynamicPartitionGroup name\n * @property {number|Long|null} [size] DynamicPartitionGroup size\n * @property {Array.|null} [partitionNames] DynamicPartitionGroup partitionNames\n */\n\n /**\n * Constructs a new DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionGroup.\n * @implements IDynamicPartitionGroup\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n */\n function DynamicPartitionGroup(properties) {\n this.partitionNames = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionGroup name.\n * @member {string} name\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.name = \"\";\n\n /**\n * DynamicPartitionGroup size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DynamicPartitionGroup partitionNames.\n * @member {Array.} partitionNames\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.partitionNames = $util.emptyArray;\n\n /**\n * Creates a new DynamicPartitionGroup instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup instance\n */\n DynamicPartitionGroup.create = function create(properties) {\n return new DynamicPartitionGroup(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.size);\n if (message.partitionNames != null && message.partitionNames.length)\n for (let i = 0; i < message.partitionNames.length; ++i)\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.partitionNames[i]);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.name = reader.string();\n break;\n case 2:\n message.size = reader.uint64();\n break;\n case 3:\n if (!(message.partitionNames && message.partitionNames.length))\n message.partitionNames = [];\n message.partitionNames.push(reader.string());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"name\"))\n throw $util.ProtocolError(\"missing required 'name'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionGroup message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionGroup.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.partitionNames != null && message.hasOwnProperty(\"partitionNames\")) {\n if (!Array.isArray(message.partitionNames))\n return \"partitionNames: array expected\";\n for (let i = 0; i < message.partitionNames.length; ++i)\n if (!$util.isString(message.partitionNames[i]))\n return \"partitionNames: string[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a DynamicPartitionGroup message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n */\n DynamicPartitionGroup.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionGroup)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n if (object.name != null)\n message.name = String(object.name);\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.partitionNames) {\n if (!Array.isArray(object.partitionNames))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected\");\n message.partitionNames = [];\n for (let i = 0; i < object.partitionNames.length; ++i)\n message.partitionNames[i] = String(object.partitionNames[i]);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionGroup message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.DynamicPartitionGroup} message DynamicPartitionGroup\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionGroup.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.partitionNames = [];\n if (options.defaults) {\n object.name = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.partitionNames && message.partitionNames.length) {\n object.partitionNames = [];\n for (let j = 0; j < message.partitionNames.length; ++j)\n object.partitionNames[j] = message.partitionNames[j];\n }\n return object;\n };\n\n /**\n * Converts this DynamicPartitionGroup to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionGroup.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionGroup;\n })();\n\n chromeos_update_engine.DynamicPartitionMetadata = (function() {\n\n /**\n * Properties of a DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionMetadata\n * @property {Array.|null} [groups] DynamicPartitionMetadata groups\n * @property {boolean|null} [snapshotEnabled] DynamicPartitionMetadata snapshotEnabled\n * @property {boolean|null} [vabcEnabled] DynamicPartitionMetadata vabcEnabled\n * @property {string|null} [vabcCompressionParam] DynamicPartitionMetadata vabcCompressionParam\n * @property {number|null} [cowVersion] DynamicPartitionMetadata cowVersion\n */\n\n /**\n * Constructs a new DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionMetadata.\n * @implements IDynamicPartitionMetadata\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n */\n function DynamicPartitionMetadata(properties) {\n this.groups = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionMetadata groups.\n * @member {Array.} groups\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.groups = $util.emptyArray;\n\n /**\n * DynamicPartitionMetadata snapshotEnabled.\n * @member {boolean} snapshotEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.snapshotEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcEnabled.\n * @member {boolean} vabcEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcCompressionParam.\n * @member {string} vabcCompressionParam\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcCompressionParam = \"\";\n\n /**\n * DynamicPartitionMetadata cowVersion.\n * @member {number} cowVersion\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.cowVersion = 0;\n\n /**\n * Creates a new DynamicPartitionMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata instance\n */\n DynamicPartitionMetadata.create = function create(properties) {\n return new DynamicPartitionMetadata(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.groups != null && message.groups.length)\n for (let i = 0; i < message.groups.length; ++i)\n $root.chromeos_update_engine.DynamicPartitionGroup.encode(message.groups[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.snapshotEnabled != null && Object.hasOwnProperty.call(message, \"snapshotEnabled\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.snapshotEnabled);\n if (message.vabcEnabled != null && Object.hasOwnProperty.call(message, \"vabcEnabled\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.vabcEnabled);\n if (message.vabcCompressionParam != null && Object.hasOwnProperty.call(message, \"vabcCompressionParam\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.vabcCompressionParam);\n if (message.cowVersion != null && Object.hasOwnProperty.call(message, \"cowVersion\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.cowVersion);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.groups && message.groups.length))\n message.groups = [];\n message.groups.push($root.chromeos_update_engine.DynamicPartitionGroup.decode(reader, reader.uint32()));\n break;\n case 2:\n message.snapshotEnabled = reader.bool();\n break;\n case 3:\n message.vabcEnabled = reader.bool();\n break;\n case 4:\n message.vabcCompressionParam = reader.string();\n break;\n case 5:\n message.cowVersion = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.groups != null && message.hasOwnProperty(\"groups\")) {\n if (!Array.isArray(message.groups))\n return \"groups: array expected\";\n for (let i = 0; i < message.groups.length; ++i) {\n let error = $root.chromeos_update_engine.DynamicPartitionGroup.verify(message.groups[i]);\n if (error)\n return \"groups.\" + error;\n }\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n if (typeof message.snapshotEnabled !== \"boolean\")\n return \"snapshotEnabled: boolean expected\";\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n if (typeof message.vabcEnabled !== \"boolean\")\n return \"vabcEnabled: boolean expected\";\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n if (!$util.isString(message.vabcCompressionParam))\n return \"vabcCompressionParam: string expected\";\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n if (!$util.isInteger(message.cowVersion))\n return \"cowVersion: integer expected\";\n return null;\n };\n\n /**\n * Creates a DynamicPartitionMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n */\n DynamicPartitionMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionMetadata)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n if (object.groups) {\n if (!Array.isArray(object.groups))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: array expected\");\n message.groups = [];\n for (let i = 0; i < object.groups.length; ++i) {\n if (typeof object.groups[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: object expected\");\n message.groups[i] = $root.chromeos_update_engine.DynamicPartitionGroup.fromObject(object.groups[i]);\n }\n }\n if (object.snapshotEnabled != null)\n message.snapshotEnabled = Boolean(object.snapshotEnabled);\n if (object.vabcEnabled != null)\n message.vabcEnabled = Boolean(object.vabcEnabled);\n if (object.vabcCompressionParam != null)\n message.vabcCompressionParam = String(object.vabcCompressionParam);\n if (object.cowVersion != null)\n message.cowVersion = object.cowVersion >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.DynamicPartitionMetadata} message DynamicPartitionMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.groups = [];\n if (options.defaults) {\n object.snapshotEnabled = false;\n object.vabcEnabled = false;\n object.vabcCompressionParam = \"\";\n object.cowVersion = 0;\n }\n if (message.groups && message.groups.length) {\n object.groups = [];\n for (let j = 0; j < message.groups.length; ++j)\n object.groups[j] = $root.chromeos_update_engine.DynamicPartitionGroup.toObject(message.groups[j], options);\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n object.snapshotEnabled = message.snapshotEnabled;\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n object.vabcEnabled = message.vabcEnabled;\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n object.vabcCompressionParam = message.vabcCompressionParam;\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n object.cowVersion = message.cowVersion;\n return object;\n };\n\n /**\n * Converts this DynamicPartitionMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionMetadata;\n })();\n\n chromeos_update_engine.ApexInfo = (function() {\n\n /**\n * Properties of an ApexInfo.\n * @memberof chromeos_update_engine\n * @interface IApexInfo\n * @property {string|null} [packageName] ApexInfo packageName\n * @property {number|Long|null} [version] ApexInfo version\n * @property {boolean|null} [isCompressed] ApexInfo isCompressed\n * @property {number|Long|null} [decompressedSize] ApexInfo decompressedSize\n */\n\n /**\n * Constructs a new ApexInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexInfo.\n * @implements IApexInfo\n * @constructor\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n */\n function ApexInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexInfo packageName.\n * @member {string} packageName\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.packageName = \"\";\n\n /**\n * ApexInfo version.\n * @member {number|Long} version\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * ApexInfo isCompressed.\n * @member {boolean} isCompressed\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.isCompressed = false;\n\n /**\n * ApexInfo decompressedSize.\n * @member {number|Long} decompressedSize\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.decompressedSize = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * Creates a new ApexInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo instance\n */\n ApexInfo.create = function create(properties) {\n return new ApexInfo(properties);\n };\n\n /**\n * Encodes the specified ApexInfo message. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.packageName != null && Object.hasOwnProperty.call(message, \"packageName\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.packageName);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.version);\n if (message.isCompressed != null && Object.hasOwnProperty.call(message, \"isCompressed\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isCompressed);\n if (message.decompressedSize != null && Object.hasOwnProperty.call(message, \"decompressedSize\"))\n writer.uint32(/* id 4, wireType 0 =*/32).int64(message.decompressedSize);\n return writer;\n };\n\n /**\n * Encodes the specified ApexInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.packageName = reader.string();\n break;\n case 2:\n message.version = reader.int64();\n break;\n case 3:\n message.isCompressed = reader.bool();\n break;\n case 4:\n message.decompressedSize = reader.int64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n if (!$util.isString(message.packageName))\n return \"packageName: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high)))\n return \"version: integer|Long expected\";\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n if (typeof message.isCompressed !== \"boolean\")\n return \"isCompressed: boolean expected\";\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (!$util.isInteger(message.decompressedSize) && !(message.decompressedSize && $util.isInteger(message.decompressedSize.low) && $util.isInteger(message.decompressedSize.high)))\n return \"decompressedSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an ApexInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n */\n ApexInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexInfo)\n return object;\n let message = new $root.chromeos_update_engine.ApexInfo();\n if (object.packageName != null)\n message.packageName = String(object.packageName);\n if (object.version != null)\n if ($util.Long)\n (message.version = $util.Long.fromValue(object.version)).unsigned = false;\n else if (typeof object.version === \"string\")\n message.version = parseInt(object.version, 10);\n else if (typeof object.version === \"number\")\n message.version = object.version;\n else if (typeof object.version === \"object\")\n message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber();\n if (object.isCompressed != null)\n message.isCompressed = Boolean(object.isCompressed);\n if (object.decompressedSize != null)\n if ($util.Long)\n (message.decompressedSize = $util.Long.fromValue(object.decompressedSize)).unsigned = false;\n else if (typeof object.decompressedSize === \"string\")\n message.decompressedSize = parseInt(object.decompressedSize, 10);\n else if (typeof object.decompressedSize === \"number\")\n message.decompressedSize = object.decompressedSize;\n else if (typeof object.decompressedSize === \"object\")\n message.decompressedSize = new $util.LongBits(object.decompressedSize.low >>> 0, object.decompressedSize.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from an ApexInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.ApexInfo} message ApexInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.packageName = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.version = options.longs === String ? \"0\" : 0;\n object.isCompressed = false;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.decompressedSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.decompressedSize = options.longs === String ? \"0\" : 0;\n }\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n object.packageName = message.packageName;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (typeof message.version === \"number\")\n object.version = options.longs === String ? String(message.version) : message.version;\n else\n object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version;\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n object.isCompressed = message.isCompressed;\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (typeof message.decompressedSize === \"number\")\n object.decompressedSize = options.longs === String ? String(message.decompressedSize) : message.decompressedSize;\n else\n object.decompressedSize = options.longs === String ? $util.Long.prototype.toString.call(message.decompressedSize) : options.longs === Number ? new $util.LongBits(message.decompressedSize.low >>> 0, message.decompressedSize.high >>> 0).toNumber() : message.decompressedSize;\n return object;\n };\n\n /**\n * Converts this ApexInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ApexInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexInfo;\n })();\n\n chromeos_update_engine.ApexMetadata = (function() {\n\n /**\n * Properties of an ApexMetadata.\n * @memberof chromeos_update_engine\n * @interface IApexMetadata\n * @property {Array.|null} [apexInfo] ApexMetadata apexInfo\n */\n\n /**\n * Constructs a new ApexMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexMetadata.\n * @implements IApexMetadata\n * @constructor\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n */\n function ApexMetadata(properties) {\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexMetadata apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n */\n ApexMetadata.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new ApexMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata instance\n */\n ApexMetadata.create = function create(properties) {\n return new ApexMetadata(properties);\n };\n\n /**\n * Encodes the specified ApexMetadata message. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified ApexMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates an ApexMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n */\n ApexMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexMetadata)\n return object;\n let message = new $root.chromeos_update_engine.ApexMetadata();\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from an ApexMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.ApexMetadata} message ApexMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.apexInfo = [];\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this ApexMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n ApexMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexMetadata;\n })();\n\n chromeos_update_engine.DeltaArchiveManifest = (function() {\n\n /**\n * Properties of a DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @interface IDeltaArchiveManifest\n * @property {number|null} [blockSize] DeltaArchiveManifest blockSize\n * @property {number|Long|null} [signaturesOffset] DeltaArchiveManifest signaturesOffset\n * @property {number|Long|null} [signaturesSize] DeltaArchiveManifest signaturesSize\n * @property {number|null} [minorVersion] DeltaArchiveManifest minorVersion\n * @property {Array.|null} [partitions] DeltaArchiveManifest partitions\n * @property {number|Long|null} [maxTimestamp] DeltaArchiveManifest maxTimestamp\n * @property {chromeos_update_engine.IDynamicPartitionMetadata|null} [dynamicPartitionMetadata] DeltaArchiveManifest dynamicPartitionMetadata\n * @property {boolean|null} [partialUpdate] DeltaArchiveManifest partialUpdate\n * @property {Array.|null} [apexInfo] DeltaArchiveManifest apexInfo\n * @property {string|null} [securityPatchLevel] DeltaArchiveManifest securityPatchLevel\n */\n\n /**\n * Constructs a new DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DeltaArchiveManifest.\n * @implements IDeltaArchiveManifest\n * @constructor\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n */\n function DeltaArchiveManifest(properties) {\n this.partitions = [];\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DeltaArchiveManifest blockSize.\n * @member {number} blockSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.blockSize = 4096;\n\n /**\n * DeltaArchiveManifest signaturesOffset.\n * @member {number|Long} signaturesOffset\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest signaturesSize.\n * @member {number|Long} signaturesSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest minorVersion.\n * @member {number} minorVersion\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.minorVersion = 0;\n\n /**\n * DeltaArchiveManifest partitions.\n * @member {Array.} partitions\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partitions = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest maxTimestamp.\n * @member {number|Long} maxTimestamp\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.maxTimestamp = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * DeltaArchiveManifest dynamicPartitionMetadata.\n * @member {chromeos_update_engine.IDynamicPartitionMetadata|null|undefined} dynamicPartitionMetadata\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.dynamicPartitionMetadata = null;\n\n /**\n * DeltaArchiveManifest partialUpdate.\n * @member {boolean} partialUpdate\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partialUpdate = false;\n\n /**\n * DeltaArchiveManifest apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.apexInfo = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest securityPatchLevel.\n * @member {string} securityPatchLevel\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.securityPatchLevel = \"\";\n\n /**\n * Creates a new DeltaArchiveManifest instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest instance\n */\n DeltaArchiveManifest.create = function create(properties) {\n return new DeltaArchiveManifest(properties);\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.blockSize != null && Object.hasOwnProperty.call(message, \"blockSize\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.blockSize);\n if (message.signaturesOffset != null && Object.hasOwnProperty.call(message, \"signaturesOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.signaturesOffset);\n if (message.signaturesSize != null && Object.hasOwnProperty.call(message, \"signaturesSize\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.signaturesSize);\n if (message.minorVersion != null && Object.hasOwnProperty.call(message, \"minorVersion\"))\n writer.uint32(/* id 12, wireType 0 =*/96).uint32(message.minorVersion);\n if (message.partitions != null && message.partitions.length)\n for (let i = 0; i < message.partitions.length; ++i)\n $root.chromeos_update_engine.PartitionUpdate.encode(message.partitions[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();\n if (message.maxTimestamp != null && Object.hasOwnProperty.call(message, \"maxTimestamp\"))\n writer.uint32(/* id 14, wireType 0 =*/112).int64(message.maxTimestamp);\n if (message.dynamicPartitionMetadata != null && Object.hasOwnProperty.call(message, \"dynamicPartitionMetadata\"))\n $root.chromeos_update_engine.DynamicPartitionMetadata.encode(message.dynamicPartitionMetadata, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.partialUpdate != null && Object.hasOwnProperty.call(message, \"partialUpdate\"))\n writer.uint32(/* id 16, wireType 0 =*/128).bool(message.partialUpdate);\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();\n if (message.securityPatchLevel != null && Object.hasOwnProperty.call(message, \"securityPatchLevel\"))\n writer.uint32(/* id 18, wireType 2 =*/146).string(message.securityPatchLevel);\n return writer;\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message, length delimited. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 3:\n message.blockSize = reader.uint32();\n break;\n case 4:\n message.signaturesOffset = reader.uint64();\n break;\n case 5:\n message.signaturesSize = reader.uint64();\n break;\n case 12:\n message.minorVersion = reader.uint32();\n break;\n case 13:\n if (!(message.partitions && message.partitions.length))\n message.partitions = [];\n message.partitions.push($root.chromeos_update_engine.PartitionUpdate.decode(reader, reader.uint32()));\n break;\n case 14:\n message.maxTimestamp = reader.int64();\n break;\n case 15:\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.decode(reader, reader.uint32());\n break;\n case 16:\n message.partialUpdate = reader.bool();\n break;\n case 17:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n case 18:\n message.securityPatchLevel = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DeltaArchiveManifest message.\n * @function verify\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DeltaArchiveManifest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n if (!$util.isInteger(message.blockSize))\n return \"blockSize: integer expected\";\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (!$util.isInteger(message.signaturesOffset) && !(message.signaturesOffset && $util.isInteger(message.signaturesOffset.low) && $util.isInteger(message.signaturesOffset.high)))\n return \"signaturesOffset: integer|Long expected\";\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (!$util.isInteger(message.signaturesSize) && !(message.signaturesSize && $util.isInteger(message.signaturesSize.low) && $util.isInteger(message.signaturesSize.high)))\n return \"signaturesSize: integer|Long expected\";\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n if (!$util.isInteger(message.minorVersion))\n return \"minorVersion: integer expected\";\n if (message.partitions != null && message.hasOwnProperty(\"partitions\")) {\n if (!Array.isArray(message.partitions))\n return \"partitions: array expected\";\n for (let i = 0; i < message.partitions.length; ++i) {\n let error = $root.chromeos_update_engine.PartitionUpdate.verify(message.partitions[i]);\n if (error)\n return \"partitions.\" + error;\n }\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (!$util.isInteger(message.maxTimestamp) && !(message.maxTimestamp && $util.isInteger(message.maxTimestamp.low) && $util.isInteger(message.maxTimestamp.high)))\n return \"maxTimestamp: integer|Long expected\";\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\")) {\n let error = $root.chromeos_update_engine.DynamicPartitionMetadata.verify(message.dynamicPartitionMetadata);\n if (error)\n return \"dynamicPartitionMetadata.\" + error;\n }\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n if (typeof message.partialUpdate !== \"boolean\")\n return \"partialUpdate: boolean expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n if (!$util.isString(message.securityPatchLevel))\n return \"securityPatchLevel: string expected\";\n return null;\n };\n\n /**\n * Creates a DeltaArchiveManifest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n */\n DeltaArchiveManifest.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DeltaArchiveManifest)\n return object;\n let message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n if (object.blockSize != null)\n message.blockSize = object.blockSize >>> 0;\n if (object.signaturesOffset != null)\n if ($util.Long)\n (message.signaturesOffset = $util.Long.fromValue(object.signaturesOffset)).unsigned = true;\n else if (typeof object.signaturesOffset === \"string\")\n message.signaturesOffset = parseInt(object.signaturesOffset, 10);\n else if (typeof object.signaturesOffset === \"number\")\n message.signaturesOffset = object.signaturesOffset;\n else if (typeof object.signaturesOffset === \"object\")\n message.signaturesOffset = new $util.LongBits(object.signaturesOffset.low >>> 0, object.signaturesOffset.high >>> 0).toNumber(true);\n if (object.signaturesSize != null)\n if ($util.Long)\n (message.signaturesSize = $util.Long.fromValue(object.signaturesSize)).unsigned = true;\n else if (typeof object.signaturesSize === \"string\")\n message.signaturesSize = parseInt(object.signaturesSize, 10);\n else if (typeof object.signaturesSize === \"number\")\n message.signaturesSize = object.signaturesSize;\n else if (typeof object.signaturesSize === \"object\")\n message.signaturesSize = new $util.LongBits(object.signaturesSize.low >>> 0, object.signaturesSize.high >>> 0).toNumber(true);\n if (object.minorVersion != null)\n message.minorVersion = object.minorVersion >>> 0;\n if (object.partitions) {\n if (!Array.isArray(object.partitions))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected\");\n message.partitions = [];\n for (let i = 0; i < object.partitions.length; ++i) {\n if (typeof object.partitions[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: object expected\");\n message.partitions[i] = $root.chromeos_update_engine.PartitionUpdate.fromObject(object.partitions[i]);\n }\n }\n if (object.maxTimestamp != null)\n if ($util.Long)\n (message.maxTimestamp = $util.Long.fromValue(object.maxTimestamp)).unsigned = false;\n else if (typeof object.maxTimestamp === \"string\")\n message.maxTimestamp = parseInt(object.maxTimestamp, 10);\n else if (typeof object.maxTimestamp === \"number\")\n message.maxTimestamp = object.maxTimestamp;\n else if (typeof object.maxTimestamp === \"object\")\n message.maxTimestamp = new $util.LongBits(object.maxTimestamp.low >>> 0, object.maxTimestamp.high >>> 0).toNumber();\n if (object.dynamicPartitionMetadata != null) {\n if (typeof object.dynamicPartitionMetadata !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected\");\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.fromObject(object.dynamicPartitionMetadata);\n }\n if (object.partialUpdate != null)\n message.partialUpdate = Boolean(object.partialUpdate);\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n if (object.securityPatchLevel != null)\n message.securityPatchLevel = String(object.securityPatchLevel);\n return message;\n };\n\n /**\n * Creates a plain object from a DeltaArchiveManifest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.DeltaArchiveManifest} message DeltaArchiveManifest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DeltaArchiveManifest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.partitions = [];\n object.apexInfo = [];\n }\n if (options.defaults) {\n object.blockSize = 4096;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesSize = options.longs === String ? \"0\" : 0;\n object.minorVersion = 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.maxTimestamp = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.maxTimestamp = options.longs === String ? \"0\" : 0;\n object.dynamicPartitionMetadata = null;\n object.partialUpdate = false;\n object.securityPatchLevel = \"\";\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n object.blockSize = message.blockSize;\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (typeof message.signaturesOffset === \"number\")\n object.signaturesOffset = options.longs === String ? String(message.signaturesOffset) : message.signaturesOffset;\n else\n object.signaturesOffset = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesOffset) : options.longs === Number ? new $util.LongBits(message.signaturesOffset.low >>> 0, message.signaturesOffset.high >>> 0).toNumber(true) : message.signaturesOffset;\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (typeof message.signaturesSize === \"number\")\n object.signaturesSize = options.longs === String ? String(message.signaturesSize) : message.signaturesSize;\n else\n object.signaturesSize = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesSize) : options.longs === Number ? new $util.LongBits(message.signaturesSize.low >>> 0, message.signaturesSize.high >>> 0).toNumber(true) : message.signaturesSize;\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n object.minorVersion = message.minorVersion;\n if (message.partitions && message.partitions.length) {\n object.partitions = [];\n for (let j = 0; j < message.partitions.length; ++j)\n object.partitions[j] = $root.chromeos_update_engine.PartitionUpdate.toObject(message.partitions[j], options);\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (typeof message.maxTimestamp === \"number\")\n object.maxTimestamp = options.longs === String ? String(message.maxTimestamp) : message.maxTimestamp;\n else\n object.maxTimestamp = options.longs === String ? $util.Long.prototype.toString.call(message.maxTimestamp) : options.longs === Number ? new $util.LongBits(message.maxTimestamp.low >>> 0, message.maxTimestamp.high >>> 0).toNumber() : message.maxTimestamp;\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\"))\n object.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.toObject(message.dynamicPartitionMetadata, options);\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n object.partialUpdate = message.partialUpdate;\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n object.securityPatchLevel = message.securityPatchLevel;\n return object;\n };\n\n /**\n * Converts this DeltaArchiveManifest to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n * @returns {Object.} JSON object\n */\n DeltaArchiveManifest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DeltaArchiveManifest;\n })();\n\n return chromeos_update_engine;\n})();\n\nexport { $root as default };\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TextWriter, ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { chromeos_update_engine } from './update_metadata_pb.js'\n\n/**\n * Parse the non-A/B OTA package and return it as a DeltaArchiveManifest\n * @param {ZipReader} packedFile\n */\nexport class PayloadNonAB extends chromeos_update_engine.DeltaArchiveManifest {\n nonAB: boolean = true\n Blocksize: number = 4096\n packedFile: ZipReader\n constructor(packedFile: ZipReader) {\n super()\n this.packedFile = packedFile\n }\n\n async init() {\n this.Blocksize = 4096\n this.partialUpdate = false\n this.dynamicPartitionMetadata = new chromeos_update_engine.DynamicPartitionMetadata(\n { snapshotEnabled: false, vabcEnabled: false }\n )\n this.partitions = []\n\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.transfer.list)/g\n const /** Array */ entries = await this.packedFile.getEntries()\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n const match = entry.filename.match(regexName)![0]\n let newPartition: any = new chromeos_update_engine.PartitionUpdate({\n partitionName: match\n })\n newPartition.rawText = await entry.getData!(new TextWriter())\n await this.parseTransferList(newPartition)\n this.partitions.push(newPartition)\n }\n }\n }\n\n async parseTransferList(partition: chromeos_update_engine.PartitionUpdate | any) {\n let lines = (partition as any).rawText.split('\\n')\n // First four line in header: version, total blocks,\n // number of stashed entries, maximum used memory for stash\n if (lines.length < 4) {\n throw 'At least 4 lines in header should be provided.'\n }\n partition.version = lines[0]\n partition.totalBlocks = parseInt(lines[1])\n partition.entryStashed = parseInt(lines[2])\n partition.maxStashed = parseInt(lines[3])\n partition.newPartitionInfo = new chromeos_update_engine.PartitionInfo()\n partition.newPartitionInfo.hash = new Uint8Array()\n partition.newPartitionInfo.size = 'unknown'\n /**\n * The main body have 8 different ops:\n * zero [rangeset] : fill zeros\n * new [rangeset] : fill with new data from \n * erase [rangeset] : mark given blocks as empty\n * move <...>\n * bsdiff <...>\n * imgdiff <...> :\n * Read the source blocks and apply (not for move op) to the target blocks\n * stash : load the given source range to memory\n * free : free the given \n * format:\n * [rangeset]: <# of pairs>, , , ...\n * : a hex number with length of 40\n * <...>: We expect to parse the remainder of the parameter tokens as one of:\n * (loads data from source image only)\n * - <[stash_id:stash_range] ...> (loads data from stashes only)\n * <[stash_id:stash_range] ...>\n * (loads data from both source image and stashes)\n */\n partition.operations = new Array()\n let newDataSize = await this.sizeNewData(partition.partitionName)\n for (const line of lines.slice(4)) {\n let op = new chromeos_update_engine.InstallOperation()\n let elements = line.split(' ')\n op.type = elements[0]\n switch ((op.type as unknown) as string) {\n case 'zero':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'new':\n // unlike an A/B OTA, the payload only exists in the payload.bin,\n // in an non-A/B OTA, the payload exists in both .new.data and .patch.data.\n // The new ops do not have any information about data length.\n // what we do here is: read in the size of .new.data, assume the first new\n // op have the data length of the size of .new.data.\n op.dataLength = newDataSize\n newDataSize = 0\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'erase':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'move':\n op.dstExtents = parseRange([], elements[2])\n break\n case 'bsdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'imgdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'stash':\n break\n case 'free':\n break\n }\n partition.operations.push(op)\n }\n }\n\n /**\n * Return the size of .new.data.*\n * @param {String} partitionName\n * @return {Number}\n */\n async sizeNewData(partitionName: string) {\n const /** Array */ entries = await this.packedFile.getEntries()\n const /** RegExp */ regexName = new RegExp(partitionName + '.new.dat.*')\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n return entry.uncompressedSize\n }\n }\n }\n}\n\n/**\n * Parse the range string and return it as an array of extents\n * @param {extents} Array\n * @param {String} rangeset\n * @return Array\n */\nfunction parseRange(extents: Object[], rangeset: string) {\n const regexRange = new RegExp('[d,]+')\n if (rangeset.match(regexRange)) {\n let elements = rangeset.split(',')\n for (let i = 1; i < elements.length; i = i + 2) {\n let extent = new Object({\n startBlock: parseInt(elements[i]),\n numBlocks: parseInt(elements[i + 1]) - parseInt(elements[i])\n })\n extents.push(extent)\n }\n }\n return extents\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class paypload is used to read in and\n * parse the payload.bin file from a OTA.zip file.\n * Class OpType creates a Map that can resolve the\n * operation type.\n * @package zip.js\n * @package protobufjs\n */\n\nimport {\n BlobReader,\n TextWriter,\n Writer,\n ZipReader,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\n// import '@zip.js/zip.js'\nimport { chromeos_update_engine as update_metadata_pb } from './update_metadata_pb'\nimport { PayloadNonAB } from './payload_nonab'\nimport { ZipFile } from './trim_zip'\n// import { Zip_js } from 'zip.js'\n\nconst /** String */ _MAGIC = 'CrAU'\nconst /** Number */ _VERSION_SIZE = 8\nconst /** Number */ _MANIFEST_LEN_SIZE = 8\nconst /** Number */ _METADATA_SIGNATURE_LEN_SIZE = 4\n\nconst /** Number */ _PAYLOAD_HEADER_SIZE =\n _MAGIC.length +\n _VERSION_SIZE +\n _MANIFEST_LEN_SIZE +\n _METADATA_SIGNATURE_LEN_SIZE\n\nconst /** Number */ _BRILLO_MAJOR_PAYLOAD_VERSION = 2\nexport const /** Array */ MetadataFormat = [\n {\n prefix: 'pre-build',\n key: 'preBuild',\n name: 'Pre-build'\n },\n {\n prefix: 'pre-build-incremental',\n key: 'preBuildVersion',\n name: 'Pre-build version'\n },\n {\n prefix: 'post-build',\n key: 'postBuild',\n name: 'Post-build'\n },\n {\n prefix: 'post-build-incremental',\n key: 'postBuildVersion',\n name: 'Post-build version'\n },\n {\n prefix: 'post-security-patch-level',\n key: 'postSecurityPatchLevel',\n name: 'Post-build SPL'\n },\n {\n prefix: 'post-timestamp',\n key: 'postTimestamp',\n name: 'Post-build timestamp'\n },\n ]\n\nclass StopIteration extends Error {}\n\nclass AbPayloadHeader {\n constructor(\n public magic: string,\n public version: number,\n public manifest_len: number,\n public metadata_signature_len: number\n ) {}\n}\n\n/**\n * Read in an integer from binary bufferArray.\n * @param {Int} size the size of a integer being read in\n * @return {Int} an integer.\n */\nasync function readIntAt(buffer: Blob, position: number, size: number) {\n let /** DataView */ view = new DataView(\n await buffer!.slice(position, position + size).arrayBuffer()\n )\n if (typeof view.getBigUint64 !== 'function') {\n view.getBigUint64 = function(offset) {\n const a = BigInt(view.getUint32(offset))\n const b = BigInt(view.getUint32(offset + 4))\n const bigNumber = a * 4294967296n + b\n return bigNumber\n }\n }\n switch (size) {\n case 2:\n return view.getUint16(0)\n case 4:\n return view.getUint32(0)\n case 8:\n return Number(view.getBigUint64(0))\n default:\n throw 'Cannot read this integer with size ' + size\n }\n}\n\nclass OTAPayloadBlobWriter extends Writer {\n offset: number\n contentType: string\n blob: Blob\n prefixLength: number\n\n header?: AbPayloadHeader\n\n async readHeader(blob: Blob) {\n let cursor = 0\n const readInt = (size: number) => {\n const ret = readIntAt(blob, cursor, size)\n cursor += size\n return ret\n }\n let buffer = await blob.slice(0, _PAYLOAD_HEADER_SIZE).arrayBuffer()\n let /** TextDecoder */ decoder = new TextDecoder()\n let magicBytes = buffer.slice(0, _MAGIC.length)\n const magic = decoder.decode(magicBytes)\n if (magic != _MAGIC) {\n throw new Error(\n `MAGIC is not correct, expected: ${_MAGIC} actual: ${magic}`\n )\n }\n cursor += _MAGIC.length\n const header_version = await readInt(_VERSION_SIZE)\n const manifest_len = await readInt(_MANIFEST_LEN_SIZE)\n if (header_version != _BRILLO_MAJOR_PAYLOAD_VERSION) {\n throw new Error(`Unexpected major version number: ${header_version}`)\n }\n const metadata_signature_len = await readInt(_METADATA_SIGNATURE_LEN_SIZE)\n this.header = new AbPayloadHeader(\n magic,\n header_version,\n manifest_len,\n metadata_signature_len\n )\n }\n /**\n * A zip.Writer that is tailored for OTA payload.bin read-in.\n * Instead of reading in all the contents in payload.bin, this writer will\n * throw an 'StopIteration' error when the header is read in.\n * The header will be stored into the .\n * @param {Payload} payload\n * @param {String} contentType\n */\n constructor(contentType = '') {\n super()\n this.offset = 0\n this.contentType = contentType\n this.blob = new Blob([], { type: contentType })\n this.prefixLength = 0\n }\n\n async writeUint8Array(array: Uint8Array) {\n super.writeUint8Array(array)\n this.blob = new Blob([this.blob, array.buffer], { type: this.contentType })\n this.offset = this.blob.size\n // Once the prefixLength is non-zero, the address of manifest and signature\n // become known and can be read in. Otherwise the header needs to be read\n // in first to determine the prefixLength.\n if (this.offset >= _PAYLOAD_HEADER_SIZE && this.prefixLength == 0) {\n console.log('Parsing header!')\n await this.readHeader(this.blob)\n this.prefixLength =\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n console.log(`Computed metadata length: ${this.prefixLength}`)\n }\n if (this.prefixLength > 0) {\n console.log(`${this.offset}/${this.prefixLength}`)\n if (this.offset >= this.prefixLength) {\n // The prefix has everything we need (header, manifest, signature). Once\n // the offset is beyond the prefix, no need to move on.\n this.blob = this.blob.slice(0, this.prefixLength)\n throw new StopIteration()\n }\n }\n }\n\n getData() {\n return this.blob\n }\n}\n\nexport class Payload {\n zipreader: ZipReader\n buffer: Blob | undefined\n private metadata: any\n payload_properties!: string[]\n manifest: update_metadata_pb.DeltaArchiveManifest | undefined\n metadata_signature!: update_metadata_pb.Signatures\n\n header?: AbPayloadHeader\n\n /**\n * This class parses the metadata of a OTA package.\n * @param {File} file A OTA.zip file read from user's machine.\n */\n constructor(file: File | URL | ZipFile) {\n if (file instanceof File) {\n this.zipreader = new ZipReader(new BlobReader(file))\n } else if (file instanceof URL) {\n this.zipreader = new ZipReader(new HttpReader(file.href))\n } else {\n this.zipreader = file.reader\n }\n }\n\n getMetadataLength(): number {\n return (\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n )\n }\n\n /**\n * Unzip the OTA package, get payload.bin and metadata\n */\n async unzip() {\n let entries = await this.zipreader.getEntries()\n for (let entry of entries) {\n if (entry.filename == 'payload.bin') {\n let writer = new OTAPayloadBlobWriter('')\n try {\n await entry.getData!(writer)\n } catch (e) {\n if (e instanceof StopIteration) {\n // Exception used as a hack to stop reading from zip. NO need to do anything\n // Ideally zip.js would provide an API to partialll read a zip\n // entry, but they don't. So this is what we get\n } else {\n console.log(e)\n throw e\n }\n }\n this.buffer = writer.getData()\n await this.readManifest(this.buffer, writer.header!)\n console.log('AB OTA manifest parsed')\n } else if (entry.filename == 'META-INF/com/android/metadata') {\n this.metadata = await entry.getData!(new TextWriter())\n console.log('OTA Package metadata parsed')\n } else if (entry.filename == \"payload_properties.txt\") {\n let payload_properties: string = await entry.getData!(new TextWriter());\n this.payload_properties = payload_properties.split(\"\\n\");\n console.log('OTA payload_properties.txt parsed');\n console.log(this.getPayloadHash());\n }\n }\n if (!this.manifest) {\n console.log('Failed to parse AB OTA package, falling back to non-AB')\n try {\n // The temporary variable manifest has to be used here, to prevent the html page\n // being rendered before everything is read in properly\n let manifest = new PayloadNonAB(this.zipreader)\n await manifest.init()\n manifest.nonAB = true\n this.manifest = manifest\n } catch (error) {\n alert('Please select a legit OTA package')\n return\n }\n }\n }\n\n getPayloadHash() {\n const file_hash_prefix = \"FILE_HASH=\";\n for(let line of this.payload_properties) {\n if (line.startsWith(file_hash_prefix)) {\n return base64ToBytes(line.substring(file_hash_prefix.length));\n }\n }\n }\n\n /**\n * Read the header of payload.bin, including the magic, header_version,\n * manifest_len, metadata_signature_len.\n */\n /**\n * Read in the manifest in an OTA.zip file.\n * The structure of the manifest can be found in:\n * aosp/system/update_engine/update_metadata.proto\n */\n async readManifest(buffer: Blob, header: AbPayloadHeader) {\n this.header = header\n let cursor = _PAYLOAD_HEADER_SIZE\n let manifestBlob = await buffer\n .slice(cursor, cursor + header.manifest_len)\n .arrayBuffer()\n cursor += header.manifest_len\n this.manifest = update_metadata_pb.DeltaArchiveManifest.decode(\n new Uint8Array(manifestBlob)\n )\n let signatureBlob = await buffer\n .slice(cursor, cursor + header.metadata_signature_len)\n .arrayBuffer()\n cursor += header.metadata_signature_len\n this.metadata_signature = update_metadata_pb.Signatures.decode(\n new Uint8Array(signatureBlob)\n );\n (this.manifest! as any).nonAB = false\n }\n\n parseMetadata() {\n for (let formatter of MetadataFormat) {\n let regex = new RegExp(formatter.prefix + '.+')\n if (this.metadata.match(regex)) {\n ;(this as any)[formatter.key] = trimEntry(\n this.metadata.match(regex)[0],\n formatter.prefix\n )\n } else {\n ;(this as any)[formatter.key] = ''\n }\n }\n }\n\n async init() {\n await this.unzip()\n this.parseMetadata()\n }\n}\n\nexport class DefaultMap extends Map {\n /** Reload the original get method. Return the original key value if\n * the key does not exist.\n * @param {Any} key\n */\n getWithDefault(key: any) {\n if (!this.has(key)) return key\n return this.get(key)\n }\n}\n\nexport class OpType {\n mapType: DefaultMap\n /**\n * OpType.mapType create a map that could resolve the operation\n * types. The operation types are encoded as numbers in\n * update_metadata.proto and must be decoded before any usage.\n */\n constructor() {\n let types = update_metadata_pb.InstallOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport class MergeOpType {\n mapType: DefaultMap\n /**\n * MergeOpType create a map that could resolve the COW merge operation\n * types. This is very similar to OpType class except that one is for\n * installation operations.\n */\n constructor() {\n let /** Array<{String: Number}>*/ types =\n update_metadata_pb.CowMergeOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport function octToHex(bufferArray: Uint8Array, space = true, maxLine = 16) {\n let hex_table = ''\n for (let i = 0; i < bufferArray.length; i++) {\n const hex /** String **/ = bufferArray[i].toString(16).toUpperCase()\n if (hex.length === 2) {\n hex_table += hex + (space ? ' ' : '')\n } else {\n hex_table += '0' + hex + (space ? ' ' : '')\n }\n if ((i + 1) % maxLine == 0 && space) {\n hex_table += '\\n'\n }\n }\n return hex_table\n}\n\n/**\n * Trim the prefix in an entry. This is required because the lookbehind\n * regular expression is not supported in safari yet.\n * @param {String} entry\n * @param {String} prefix\n * @return String\n */\nfunction trimEntry(entry: string, prefix: string) {\n return entry.slice(prefix.length + 1, entry.length)\n}\n\nfunction base64ToBytes(base64: string) {\n const binString = atob(base64);\n return Uint8Array.from(binString, (m) => m.codePointAt(0)!);\n}\n","\n\n\n\n\n\n\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EChartsOption } from 'echarts'\n\nexport class EchartsData {\n statisticData: Map\n trimmedData: Map\n title: string\n unit: string\n maximumEntries: number\n /**\n * Given a set of [key, value] pairs and title, create an object for further\n * usage in Vue-Echarts.\n * @param {Map} statisticData\n * @param {String} title\n * @param {String} unit\n * @param {Number} maximumEntries\n */\n constructor(\n statisticData: Map,\n title: string,\n unit: string,\n maximumEntries = 15\n ) {\n this.statisticData = statisticData\n this.trimmedData = trimMap(statisticData, maximumEntries)\n this.title = title\n this.unit = unit\n this.maximumEntries = maximumEntries\n }\n\n /**\n * Convert the raw data into a string.\n * @return {String} A list of [key, value].\n */\n listData() {\n let /** String */ table = ''\n for (let [key, value] of this.statisticData) {\n table += key + ' : ' + value.toString() + ' Blocks' + '\\n'\n }\n return table\n }\n\n /**\n * Generate necessary parameters (option) for vue-echarts.\n * Format of the parameters can be found here:\n * https://echarts.apache.org/en/option.html\n * @param {String} unit\n * @return {Object} an ECharts option object.\n */\n getEchartsOption(): EChartsOption {\n let /** Object */ option: EChartsOption = {}\n option.title = {\n text: this.title,\n left: 'center'\n }\n option.tooltip = {\n trigger: 'item',\n formatter: '{a}
{b} : {c} ' + this.unit + ' ({d}%)'\n }\n option.legend = {\n orient: 'horizontal',\n left: 'top',\n top: '10%',\n data: Array.from(this.trimmedData.keys())\n }\n option.series = [\n {\n name: this.title,\n type: 'pie',\n radius: '55%',\n center: ['50%', '60%'],\n data: Array.from(this.trimmedData).map((pair: any) => {\n return { value: pair[1], name: pair[0] }\n }),\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)'\n }\n }\n }\n ]\n return option\n }\n}\n\n/**\n * When there are too many entries in the map, the pie chart can be very\n * crowded. This function will return the entries that have high values.\n * Specifically, the top will be stored and the others\n * will be added into an entry called 'other'.\n * @param {Map} map\n * @param {Number} maximumEntries\n * @return {Map}\n */\nfunction trimMap(map: Map, maximumEntries: number) {\n if (map.size <= maximumEntries) return map\n let /** Map */ new_map = new Map()\n for (let i = 0; i < maximumEntries; i++) {\n let /** Number */ curr = 0\n let /** String */ currKey = ''\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n if (value > curr) {\n curr = value\n currKey = key\n }\n }\n }\n new_map.set(currKey, curr)\n }\n let /** Number */ restTotal = 0\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n restTotal += value\n }\n }\n new_map.set('other', restTotal)\n return new_map\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class MapParser will take in a Android build and construct\n * several file name maps (physical address: file name) according to it.\n * The map of each partitions is added by calling MapParser.add(partitionName).\n * You can query the file name being operated by calling\n * MapParser.query(address, datalength).\n */\n\nimport {\n ZipReader,\n BlobReader,\n TextWriter,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\nimport { chromeos_update_engine } from './update_metadata_pb'\n\nexport class MapParser {\n build: ZipReader\n mapFiles: Map\n maps: Map\n /**\n * This class will take in a .zip Android build and construct a file type map\n * @param {File} targetFile\n */\n constructor(targetFile: File | URL) {\n if (targetFile instanceof File) {\n this.build = new ZipReader(new BlobReader(targetFile))\n } else {\n this.build = new ZipReader(new HttpReader(targetFile.href))\n }\n this.mapFiles = new Map()\n this.maps = new Map()\n }\n\n /**\n * Find the .map entries in the .zip build file. Store them as a map with\n * pairs of (partition name: zip.js entry).\n */\n async init() {\n let /** Array */ entries = await this.build.getEntries()\n const /** RegExp*/ regexPath = /IMAGES\\/[a-z_]*\\.map/g\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.map)/g\n entries.forEach(entry => {\n if (entry.filename.match(regexPath)) {\n this.mapFiles.set(entry.filename.match(regexName)![0], entry)\n }\n })\n }\n\n /**\n * According to the .map in the build, build a map for later query.\n * @param {String} partitionName\n * @param {Number} totalLength\n */\n async add(partitionName: string, totalLength: number) {\n let /** Array */ map = []\n const /** RegExp */ regexNumber = /\\d+/g\n const /** Reg */ regexRange = /\\d+\\-\\d+/g\n for (let i = 0; i < totalLength; i++) map[i] = `<${partitionName}>`\n if (this.mapFiles.get(partitionName)) {\n let /** String */ mapText = await this.mapFiles\n .get(partitionName)\n .getData(new TextWriter())\n let /** Array */ fileEntries = mapText.split('\\n')\n // Each line of the .map file in Android build starts with the filename\n // Followed by the block address, either a number or a range, for example:\n // //system/apex/com.android.adbd.apex 54-66 66 66-2663\n for (let entry of fileEntries) {\n let /** Array */ elements = entry.split(' ')\n for (let j = 1; j < elements.length; j++) {\n let /** Number */ left = 0\n let /** Number */ right = 0\n if (elements[j].match(regexRange)) {\n left = parseInt(elements[j].match(/\\d+/g)[0])\n right = parseInt(elements[j].match(/\\d+/g)[1])\n } else {\n left = parseInt(elements[j].match(regexNumber))\n right = parseInt(elements[j].match(regexNumber))\n }\n InsertMap(map, elements[0], left, right)\n }\n }\n this.maps.set(partitionName, map)\n } else {\n this.maps.set(partitionName, map)\n }\n }\n\n /**\n * Return the filename of given address.\n * @param {String} partitionName\n * @param {Array} extents\n * @return {Array}\n */\n query(partitionName: string, extents: Array) {\n let /** Array */ names = []\n let /** Array */ map = this.maps.get(partitionName)\n for (let ext of extents) {\n names.push(queryMap(map, ext.startBlock, ext.startBlock + ext.numBlocks))\n }\n return names\n }\n}\n\n/**\n * Fill in the hashtable from to using .\n * @param {Array} map\n * @param {String} name\n * @param {Number} left\n * @param {Number} right\n */\nfunction InsertMap(\n map: Array,\n name: string,\n left: number,\n right: number\n) {\n for (let i = left; i <= right; i++) {\n map[i] = name\n }\n}\n\n/**\n * Query the hashtable using index
.\n * @param {Array} map\n * @param {Number} left\n * @param {Number} right\n */\nfunction queryMap(map: Array, left: number, right: number) {\n // Assuming the consecutive blocks belong to the same file\n // Only the start block is queried here.\n if (!map[left]) {\n return 'unknown'\n }\n return map[left]\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Offer functions that can be used to parse the partitionUpdate\n * and then do statistics over it. One can use analysePartitions to specify the\n * partitions been analysed and metrics.\n */\n\nimport { OpType, MergeOpType } from './payload'\nimport { EchartsData } from './echarts_data'\nimport { MapParser } from './map_parser'\nimport { chromeos_update_engine } from './update_metadata_pb'\n\n/**\n * Add a to a element associated to . If the element dose not\n * exists than its value will be initialized to zero.\n * @param {Map} map\n * @param {String} key\n * @param {Number} value\n */\nfunction addNumberToMap(map: Map, key: String, value: number) {\n if (!map.get(key)) {\n map.set(key, 0)\n }\n map.set(key, map.get(key)! + value)\n}\n\n/**\n * Return a statistics over the numbers of blocks (in destination) that are\n * being operated by different installation operation (e.g. REPLACE, BSDIFF).\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedBlockStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n operatedBlocks,\n operationType,\n numBlocks(operation.dstExtents)\n )\n }\n }\n return operatedBlocks\n}\n\nfunction partitionPayloadSize(\n partition: chromeos_update_engine.IPartitionUpdate\n) {\n if (!partition.operations) {\n return 0\n }\n let size = 0\n for (let op of partition.operations!) {\n size += op.dataLength\n }\n return size\n}\n\nexport function partitionPayloadSizeStatistics(\n partitions: Array\n) {\n let partitionStats = new Map()\n for (let partition of partitions) {\n addNumberToMap(\n partitionStats,\n partition.partitionName,\n partitionPayloadSize(partition)\n )\n }\n return partitionStats\n}\n\nexport function mergeOperationStatistics(\n partitions: Array,\n blockSize: number\n) {\n let /** Map */ mergeOperations = new Map()\n let /** MergeOpType */ opType = new MergeOpType()\n let /** Number */ totalBlocks = 0\n for (let partition of partitions) {\n for (let operation of partition.mergeOperations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n mergeOperations,\n operationType,\n operation.dstExtent!.numBlocks\n )\n }\n // The total blocks number should be rounded up\n if (partition.newPartitionInfo == null) {\n throw new Error(\n `Partition ${partition.partitionName} doesn't have new_partition_info field.`\n )\n }\n totalBlocks += Math.ceil(partition.newPartitionInfo.size / blockSize)\n }\n // The COW merge operation is default to be COW_replace and not shown in\n // the manifest info. We have to mannually add that part of operations,\n // by subtracting the total blocks with other blocks.\n mergeOperations.forEach((value, key) => (totalBlocks -= value))\n mergeOperations.set('COW_REPLACE', totalBlocks)\n return mergeOperations\n}\n\n/**\n * Return a statistics over the disk usage of payload.bin, based on the type of\n * installation operations. Only partitions that are being passed in will be\n * included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedPayloadStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(operatedBlocks, operationType, operation.dataLength)\n }\n }\n return operatedBlocks\n}\n/**\n * Return a statistics over the disk usage of each file types in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFileExtensionsStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let filenameStats = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n const fileExtenstionStats = new Map()\n filenameStats.forEach((size, filename) => {\n addNumberToMap(fileExtenstionStats, name2Extension(filename), size)\n })\n return fileExtenstionStats\n}\n\n/**\n * Return a statistics over the disk usage of each file name in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFilenamesStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let /** Map */ operatedFilenames = new Map()\n if (!targetFile) {\n return operatedFilenames\n }\n let buildMap = new MapParser(targetFile)\n await buildMap.init()\n for (let partition of partitions) {\n await buildMap.add(\n partition.partitionName,\n Math.ceil(partition.newPartitionInfo!.size / blockSize)\n )\n for (let operation of partition.operations!) {\n if (!operation.hasOwnProperty('dataLength')) continue\n let operatedFileNames = buildMap.query(\n partition.partitionName,\n operation.dstExtents!\n )\n let extentDataLength = distributeFilenames(\n operatedFileNames,\n operation.dstExtents!,\n operation.dataLength\n )\n extentDataLength!.forEach((value, key) => {\n addNumberToMap(operatedFilenames, key, value)\n })\n }\n }\n return operatedFilenames\n}\n\n/**\n * Analyse the given partitions using the given metrics.\n * @param {String} metrics\n * @param {Array} partitions\n * @return {EchartsData}\n */\nexport async function analysePartitions(\n metrics: String,\n partitions: Array,\n blockSize = 4096,\n targetFile: File | null | URL = null\n) {\n let /** Map */ statisticsData\n let /** Echartsdata */ echartsData\n switch (metrics) {\n case 'blocks':\n statisticsData = operatedBlockStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Operated blocks in target build',\n 'blocks'\n )\n break\n case 'payload':\n statisticsData = operatedPayloadStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Payload disk usage',\n 'bytes'\n )\n break\n case 'COWmerge':\n statisticsData = mergeOperationStatistics(partitions, blockSize)\n echartsData = new EchartsData(\n statisticsData,\n 'COW merge operations',\n 'blocks'\n )\n break\n case 'filenames':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated filenames',\n 'bytes'\n )\n break\n case 'extensions':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFileExtensionsStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated extensions',\n 'bytes'\n )\n break\n case 'partitions':\n statisticsData = partitionPayloadSizeStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Partition payload size',\n 'bytes'\n )\n break\n }\n if (echartsData) {\n return echartsData\n } else {\n throw 'Please double check if this is a proper AB OTA package.'\n }\n}\n\n/**\n * Calculate the number of blocks being operated\n * @param {Array} exts\n * @return {number}\n */\nexport function numBlocks(\n exts: Array | null | undefined\n) {\n if (!exts) {\n return 0\n }\n const accumulator = (total: number, ext: chromeos_update_engine.IExtent) =>\n total + ext.numBlocks\n return exts.reduce(accumulator, 0)\n}\n\n/**\n * Return a string that indicates the blocks being operated\n * in the manner of (start_block, block_length)\n * @param {Array} exts\n * @return {string}\n */\nexport function displayBlocks(exts: Array) {\n const accumulator = (total: string, ext: chromeos_update_engine.Extent) =>\n total + '(' + ext.startBlock + ',' + ext.numBlocks + ')'\n return exts.reduce(accumulator, '')\n}\n\n/**\n * Return a map with pairs of (file extension, data length used by this\n * extension). The total data length will be distributed by the blocks ratio\n * of each extent.\n * @param {Array} filenames\n * @param {Array} exts\n * @param {Number} length\n * @return {Map}\n */\nexport function distributeFilenames(\n filenames: Array,\n exts: Array,\n length: number\n): Map {\n let totalBlocks = numBlocks(exts)\n let distributedLengths = new Map()\n for (let i = 0; i < filenames.length; i++) {\n addNumberToMap(\n distributedLengths,\n filenames[i],\n Math.round((length * exts[i].numBlocks) / totalBlocks)\n )\n }\n return distributedLengths\n}\n\n/**\n * convert a filename into extension, for example:\n * '//system/apex/com.android.adbd.apex' => 'apex'\n * @param {String} filename\n * @return {String}\n */\nexport function name2Extension(filename: string) {\n let elements = filename.split('.')\n if (elements.length > 1) {\n return elements[elements.length - 1]\n } else if (elements[0] === 'unknown') {\n return 'unknown'\n } else if (filename[0] == '<' && filename.endsWith('>')) {\n return filename\n } else {\n return 'no-extension'\n }\n}\n","\nimport { numBlocks, displayBlocks } from '../services/payload_composition'\nimport { DefaultMap } from '../services/payload'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n operation: {\n type: Object,\n required: true\n },\n mapType: {\n type: DefaultMap,\n required: true\n }\n },\n data() {\n return {\n srcTotalBlocks: 0,\n srcBlocks: '',\n dstTotalBlocks: 0,\n dstBlocks: ''\n }\n },\n mounted() {\n if (this.operation.srcExtents) {\n this.srcTotalBlocks = numBlocks(this.operation.srcExtents)\n this.srcBlocks = displayBlocks(this.operation.srcExtents)\n }\n if (this.operation.dstExtents) {\n this.dstTotalBlocks = numBlocks(this.operation.dstExtents)\n this.dstBlocks = displayBlocks(this.operation.dstExtents)\n }\n }\n})\n","import { render } from \"./OperationDetail.vue?vue&type=template&id=44174082&scoped=true\"\nimport script from \"./OperationDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./OperationDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-44174082\"\n\nexport default script","\nimport { chromeos_update_engine } from '@/services/update_metadata_pb'\nimport { defineComponent } from 'vue'\nimport { OpType, octToHex } from '../services/payload'\nimport OperationDetail from './OperationDetail.vue'\n\nexport default defineComponent({\n components: {\n OperationDetail\n },\n props: {\n partition: {\n type: chromeos_update_engine.PartitionUpdate,\n required: true\n },\n dynamicPartitionList: {\n type: Array,\n required: true\n }\n },\n data() {\n return {\n showOPs: false,\n showInfo: false,\n opType: new OpType()\n }\n },\n methods: {\n toggle(key: string) {\n ;(this as any)[key] = !(this as any)[key]\n },\n octToHex: octToHex\n },\n computed: {\n readableTimestamp() {\n const unixTimestamp = parseInt(this.partition.version)\n if (isNaN(unixTimestamp)) {\n return ''\n }\n // Unix timestamp is in seconds, but js want milliseconds. So *1000\n return new Date(unixTimestamp * 1000).toString()\n },\n isDynamicPartition(): boolean {\n return (\n this.dynamicPartitionList.indexOf(this.partition.partitionName) >= 0\n )\n },\n isFECEnabled(): boolean {\n return (\n this.partition.fecExtent?.numBlocks > 0\n )\n },\n isHashtreeEnabled(): boolean {\n return (\n this.partition.hashTreeExtent?.numBlocks > 0\n )\n }\n }\n})\n","import { render } from \"./PartitionDetail.vue?vue&type=template&id=21e569e9&scoped=true\"\nimport script from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PartitionDetail.vue?vue&type=style&index=0&id=21e569e9&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-21e569e9\"\n\nexport default script","\n\n\n\n\n\n\n","import * as zip from '@zip.js/zip.js/dist/zip.js'\nimport { ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { Payload } from './payload'\n\nexport class ZipFile {\n public reader: ZipReader\n\n constructor(private file: File | URL) {\n this.reader = getZipReader(file)\n }\n getFileName() {\n return getFileName(this.file)\n }\n getFileSize() {\n if (this.file instanceof File) {\n return this.file.size\n } else {\n // TODO(zhangkelvin) Support getting file size from URL\n return 0\n }\n }\n}\n\nexport async function trimZip(\n file: ZipReader,\n p: (entry: zip.Entry) => boolean\n): Promise {\n const reader = file\n const writer = new zip.ZipWriter(new zip.BlobWriter('application/zip'))\n const entries = await reader.getEntries()\n for (const entry of entries.filter(entry => !!entry && p(entry))) {\n const blobWriter = new zip.BlobWriter()\n const data = (await entry.getData!(blobWriter)) as Blob\n console.log(`Adding ${entry.filename}, ${data.size}`)\n writer.add(entry.filename, new zip.BlobReader(blobWriter.getData()), {\n level: 0 // no compression\n })\n }\n return writer\n}\n\nfunction getZipReader(file: File | URL) {\n if (file instanceof File) {\n return new zip.ZipReader(new zip.BlobReader(file))\n } else {\n return new zip.ZipReader(new zip.HttpReader(file.href))\n }\n}\n\nexport function getFileName(file: File | URL) {\n if (file instanceof File) {\n return file.name\n } else {\n return file.pathname\n }\n}\n\nexport async function trimTargetFiles(file: File | URL): Promise {\n const writer = await trimZip(getZipReader(file), entry => {\n return entry.filename.startsWith('META/') || entry.filename.endsWith('.map') || entry.filename.endsWith(\".prop\") || entry.filename == \"prop.default\"\n })\n return await writer.close()\n}\n\nexport async function trimOTAPackage(payload: Payload): Promise {\n const writer = await trimZip(payload.zipreader, entry => {\n return entry.filename != 'payload.bin'\n })\n await writer.add(\n 'payload.bin',\n new zip.BlobReader(payload.buffer!.slice(0, payload.getMetadataLength())),\n // Most toolings assume that payload.bin and other entries are not\n // compressed, so use level 0\n {\n level: 0\n }\n )\n const blob: Blob = await writer.close()\n return blob\n}\n\nexport function downloadFile(\n blob: Blob,\n downloadNode: HTMLAnchorElement,\n filename: string\n) {\n const url = window.URL.createObjectURL(blob)\n downloadNode.href = url\n downloadNode.download = filename\n downloadNode.click()\n window.URL.revokeObjectURL(url)\n}\n\nexport function ensureSuffix(str: string, suffix: string) {\n if (str.endsWith(suffix)) {\n return str\n } else {\n return str + suffix\n }\n}\n","\nimport { Payload, MetadataFormat } from '../services/payload'\nimport { ZipFile } from '@/services/trim_zip'\n\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n zipFile: {\n type: ZipFile,\n required: true\n },\n payload: {\n type: Payload,\n required: true\n }\n },\n data() {\n return {\n MetadataFormat\n }\n },\n computed: {\n isDataWipePackage(): boolean {\n return this.payload.payload_properties.includes(\"POWERWASH=1\");\n },\n otaMetadata(): {\n prefix: string\n key: string\n name: string\n }[] {\n return MetadataFormat.filter(formatter =>\n String((this.payload as any)[formatter.key]).length > 0\n );\n },\n totalCOWSize(): number {\n const cowSizes = this.payload?.manifest?.partitions.map(p => p.estimateCowSize || 0);\n if (!cowSizes) {\n return 0;\n }\n return cowSizes.reduce((a, b) => a + b);\n },\n vabcCompressionParam(): string {\n return this.payload?.manifest?.dynamicPartitionMetadata?.vabcCompressionParam || \"\";\n },\n securityPatchLevel(): string {\n const spl = this.payload?.manifest?.securityPatchLevel;\n if (!spl) {\n return \"\";\n }\n return spl;\n },\n totalDynamicPartitionSize(): number {\n const groups = this.payload?.manifest?.dynamicPartitionMetadata?.groups\n if (!groups) {\n return 0\n }\n const dynamicPartitionNamess = new Set(\n groups.flatMap(g => g.partitionNames)\n )\n const dynamicPartitions =\n this.payload.manifest?.partitions.filter(p =>\n dynamicPartitionNamess.has(p.partitionName)\n ) || []\n if (dynamicPartitions.length <= 0) {\n return 0\n }\n return dynamicPartitions\n .map(p => p.newPartitionInfo?.size || 0)\n .reduce((acc, cur) => acc + cur)\n }\n }\n})\n","import { render } from \"./BasicInfo.vue?vue&type=template&id=4b9027e2&scoped=true\"\nimport script from \"./BasicInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./BasicInfo.vue?vue&type=script&lang=ts\"\n\nimport \"./BasicInfo.vue?vue&type=style&index=0&id=4b9027e2&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-4b9027e2\"\n\nexport default script","\nimport PartitionDetail from './PartitionDetail.vue'\nimport BasicInfo from './BasicInfo.vue'\nimport { Payload, octToHex } from '../services/payload'\nimport {\n downloadFile,\n ensureSuffix,\n trimOTAPackage,\n ZipFile\n} from '@/services/trim_zip'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n components: {\n PartitionDetail,\n BasicInfo\n },\n props: {\n zipFile: {\n type: ZipFile,\n default: null\n },\n payload: {\n type: Payload,\n default: null\n }\n },\n methods: {\n octToHex: octToHex,\n async exportOTAPackage() {\n const blob = await trimOTAPackage(this.payload as Payload)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(this.zipFile.getFileName(), '.zip')\n )\n }\n },\n computed: {\n dynamicPartitions(): string[] {\n return (\n this.payload.manifest?.dynamicPartitionMetadata?.groups?.flatMap(\n g => g.partitionNames || []\n ) || []\n )\n },\n payloadHash(): string {\n const hash = this.payload?.getPayloadHash();\n if (!hash) {\n return \"\";\n }\n return octToHex(hash, false);\n },\n }\n})\n","import { render } from \"./PayloadDetail.vue?vue&type=template&id=5dd4ca12&scoped=true\"\nimport script from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadDetail.vue?vue&type=style&index=0&id=5dd4ca12&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-5dd4ca12\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n labels: {\n type: Array,\n default: new Array()\n },\n modelValue: {\n type: Map,\n default: new Map()\n }\n },\n data() {\n return {\n selectAll: 1,\n selectAllText: ['Select All', 'Unselect All']\n }\n },\n mounted() {\n // Set the default value to be true once mounted\n for (let key of this.labels) {\n this.modelValue.set(key, true)\n }\n },\n methods: {\n updateSelected(newSelect: string) {\n this.modelValue.set(newSelect, !this.modelValue.get(newSelect))\n this.$emit('update:modelValue', this.modelValue)\n },\n revertAllSelection() {\n this.selectAll = 1 - this.selectAll\n for (let key of this.modelValue.keys()) {\n this.modelValue.set(key, Boolean(this.selectAll))\n }\n }\n }\n})\n","import { render } from \"./PartialCheckbox.vue?vue&type=template&id=533f2336&scoped=true\"\nimport script from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\n\nimport \"./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-533f2336\"\n\nexport default script","\n\n\n\n\n\n\n","import { render } from \"./PieChart.vue?vue&type=template&id=5d1cb486&scoped=true\"\nimport script from \"./PieChart.vue?vue&type=script&lang=js\"\nexport * from \"./PieChart.vue?vue&type=script&lang=js\"\n\nimport \"./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-5d1cb486\"\n\nexport default script","\nimport axios from 'axios'\nimport PartialCheckbox from './PartialCheckbox.vue'\nimport PieChart from './PieChart.vue'\nimport BaseFile from './BaseFile.vue'\nimport { analysePartitions } from '../services/payload_composition'\nimport { chromeos_update_engine as update_metadata_pb } from '../services/update_metadata_pb'\nimport { TooltipComponentPositionCallbackParams } from 'echarts'\nimport { EchartsData } from '@/services/echarts_data'\nimport { defineComponent } from 'vue'\nimport {\n downloadFile,\n ensureSuffix,\n getFileName,\n trimTargetFiles\n} from '@/services/trim_zip'\n\ninterface ComponentState {\n partitionInclude: Map\n echartsData: EchartsData | null\n listData: string\n targetFile: File | URL | null\n}\n\nexport default defineComponent({\n components: {\n PartialCheckbox,\n PieChart,\n BaseFile\n },\n props: {\n manifest: {\n type: update_metadata_pb.DeltaArchiveManifest,\n default: () => []\n },\n demo: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n partitionInclude: new Map(),\n echartsData: null,\n listData: '',\n targetFile: null\n } as ComponentState\n },\n computed: {\n updatePartitions(): string[] {\n return this.manifest.partitions.map(\n (partition: update_metadata_pb.IPartitionUpdate) => {\n return partition.partitionName\n }\n )\n }\n },\n async mounted() {\n if (this.demo) {\n try {\n const download = await axios.get(\n './files/cf_x86_target_file_demo.zip',\n { responseType: 'blob' }\n )\n this.targetFile = new File([download.data], 'target_demo.zip')\n } catch (err) {\n console.log('Please put a proper example target file in /public/files/')\n }\n }\n },\n methods: {\n piechartClick(param: TooltipComponentPositionCallbackParams) {\n console.log(param)\n },\n async updateChart(metrics: string) {\n let partitionSelected = this.manifest.partitions.filter(partition =>\n this.partitionInclude.get(partition.partitionName)\n )\n try {\n this.echartsData = await analysePartitions(\n metrics,\n partitionSelected,\n this.manifest.blockSize,\n this.targetFile\n )\n } catch (err) {\n alert(`Cannot be processed for the following issue: ${err}`)\n }\n },\n selectBuild(file: File | URL) {\n //TODO(lishutong) check the version of target file is same to the OTA target\n this.targetFile = file\n },\n async exportTargetFileMetadata() {\n const blob = await trimTargetFiles(this.targetFile!)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(getFileName(this.targetFile!), '.zip')\n )\n }\n }\n})\n","import { render } from \"./PayloadComposition.vue?vue&type=template&id=b6f71732&scoped=true\"\nimport script from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadComposition.vue?vue&type=style&index=0&id=b6f71732&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-b6f71732\"\n\nexport default script","\nimport BaseFile from '../components/BaseFile.vue'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n BaseFile,\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return ({\n zipFile: null,\n payload: null\n } as unknown) as {\n zipFile: ZipFile\n payload: Payload\n }\n },\n methods: {\n async unpackOTA(file: File | URL) {\n this.zipFile = new ZipFile(file)\n try {\n const payload = new Payload(this.zipFile as ZipFile);\n await payload.init();\n this.payload = payload;\n } catch (err) {\n alert(`Please check if this is a correct OTA package (.zip). ${err}`)\n console.log(err)\n }\n }\n }\n})\n","import { render } from \"./PackageAnalysis.vue?vue&type=template&id=142e5614\"\nimport script from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nexport * from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\nimport axios from 'axios'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return {\n zipFile: null,\n payload: null\n } as {\n zipFile: ZipFile | null\n payload: Payload | null\n }\n },\n async created() {\n // put cf_x86_demo.zip and cf_x86_target_file_demo into\n // this directory: /public/files\n try {\n const download = await axios.get('./files/cf_x86_demo.zip', {\n responseType: 'blob'\n })\n this.zipFile = new ZipFile(new File([download.data], 'ota_demo.zip'))\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n console.log('Please put a proper example OTA in /public/files/')\n }\n }\n})\n","import { render } from \"./Demo.vue?vue&type=template&id=1e5d071a\"\nimport script from \"./Demo.vue?vue&type=script&lang=ts\"\nexport * from \"./Demo.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n","import { render } from \"./About.vue?vue&type=template&id=67ed0bf6\"\nconst script = {}\nscript.render = render\n\nexport default script","\n\n\n\n","import { render } from \"./NotFound.vue?vue&type=template&id=50c6f348&scoped=true\"\nconst script = {}\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-50c6f348\"\n\nexport default script","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createRouter, createWebHistory } from 'vue-router'\nimport PackageAnalysis from '@/views/PackageAnalysis.vue'\nimport Demo from'@/views/Demo.vue'\nimport About from '@/views/About.vue'\nimport NotFound from '@/views/NotFound.vue'\n\nconst routes = [\n {\n path: '/',\n name: 'Analysis',\n component: PackageAnalysis,\n meta: {\n title: 'Analyse OTA package - from AOSP'\n }\n },\n {\n path: '/demo',\n name: 'Demo',\n component: Demo\n },\n {\n path: '/about',\n name: 'About',\n component: About\n },\n {\n path: '/:catchAll(.*)',\n name: 'Not Found',\n component: NotFound\n }\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes\n})\n\n// This callback runs before every route change, including on page load.\nrouter.beforeEach((to, from, next) => {\n // This goes through the matched routes from last to first, finding the closest route with a title.\n // e.g., if we have `/some/deep/nested/route` and `/some`, `/deep`, and `/nested` have titles,\n // `/nested`'s will be chosen.\n const nearestWithTitle = to.matched.slice().reverse().find(r => r.meta && r.meta.title);\n\n // Find the nearest route element with meta tags.\n const nearestWithMeta = to.matched.slice().reverse().find(r => r.meta && r.meta.metaTags)!;\n\n const previousNearestWithMeta = from.matched.slice().reverse().find(r => r.meta && r.meta.metaTags);\n\n // If a route with a title was found, set the document (page) title to that value.\n if(nearestWithTitle) {\n document.title = nearestWithTitle.meta.title as string;\n } else if(previousNearestWithMeta) {\n document.title = previousNearestWithMeta.meta.title as string;\n }\n\n // Remove any stale meta tags from the document using the key attribute we set below.\n Array.from(document.querySelectorAll('[data-vue-router-controlled]')).map(el => el.parentNode!.removeChild(el));\n\n next();\n});\n\nexport default router\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createStore } from 'vuex'\n\nexport default createStore({\n state: {},\n mutations: {},\n actions: {},\n modules: {}\n})\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createApp } from 'vue'\nimport vuetify from './plugins/vuetify'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nconst app = createApp(App)\napp.use(router)\napp.use(store)\napp.use(vuetify)\n\napp.mount('#app')"],"sourceRoot":""} \ No newline at end of file diff --git a/analyseOTA/js/app.a73a487e.js b/analyseOTA/js/app.a73a487e.js new file mode 100644 index 0000000..0889acf --- /dev/null +++ b/analyseOTA/js/app.a73a487e.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var r,i,s=t[0],l=t[1],c=t[2],p=0,f=[];p>>3){case 1:r.startBlock=e.uint64();break;case 2:r.numBlocks=e.uint64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(ne["a"])(e)||null===e?"object expected":null==e.startBlock||!e.hasOwnProperty("startBlock")||ie.isInteger(e.startBlock)||e.startBlock&&ie.isInteger(e.startBlock.low)&&ie.isInteger(e.startBlock.high)?null==e.numBlocks||!e.hasOwnProperty("numBlocks")||ie.isInteger(e.numBlocks)||e.numBlocks&&ie.isInteger(e.numBlocks.low)&&ie.isInteger(e.numBlocks.high)?null:"numBlocks: integer|Long expected":"startBlock: integer|Long expected"},e.fromObject=function(e){if(e instanceof se.chromeos_update_engine.Extent)return e;var t=new se.chromeos_update_engine.Extent;return null!=e.startBlock&&(ie.Long?(t.startBlock=ie.Long.fromValue(e.startBlock)).unsigned=!0:"string"===typeof e.startBlock?t.startBlock=parseInt(e.startBlock,10):"number"===typeof e.startBlock?t.startBlock=e.startBlock:"object"===Object(ne["a"])(e.startBlock)&&(t.startBlock=new ie.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0))),null!=e.numBlocks&&(ie.Long?(t.numBlocks=ie.Long.fromValue(e.numBlocks)).unsigned=!0:"string"===typeof e.numBlocks?t.numBlocks=parseInt(e.numBlocks,10):"number"===typeof e.numBlocks?t.numBlocks=e.numBlocks:"object"===Object(ne["a"])(e.numBlocks)&&(t.numBlocks=new ie.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(ie.Long){var r=new ie.Long(0,0,!0);n.startBlock=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.startBlock=t.longs===String?"0":0;if(ie.Long){var a=new ie.Long(0,0,!0);n.numBlocks=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.numBlocks=t.longs===String?"0":0}return null!=e.startBlock&&e.hasOwnProperty("startBlock")&&("number"===typeof e.startBlock?n.startBlock=t.longs===String?String(e.startBlock):e.startBlock:n.startBlock=t.longs===String?ie.Long.prototype.toString.call(e.startBlock):t.longs===Number?new ie.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0):e.startBlock),null!=e.numBlocks&&e.hasOwnProperty("numBlocks")&&("number"===typeof e.numBlocks?n.numBlocks=t.longs===String?String(e.numBlocks):e.numBlocks:n.numBlocks=t.longs===String?ie.Long.prototype.toString.call(e.numBlocks):t.longs===Number?new ie.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0):e.numBlocks),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,re["util"].toJSONOptions)},e}(),e.Signatures=function(){function e(e){if(this.signatures=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.signatures&&r.signatures.length||(r.signatures=[]),r.signatures.push(se.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ne["a"])(e)||null===e)return"object expected";if(null!=e.signatures&&e.hasOwnProperty("signatures")){if(!Array.isArray(e.signatures))return"signatures: array expected";for(var t=0;t>>3){case 1:r.version=e.uint32();break;case 2:r.data=e.bytes();break;case 3:r.unpaddedSignatureSize=e.fixed32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(ne["a"])(e)||null===e?"object expected":null!=e.version&&e.hasOwnProperty("version")&&!ie.isInteger(e.version)?"version: integer expected":null!=e.data&&e.hasOwnProperty("data")&&!(e.data&&"number"===typeof e.data.length||ie.isString(e.data))?"data: buffer expected":null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&!ie.isInteger(e.unpaddedSignatureSize)?"unpaddedSignatureSize: integer expected":null},e.fromObject=function(e){if(e instanceof se.chromeos_update_engine.Signatures.Signature)return e;var t=new se.chromeos_update_engine.Signatures.Signature;return null!=e.version&&(t.version=e.version>>>0),null!=e.data&&("string"===typeof e.data?ie.base64.decode(e.data,t.data=ie.newBuffer(ie.base64.length(e.data)),0):e.data.length&&(t.data=e.data)),null!=e.unpaddedSignatureSize&&(t.unpaddedSignatureSize=e.unpaddedSignatureSize>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.version=0,t.bytes===String?n.data="":(n.data=[],t.bytes!==Array&&(n.data=ie.newBuffer(n.data))),n.unpaddedSignatureSize=0),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.data&&e.hasOwnProperty("data")&&(n.data=t.bytes===String?ie.base64.encode(e.data,0,e.data.length):t.bytes===Array?Array.prototype.slice.call(e.data):e.data),null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&(n.unpaddedSignatureSize=e.unpaddedSignatureSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,re["util"].toJSONOptions)},e}(),e}(),e.PartitionInfo=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.size=e.uint64();break;case 2:r.hash=e.bytes();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(ne["a"])(e)||null===e?"object expected":null==e.size||!e.hasOwnProperty("size")||ie.isInteger(e.size)||e.size&&ie.isInteger(e.size.low)&&ie.isInteger(e.size.high)?null!=e.hash&&e.hasOwnProperty("hash")&&!(e.hash&&"number"===typeof e.hash.length||ie.isString(e.hash))?"hash: buffer expected":null:"size: integer|Long expected"},e.fromObject=function(e){if(e instanceof se.chromeos_update_engine.PartitionInfo)return e;var t=new se.chromeos_update_engine.PartitionInfo;return null!=e.size&&(ie.Long?(t.size=ie.Long.fromValue(e.size)).unsigned=!0:"string"===typeof e.size?t.size=parseInt(e.size,10):"number"===typeof e.size?t.size=e.size:"object"===Object(ne["a"])(e.size)&&(t.size=new ie.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0))),null!=e.hash&&("string"===typeof e.hash?ie.base64.decode(e.hash,t.hash=ie.newBuffer(ie.base64.length(e.hash)),0):e.hash.length&&(t.hash=e.hash)),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(ie.Long){var r=new ie.Long(0,0,!0);n.size=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.size=t.longs===String?"0":0;t.bytes===String?n.hash="":(n.hash=[],t.bytes!==Array&&(n.hash=ie.newBuffer(n.hash)))}return null!=e.size&&e.hasOwnProperty("size")&&("number"===typeof e.size?n.size=t.longs===String?String(e.size):e.size:n.size=t.longs===String?ie.Long.prototype.toString.call(e.size):t.longs===Number?new ie.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0):e.size),null!=e.hash&&e.hasOwnProperty("hash")&&(n.hash=t.bytes===String?ie.base64.encode(e.hash,0,e.hash.length):t.bytes===Array?Array.prototype.slice.call(e.hash):e.hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,re["util"].toJSONOptions)},e}(),e.ImageInfo=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.board=e.string();break;case 2:r.key=e.string();break;case 3:r.channel=e.string();break;case 4:r.version=e.string();break;case 5:r.buildChannel=e.string();break;case 6:r.buildVersion=e.string();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(ne["a"])(e)||null===e?"object expected":null!=e.board&&e.hasOwnProperty("board")&&!ie.isString(e.board)?"board: string expected":null!=e.key&&e.hasOwnProperty("key")&&!ie.isString(e.key)?"key: string expected":null!=e.channel&&e.hasOwnProperty("channel")&&!ie.isString(e.channel)?"channel: string expected":null!=e.version&&e.hasOwnProperty("version")&&!ie.isString(e.version)?"version: string expected":null!=e.buildChannel&&e.hasOwnProperty("buildChannel")&&!ie.isString(e.buildChannel)?"buildChannel: string expected":null!=e.buildVersion&&e.hasOwnProperty("buildVersion")&&!ie.isString(e.buildVersion)?"buildVersion: string expected":null},e.fromObject=function(e){if(e instanceof se.chromeos_update_engine.ImageInfo)return e;var t=new se.chromeos_update_engine.ImageInfo;return null!=e.board&&(t.board=String(e.board)),null!=e.key&&(t.key=String(e.key)),null!=e.channel&&(t.channel=String(e.channel)),null!=e.version&&(t.version=String(e.version)),null!=e.buildChannel&&(t.buildChannel=String(e.buildChannel)),null!=e.buildVersion&&(t.buildVersion=String(e.buildVersion)),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.board="",n.key="",n.channel="",n.version="",n.buildChannel="",n.buildVersion=""),null!=e.board&&e.hasOwnProperty("board")&&(n.board=e.board),null!=e.key&&e.hasOwnProperty("key")&&(n.key=e.key),null!=e.channel&&e.hasOwnProperty("channel")&&(n.channel=e.channel),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.buildChannel&&e.hasOwnProperty("buildChannel")&&(n.buildChannel=e.buildChannel),null!=e.buildVersion&&e.hasOwnProperty("buildVersion")&&(n.buildVersion=e.buildVersion),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,re["util"].toJSONOptions)},e}(),e.InstallOperation=function(){function e(e){if(this.srcExtents=[],this.dstExtents=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.dataOffset=e.uint64();break;case 3:r.dataLength=e.uint64();break;case 4:r.srcExtents&&r.srcExtents.length||(r.srcExtents=[]),r.srcExtents.push(se.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 5:r.srcLength=e.uint64();break;case 6:r.dstExtents&&r.dstExtents.length||(r.dstExtents=[]),r.dstExtents.push(se.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 7:r.dstLength=e.uint64();break;case 8:r.dataSha256Hash=e.bytes();break;case 9:r.srcSha256Hash=e.bytes();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("type"))throw ie.ProtocolError("missing required 'type'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ne["a"])(e)||null===e)return"object expected";switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 8:case 6:case 7:case 10:case 9:case 11:case 12:case 13:break}if(null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&!ie.isInteger(e.dataOffset)&&!(e.dataOffset&&ie.isInteger(e.dataOffset.low)&&ie.isInteger(e.dataOffset.high)))return"dataOffset: integer|Long expected";if(null!=e.dataLength&&e.hasOwnProperty("dataLength")&&!ie.isInteger(e.dataLength)&&!(e.dataLength&&ie.isInteger(e.dataLength.low)&&ie.isInteger(e.dataLength.high)))return"dataLength: integer|Long expected";if(null!=e.srcExtents&&e.hasOwnProperty("srcExtents")){if(!Array.isArray(e.srcExtents))return"srcExtents: array expected";for(var t=0;t>>0,e.dataOffset.high>>>0).toNumber(!0))),null!=e.dataLength&&(ie.Long?(t.dataLength=ie.Long.fromValue(e.dataLength)).unsigned=!0:"string"===typeof e.dataLength?t.dataLength=parseInt(e.dataLength,10):"number"===typeof e.dataLength?t.dataLength=e.dataLength:"object"===Object(ne["a"])(e.dataLength)&&(t.dataLength=new ie.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0))),e.srcExtents){if(!Array.isArray(e.srcExtents))throw TypeError(".chromeos_update_engine.InstallOperation.srcExtents: array expected");t.srcExtents=[];for(var n=0;n>>0,e.srcLength.high>>>0).toNumber(!0))),e.dstExtents){if(!Array.isArray(e.dstExtents))throw TypeError(".chromeos_update_engine.InstallOperation.dstExtents: array expected");t.dstExtents=[];for(var r=0;r>>0,e.dstLength.high>>>0).toNumber(!0))),null!=e.dataSha256Hash&&("string"===typeof e.dataSha256Hash?ie.base64.decode(e.dataSha256Hash,t.dataSha256Hash=ie.newBuffer(ie.base64.length(e.dataSha256Hash)),0):e.dataSha256Hash.length&&(t.dataSha256Hash=e.dataSha256Hash)),null!=e.srcSha256Hash&&("string"===typeof e.srcSha256Hash?ie.base64.decode(e.srcSha256Hash,t.srcSha256Hash=ie.newBuffer(ie.base64.length(e.srcSha256Hash)),0):e.srcSha256Hash.length&&(t.srcSha256Hash=e.srcSha256Hash)),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.srcExtents=[],n.dstExtents=[]),t.defaults){if(n.type=t.enums===String?"REPLACE":0,ie.Long){var r=new ie.Long(0,0,!0);n.dataOffset=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.dataOffset=t.longs===String?"0":0;if(ie.Long){var a=new ie.Long(0,0,!0);n.dataLength=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.dataLength=t.longs===String?"0":0;if(ie.Long){var o=new ie.Long(0,0,!0);n.srcLength=t.longs===String?o.toString():t.longs===Number?o.toNumber():o}else n.srcLength=t.longs===String?"0":0;if(ie.Long){var i=new ie.Long(0,0,!0);n.dstLength=t.longs===String?i.toString():t.longs===Number?i.toNumber():i}else n.dstLength=t.longs===String?"0":0;t.bytes===String?n.dataSha256Hash="":(n.dataSha256Hash=[],t.bytes!==Array&&(n.dataSha256Hash=ie.newBuffer(n.dataSha256Hash))),t.bytes===String?n.srcSha256Hash="":(n.srcSha256Hash=[],t.bytes!==Array&&(n.srcSha256Hash=ie.newBuffer(n.srcSha256Hash)))}if(null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?se.chromeos_update_engine.InstallOperation.Type[e.type]:e.type),null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&("number"===typeof e.dataOffset?n.dataOffset=t.longs===String?String(e.dataOffset):e.dataOffset:n.dataOffset=t.longs===String?ie.Long.prototype.toString.call(e.dataOffset):t.longs===Number?new ie.LongBits(e.dataOffset.low>>>0,e.dataOffset.high>>>0).toNumber(!0):e.dataOffset),null!=e.dataLength&&e.hasOwnProperty("dataLength")&&("number"===typeof e.dataLength?n.dataLength=t.longs===String?String(e.dataLength):e.dataLength:n.dataLength=t.longs===String?ie.Long.prototype.toString.call(e.dataLength):t.longs===Number?new ie.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0):e.dataLength),e.srcExtents&&e.srcExtents.length){n.srcExtents=[];for(var s=0;s>>0,e.srcLength.high>>>0).toNumber(!0):e.srcLength),e.dstExtents&&e.dstExtents.length){n.dstExtents=[];for(var l=0;l>>0,e.dstLength.high>>>0).toNumber(!0):e.dstLength),null!=e.dataSha256Hash&&e.hasOwnProperty("dataSha256Hash")&&(n.dataSha256Hash=t.bytes===String?ie.base64.encode(e.dataSha256Hash,0,e.dataSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.dataSha256Hash):e.dataSha256Hash),null!=e.srcSha256Hash&&e.hasOwnProperty("srcSha256Hash")&&(n.srcSha256Hash=t.bytes===String?ie.base64.encode(e.srcSha256Hash,0,e.srcSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.srcSha256Hash):e.srcSha256Hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,re["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="REPLACE"]=0,t[e[1]="REPLACE_BZ"]=1,t[e[2]="MOVE"]=2,t[e[3]="BSDIFF"]=3,t[e[4]="SOURCE_COPY"]=4,t[e[5]="SOURCE_BSDIFF"]=5,t[e[8]="REPLACE_XZ"]=8,t[e[6]="ZERO"]=6,t[e[7]="DISCARD"]=7,t[e[10]="BROTLI_BSDIFF"]=10,t[e[9]="PUFFDIFF"]=9,t[e[11]="ZUCCHINI"]=11,t[e[12]="LZ4DIFF_BSDIFF"]=12,t[e[13]="LZ4DIFF_PUFFDIFF"]=13,t}(),e}(),e.CowMergeOperation=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.srcExtent=se.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 3:r.dstExtent=se.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 4:r.srcOffset=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ne["a"])(e)||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:break}if(null!=e.srcExtent&&e.hasOwnProperty("srcExtent")){var t=se.chromeos_update_engine.Extent.verify(e.srcExtent);if(t)return"srcExtent."+t}if(null!=e.dstExtent&&e.hasOwnProperty("dstExtent")){var n=se.chromeos_update_engine.Extent.verify(e.dstExtent);if(n)return"dstExtent."+n}return null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&!ie.isInteger(e.srcOffset)?"srcOffset: integer expected":null},e.fromObject=function(e){if(e instanceof se.chromeos_update_engine.CowMergeOperation)return e;var t=new se.chromeos_update_engine.CowMergeOperation;switch(e.type){case"COW_COPY":case 0:t.type=0;break;case"COW_XOR":case 1:t.type=1;break;case"COW_REPLACE":case 2:t.type=2;break}if(null!=e.srcExtent){if("object"!==Object(ne["a"])(e.srcExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.srcExtent: object expected");t.srcExtent=se.chromeos_update_engine.Extent.fromObject(e.srcExtent)}if(null!=e.dstExtent){if("object"!==Object(ne["a"])(e.dstExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.dstExtent: object expected");t.dstExtent=se.chromeos_update_engine.Extent.fromObject(e.dstExtent)}return null!=e.srcOffset&&(t.srcOffset=e.srcOffset>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.type=t.enums===String?"COW_COPY":0,n.srcExtent=null,n.dstExtent=null,n.srcOffset=0),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?se.chromeos_update_engine.CowMergeOperation.Type[e.type]:e.type),null!=e.srcExtent&&e.hasOwnProperty("srcExtent")&&(n.srcExtent=se.chromeos_update_engine.Extent.toObject(e.srcExtent,t)),null!=e.dstExtent&&e.hasOwnProperty("dstExtent")&&(n.dstExtent=se.chromeos_update_engine.Extent.toObject(e.dstExtent,t)),null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&(n.srcOffset=e.srcOffset),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,re["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="COW_COPY"]=0,t[e[1]="COW_XOR"]=1,t[e[2]="COW_REPLACE"]=2,t}(),e}(),e.PartitionUpdate=function(){function e(e){if(this.newPartitionSignature=[],this.operations=[],this.mergeOperations=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.partitionName=e.string();break;case 2:r.runPostinstall=e.bool();break;case 3:r.postinstallPath=e.string();break;case 4:r.filesystemType=e.string();break;case 5:r.newPartitionSignature&&r.newPartitionSignature.length||(r.newPartitionSignature=[]),r.newPartitionSignature.push(se.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;case 6:r.oldPartitionInfo=se.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:r.newPartitionInfo=se.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:r.operations&&r.operations.length||(r.operations=[]),r.operations.push(se.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 9:r.postinstallOptional=e.bool();break;case 10:r.hashTreeDataExtent=se.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 11:r.hashTreeExtent=se.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 12:r.hashTreeAlgorithm=e.string();break;case 13:r.hashTreeSalt=e.bytes();break;case 14:r.fecDataExtent=se.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 15:r.fecExtent=se.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 16:r.fecRoots=e.uint32();break;case 17:r.version=e.string();break;case 18:r.mergeOperations&&r.mergeOperations.length||(r.mergeOperations=[]),r.mergeOperations.push(se.chromeos_update_engine.CowMergeOperation.decode(e,e.uint32()));break;case 19:r.estimateCowSize=e.uint64();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("partitionName"))throw ie.ProtocolError("missing required 'partitionName'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ne["a"])(e)||null===e)return"object expected";if(!ie.isString(e.partitionName))return"partitionName: string expected";if(null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&"boolean"!==typeof e.runPostinstall)return"runPostinstall: boolean expected";if(null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&!ie.isString(e.postinstallPath))return"postinstallPath: string expected";if(null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&!ie.isString(e.filesystemType))return"filesystemType: string expected";if(null!=e.newPartitionSignature&&e.hasOwnProperty("newPartitionSignature")){if(!Array.isArray(e.newPartitionSignature))return"newPartitionSignature: array expected";for(var t=0;t>>0),null!=e.version&&(t.version=String(e.version)),e.mergeOperations){if(!Array.isArray(e.mergeOperations))throw TypeError(".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected");t.mergeOperations=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.newPartitionSignature=[],n.operations=[],n.mergeOperations=[]),t.defaults)if(n.partitionName="",n.runPostinstall=!1,n.postinstallPath="",n.filesystemType="",n.oldPartitionInfo=null,n.newPartitionInfo=null,n.postinstallOptional=!1,n.hashTreeDataExtent=null,n.hashTreeExtent=null,n.hashTreeAlgorithm="",t.bytes===String?n.hashTreeSalt="":(n.hashTreeSalt=[],t.bytes!==Array&&(n.hashTreeSalt=ie.newBuffer(n.hashTreeSalt))),n.fecDataExtent=null,n.fecExtent=null,n.fecRoots=2,n.version="",ie.Long){var r=new ie.Long(0,0,!0);n.estimateCowSize=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.estimateCowSize=t.longs===String?"0":0;if(null!=e.partitionName&&e.hasOwnProperty("partitionName")&&(n.partitionName=e.partitionName),null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&(n.runPostinstall=e.runPostinstall),null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&(n.postinstallPath=e.postinstallPath),null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&(n.filesystemType=e.filesystemType),e.newPartitionSignature&&e.newPartitionSignature.length){n.newPartitionSignature=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0):e.estimateCowSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,re["util"].toJSONOptions)},e}(),e.DynamicPartitionGroup=function(){function e(e){if(this.partitionNames=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.name=e.string();break;case 2:r.size=e.uint64();break;case 3:r.partitionNames&&r.partitionNames.length||(r.partitionNames=[]),r.partitionNames.push(e.string());break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("name"))throw ie.ProtocolError("missing required 'name'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ne["a"])(e)||null===e)return"object expected";if(!ie.isString(e.name))return"name: string expected";if(null!=e.size&&e.hasOwnProperty("size")&&!ie.isInteger(e.size)&&!(e.size&&ie.isInteger(e.size.low)&&ie.isInteger(e.size.high)))return"size: integer|Long expected";if(null!=e.partitionNames&&e.hasOwnProperty("partitionNames")){if(!Array.isArray(e.partitionNames))return"partitionNames: array expected";for(var t=0;t>>0,e.size.high>>>0).toNumber(!0))),e.partitionNames){if(!Array.isArray(e.partitionNames))throw TypeError(".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected");t.partitionNames=[];for(var n=0;n>>0,e.size.high>>>0).toNumber(!0):e.size),e.partitionNames&&e.partitionNames.length){n.partitionNames=[];for(var a=0;a>>3){case 1:r.groups&&r.groups.length||(r.groups=[]),r.groups.push(se.chromeos_update_engine.DynamicPartitionGroup.decode(e,e.uint32()));break;case 2:r.snapshotEnabled=e.bool();break;case 3:r.vabcEnabled=e.bool();break;case 4:r.vabcCompressionParam=e.string();break;case 5:r.cowVersion=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ne["a"])(e)||null===e)return"object expected";if(null!=e.groups&&e.hasOwnProperty("groups")){if(!Array.isArray(e.groups))return"groups: array expected";for(var t=0;t>>0),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.groups=[]),t.defaults&&(n.snapshotEnabled=!1,n.vabcEnabled=!1,n.vabcCompressionParam="",n.cowVersion=0),e.groups&&e.groups.length){n.groups=[];for(var r=0;r>>3){case 1:r.packageName=e.string();break;case 2:r.version=e.int64();break;case 3:r.isCompressed=e.bool();break;case 4:r.decompressedSize=e.int64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(ne["a"])(e)||null===e?"object expected":null!=e.packageName&&e.hasOwnProperty("packageName")&&!ie.isString(e.packageName)?"packageName: string expected":null==e.version||!e.hasOwnProperty("version")||ie.isInteger(e.version)||e.version&&ie.isInteger(e.version.low)&&ie.isInteger(e.version.high)?null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&"boolean"!==typeof e.isCompressed?"isCompressed: boolean expected":null==e.decompressedSize||!e.hasOwnProperty("decompressedSize")||ie.isInteger(e.decompressedSize)||e.decompressedSize&&ie.isInteger(e.decompressedSize.low)&&ie.isInteger(e.decompressedSize.high)?null:"decompressedSize: integer|Long expected":"version: integer|Long expected"},e.fromObject=function(e){if(e instanceof se.chromeos_update_engine.ApexInfo)return e;var t=new se.chromeos_update_engine.ApexInfo;return null!=e.packageName&&(t.packageName=String(e.packageName)),null!=e.version&&(ie.Long?(t.version=ie.Long.fromValue(e.version)).unsigned=!1:"string"===typeof e.version?t.version=parseInt(e.version,10):"number"===typeof e.version?t.version=e.version:"object"===Object(ne["a"])(e.version)&&(t.version=new ie.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber())),null!=e.isCompressed&&(t.isCompressed=Boolean(e.isCompressed)),null!=e.decompressedSize&&(ie.Long?(t.decompressedSize=ie.Long.fromValue(e.decompressedSize)).unsigned=!1:"string"===typeof e.decompressedSize?t.decompressedSize=parseInt(e.decompressedSize,10):"number"===typeof e.decompressedSize?t.decompressedSize=e.decompressedSize:"object"===Object(ne["a"])(e.decompressedSize)&&(t.decompressedSize=new ie.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber())),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(n.packageName="",ie.Long){var r=new ie.Long(0,0,!1);n.version=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.version=t.longs===String?"0":0;if(n.isCompressed=!1,ie.Long){var a=new ie.Long(0,0,!1);n.decompressedSize=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.decompressedSize=t.longs===String?"0":0}return null!=e.packageName&&e.hasOwnProperty("packageName")&&(n.packageName=e.packageName),null!=e.version&&e.hasOwnProperty("version")&&("number"===typeof e.version?n.version=t.longs===String?String(e.version):e.version:n.version=t.longs===String?ie.Long.prototype.toString.call(e.version):t.longs===Number?new ie.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber():e.version),null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&(n.isCompressed=e.isCompressed),null!=e.decompressedSize&&e.hasOwnProperty("decompressedSize")&&("number"===typeof e.decompressedSize?n.decompressedSize=t.longs===String?String(e.decompressedSize):e.decompressedSize:n.decompressedSize=t.longs===String?ie.Long.prototype.toString.call(e.decompressedSize):t.longs===Number?new ie.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber():e.decompressedSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,re["util"].toJSONOptions)},e}(),e.ApexMetadata=function(){function e(e){if(this.apexInfo=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(se.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ne["a"])(e)||null===e)return"object expected";if(null!=e.apexInfo&&e.hasOwnProperty("apexInfo")){if(!Array.isArray(e.apexInfo))return"apexInfo: array expected";for(var t=0;t>>3){case 1:r.installOperations&&r.installOperations.length||(r.installOperations=[]),r.installOperations.push(se.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 2:r.kernelInstallOperations&&r.kernelInstallOperations.length||(r.kernelInstallOperations=[]),r.kernelInstallOperations.push(se.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 3:r.blockSize=e.uint32();break;case 4:r.signaturesOffset=e.uint64();break;case 5:r.signaturesSize=e.uint64();break;case 6:r.oldKernelInfo=se.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:r.newKernelInfo=se.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:r.oldRootfsInfo=se.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 9:r.newRootfsInfo=se.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 10:r.oldImageInfo=se.chromeos_update_engine.ImageInfo.decode(e,e.uint32());break;case 11:r.newImageInfo=se.chromeos_update_engine.ImageInfo.decode(e,e.uint32());break;case 12:r.minorVersion=e.uint32();break;case 13:r.partitions&&r.partitions.length||(r.partitions=[]),r.partitions.push(se.chromeos_update_engine.PartitionUpdate.decode(e,e.uint32()));break;case 14:r.maxTimestamp=e.int64();break;case 15:r.dynamicPartitionMetadata=se.chromeos_update_engine.DynamicPartitionMetadata.decode(e,e.uint32());break;case 16:r.partialUpdate=e.bool();break;case 17:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(se.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ae||(e=new ae(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(ne["a"])(e)||null===e)return"object expected";if(null!=e.installOperations&&e.hasOwnProperty("installOperations")){if(!Array.isArray(e.installOperations))return"installOperations: array expected";for(var t=0;t>>0),null!=e.signaturesOffset&&(ie.Long?(t.signaturesOffset=ie.Long.fromValue(e.signaturesOffset)).unsigned=!0:"string"===typeof e.signaturesOffset?t.signaturesOffset=parseInt(e.signaturesOffset,10):"number"===typeof e.signaturesOffset?t.signaturesOffset=e.signaturesOffset:"object"===Object(ne["a"])(e.signaturesOffset)&&(t.signaturesOffset=new ie.LongBits(e.signaturesOffset.low>>>0,e.signaturesOffset.high>>>0).toNumber(!0))),null!=e.signaturesSize&&(ie.Long?(t.signaturesSize=ie.Long.fromValue(e.signaturesSize)).unsigned=!0:"string"===typeof e.signaturesSize?t.signaturesSize=parseInt(e.signaturesSize,10):"number"===typeof e.signaturesSize?t.signaturesSize=e.signaturesSize:"object"===Object(ne["a"])(e.signaturesSize)&&(t.signaturesSize=new ie.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0))),null!=e.oldKernelInfo){if("object"!==Object(ne["a"])(e.oldKernelInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.oldKernelInfo: object expected");t.oldKernelInfo=se.chromeos_update_engine.PartitionInfo.fromObject(e.oldKernelInfo)}if(null!=e.newKernelInfo){if("object"!==Object(ne["a"])(e.newKernelInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.newKernelInfo: object expected");t.newKernelInfo=se.chromeos_update_engine.PartitionInfo.fromObject(e.newKernelInfo)}if(null!=e.oldRootfsInfo){if("object"!==Object(ne["a"])(e.oldRootfsInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.oldRootfsInfo: object expected");t.oldRootfsInfo=se.chromeos_update_engine.PartitionInfo.fromObject(e.oldRootfsInfo)}if(null!=e.newRootfsInfo){if("object"!==Object(ne["a"])(e.newRootfsInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.newRootfsInfo: object expected");t.newRootfsInfo=se.chromeos_update_engine.PartitionInfo.fromObject(e.newRootfsInfo)}if(null!=e.oldImageInfo){if("object"!==Object(ne["a"])(e.oldImageInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.oldImageInfo: object expected");t.oldImageInfo=se.chromeos_update_engine.ImageInfo.fromObject(e.oldImageInfo)}if(null!=e.newImageInfo){if("object"!==Object(ne["a"])(e.newImageInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.newImageInfo: object expected");t.newImageInfo=se.chromeos_update_engine.ImageInfo.fromObject(e.newImageInfo)}if(null!=e.minorVersion&&(t.minorVersion=e.minorVersion>>>0),e.partitions){if(!Array.isArray(e.partitions))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected");t.partitions=[];for(var a=0;a>>0,e.maxTimestamp.high>>>0).toNumber())),null!=e.dynamicPartitionMetadata){if("object"!==Object(ne["a"])(e.dynamicPartitionMetadata))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected");t.dynamicPartitionMetadata=se.chromeos_update_engine.DynamicPartitionMetadata.fromObject(e.dynamicPartitionMetadata)}if(null!=e.partialUpdate&&(t.partialUpdate=Boolean(e.partialUpdate)),e.apexInfo){if(!Array.isArray(e.apexInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected");t.apexInfo=[];for(var o=0;o>>0,e.signaturesOffset.high>>>0).toNumber(!0):e.signaturesOffset),null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&("number"===typeof e.signaturesSize?n.signaturesSize=t.longs===String?String(e.signaturesSize):e.signaturesSize:n.signaturesSize=t.longs===String?ie.Long.prototype.toString.call(e.signaturesSize):t.longs===Number?new ie.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0):e.signaturesSize),null!=e.oldKernelInfo&&e.hasOwnProperty("oldKernelInfo")&&(n.oldKernelInfo=se.chromeos_update_engine.PartitionInfo.toObject(e.oldKernelInfo,t)),null!=e.newKernelInfo&&e.hasOwnProperty("newKernelInfo")&&(n.newKernelInfo=se.chromeos_update_engine.PartitionInfo.toObject(e.newKernelInfo,t)),null!=e.oldRootfsInfo&&e.hasOwnProperty("oldRootfsInfo")&&(n.oldRootfsInfo=se.chromeos_update_engine.PartitionInfo.toObject(e.oldRootfsInfo,t)),null!=e.newRootfsInfo&&e.hasOwnProperty("newRootfsInfo")&&(n.newRootfsInfo=se.chromeos_update_engine.PartitionInfo.toObject(e.newRootfsInfo,t)),null!=e.oldImageInfo&&e.hasOwnProperty("oldImageInfo")&&(n.oldImageInfo=se.chromeos_update_engine.ImageInfo.toObject(e.oldImageInfo,t)),null!=e.newImageInfo&&e.hasOwnProperty("newImageInfo")&&(n.newImageInfo=se.chromeos_update_engine.ImageInfo.toObject(e.newImageInfo,t)),null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&(n.minorVersion=e.minorVersion),e.partitions&&e.partitions.length){n.partitions=[];for(var l=0;l>>0,e.maxTimestamp.high>>>0).toNumber():e.maxTimestamp),null!=e.dynamicPartitionMetadata&&e.hasOwnProperty("dynamicPartitionMetadata")&&(n.dynamicPartitionMetadata=se.chromeos_update_engine.DynamicPartitionMetadata.toObject(e.dynamicPartitionMetadata,t)),null!=e.partialUpdate&&e.hasOwnProperty("partialUpdate")&&(n.partialUpdate=e.partialUpdate),e.apexInfo&&e.apexInfo.length){n.apexInfo=[];for(var c=0;c0&&void 0!==arguments[0]?arguments[0]:"";return Object(de["a"])(this,n),e=t.call(this),e.offset=0,e.contentType=r,e.blob=new Blob([],{type:r}),e.prefixLength=0,e}return Object(fe["a"])(n,[{key:"readHeader",value:function(){var e=Object(h["a"])(regeneratorRuntime.mark((function e(t){var n,r,a,o,i,s,l,c,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return n=0,r=function(e){var r=Ee(t,n,e);return n+=e,r},e.next=4,t.slice(0,ke).arrayBuffer();case 4:if(a=e.sent,o=new TextDecoder,i=a.slice(0,je.length),s=o.decode(i),s==je){e.next=10;break}throw new Error("MAGIC is not correct, expected: ".concat(je," actual: ").concat(s));case 10:return n+=je.length,e.next=13,r(we);case 13:return l=e.sent,e.next=16,r(ve);case 16:if(c=e.sent,l==Ie){e.next=19;break}throw new Error("Unexpected major version number: ".concat(l));case 19:return e.next=21,r(xe);case 21:u=e.sent,this.header=new Pe(s,l,c,u);case 23:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"writeUint8Array",value:function(){var e=Object(h["a"])(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(Object(ue["a"])(Object(pe["a"])(n.prototype),"writeUint8Array",this).call(this,t),this.blob=new Blob([this.blob,t.buffer],{type:this.contentType}),this.offset=this.blob.size,!(this.offset>=ke&&0==this.prefixLength)){e.next=9;break}return console.log("Parsing header!"),e.next=7,this.readHeader(this.blob);case 7:this.prefixLength=ke+this.header.manifest_len+this.header.metadata_signature_len,console.log("Computed metadata length: ".concat(this.prefixLength));case 9:if(!(this.prefixLength>0)){e.next=14;break}if(console.log("".concat(this.offset,"/").concat(this.prefixLength)),!(this.offset>=this.prefixLength)){e.next=14;break}throw this.blob=this.blob.slice(0,this.prefixLength),new _e;case 14:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getData",value:function(){return this.blob}}]),n}(me["Writer"]),Ae=function(){function e(t){Object(de["a"])(this,e),t instanceof File?this.zipreader=new me["ZipReader"](new me["BlobReader"](t)):t instanceof URL?this.zipreader=new me["ZipReader"](new me["HttpReader"](t.href)):this.zipreader=t.reader}return Object(fe["a"])(e,[{key:"getMetadataLength",value:function(){return ke+this.header.manifest_len+this.header.metadata_signature_len}},{key:"unzip",value:function(){var e=Object(h["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a,o,i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.zipreader.getEntries();case 2:t=e.sent,n=Object(ce["a"])(t),e.prev=4,n.s();case 6:if((r=n.n()).done){e.next=35;break}if(a=r.value,"payload.bin"!=a.filename){e.next=28;break}return o=new ze(""),e.prev=10,e.next=13,a.getData(o);case 13:e.next=22;break;case 15:if(e.prev=15,e.t0=e["catch"](10),!(e.t0 instanceof _e)){e.next=20;break}e.next=22;break;case 20:throw console.log(e.t0),e.t0;case 22:return this.buffer=o.getData(),e.next=25,this.readManifest(this.buffer,o.header);case 25:console.log("AB OTA manifest parsed"),e.next=33;break;case 28:if("META-INF/com/android/metadata"!=a.filename){e.next=33;break}return e.next=31,a.getData(new me["TextWriter"]);case 31:this.metadata=e.sent,console.log("OTA Package metadata parsed");case 33:e.next=6;break;case 35:e.next=40;break;case 37:e.prev=37,e.t1=e["catch"](4),n.e(e.t1);case 40:return e.prev=40,n.f(),e.finish(40);case 43:if(this.manifest){e.next=57;break}return console.log("Failed to parse AB OTA package, falling back to non-AB"),e.prev=45,i=new Oe(this.zipreader),e.next=49,i.init();case 49:i.nonAB=!0,this.manifest=i,e.next=57;break;case 53:return e.prev=53,e.t2=e["catch"](45),alert("Please select a legit OTA package"),e.abrupt("return");case 57:case"end":return e.stop()}}),e,this,[[4,37,40,43],[10,15],[45,53]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"readManifest",value:function(){var e=Object(h["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,o;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.header=n,r=ke,e.next=4,t.slice(r,r+n.manifest_len).arrayBuffer();case 4:return a=e.sent,r+=n.manifest_len,this.manifest=le.DeltaArchiveManifest.decode(new Uint8Array(a)),e.next=9,t.slice(r,r+n.metadata_signature_len).arrayBuffer();case 9:o=e.sent,r+=n.metadata_signature_len,this.metadata_signature=le.Signatures.decode(new Uint8Array(o)),this.manifest.nonAB=!1;case 13:case"end":return e.stop()}}),e,this)})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"parseMetadata",value:function(){var e,t=Object(ce["a"])(Se);try{for(t.s();!(e=t.n()).done;){var n=e.value,r=new RegExp(n.prefix+".+");this.metadata.match(r)?this[n.key]=De(this.metadata.match(r)[0],n.prefix):this[n.key]=""}}catch(a){t.e(a)}finally{t.f()}}},{key:"init",value:function(){var e=Object(h["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.unzip();case 2:this.parseMetadata();case 3:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}]),e}(),Te=function(e){Object(he["a"])(n,e);var t=Object(ge["a"])(n);function n(){return Object(de["a"])(this,n),t.apply(this,arguments)}return Object(fe["a"])(n,[{key:"getWithDefault",value:function(e){return this.has(e)?this.get(e):e}}]),n}(Object(be["a"])(Map)),Be=Object(fe["a"])((function e(){Object(de["a"])(this,e);var t=le.InstallOperation.Type;this.mapType=new Te;for(var n=0,r=Object.keys(t);n1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:16,r="",a=0;a3&&void 0!==arguments[3]?arguments[3]:15;Object(de["a"])(this,e),this.statisticData=t,this.trimmedData=Ye(t,a),this.title=n,this.unit=r,this.maximumEntries=a}return Object(fe["a"])(e,[{key:"listData",value:function(){var e,t="",n=Object(ce["a"])(this.statisticData);try{for(n.s();!(e=n.n()).done;){var r=Object(Ge["a"])(e.value,2),a=r[0],o=r[1];t+=a+" : "+o.toString()+" Blocks\n"}}catch(i){n.e(i)}finally{n.f()}return t}},{key:"getEchartsOption",value:function(){var e={};return e.title={text:this.title,left:"center"},e.tooltip={trigger:"item",formatter:"{a}
{b} : {c} "+this.unit+" ({d}%)"},e.legend={orient:"horizontal",left:"top",top:"10%",data:Array.from(this.trimmedData.keys())},e.series=[{name:this.title,type:"pie",radius:"55%",center:["50%","60%"],data:Array.from(this.trimmedData).map((function(e){return{value:e[1],name:e[0]}})),emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],e}}]),e}();function Ye(e,t){if(e.size<=t)return e;for(var n=new Map,r=0;ro&&(o=u,i=c)}}catch(m){s.e(m)}finally{s.f()}n.set(i,o)}var p,f=0,d=Object(ce["a"])(e);try{for(d.s();!(p=d.n()).done;){var h=Object(Ge["a"])(p.value,2),g=h[0],b=h[1];n.get(g)||(f+=b)}}catch(m){d.e(m)}finally{d.f()}return n.set("other",f),n}var Qe=function(){function e(t){Object(de["a"])(this,e),t instanceof File?this.build=new me["ZipReader"](new me["BlobReader"](t)):this.build=new me["ZipReader"](new me["HttpReader"](t.href)),this.mapFiles=new Map,this.maps=new Map}return Object(fe["a"])(e,[{key:"init",value:function(){var e=Object(h["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a=this;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.build.getEntries();case 2:t=e.sent,n=/IMAGES\/[a-z_]*\.map/g,r=/[\w_]+(?=\.map)/g,t.forEach((function(e){e.filename.match(n)&&a.mapFiles.set(e.filename.match(r)[0],e)}));case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"add",value:function(){var e=Object(h["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,o,i,s,l,c,u,p,f,d,h,g;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:for(r=[],a=/\d+/g,o=/\d+\-\d+/g,i=0;i");if(!this.mapFiles.get(t)){e.next=14;break}return e.next=7,this.mapFiles.get(t).getData(new me["TextWriter"]);case 7:s=e.sent,l=s.split("\n"),c=Object(ce["a"])(l);try{for(c.s();!(u=c.n()).done;)for(p=u.value,f=p.split(" "),d=1;d2&&void 0!==s[2]?s[2]:4096,a=s.length>3&&void 0!==s[3]?s[3]:null,e.t0=t,e.next="blocks"===e.t0?5:"payload"===e.t0?8:"COWmerge"===e.t0?11:"filenames"===e.t0?14:"extensions"===e.t0?21:28;break;case 5:return o=rt(n),i=new $e(o,"Operated blocks in target build","blocks"),e.abrupt("break",28);case 8:return o=ot(n),i=new $e(o,"Payload disk usage","bytes"),e.abrupt("break",28);case 11:return o=at(n,r),i=new $e(o,"COW merge operations","blocks"),e.abrupt("break",28);case 14:if(null!=a){e.next=16;break}throw new Error("Target file is required for filenames analysis");case 16:return e.next=18,lt(n,r,a);case 18:return o=e.sent,i=new $e(o,"Size of operated filenames","bytes"),e.abrupt("break",28);case 21:if(null!=a){e.next=23;break}throw new Error("Target file is required for filenames analysis");case 23:return e.next=25,it(n,r,a);case 25:return o=e.sent,i=new $e(o,"Size of operated extensions","bytes"),e.abrupt("break",28);case 28:if(!i){e.next=32;break}return e.abrupt("return",i);case 32:throw"Please double check if this is a proper AB OTA package.";case 33:case"end":return e.stop()}}),e)}))),pt.apply(this,arguments)}function ft(e){if(!e)return 0;var t=function(e,t){return e+t.numBlocks};return e.reduce(t,0)}function dt(e){var t=function(e,t){return e+"("+t.startBlock+","+t.numBlocks+")"};return e.reduce(t,"")}function ht(e,t,n){for(var r=ft(t),a=new Map,o=0;o1?t[t.length-1]:"unknown"===t[0]?"unknown":"<"==e[0]&&e.endsWith(">")?e:"no-extension"}var bt=Object(r["m"])({props:{operation:{type:Object,required:!0},mapType:{type:Te,required:!0}},data:function(){return{srcTotalBlocks:0,srcBlocks:"",dstTotalBlocks:0,dstBlocks:""}},mounted:function(){this.operation.srcExtents&&(this.srcTotalBlocks=ft(this.operation.srcExtents),this.srcBlocks=dt(this.operation.srcExtents)),this.operation.dstExtents&&(this.dstTotalBlocks=ft(this.operation.dstExtents),this.dstBlocks=dt(this.operation.dstExtents))}});n("8edb");bt.render=qe,bt.__scopeId="data-v-44174082";var mt=bt,Ot=Object(r["m"])({components:{OperationDetail:mt},props:{partition:{type:le.PartitionUpdate,required:!0},dynamicPartitionList:{type:Array,required:!0}},data:function(){return{showOPs:!1,showInfo:!1,opType:new Be}},methods:{toggle:function(e){this[e]=!this[e]},octToHex:Ce},computed:{readableTimestamp:function(){var e=parseInt(this.partition.version);return isNaN(e)?"":new Date(1e3*e).toString()},isDynamicPartition:function(){return this.dynamicPartitionList.indexOf(this.partition.partitionName)>=0}}});n("edc2");Ot.render=te,Ot.__scopeId="data-v-6dba348a";var yt=Ot,jt=(n("498a"),Object(r["Z"])("data-v-0514c264"));Object(r["D"])("data-v-0514c264");var wt=Object(r["l"])("h3",null,"Basic infos",-1),vt={class:"align"},xt=Object(r["l"])("strong",null," File name ",-1),kt=Object(r["l"])("strong",null," File size ",-1),It={class:"align"},St={class:"wrap"},_t={key:2},Pt={class:"align"},Et=Object(r["l"])("strong",null," Incremental ",-1),Lt={key:0},zt={key:1},At=Object(r["l"])("strong",null," Partial ",-1),Tt={key:0},Bt={key:1},Nt=Object(r["l"])("strong",null," A/B update ",-1),Ct={key:0},Dt={key:1},Rt=Object(r["l"])("strong",null," VAB ",-1),Mt={key:0},Ft={key:1},Vt=Object(r["l"])("strong",null," VABC ",-1),Ut={key:0},Ht={key:1},Kt={key:0},Wt=Object(r["l"])("strong",null," Total Dynamic Partition Size ",-1),Jt={key:1},Zt=Object(r["l"])("strong",null," Total VABC COW Size ",-1);Object(r["B"])();var Xt=jt((function(e,t,n,a,o,i){return Object(r["A"])(),Object(r["i"])(r["a"],null,[wt,e.zipFile?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:0},e.$attrs),[Object(r["l"])("ul",vt,[Object(r["l"])("li",null,[xt,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileName()),1)]),Object(r["l"])("li",null,[kt,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileSize())+" Bytes",1)])])],16)):Object(r["j"])("",!0),e.payload&&e.payload.metadata?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:1},e.$attrs),[Object(r["l"])("ul",It,[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.otaMetadata,(function(t){return Object(r["A"])(),Object(r["i"])("li",{key:t.name},[Object(r["l"])("strong",null,Object(r["N"])(t.name.trim()+" "),1),Object(r["l"])("p",St,Object(r["N"])(String(e.payload[t.key]).trim()),1)])})),128))])],16)):Object(r["j"])("",!0),e.payload&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])("div",_t,[Object(r["l"])("ul",Pt,[Object(r["l"])("li",null,[Et,e.payload.preBuild?(Object(r["A"])(),Object(r["i"])("span",Lt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",zt," ❌ "))]),Object(r["l"])("li",null,[At,e.payload.manifest.partialUpdate?(Object(r["A"])(),Object(r["i"])("span",Tt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Bt," ❌ "))]),Object(r["l"])("li",null,[Nt,e.payload.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",Dt," ❌ ")):(Object(r["A"])(),Object(r["i"])("span",Ct," ✅ "))]),Object(r["l"])("li",null,[Rt,e.payload.manifest.dynamicPartitionMetadata.snapshotEnabled?(Object(r["A"])(),Object(r["i"])("span",Mt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Ft," ❌ "))]),Object(r["l"])("li",null,[Vt,e.payload.manifest.dynamicPartitionMetadata.vabcEnabled?(Object(r["A"])(),Object(r["i"])("span",Ut," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Ht," ❌ "))]),e.totalDynamicPartitionSize?(Object(r["A"])(),Object(r["i"])("li",Kt,[Wt,Object(r["k"])(" "+Object(r["N"])(e.totalDynamicPartitionSize),1)])):Object(r["j"])("",!0),e.totalCOWSize?(Object(r["A"])(),Object(r["i"])("li",Jt,[Zt,Object(r["k"])(" "+Object(r["N"])(e.totalCOWSize),1)])):Object(r["j"])("",!0)])])):Object(r["j"])("",!0)],64)})),qt=(n("4de4"),n("6062"),n("2ca0"),function(){function e(t){Object(de["a"])(this,e),this.file=t,this.reader=Yt(t)}return Object(fe["a"])(e,[{key:"getFileName",value:function(){return Qt(this.file)}},{key:"getFileSize",value:function(){return this.file instanceof File?this.file.size:0}}]),e}());function Gt(e,t){return $t.apply(this,arguments)}function $t(){return $t=Object(h["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,o,i,s,l,c,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return r=t,a=new me["ZipWriter"](new me["BlobWriter"]("application/zip")),e.next=4,r.getEntries();case 4:o=e.sent,i=Object(ce["a"])(o.filter((function(e){return!!e&&n(e)}))),e.prev=6,i.s();case 8:if((s=i.n()).done){e.next=18;break}return l=s.value,c=new me["BlobWriter"],e.next=13,l.getData(c);case 13:u=e.sent,console.log("Adding ".concat(l.filename,", ").concat(u.size)),a.add(l.filename,new me["BlobReader"](c.getData()),{level:0});case 16:e.next=8;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e["catch"](6),i.e(e.t0);case 23:return e.prev=23,i.f(),e.finish(23);case 26:return e.abrupt("return",a);case 27:case"end":return e.stop()}}),e,null,[[6,20,23,26]])}))),$t.apply(this,arguments)}function Yt(e){return e instanceof File?new me["ZipReader"](new me["BlobReader"](e)):new me["ZipReader"](new me["HttpReader"](e.href))}function Qt(e){return e instanceof File?e.name:e.pathname}function en(e){return tn.apply(this,arguments)}function tn(){return tn=Object(h["a"])(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Gt(Yt(t),(function(e){return e.filename.startsWith("META/")||e.filename.endsWith(".map")}));case 2:return n=e.sent,e.next=5,n.close();case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)}))),tn.apply(this,arguments)}function nn(e){return rn.apply(this,arguments)}function rn(){return rn=Object(h["a"])(regeneratorRuntime.mark((function e(t){var n,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Gt(t.zipreader,(function(e){return"payload.bin"!=e.filename}));case 2:return n=e.sent,e.next=5,n.add("payload.bin",new me["BlobReader"](t.buffer.slice(0,t.getMetadataLength())),{level:0});case 5:return e.next=7,n.close();case 7:return r=e.sent,e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)}))),rn.apply(this,arguments)}function an(e,t,n){var r=window.URL.createObjectURL(e);t.href=r,t.download=n,t.click(),window.URL.revokeObjectURL(r)}function on(e,t){return e.endsWith(t)?e:e+t}var sn=Object(r["m"])({props:{zipFile:{type:qt,required:!0},payload:{type:Ae,required:!0}},data:function(){return{MetadataFormat:Se}},computed:{otaMetadata:function(){var e=this;return Se.filter((function(t){return String(e.payload[t.key]).length>0}))},totalCOWSize:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.partitions.map((function(e){return e.estimateCowSize||0}));return n?n.reduce((function(e,t){return e+t})):0},totalDynamicPartitionSize:function(){var e,t,n,r,a=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.groups;if(!a)return 0;var o=new Set(a.flatMap((function(e){return e.partitionNames}))),i=(null===(r=this.payload.manifest)||void 0===r?void 0:r.partitions.filter((function(e){return o.has(e.partitionName)})))||[];return i.length<=0?0:i.map((function(e){var t;return(null===(t=e.newPartitionInfo)||void 0===t?void 0:t.size)||0})).reduce((function(e,t){return e+t}))}}});n("afa7");sn.render=Xt,sn.__scopeId="data-v-0514c264";var ln=sn,cn=Object(r["m"])({components:{PartitionDetail:yt,BasicInfo:ln},props:{zipFile:{type:qt,default:null},payload:{type:Ae,default:null}},methods:{octToHex:Ce,exportOTAPackage:function(){var e=this;return Object(h["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,nn(e.payload);case 2:n=t.sent,r=e.$refs["download"],an(n,r,"trimmed_"+on(e.zipFile.getFileName(),".zip"));case 5:case"end":return t.stop()}}),t)})))()}},computed:{dynamicPartitions:function(){var e,t,n;return(null===(e=this.payload.manifest)||void 0===e||null===(t=e.dynamicPartitionMetadata)||void 0===t||null===(n=t.groups)||void 0===n?void 0:n.flatMap((function(e){return e.partitionNames||[]})))||[]}}});n("dc41");cn.render=z,cn.__scopeId="data-v-05db67f2";var un=cn,pn=Object(r["Z"])("data-v-44b569bd");Object(r["D"])("data-v-44b569bd");var fn=Object(r["k"])("Export Target File Metadata"),dn={ref:"download"},hn={key:1},gn=Object(r["k"])(" Analyse Installed Blocks (in target build) "),bn=Object(r["k"])(" Analyse Payload Composition "),mn=Object(r["k"])(" Analyse COW Merge Operations "),On={key:0,class:"tooltiptext"},yn=Object(r["k"])(" Analyse Filenames "),jn=Object(r["k"])(" Analyse File Extensions ");Object(r["B"])();var wn=pn((function(e,t,n,a,o,i){var s=Object(r["I"])("v-btn"),l=Object(r["I"])("PartialCheckbox"),c=Object(r["I"])("PieChart"),u=Object(r["I"])("v-divider"),p=Object(r["I"])("v-col"),f=Object(r["I"])("v-row"),d=Object(r["I"])("BaseFile");return Object(r["A"])(),Object(r["i"])(r["a"],null,[e.targetFile?(Object(r["A"])(),Object(r["i"])(s,{key:0,block:"",class:"md-6",onClick:e.exportTargetFileMetadata},{default:pn((function(){return[fn]})),_:1},8,["onClick"])):Object(r["j"])("",!0),Object(r["l"])("a",dn,null,512),Object(r["l"])(l,{modelValue:e.partitionInclude,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.partitionInclude=t}),labels:e.updatePartitions},null,8,["modelValue","labels"]),e.echartsData?(Object(r["A"])(),Object(r["i"])("div",hn,[Object(r["l"])(c,{echartsData:e.echartsData,onClick:e.piechartClick},null,8,["echartsData","onClick"])])):Object(r["j"])("",!0),Object(r["l"])(u),Object(r["l"])(f,null,{default:pn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"},{default:pn((function(){return[Object(r["l"])(s,{block:"",onClick:t[2]||(t[2]=function(t){return e.updateChart("blocks")})},{default:pn((function(){return[gn]})),_:1})]})),_:1}),Object(r["l"])(p,{cols:"12",md:"6"},{default:pn((function(){return[Object(r["l"])(s,{block:"",onClick:t[3]||(t[3]=function(t){return e.updateChart("payload")})},{default:pn((function(){return[bn]})),_:1})]})),_:1})]})),_:1}),Object(r["l"])(f,null,{default:pn((function(){return[Object(r["l"])(p,{cols:"12",md:"6",class:"tooltip"},{default:pn((function(){return[Object(r["l"])(s,{disabled:e.manifest.nonAB||!e.manifest.dynamicPartitionMetadata.vabcEnabled,title:"Only available for VABC update",block:"",onClick:t[4]||(t[4]=function(t){return e.updateChart("COWmerge")})},{default:pn((function(){return[mn]})),_:1},8,["disabled"]),e.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",On," This function is only supported in A/B OTA ")):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(p,{cols:"12",md:"6"},{default:pn((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[5]||(t[5]=function(t){return e.updateChart("filenames")})},{default:pn((function(){return[yn]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),Object(r["l"])(f,null,{default:pn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"},{default:pn((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[6]||(t[6]=function(t){return e.updateChart("extensions")})},{default:pn((function(){return[jn]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),Object(r["l"])(f,null,{default:pn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"}),Object(r["l"])(p,{cols:"12",md:"6"},{default:pn((function(){return[e.demo?Object(r["j"])("",!0):(Object(r["A"])(),Object(r["i"])(d,{key:0,label:"Drag and drop or Select The target Android build",onFileSelect:e.selectBuild},null,8,["onFileSelect"]))]})),_:1})]})),_:1})],64)})),vn=n("bc3a"),xn=n.n(vn),kn=Object(r["Z"])("data-v-533f2336");Object(r["D"])("data-v-533f2336");var In={key:0};Object(r["B"])();var Sn=kn((function(e,t,n,a,o,i){var s=Object(r["I"])("v-btn"),l=Object(r["I"])("v-col"),c=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(r["a"],null,[Object(r["l"])(s,{block:"",type:"button",class:"my-5",onClick:e.revertAllSelection},{default:kn((function(){return[Object(r["k"])(Object(r["N"])(e.selectAllText[e.selectAll]),1)]})),_:1},8,["onClick"]),Object(r["l"])(c,{class:"mb-5"},{default:kn((function(){return[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.labels,(function(n){return Object(r["A"])(),Object(r["i"])(l,{key:n,cols:"12",md:"4"},{default:kn((function(){return[Object(r["l"])("input",{type:"checkbox",value:n,checked:e.modelValue.get(n),onChange:t[1]||(t[1]=function(t){return e.updateSelected(t.target.value)})},null,40,["value","checked"]),n?(Object(r["A"])(),Object(r["i"])("label",In,Object(r["N"])(n),1)):Object(r["j"])("",!0)]})),_:2},1024)})),128))]})),_:1})],64)})),_n=Object(r["m"])({props:{labels:{type:Array,default:new Array},modelValue:{type:Map,default:new Map}},data:function(){return{selectAll:1,selectAllText:["Select All","Unselect All"]}},mounted:function(){var e,t=Object(ce["a"])(this.labels);try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,!0)}}catch(r){t.e(r)}finally{t.f()}},methods:{updateSelected:function(e){this.modelValue.set(e,!this.modelValue.get(e)),this.$emit("update:modelValue",this.modelValue)},revertAllSelection:function(){this.selectAll=1-this.selectAll;var e,t=Object(ce["a"])(this.modelValue.keys());try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,Boolean(this.selectAll))}}catch(r){t.e(r)}finally{t.f()}}}});n("a75a");_n.render=Sn,_n.__scopeId="data-v-533f2336";var Pn=_n,En=n("2909"),Ln="undefined"===typeof arguments?void 0:arguments,zn=Object(r["Z"])("data-v-5d1cb486"),An=zn((function(e,t,n,a,o,i){var s=Object(r["I"])("v-chart");return Object(r["A"])(),Object(r["i"])(s,{class:"chart",option:i.getEchartsOption,onClick:t[1]||(t[1]=function(t){return e.$emit.apply(e,["click"].concat(Object(En["a"])(Ln)))})},null,8,["option"])})),Tn=n("ade3"),Bn=n("22b4"),Nn=n("f95e"),Cn=n("49bb"),Dn=n("9394"),Rn=n("2da7"),Mn=n("ff32"),Fn=n("5c7f");Object(Bn["a"])([Nn["a"],Cn["a"],Dn["a"],Rn["a"],Mn["a"]]);var Vn={components:{VChart:Fn["b"]},provide:Object(Tn["a"])({},Fn["a"],"dark"),props:{echartsData:{type:$e,required:!0}},computed:{getEchartsOption:function(){return this.echartsData.getEchartsOption()}}};n("47e0");Vn.render=An,Vn.__scopeId="data-v-5d1cb486";var Un=Vn,Hn=Object(r["m"])({components:{PartialCheckbox:Pn,PieChart:Un,BaseFile:v},props:{manifest:{type:le.DeltaArchiveManifest,default:function(){return[]}},demo:{type:Boolean,default:!1}},data:function(){return{partitionInclude:new Map,echartsData:null,listData:"",targetFile:null}},computed:{updatePartitions:function(){return this.manifest.partitions.map((function(e){return e.partitionName}))}},mounted:function(){var e=this;return Object(h["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(!e.demo){t.next=11;break}return t.prev=1,t.next=4,xn.a.get("./files/cf_x86_target_file_demo.zip",{responseType:"blob"});case 4:n=t.sent,e.targetFile=new File([n.data],"target_demo.zip"),t.next=11;break;case 8:t.prev=8,t.t0=t["catch"](1),console.log("Please put a proper example target file in /public/files/");case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))()},methods:{piechartClick:function(e){console.log(e)},updateChart:function(e){var t=this;return Object(h["a"])(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return r=t.manifest.partitions.filter((function(e){return t.partitionInclude.get(e.partitionName)})),n.prev=1,n.next=4,ut(e,r,t.manifest.blockSize,t.targetFile);case 4:t.echartsData=n.sent,n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Cannot be processed for the following issue: ".concat(n.t0));case 10:case"end":return n.stop()}}),n,null,[[1,7]])})))()},selectBuild:function(e){this.targetFile=e},exportTargetFileMetadata:function(){var e=this;return Object(h["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,en(e.targetFile);case 2:n=t.sent,r=e.$refs["download"],an(n,r,"trimmed_"+on(Qt(e.targetFile),".zip"));case 5:case"end":return t.stop()}}),t)})))()}}});n("4b95");Hn.render=wn,Hn.__scopeId="data-v-44b569bd";var Kn=Hn,Wn=Object(r["m"])({components:{BaseFile:v,PayloadDetail:un,PayloadComposition:Kn},data:function(){return{zipFile:null,payload:null}},methods:{unpackOTA:function(e){var t=this;return Object(h["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return t.zipFile=new qt(e),n.prev=1,t.payload=new Ae(t.zipFile),n.next=5,t.payload.init();case 5:n.next=11;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Please check if this is a correct OTA package (.zip). ".concat(n.t0)),console.log(n.t0);case 11:case"end":return n.stop()}}),n,null,[[1,7]])})))()}}});Wn.render=d;var Jn=Wn;function Zn(e,t,n,a,o,i){var s=Object(r["I"])("PayloadDetail"),l=Object(r["I"])("v-col"),c=Object(r["I"])("v-divider"),u=Object(r["I"])("PayloadComposition"),p=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(p,null,{default:Object(r["X"])((function(){return[Object(r["l"])(l,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload?(Object(r["A"])(),Object(r["i"])(s,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(c,{vertical:""}),Object(r["l"])(l,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])(u,{key:0,manifest:e.payload.manifest,demo:!0},null,8,["manifest"])):Object(r["j"])("",!0)]})),_:1})]})),_:1})}var Xn=Object(r["m"])({components:{PayloadDetail:un,PayloadComposition:Kn},data:function(){return{zipFile:null,payload:null}},created:function(){var e=this;return Object(h["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,xn.a.get("./files/cf_x86_demo.zip",{responseType:"blob"});case 3:return n=t.sent,e.zipFile=new qt(new File([n.data],"ota_demo.zip")),e.payload=new Ae(e.zipFile),t.next=8,e.payload.init();case 8:t.next=13;break;case 10:t.prev=10,t.t0=t["catch"](0),console.log("Please put a proper example OTA in /public/files/");case 13:case"end":return t.stop()}}),t,null,[[0,10]])})))()}});Xn.render=Zn;var qn=Xn,Gn={class:"about"},$n=Object(r["l"])("p",null,"A web based tool to inspect Android OTA packages.",-1);function Yn(e,t){return Object(r["A"])(),Object(r["i"])("div",Gn,[$n])}const Qn={};Qn.render=Yn;var er=Qn,tr=Object(r["Z"])("data-v-50c6f348");Object(r["D"])("data-v-50c6f348");var nr=Object(r["l"])("h1",null,"Not Found!",-1),rr=Object(r["l"])("p",null,[Object(r["l"])("a",{href:"/"},"Go home?")],-1);Object(r["B"])();var ar=tr((function(e,t){var n=Object(r["I"])("center");return Object(r["A"])(),Object(r["i"])(n,null,{default:tr((function(){return[nr,rr]})),_:1})}));n("8e71");const or={};or.render=ar,or.__scopeId="data-v-50c6f348";var ir=or,sr=[{path:"/",name:"Analysis",component:Jn,meta:{title:"Analyse OTA package - from AOSP"}},{path:"/demo",name:"Demo",component:qn},{path:"/about",name:"About",component:er},{path:"/:catchAll(.*)",name:"Not Found",component:ir}],lr=Object(f["a"])({history:Object(f["b"])("/analyseOTA/"),routes:sr});lr.beforeEach((function(e,t,n){var r=e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.title})),a=(e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})),t.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})));r?document.title=r.meta.title:a&&(document.title=a.meta.title),Array.from(document.querySelectorAll("[data-vue-router-controlled]")).map((function(e){return e.parentNode.removeChild(e)})),n()}));var cr=lr,ur=n("5502"),pr=Object(ur["a"])({state:{},mutations:{},actions:{},modules:{}}),fr=Object(r["h"])(p);fr.use(cr),fr.use(pr),fr.use(s),fr.mount("#app")},d978:function(e,t,n){},dc41:function(e,t,n){"use strict";n("027d")},edc2:function(e,t,n){"use strict";n("c021")}}); +//# sourceMappingURL=app.a73a487e.js.map \ No newline at end of file diff --git a/analyseOTA/js/app.a73a487e.js.map b/analyseOTA/js/app.a73a487e.js.map new file mode 100644 index 0000000..984da67 --- /dev/null +++ b/analyseOTA/js/app.a73a487e.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?1825","webpack:///./src/components/PieChart.vue?3f25","webpack:///./src/components/BaseFile.vue?5b74","webpack:///./src/components/PayloadComposition.vue?8d59","webpack:///./src/views/NotFound.vue?18b8","webpack:///./src/components/OperationDetail.vue?7823","webpack:///./src/components/PartialCheckbox.vue?cce7","webpack:///./src/components/BasicInfo.vue?a804","webpack:///./src/plugins/vuetify.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?6697","webpack:///./src/views/PackageAnalysis.vue","webpack:///./src/components/BaseFile.vue","webpack:///./src/components/BaseFile.vue?5af0","webpack:///./src/components/BaseFile.vue?408d","webpack:///./src/components/PayloadDetail.vue","webpack:///./src/components/PartitionDetail.vue","webpack:///./src/services/update_metadata_pb.js","webpack:///./src/services/payload_nonab.ts","webpack:///./src/services/payload.ts","webpack:///./src/components/OperationDetail.vue","webpack:///./src/services/echarts_data.ts","webpack:///./src/services/map_parser.ts","webpack:///./src/services/payload_composition.ts","webpack:///./src/components/OperationDetail.vue?0239","webpack:///./src/components/OperationDetail.vue?19cd","webpack:///./src/components/PartitionDetail.vue?7d27","webpack:///./src/components/PartitionDetail.vue?b40d","webpack:///./src/components/BasicInfo.vue","webpack:///./src/services/trim_zip.ts","webpack:///./src/components/BasicInfo.vue?bb39","webpack:///./src/components/BasicInfo.vue?e053","webpack:///./src/components/PayloadDetail.vue?cdd8","webpack:///./src/components/PayloadDetail.vue?a20c","webpack:///./src/components/PayloadComposition.vue","webpack:///./src/components/PartialCheckbox.vue","webpack:///./src/components/PartialCheckbox.vue?fbe3","webpack:///./src/components/PartialCheckbox.vue?59db","webpack:///./src/components/PieChart.vue","webpack:///./src/components/PieChart.vue?1278","webpack:///./src/components/PayloadComposition.vue?3e04","webpack:///./src/components/PayloadComposition.vue?d59c","webpack:///./src/views/PackageAnalysis.vue?3fdf","webpack:///./src/views/PackageAnalysis.vue?2d24","webpack:///./src/views/Demo.vue","webpack:///./src/views/Demo.vue?9616","webpack:///./src/views/Demo.vue?e633","webpack:///./src/views/About.vue","webpack:///./src/views/About.vue?aa81","webpack:///./src/views/NotFound.vue","webpack:///./src/views/NotFound.vue?2812","webpack:///./src/router/index.ts","webpack:///./src/store/index.ts","webpack:///./src/main.ts","webpack:///./src/components/PayloadDetail.vue?0b74","webpack:///./src/components/PartitionDetail.vue?3d89"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","components","directives","theme","defaultTheme","rounded","color","links","link","to","class","fluid","render","cols","md","label","unpackOTA","zipFile","payload","vertical","manifest","dragover","dragleave","drop","fileName","ref","type","accept","handleFileChange","placeholder","url","urlKeyup","props","String","default","emits","computed","parsedURL","URL","this","methods","event","currentTarget","target","files","selectedFile","$emit","preventDefault","classList","contains","add","remove","dataTransfer","console","log","error","__scopeId","style","exportOTAPackage","partitions","partition","partitionName","elevation","hover","shaped","dynamicPartitionList","dynamicPartitions","metadata_signature","nonAB","octToHex","signatures","oldPartitionInfo","isDynamicPartition","estimateCowSize","postinstallPath","toggle","showInfo","size","hash","newPartitionInfo","version","readableTimestamp","showOPs","operations","operation","dataSha256Hash","mapType","opType","$Reader","$protobuf","$Writer","$util","$root","chromeos_update_engine","Extent","properties","keys","startBlock","Long","fromBits","numBlocks","encode","message","writer","uint32","uint64","encodeDelimited","ldelim","decode","reader","end","undefined","len","pos","tag","skipType","decodeDelimited","verify","isInteger","low","high","fromObject","fromValue","unsigned","parseInt","LongBits","toNumber","toObject","options","defaults","long","longs","toString","Number","toJSON","constructor","toJSONOptions","Signatures","emptyArray","Signature","fork","Array","isArray","TypeError","arrays","newBuffer","unpaddedSignatureSize","bytes","fixed32","isString","base64","PartitionInfo","ImageInfo","board","channel","buildChannel","buildVersion","string","InstallOperation","srcExtents","dstExtents","dataOffset","dataLength","srcLength","dstLength","srcSha256Hash","int32","ProtocolError","instance","enums","Type","valuesById","values","CowMergeOperation","srcExtent","dstExtent","srcOffset","PartitionUpdate","newPartitionSignature","mergeOperations","runPostinstall","filesystemType","postinstallOptional","hashTreeDataExtent","hashTreeExtent","hashTreeAlgorithm","hashTreeSalt","fecDataExtent","fecExtent","fecRoots","bool","Boolean","DynamicPartitionGroup","partitionNames","DynamicPartitionMetadata","groups","snapshotEnabled","vabcEnabled","vabcCompressionParam","cowVersion","ApexInfo","packageName","isCompressed","decompressedSize","int64","ApexMetadata","apexInfo","DeltaArchiveManifest","installOperations","kernelInstallOperations","blockSize","signaturesOffset","signaturesSize","oldKernelInfo","newKernelInfo","oldRootfsInfo","newRootfsInfo","oldImageInfo","newImageInfo","minorVersion","maxTimestamp","dynamicPartitionMetadata","partialUpdate","packedFile","Blocksize","regexName","getEntries","entries","entry","filename","match","newPartition","getData","rawText","parseTransferList","lines","split","totalBlocks","entryStashed","maxStashed","Uint8Array","sizeNewData","newDataSize","line","op","elements","reduce","parseRange","RegExp","uncompressedSize","extents","rangeset","regexRange","extent","_MAGIC","_VERSION_SIZE","_MANIFEST_LEN_SIZE","_METADATA_SIGNATURE_LEN_SIZE","_PAYLOAD_HEADER_SIZE","_BRILLO_MAJOR_PAYLOAD_VERSION","MetadataFormat","prefix","Error","magic","manifest_len","metadata_signature_len","readIntAt","buffer","position","DataView","arrayBuffer","view","getBigUint64","offset","a","BigInt","getUint32","b","bigNumber","getUint16","contentType","blob","Blob","prefixLength","cursor","readInt","ret","decoder","TextDecoder","magicBytes","header_version","header","array","readHeader","file","File","zipreader","href","readManifest","metadata","init","alert","manifestBlob","signatureBlob","formatter","regex","trimEntry","unzip","parseMetadata","has","Map","types","set","bufferArray","space","maxLine","hex_table","hex","toUpperCase","getWithDefault","srcTotalBlocks","srcBlocks","dstTotalBlocks","dstBlocks","statisticData","title","unit","maximumEntries","trimmedData","trimMap","table","option","text","left","tooltip","trigger","legend","orient","top","from","series","radius","center","map","pair","emphasis","itemStyle","shadowBlur","shadowOffsetX","shadowColor","new_map","curr","currKey","restTotal","targetFile","build","mapFiles","maps","regexPath","forEach","totalLength","regexNumber","mapText","fileEntries","right","InsertMap","names","ext","queryMap","addNumberToMap","operatedBlockStatistics","operatedBlocks","operationType","mergeOperationStatistics","Math","ceil","operatedPayloadStatistics","operatedFileExtensionsStatistics","operatedFilenamesStatistics","filenameStats","fileExtenstionStats","name2Extension","operatedFilenames","buildMap","operatedFileNames","query","extentDataLength","distributeFilenames","analysePartitions","metrics","statisticsData","echartsData","exts","accumulator","total","displayBlocks","filenames","distributedLengths","round","endsWith","required","mounted","OperationDetail","unixTimestamp","isNaN","Date","indexOf","$attrs","getFileName","getFileSize","otaMetadata","trim","preBuild","totalDynamicPartitionSize","totalCOWSize","getZipReader","trimZip","zip","filter","blobWriter","level","pathname","trimTargetFiles","startsWith","close","trimOTAPackage","getMetadataLength","downloadFile","downloadNode","createObjectURL","download","click","revokeObjectURL","ensureSuffix","str","suffix","cowSizes","dynamicPartitionNamess","Set","flatMap","g","acc","cur","PartitionDetail","BasicInfo","$refs","block","exportTargetFileMetadata","partitionInclude","labels","updatePartitions","piechartClick","updateChart","disabled","demo","selectBuild","revertAllSelection","selectAllText","selectAll","checked","modelValue","updateSelected","$event","newSelect","getEchartsOption","VChart","provide","PartialCheckbox","PieChart","BaseFile","listData","responseType","param","partitionSelected","PayloadDetail","PayloadComposition","created","script","routes","path","component","PackageAnalysis","meta","Demo","About","NotFound","router","history","beforeEach","next","nearestWithTitle","matched","reverse","find","previousNearestWithMeta","metaTags","document","querySelectorAll","el","parentNode","removeChild","state","mutations","actions","app","App","use","store","vuetify","mount"],"mappings":"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","file":"js/app.a73a487e.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/analyseOTA/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadComposition.vue?vue&type=style&index=0&id=44b569bd&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BasicInfo.vue?vue&type=style&index=0&id=0514c264&scoped=true&lang=css\"","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport 'vuetify/lib/styles/main.sass'\nimport { createVuetify } from 'vuetify'\nimport * as components from 'vuetify/lib/components'\nimport * as directives from 'vuetify/lib/directives'\n\nexport default createVuetify({\n components,\n directives,\n theme: {\n defaultTheme: 'dark'\n }\n})\n","\n\n\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=ee415730\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n label: {\n type: String,\n default: ''\n }\n },\n emits: {\n 'file-select': null\n },\n data() {\n return {\n fileName: '',\n url: ''\n }\n },\n computed: {\n parsedURL(): URL | null {\n try {\n return new URL(this.url)\n } catch {\n return null\n }\n }\n },\n\n methods: {\n handleFileChange(event: any) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (target.files == null || target.files.length < 1) {\n return\n }\n const selectedFile = target.files![0]\n this.$emit('file-select', selectedFile)\n // If user selects a file, clear the URL component\n this.url = ''\n this.fileName = target.files![0].name\n },\n dragover(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!target.classList.contains('file-hover')) {\n target.classList.add('file-hover')\n }\n },\n dragleave(event: DragEvent) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n target.classList.remove('file-hover')\n },\n drop(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!event.dataTransfer || event.dataTransfer.files.length == 0) {\n return\n }\n target.files = event.dataTransfer.files\n this.handleFileChange(event)\n target.classList.remove('file-hover')\n },\n urlKeyup(event: KeyboardEvent) {\n console.log(this.url)\n if (event.key == 'Enter') {\n const target = event.target as HTMLInputElement\n if (this.parsedURL == null) {\n console.error(`${target.value} is an invalid URL`)\n return\n }\n this.$emit('file-select', this.parsedURL)\n }\n }\n }\n})\n","import { render } from \"./BaseFile.vue?vue&type=template&id=0630c5ec&scoped=true\"\nimport script from \"./BaseFile.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseFile.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-0630c5ec\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\nimport * as $protobuf from \"protobufjs/minimal\";\n\n// Common aliases\nconst $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nconst $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\nexport const chromeos_update_engine = $root.chromeos_update_engine = (() => {\n\n /**\n * Namespace chromeos_update_engine.\n * @exports chromeos_update_engine\n * @namespace\n */\n const chromeos_update_engine = {};\n\n chromeos_update_engine.Extent = (function() {\n\n /**\n * Properties of an Extent.\n * @memberof chromeos_update_engine\n * @interface IExtent\n * @property {number|Long|null} [startBlock] Extent startBlock\n * @property {number|Long|null} [numBlocks] Extent numBlocks\n */\n\n /**\n * Constructs a new Extent.\n * @memberof chromeos_update_engine\n * @classdesc Represents an Extent.\n * @implements IExtent\n * @constructor\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n */\n function Extent(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Extent startBlock.\n * @member {number|Long} startBlock\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.startBlock = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Extent numBlocks.\n * @member {number|Long} numBlocks\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.numBlocks = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new Extent instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n * @returns {chromeos_update_engine.Extent} Extent instance\n */\n Extent.create = function create(properties) {\n return new Extent(properties);\n };\n\n /**\n * Encodes the specified Extent message. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startBlock != null && Object.hasOwnProperty.call(message, \"startBlock\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.startBlock);\n if (message.numBlocks != null && Object.hasOwnProperty.call(message, \"numBlocks\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.numBlocks);\n return writer;\n };\n\n /**\n * Encodes the specified Extent message, length delimited. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Extent();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.startBlock = reader.uint64();\n break;\n case 2:\n message.numBlocks = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an Extent message.\n * @function verify\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Extent.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (!$util.isInteger(message.startBlock) && !(message.startBlock && $util.isInteger(message.startBlock.low) && $util.isInteger(message.startBlock.high)))\n return \"startBlock: integer|Long expected\";\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (!$util.isInteger(message.numBlocks) && !(message.numBlocks && $util.isInteger(message.numBlocks.low) && $util.isInteger(message.numBlocks.high)))\n return \"numBlocks: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an Extent message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Extent} Extent\n */\n Extent.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Extent)\n return object;\n let message = new $root.chromeos_update_engine.Extent();\n if (object.startBlock != null)\n if ($util.Long)\n (message.startBlock = $util.Long.fromValue(object.startBlock)).unsigned = true;\n else if (typeof object.startBlock === \"string\")\n message.startBlock = parseInt(object.startBlock, 10);\n else if (typeof object.startBlock === \"number\")\n message.startBlock = object.startBlock;\n else if (typeof object.startBlock === \"object\")\n message.startBlock = new $util.LongBits(object.startBlock.low >>> 0, object.startBlock.high >>> 0).toNumber(true);\n if (object.numBlocks != null)\n if ($util.Long)\n (message.numBlocks = $util.Long.fromValue(object.numBlocks)).unsigned = true;\n else if (typeof object.numBlocks === \"string\")\n message.numBlocks = parseInt(object.numBlocks, 10);\n else if (typeof object.numBlocks === \"number\")\n message.numBlocks = object.numBlocks;\n else if (typeof object.numBlocks === \"object\")\n message.numBlocks = new $util.LongBits(object.numBlocks.low >>> 0, object.numBlocks.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from an Extent message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.Extent} message Extent\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Extent.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.startBlock = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.startBlock = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.numBlocks = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.numBlocks = options.longs === String ? \"0\" : 0;\n }\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (typeof message.startBlock === \"number\")\n object.startBlock = options.longs === String ? String(message.startBlock) : message.startBlock;\n else\n object.startBlock = options.longs === String ? $util.Long.prototype.toString.call(message.startBlock) : options.longs === Number ? new $util.LongBits(message.startBlock.low >>> 0, message.startBlock.high >>> 0).toNumber(true) : message.startBlock;\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (typeof message.numBlocks === \"number\")\n object.numBlocks = options.longs === String ? String(message.numBlocks) : message.numBlocks;\n else\n object.numBlocks = options.longs === String ? $util.Long.prototype.toString.call(message.numBlocks) : options.longs === Number ? new $util.LongBits(message.numBlocks.low >>> 0, message.numBlocks.high >>> 0).toNumber(true) : message.numBlocks;\n return object;\n };\n\n /**\n * Converts this Extent to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Extent\n * @instance\n * @returns {Object.} JSON object\n */\n Extent.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Extent;\n })();\n\n chromeos_update_engine.Signatures = (function() {\n\n /**\n * Properties of a Signatures.\n * @memberof chromeos_update_engine\n * @interface ISignatures\n * @property {Array.|null} [signatures] Signatures signatures\n */\n\n /**\n * Constructs a new Signatures.\n * @memberof chromeos_update_engine\n * @classdesc Represents a Signatures.\n * @implements ISignatures\n * @constructor\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n */\n function Signatures(properties) {\n this.signatures = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signatures signatures.\n * @member {Array.} signatures\n * @memberof chromeos_update_engine.Signatures\n * @instance\n */\n Signatures.prototype.signatures = $util.emptyArray;\n\n /**\n * Creates a new Signatures instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures} Signatures instance\n */\n Signatures.create = function create(properties) {\n return new Signatures(properties);\n };\n\n /**\n * Encodes the specified Signatures message. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.signatures != null && message.signatures.length)\n for (let i = 0; i < message.signatures.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.signatures[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Signatures message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.signatures && message.signatures.length))\n message.signatures = [];\n message.signatures.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signatures message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signatures.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.signatures != null && message.hasOwnProperty(\"signatures\")) {\n if (!Array.isArray(message.signatures))\n return \"signatures: array expected\";\n for (let i = 0; i < message.signatures.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.signatures[i]);\n if (error)\n return \"signatures.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a Signatures message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures} Signatures\n */\n Signatures.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures)\n return object;\n let message = new $root.chromeos_update_engine.Signatures();\n if (object.signatures) {\n if (!Array.isArray(object.signatures))\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: array expected\");\n message.signatures = [];\n for (let i = 0; i < object.signatures.length; ++i) {\n if (typeof object.signatures[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: object expected\");\n message.signatures[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.signatures[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Signatures message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.Signatures} message Signatures\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signatures.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.signatures = [];\n if (message.signatures && message.signatures.length) {\n object.signatures = [];\n for (let j = 0; j < message.signatures.length; ++j)\n object.signatures[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.signatures[j], options);\n }\n return object;\n };\n\n /**\n * Converts this Signatures to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures\n * @instance\n * @returns {Object.} JSON object\n */\n Signatures.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n Signatures.Signature = (function() {\n\n /**\n * Properties of a Signature.\n * @memberof chromeos_update_engine.Signatures\n * @interface ISignature\n * @property {number|null} [version] Signature version\n * @property {Uint8Array|null} [data] Signature data\n * @property {number|null} [unpaddedSignatureSize] Signature unpaddedSignatureSize\n */\n\n /**\n * Constructs a new Signature.\n * @memberof chromeos_update_engine.Signatures\n * @classdesc Represents a Signature.\n * @implements ISignature\n * @constructor\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n */\n function Signature(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signature version.\n * @member {number} version\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.version = 0;\n\n /**\n * Signature data.\n * @member {Uint8Array} data\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.data = $util.newBuffer([]);\n\n /**\n * Signature unpaddedSignatureSize.\n * @member {number} unpaddedSignatureSize\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.unpaddedSignatureSize = 0;\n\n /**\n * Creates a new Signature instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures.Signature} Signature instance\n */\n Signature.create = function create(properties) {\n return new Signature(properties);\n };\n\n /**\n * Encodes the specified Signature message. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.version);\n if (message.data != null && Object.hasOwnProperty.call(message, \"data\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.data);\n if (message.unpaddedSignatureSize != null && Object.hasOwnProperty.call(message, \"unpaddedSignatureSize\"))\n writer.uint32(/* id 3, wireType 5 =*/29).fixed32(message.unpaddedSignatureSize);\n return writer;\n };\n\n /**\n * Encodes the specified Signature message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures.Signature();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.version = reader.uint32();\n break;\n case 2:\n message.data = reader.bytes();\n break;\n case 3:\n message.unpaddedSignatureSize = reader.fixed32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signature message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signature.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version))\n return \"version: integer expected\";\n if (message.data != null && message.hasOwnProperty(\"data\"))\n if (!(message.data && typeof message.data.length === \"number\" || $util.isString(message.data)))\n return \"data: buffer expected\";\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n if (!$util.isInteger(message.unpaddedSignatureSize))\n return \"unpaddedSignatureSize: integer expected\";\n return null;\n };\n\n /**\n * Creates a Signature message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n */\n Signature.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures.Signature)\n return object;\n let message = new $root.chromeos_update_engine.Signatures.Signature();\n if (object.version != null)\n message.version = object.version >>> 0;\n if (object.data != null)\n if (typeof object.data === \"string\")\n $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);\n else if (object.data.length)\n message.data = object.data;\n if (object.unpaddedSignatureSize != null)\n message.unpaddedSignatureSize = object.unpaddedSignatureSize >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a Signature message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.Signature} message Signature\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signature.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.version = 0;\n if (options.bytes === String)\n object.data = \"\";\n else {\n object.data = [];\n if (options.bytes !== Array)\n object.data = $util.newBuffer(object.data);\n }\n object.unpaddedSignatureSize = 0;\n }\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.data != null && message.hasOwnProperty(\"data\"))\n object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n object.unpaddedSignatureSize = message.unpaddedSignatureSize;\n return object;\n };\n\n /**\n * Converts this Signature to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n * @returns {Object.} JSON object\n */\n Signature.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Signature;\n })();\n\n return Signatures;\n })();\n\n chromeos_update_engine.PartitionInfo = (function() {\n\n /**\n * Properties of a PartitionInfo.\n * @memberof chromeos_update_engine\n * @interface IPartitionInfo\n * @property {number|Long|null} [size] PartitionInfo size\n * @property {Uint8Array|null} [hash] PartitionInfo hash\n */\n\n /**\n * Constructs a new PartitionInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionInfo.\n * @implements IPartitionInfo\n * @constructor\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n */\n function PartitionInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionInfo size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * PartitionInfo hash.\n * @member {Uint8Array} hash\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.hash = $util.newBuffer([]);\n\n /**\n * Creates a new PartitionInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo instance\n */\n PartitionInfo.create = function create(properties) {\n return new PartitionInfo(properties);\n };\n\n /**\n * Encodes the specified PartitionInfo message. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.size);\n if (message.hash != null && Object.hasOwnProperty.call(message, \"hash\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.hash);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.size = reader.uint64();\n break;\n case 2:\n message.hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionInfo message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n if (!(message.hash && typeof message.hash.length === \"number\" || $util.isString(message.hash)))\n return \"hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates a PartitionInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n */\n PartitionInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionInfo)\n return object;\n let message = new $root.chromeos_update_engine.PartitionInfo();\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.hash != null)\n if (typeof object.hash === \"string\")\n $util.base64.decode(object.hash, message.hash = $util.newBuffer($util.base64.length(object.hash)), 0);\n else if (object.hash.length)\n message.hash = object.hash;\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.PartitionInfo} message PartitionInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.hash = \"\";\n else {\n object.hash = [];\n if (options.bytes !== Array)\n object.hash = $util.newBuffer(object.hash);\n }\n }\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n object.hash = options.bytes === String ? $util.base64.encode(message.hash, 0, message.hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.hash) : message.hash;\n return object;\n };\n\n /**\n * Converts this PartitionInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionInfo;\n })();\n\n chromeos_update_engine.ImageInfo = (function() {\n\n /**\n * Properties of an ImageInfo.\n * @memberof chromeos_update_engine\n * @interface IImageInfo\n * @property {string|null} [board] ImageInfo board\n * @property {string|null} [key] ImageInfo key\n * @property {string|null} [channel] ImageInfo channel\n * @property {string|null} [version] ImageInfo version\n * @property {string|null} [buildChannel] ImageInfo buildChannel\n * @property {string|null} [buildVersion] ImageInfo buildVersion\n */\n\n /**\n * Constructs a new ImageInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ImageInfo.\n * @implements IImageInfo\n * @constructor\n * @param {chromeos_update_engine.IImageInfo=} [properties] Properties to set\n */\n function ImageInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ImageInfo board.\n * @member {string} board\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.board = \"\";\n\n /**\n * ImageInfo key.\n * @member {string} key\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.key = \"\";\n\n /**\n * ImageInfo channel.\n * @member {string} channel\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.channel = \"\";\n\n /**\n * ImageInfo version.\n * @member {string} version\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.version = \"\";\n\n /**\n * ImageInfo buildChannel.\n * @member {string} buildChannel\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.buildChannel = \"\";\n\n /**\n * ImageInfo buildVersion.\n * @member {string} buildVersion\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n */\n ImageInfo.prototype.buildVersion = \"\";\n\n /**\n * Creates a new ImageInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.IImageInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo instance\n */\n ImageInfo.create = function create(properties) {\n return new ImageInfo(properties);\n };\n\n /**\n * Encodes the specified ImageInfo message. Does not implicitly {@link chromeos_update_engine.ImageInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.IImageInfo} message ImageInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ImageInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.board != null && Object.hasOwnProperty.call(message, \"board\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.board);\n if (message.key != null && Object.hasOwnProperty.call(message, \"key\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.key);\n if (message.channel != null && Object.hasOwnProperty.call(message, \"channel\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.channel);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.version);\n if (message.buildChannel != null && Object.hasOwnProperty.call(message, \"buildChannel\"))\n writer.uint32(/* id 5, wireType 2 =*/42).string(message.buildChannel);\n if (message.buildVersion != null && Object.hasOwnProperty.call(message, \"buildVersion\"))\n writer.uint32(/* id 6, wireType 2 =*/50).string(message.buildVersion);\n return writer;\n };\n\n /**\n * Encodes the specified ImageInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ImageInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.IImageInfo} message ImageInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ImageInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ImageInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ImageInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ImageInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.board = reader.string();\n break;\n case 2:\n message.key = reader.string();\n break;\n case 3:\n message.channel = reader.string();\n break;\n case 4:\n message.version = reader.string();\n break;\n case 5:\n message.buildChannel = reader.string();\n break;\n case 6:\n message.buildVersion = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ImageInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ImageInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ImageInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ImageInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.board != null && message.hasOwnProperty(\"board\"))\n if (!$util.isString(message.board))\n return \"board: string expected\";\n if (message.key != null && message.hasOwnProperty(\"key\"))\n if (!$util.isString(message.key))\n return \"key: string expected\";\n if (message.channel != null && message.hasOwnProperty(\"channel\"))\n if (!$util.isString(message.channel))\n return \"channel: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.buildChannel != null && message.hasOwnProperty(\"buildChannel\"))\n if (!$util.isString(message.buildChannel))\n return \"buildChannel: string expected\";\n if (message.buildVersion != null && message.hasOwnProperty(\"buildVersion\"))\n if (!$util.isString(message.buildVersion))\n return \"buildVersion: string expected\";\n return null;\n };\n\n /**\n * Creates an ImageInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ImageInfo} ImageInfo\n */\n ImageInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ImageInfo)\n return object;\n let message = new $root.chromeos_update_engine.ImageInfo();\n if (object.board != null)\n message.board = String(object.board);\n if (object.key != null)\n message.key = String(object.key);\n if (object.channel != null)\n message.channel = String(object.channel);\n if (object.version != null)\n message.version = String(object.version);\n if (object.buildChannel != null)\n message.buildChannel = String(object.buildChannel);\n if (object.buildVersion != null)\n message.buildVersion = String(object.buildVersion);\n return message;\n };\n\n /**\n * Creates a plain object from an ImageInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ImageInfo\n * @static\n * @param {chromeos_update_engine.ImageInfo} message ImageInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ImageInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.board = \"\";\n object.key = \"\";\n object.channel = \"\";\n object.version = \"\";\n object.buildChannel = \"\";\n object.buildVersion = \"\";\n }\n if (message.board != null && message.hasOwnProperty(\"board\"))\n object.board = message.board;\n if (message.key != null && message.hasOwnProperty(\"key\"))\n object.key = message.key;\n if (message.channel != null && message.hasOwnProperty(\"channel\"))\n object.channel = message.channel;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.buildChannel != null && message.hasOwnProperty(\"buildChannel\"))\n object.buildChannel = message.buildChannel;\n if (message.buildVersion != null && message.hasOwnProperty(\"buildVersion\"))\n object.buildVersion = message.buildVersion;\n return object;\n };\n\n /**\n * Converts this ImageInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ImageInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ImageInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ImageInfo;\n })();\n\n chromeos_update_engine.InstallOperation = (function() {\n\n /**\n * Properties of an InstallOperation.\n * @memberof chromeos_update_engine\n * @interface IInstallOperation\n * @property {chromeos_update_engine.InstallOperation.Type} type InstallOperation type\n * @property {number|Long|null} [dataOffset] InstallOperation dataOffset\n * @property {number|Long|null} [dataLength] InstallOperation dataLength\n * @property {Array.|null} [srcExtents] InstallOperation srcExtents\n * @property {number|Long|null} [srcLength] InstallOperation srcLength\n * @property {Array.|null} [dstExtents] InstallOperation dstExtents\n * @property {number|Long|null} [dstLength] InstallOperation dstLength\n * @property {Uint8Array|null} [dataSha256Hash] InstallOperation dataSha256Hash\n * @property {Uint8Array|null} [srcSha256Hash] InstallOperation srcSha256Hash\n */\n\n /**\n * Constructs a new InstallOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents an InstallOperation.\n * @implements IInstallOperation\n * @constructor\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n */\n function InstallOperation(properties) {\n this.srcExtents = [];\n this.dstExtents = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * InstallOperation type.\n * @member {chromeos_update_engine.InstallOperation.Type} type\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.type = 0;\n\n /**\n * InstallOperation dataOffset.\n * @member {number|Long} dataOffset\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataLength.\n * @member {number|Long} dataLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation srcExtents.\n * @member {Array.} srcExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcExtents = $util.emptyArray;\n\n /**\n * InstallOperation srcLength.\n * @member {number|Long} srcLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dstExtents.\n * @member {Array.} dstExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstExtents = $util.emptyArray;\n\n /**\n * InstallOperation dstLength.\n * @member {number|Long} dstLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataSha256Hash.\n * @member {Uint8Array} dataSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataSha256Hash = $util.newBuffer([]);\n\n /**\n * InstallOperation srcSha256Hash.\n * @member {Uint8Array} srcSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcSha256Hash = $util.newBuffer([]);\n\n /**\n * Creates a new InstallOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation instance\n */\n InstallOperation.create = function create(properties) {\n return new InstallOperation(properties);\n };\n\n /**\n * Encodes the specified InstallOperation message. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.dataOffset != null && Object.hasOwnProperty.call(message, \"dataOffset\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.dataOffset);\n if (message.dataLength != null && Object.hasOwnProperty.call(message, \"dataLength\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.dataLength);\n if (message.srcExtents != null && message.srcExtents.length)\n for (let i = 0; i < message.srcExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.srcExtents[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.srcLength != null && Object.hasOwnProperty.call(message, \"srcLength\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.srcLength);\n if (message.dstExtents != null && message.dstExtents.length)\n for (let i = 0; i < message.dstExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.dstExtents[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.dstLength != null && Object.hasOwnProperty.call(message, \"dstLength\"))\n writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.dstLength);\n if (message.dataSha256Hash != null && Object.hasOwnProperty.call(message, \"dataSha256Hash\"))\n writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.dataSha256Hash);\n if (message.srcSha256Hash != null && Object.hasOwnProperty.call(message, \"srcSha256Hash\"))\n writer.uint32(/* id 9, wireType 2 =*/74).bytes(message.srcSha256Hash);\n return writer;\n };\n\n /**\n * Encodes the specified InstallOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.InstallOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.dataOffset = reader.uint64();\n break;\n case 3:\n message.dataLength = reader.uint64();\n break;\n case 4:\n if (!(message.srcExtents && message.srcExtents.length))\n message.srcExtents = [];\n message.srcExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 5:\n message.srcLength = reader.uint64();\n break;\n case 6:\n if (!(message.dstExtents && message.dstExtents.length))\n message.dstExtents = [];\n message.dstExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 7:\n message.dstLength = reader.uint64();\n break;\n case 8:\n message.dataSha256Hash = reader.bytes();\n break;\n case 9:\n message.srcSha256Hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"type\"))\n throw $util.ProtocolError(\"missing required 'type'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an InstallOperation message.\n * @function verify\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n InstallOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 8:\n case 6:\n case 7:\n case 10:\n case 9:\n case 11:\n case 12:\n case 13:\n break;\n }\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (!$util.isInteger(message.dataOffset) && !(message.dataOffset && $util.isInteger(message.dataOffset.low) && $util.isInteger(message.dataOffset.high)))\n return \"dataOffset: integer|Long expected\";\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (!$util.isInteger(message.dataLength) && !(message.dataLength && $util.isInteger(message.dataLength.low) && $util.isInteger(message.dataLength.high)))\n return \"dataLength: integer|Long expected\";\n if (message.srcExtents != null && message.hasOwnProperty(\"srcExtents\")) {\n if (!Array.isArray(message.srcExtents))\n return \"srcExtents: array expected\";\n for (let i = 0; i < message.srcExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtents[i]);\n if (error)\n return \"srcExtents.\" + error;\n }\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (!$util.isInteger(message.srcLength) && !(message.srcLength && $util.isInteger(message.srcLength.low) && $util.isInteger(message.srcLength.high)))\n return \"srcLength: integer|Long expected\";\n if (message.dstExtents != null && message.hasOwnProperty(\"dstExtents\")) {\n if (!Array.isArray(message.dstExtents))\n return \"dstExtents: array expected\";\n for (let i = 0; i < message.dstExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtents[i]);\n if (error)\n return \"dstExtents.\" + error;\n }\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (!$util.isInteger(message.dstLength) && !(message.dstLength && $util.isInteger(message.dstLength.low) && $util.isInteger(message.dstLength.high)))\n return \"dstLength: integer|Long expected\";\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n if (!(message.dataSha256Hash && typeof message.dataSha256Hash.length === \"number\" || $util.isString(message.dataSha256Hash)))\n return \"dataSha256Hash: buffer expected\";\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n if (!(message.srcSha256Hash && typeof message.srcSha256Hash.length === \"number\" || $util.isString(message.srcSha256Hash)))\n return \"srcSha256Hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates an InstallOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n */\n InstallOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.InstallOperation)\n return object;\n let message = new $root.chromeos_update_engine.InstallOperation();\n switch (object.type) {\n case \"REPLACE\":\n case 0:\n message.type = 0;\n break;\n case \"REPLACE_BZ\":\n case 1:\n message.type = 1;\n break;\n case \"MOVE\":\n case 2:\n message.type = 2;\n break;\n case \"BSDIFF\":\n case 3:\n message.type = 3;\n break;\n case \"SOURCE_COPY\":\n case 4:\n message.type = 4;\n break;\n case \"SOURCE_BSDIFF\":\n case 5:\n message.type = 5;\n break;\n case \"REPLACE_XZ\":\n case 8:\n message.type = 8;\n break;\n case \"ZERO\":\n case 6:\n message.type = 6;\n break;\n case \"DISCARD\":\n case 7:\n message.type = 7;\n break;\n case \"BROTLI_BSDIFF\":\n case 10:\n message.type = 10;\n break;\n case \"PUFFDIFF\":\n case 9:\n message.type = 9;\n break;\n case \"ZUCCHINI\":\n case 11:\n message.type = 11;\n break;\n case \"LZ4DIFF_BSDIFF\":\n case 12:\n message.type = 12;\n break;\n case \"LZ4DIFF_PUFFDIFF\":\n case 13:\n message.type = 13;\n break;\n }\n if (object.dataOffset != null)\n if ($util.Long)\n (message.dataOffset = $util.Long.fromValue(object.dataOffset)).unsigned = true;\n else if (typeof object.dataOffset === \"string\")\n message.dataOffset = parseInt(object.dataOffset, 10);\n else if (typeof object.dataOffset === \"number\")\n message.dataOffset = object.dataOffset;\n else if (typeof object.dataOffset === \"object\")\n message.dataOffset = new $util.LongBits(object.dataOffset.low >>> 0, object.dataOffset.high >>> 0).toNumber(true);\n if (object.dataLength != null)\n if ($util.Long)\n (message.dataLength = $util.Long.fromValue(object.dataLength)).unsigned = true;\n else if (typeof object.dataLength === \"string\")\n message.dataLength = parseInt(object.dataLength, 10);\n else if (typeof object.dataLength === \"number\")\n message.dataLength = object.dataLength;\n else if (typeof object.dataLength === \"object\")\n message.dataLength = new $util.LongBits(object.dataLength.low >>> 0, object.dataLength.high >>> 0).toNumber(true);\n if (object.srcExtents) {\n if (!Array.isArray(object.srcExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: array expected\");\n message.srcExtents = [];\n for (let i = 0; i < object.srcExtents.length; ++i) {\n if (typeof object.srcExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: object expected\");\n message.srcExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.srcExtents[i]);\n }\n }\n if (object.srcLength != null)\n if ($util.Long)\n (message.srcLength = $util.Long.fromValue(object.srcLength)).unsigned = true;\n else if (typeof object.srcLength === \"string\")\n message.srcLength = parseInt(object.srcLength, 10);\n else if (typeof object.srcLength === \"number\")\n message.srcLength = object.srcLength;\n else if (typeof object.srcLength === \"object\")\n message.srcLength = new $util.LongBits(object.srcLength.low >>> 0, object.srcLength.high >>> 0).toNumber(true);\n if (object.dstExtents) {\n if (!Array.isArray(object.dstExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: array expected\");\n message.dstExtents = [];\n for (let i = 0; i < object.dstExtents.length; ++i) {\n if (typeof object.dstExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: object expected\");\n message.dstExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.dstExtents[i]);\n }\n }\n if (object.dstLength != null)\n if ($util.Long)\n (message.dstLength = $util.Long.fromValue(object.dstLength)).unsigned = true;\n else if (typeof object.dstLength === \"string\")\n message.dstLength = parseInt(object.dstLength, 10);\n else if (typeof object.dstLength === \"number\")\n message.dstLength = object.dstLength;\n else if (typeof object.dstLength === \"object\")\n message.dstLength = new $util.LongBits(object.dstLength.low >>> 0, object.dstLength.high >>> 0).toNumber(true);\n if (object.dataSha256Hash != null)\n if (typeof object.dataSha256Hash === \"string\")\n $util.base64.decode(object.dataSha256Hash, message.dataSha256Hash = $util.newBuffer($util.base64.length(object.dataSha256Hash)), 0);\n else if (object.dataSha256Hash.length)\n message.dataSha256Hash = object.dataSha256Hash;\n if (object.srcSha256Hash != null)\n if (typeof object.srcSha256Hash === \"string\")\n $util.base64.decode(object.srcSha256Hash, message.srcSha256Hash = $util.newBuffer($util.base64.length(object.srcSha256Hash)), 0);\n else if (object.srcSha256Hash.length)\n message.srcSha256Hash = object.srcSha256Hash;\n return message;\n };\n\n /**\n * Creates a plain object from an InstallOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.InstallOperation} message InstallOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n InstallOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.srcExtents = [];\n object.dstExtents = [];\n }\n if (options.defaults) {\n object.type = options.enums === String ? \"REPLACE\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.srcLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.srcLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dstLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dstLength = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.dataSha256Hash = \"\";\n else {\n object.dataSha256Hash = [];\n if (options.bytes !== Array)\n object.dataSha256Hash = $util.newBuffer(object.dataSha256Hash);\n }\n if (options.bytes === String)\n object.srcSha256Hash = \"\";\n else {\n object.srcSha256Hash = [];\n if (options.bytes !== Array)\n object.srcSha256Hash = $util.newBuffer(object.srcSha256Hash);\n }\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.InstallOperation.Type[message.type] : message.type;\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (typeof message.dataOffset === \"number\")\n object.dataOffset = options.longs === String ? String(message.dataOffset) : message.dataOffset;\n else\n object.dataOffset = options.longs === String ? $util.Long.prototype.toString.call(message.dataOffset) : options.longs === Number ? new $util.LongBits(message.dataOffset.low >>> 0, message.dataOffset.high >>> 0).toNumber(true) : message.dataOffset;\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (typeof message.dataLength === \"number\")\n object.dataLength = options.longs === String ? String(message.dataLength) : message.dataLength;\n else\n object.dataLength = options.longs === String ? $util.Long.prototype.toString.call(message.dataLength) : options.longs === Number ? new $util.LongBits(message.dataLength.low >>> 0, message.dataLength.high >>> 0).toNumber(true) : message.dataLength;\n if (message.srcExtents && message.srcExtents.length) {\n object.srcExtents = [];\n for (let j = 0; j < message.srcExtents.length; ++j)\n object.srcExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.srcExtents[j], options);\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (typeof message.srcLength === \"number\")\n object.srcLength = options.longs === String ? String(message.srcLength) : message.srcLength;\n else\n object.srcLength = options.longs === String ? $util.Long.prototype.toString.call(message.srcLength) : options.longs === Number ? new $util.LongBits(message.srcLength.low >>> 0, message.srcLength.high >>> 0).toNumber(true) : message.srcLength;\n if (message.dstExtents && message.dstExtents.length) {\n object.dstExtents = [];\n for (let j = 0; j < message.dstExtents.length; ++j)\n object.dstExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.dstExtents[j], options);\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (typeof message.dstLength === \"number\")\n object.dstLength = options.longs === String ? String(message.dstLength) : message.dstLength;\n else\n object.dstLength = options.longs === String ? $util.Long.prototype.toString.call(message.dstLength) : options.longs === Number ? new $util.LongBits(message.dstLength.low >>> 0, message.dstLength.high >>> 0).toNumber(true) : message.dstLength;\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n object.dataSha256Hash = options.bytes === String ? $util.base64.encode(message.dataSha256Hash, 0, message.dataSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.dataSha256Hash) : message.dataSha256Hash;\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n object.srcSha256Hash = options.bytes === String ? $util.base64.encode(message.srcSha256Hash, 0, message.srcSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.srcSha256Hash) : message.srcSha256Hash;\n return object;\n };\n\n /**\n * Converts this InstallOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n * @returns {Object.} JSON object\n */\n InstallOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.InstallOperation.Type\n * @enum {number}\n * @property {number} REPLACE=0 REPLACE value\n * @property {number} REPLACE_BZ=1 REPLACE_BZ value\n * @property {number} MOVE=2 MOVE value\n * @property {number} BSDIFF=3 BSDIFF value\n * @property {number} SOURCE_COPY=4 SOURCE_COPY value\n * @property {number} SOURCE_BSDIFF=5 SOURCE_BSDIFF value\n * @property {number} REPLACE_XZ=8 REPLACE_XZ value\n * @property {number} ZERO=6 ZERO value\n * @property {number} DISCARD=7 DISCARD value\n * @property {number} BROTLI_BSDIFF=10 BROTLI_BSDIFF value\n * @property {number} PUFFDIFF=9 PUFFDIFF value\n * @property {number} ZUCCHINI=11 ZUCCHINI value\n * @property {number} LZ4DIFF_BSDIFF=12 LZ4DIFF_BSDIFF value\n * @property {number} LZ4DIFF_PUFFDIFF=13 LZ4DIFF_PUFFDIFF value\n */\n InstallOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"REPLACE\"] = 0;\n values[valuesById[1] = \"REPLACE_BZ\"] = 1;\n values[valuesById[2] = \"MOVE\"] = 2;\n values[valuesById[3] = \"BSDIFF\"] = 3;\n values[valuesById[4] = \"SOURCE_COPY\"] = 4;\n values[valuesById[5] = \"SOURCE_BSDIFF\"] = 5;\n values[valuesById[8] = \"REPLACE_XZ\"] = 8;\n values[valuesById[6] = \"ZERO\"] = 6;\n values[valuesById[7] = \"DISCARD\"] = 7;\n values[valuesById[10] = \"BROTLI_BSDIFF\"] = 10;\n values[valuesById[9] = \"PUFFDIFF\"] = 9;\n values[valuesById[11] = \"ZUCCHINI\"] = 11;\n values[valuesById[12] = \"LZ4DIFF_BSDIFF\"] = 12;\n values[valuesById[13] = \"LZ4DIFF_PUFFDIFF\"] = 13;\n return values;\n })();\n\n return InstallOperation;\n })();\n\n chromeos_update_engine.CowMergeOperation = (function() {\n\n /**\n * Properties of a CowMergeOperation.\n * @memberof chromeos_update_engine\n * @interface ICowMergeOperation\n * @property {chromeos_update_engine.CowMergeOperation.Type|null} [type] CowMergeOperation type\n * @property {chromeos_update_engine.IExtent|null} [srcExtent] CowMergeOperation srcExtent\n * @property {chromeos_update_engine.IExtent|null} [dstExtent] CowMergeOperation dstExtent\n * @property {number|null} [srcOffset] CowMergeOperation srcOffset\n */\n\n /**\n * Constructs a new CowMergeOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents a CowMergeOperation.\n * @implements ICowMergeOperation\n * @constructor\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n */\n function CowMergeOperation(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * CowMergeOperation type.\n * @member {chromeos_update_engine.CowMergeOperation.Type} type\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.type = 0;\n\n /**\n * CowMergeOperation srcExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} srcExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcExtent = null;\n\n /**\n * CowMergeOperation dstExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} dstExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.dstExtent = null;\n\n /**\n * CowMergeOperation srcOffset.\n * @member {number} srcOffset\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcOffset = 0;\n\n /**\n * Creates a new CowMergeOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation instance\n */\n CowMergeOperation.create = function create(properties) {\n return new CowMergeOperation(properties);\n };\n\n /**\n * Encodes the specified CowMergeOperation message. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.srcExtent != null && Object.hasOwnProperty.call(message, \"srcExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.srcExtent, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.dstExtent != null && Object.hasOwnProperty.call(message, \"dstExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.dstExtent, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.srcOffset != null && Object.hasOwnProperty.call(message, \"srcOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.srcOffset);\n return writer;\n };\n\n /**\n * Encodes the specified CowMergeOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.CowMergeOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.srcExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 3:\n message.dstExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 4:\n message.srcOffset = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a CowMergeOperation message.\n * @function verify\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n CowMergeOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtent);\n if (error)\n return \"srcExtent.\" + error;\n }\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtent);\n if (error)\n return \"dstExtent.\" + error;\n }\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n if (!$util.isInteger(message.srcOffset))\n return \"srcOffset: integer expected\";\n return null;\n };\n\n /**\n * Creates a CowMergeOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n */\n CowMergeOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.CowMergeOperation)\n return object;\n let message = new $root.chromeos_update_engine.CowMergeOperation();\n switch (object.type) {\n case \"COW_COPY\":\n case 0:\n message.type = 0;\n break;\n case \"COW_XOR\":\n case 1:\n message.type = 1;\n break;\n case \"COW_REPLACE\":\n case 2:\n message.type = 2;\n break;\n }\n if (object.srcExtent != null) {\n if (typeof object.srcExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.srcExtent: object expected\");\n message.srcExtent = $root.chromeos_update_engine.Extent.fromObject(object.srcExtent);\n }\n if (object.dstExtent != null) {\n if (typeof object.dstExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.dstExtent: object expected\");\n message.dstExtent = $root.chromeos_update_engine.Extent.fromObject(object.dstExtent);\n }\n if (object.srcOffset != null)\n message.srcOffset = object.srcOffset >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a CowMergeOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.CowMergeOperation} message CowMergeOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n CowMergeOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"COW_COPY\" : 0;\n object.srcExtent = null;\n object.dstExtent = null;\n object.srcOffset = 0;\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.CowMergeOperation.Type[message.type] : message.type;\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\"))\n object.srcExtent = $root.chromeos_update_engine.Extent.toObject(message.srcExtent, options);\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\"))\n object.dstExtent = $root.chromeos_update_engine.Extent.toObject(message.dstExtent, options);\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n object.srcOffset = message.srcOffset;\n return object;\n };\n\n /**\n * Converts this CowMergeOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n * @returns {Object.} JSON object\n */\n CowMergeOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.CowMergeOperation.Type\n * @enum {number}\n * @property {number} COW_COPY=0 COW_COPY value\n * @property {number} COW_XOR=1 COW_XOR value\n * @property {number} COW_REPLACE=2 COW_REPLACE value\n */\n CowMergeOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"COW_COPY\"] = 0;\n values[valuesById[1] = \"COW_XOR\"] = 1;\n values[valuesById[2] = \"COW_REPLACE\"] = 2;\n return values;\n })();\n\n return CowMergeOperation;\n })();\n\n chromeos_update_engine.PartitionUpdate = (function() {\n\n /**\n * Properties of a PartitionUpdate.\n * @memberof chromeos_update_engine\n * @interface IPartitionUpdate\n * @property {string} partitionName PartitionUpdate partitionName\n * @property {boolean|null} [runPostinstall] PartitionUpdate runPostinstall\n * @property {string|null} [postinstallPath] PartitionUpdate postinstallPath\n * @property {string|null} [filesystemType] PartitionUpdate filesystemType\n * @property {Array.|null} [newPartitionSignature] PartitionUpdate newPartitionSignature\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldPartitionInfo] PartitionUpdate oldPartitionInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newPartitionInfo] PartitionUpdate newPartitionInfo\n * @property {Array.|null} [operations] PartitionUpdate operations\n * @property {boolean|null} [postinstallOptional] PartitionUpdate postinstallOptional\n * @property {chromeos_update_engine.IExtent|null} [hashTreeDataExtent] PartitionUpdate hashTreeDataExtent\n * @property {chromeos_update_engine.IExtent|null} [hashTreeExtent] PartitionUpdate hashTreeExtent\n * @property {string|null} [hashTreeAlgorithm] PartitionUpdate hashTreeAlgorithm\n * @property {Uint8Array|null} [hashTreeSalt] PartitionUpdate hashTreeSalt\n * @property {chromeos_update_engine.IExtent|null} [fecDataExtent] PartitionUpdate fecDataExtent\n * @property {chromeos_update_engine.IExtent|null} [fecExtent] PartitionUpdate fecExtent\n * @property {number|null} [fecRoots] PartitionUpdate fecRoots\n * @property {string|null} [version] PartitionUpdate version\n * @property {Array.|null} [mergeOperations] PartitionUpdate mergeOperations\n * @property {number|Long|null} [estimateCowSize] PartitionUpdate estimateCowSize\n */\n\n /**\n * Constructs a new PartitionUpdate.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionUpdate.\n * @implements IPartitionUpdate\n * @constructor\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n */\n function PartitionUpdate(properties) {\n this.newPartitionSignature = [];\n this.operations = [];\n this.mergeOperations = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionUpdate partitionName.\n * @member {string} partitionName\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.partitionName = \"\";\n\n /**\n * PartitionUpdate runPostinstall.\n * @member {boolean} runPostinstall\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.runPostinstall = false;\n\n /**\n * PartitionUpdate postinstallPath.\n * @member {string} postinstallPath\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallPath = \"\";\n\n /**\n * PartitionUpdate filesystemType.\n * @member {string} filesystemType\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.filesystemType = \"\";\n\n /**\n * PartitionUpdate newPartitionSignature.\n * @member {Array.} newPartitionSignature\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionSignature = $util.emptyArray;\n\n /**\n * PartitionUpdate oldPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.oldPartitionInfo = null;\n\n /**\n * PartitionUpdate newPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionInfo = null;\n\n /**\n * PartitionUpdate operations.\n * @member {Array.} operations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.operations = $util.emptyArray;\n\n /**\n * PartitionUpdate postinstallOptional.\n * @member {boolean} postinstallOptional\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallOptional = false;\n\n /**\n * PartitionUpdate hashTreeDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeDataExtent = null;\n\n /**\n * PartitionUpdate hashTreeExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeExtent = null;\n\n /**\n * PartitionUpdate hashTreeAlgorithm.\n * @member {string} hashTreeAlgorithm\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeAlgorithm = \"\";\n\n /**\n * PartitionUpdate hashTreeSalt.\n * @member {Uint8Array} hashTreeSalt\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeSalt = $util.newBuffer([]);\n\n /**\n * PartitionUpdate fecDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecDataExtent = null;\n\n /**\n * PartitionUpdate fecExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecExtent = null;\n\n /**\n * PartitionUpdate fecRoots.\n * @member {number} fecRoots\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecRoots = 2;\n\n /**\n * PartitionUpdate version.\n * @member {string} version\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.version = \"\";\n\n /**\n * PartitionUpdate mergeOperations.\n * @member {Array.} mergeOperations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.mergeOperations = $util.emptyArray;\n\n /**\n * PartitionUpdate estimateCowSize.\n * @member {number|Long} estimateCowSize\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.estimateCowSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new PartitionUpdate instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate instance\n */\n PartitionUpdate.create = function create(properties) {\n return new PartitionUpdate(properties);\n };\n\n /**\n * Encodes the specified PartitionUpdate message. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.partitionName);\n if (message.runPostinstall != null && Object.hasOwnProperty.call(message, \"runPostinstall\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.runPostinstall);\n if (message.postinstallPath != null && Object.hasOwnProperty.call(message, \"postinstallPath\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.postinstallPath);\n if (message.filesystemType != null && Object.hasOwnProperty.call(message, \"filesystemType\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.filesystemType);\n if (message.newPartitionSignature != null && message.newPartitionSignature.length)\n for (let i = 0; i < message.newPartitionSignature.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.newPartitionSignature[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.oldPartitionInfo != null && Object.hasOwnProperty.call(message, \"oldPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldPartitionInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newPartitionInfo != null && Object.hasOwnProperty.call(message, \"newPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newPartitionInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.operations != null && message.operations.length)\n for (let i = 0; i < message.operations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.operations[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.postinstallOptional != null && Object.hasOwnProperty.call(message, \"postinstallOptional\"))\n writer.uint32(/* id 9, wireType 0 =*/72).bool(message.postinstallOptional);\n if (message.hashTreeDataExtent != null && Object.hasOwnProperty.call(message, \"hashTreeDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeDataExtent, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.hashTreeExtent != null && Object.hasOwnProperty.call(message, \"hashTreeExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeExtent, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.hashTreeAlgorithm != null && Object.hasOwnProperty.call(message, \"hashTreeAlgorithm\"))\n writer.uint32(/* id 12, wireType 2 =*/98).string(message.hashTreeAlgorithm);\n if (message.hashTreeSalt != null && Object.hasOwnProperty.call(message, \"hashTreeSalt\"))\n writer.uint32(/* id 13, wireType 2 =*/106).bytes(message.hashTreeSalt);\n if (message.fecDataExtent != null && Object.hasOwnProperty.call(message, \"fecDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecDataExtent, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.fecExtent != null && Object.hasOwnProperty.call(message, \"fecExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecExtent, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.fecRoots != null && Object.hasOwnProperty.call(message, \"fecRoots\"))\n writer.uint32(/* id 16, wireType 0 =*/128).uint32(message.fecRoots);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 17, wireType 2 =*/138).string(message.version);\n if (message.mergeOperations != null && message.mergeOperations.length)\n for (let i = 0; i < message.mergeOperations.length; ++i)\n $root.chromeos_update_engine.CowMergeOperation.encode(message.mergeOperations[i], writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n if (message.estimateCowSize != null && Object.hasOwnProperty.call(message, \"estimateCowSize\"))\n writer.uint32(/* id 19, wireType 0 =*/152).uint64(message.estimateCowSize);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionUpdate message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionUpdate();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.partitionName = reader.string();\n break;\n case 2:\n message.runPostinstall = reader.bool();\n break;\n case 3:\n message.postinstallPath = reader.string();\n break;\n case 4:\n message.filesystemType = reader.string();\n break;\n case 5:\n if (!(message.newPartitionSignature && message.newPartitionSignature.length))\n message.newPartitionSignature = [];\n message.newPartitionSignature.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n case 6:\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n if (!(message.operations && message.operations.length))\n message.operations = [];\n message.operations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 9:\n message.postinstallOptional = reader.bool();\n break;\n case 10:\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 11:\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 12:\n message.hashTreeAlgorithm = reader.string();\n break;\n case 13:\n message.hashTreeSalt = reader.bytes();\n break;\n case 14:\n message.fecDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 15:\n message.fecExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 16:\n message.fecRoots = reader.uint32();\n break;\n case 17:\n message.version = reader.string();\n break;\n case 18:\n if (!(message.mergeOperations && message.mergeOperations.length))\n message.mergeOperations = [];\n message.mergeOperations.push($root.chromeos_update_engine.CowMergeOperation.decode(reader, reader.uint32()));\n break;\n case 19:\n message.estimateCowSize = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"partitionName\"))\n throw $util.ProtocolError(\"missing required 'partitionName'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionUpdate message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionUpdate.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.partitionName))\n return \"partitionName: string expected\";\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n if (typeof message.runPostinstall !== \"boolean\")\n return \"runPostinstall: boolean expected\";\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n if (!$util.isString(message.postinstallPath))\n return \"postinstallPath: string expected\";\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n if (!$util.isString(message.filesystemType))\n return \"filesystemType: string expected\";\n if (message.newPartitionSignature != null && message.hasOwnProperty(\"newPartitionSignature\")) {\n if (!Array.isArray(message.newPartitionSignature))\n return \"newPartitionSignature: array expected\";\n for (let i = 0; i < message.newPartitionSignature.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.newPartitionSignature[i]);\n if (error)\n return \"newPartitionSignature.\" + error;\n }\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldPartitionInfo);\n if (error)\n return \"oldPartitionInfo.\" + error;\n }\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newPartitionInfo);\n if (error)\n return \"newPartitionInfo.\" + error;\n }\n if (message.operations != null && message.hasOwnProperty(\"operations\")) {\n if (!Array.isArray(message.operations))\n return \"operations: array expected\";\n for (let i = 0; i < message.operations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.operations[i]);\n if (error)\n return \"operations.\" + error;\n }\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n if (typeof message.postinstallOptional !== \"boolean\")\n return \"postinstallOptional: boolean expected\";\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeDataExtent);\n if (error)\n return \"hashTreeDataExtent.\" + error;\n }\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeExtent);\n if (error)\n return \"hashTreeExtent.\" + error;\n }\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n if (!$util.isString(message.hashTreeAlgorithm))\n return \"hashTreeAlgorithm: string expected\";\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n if (!(message.hashTreeSalt && typeof message.hashTreeSalt.length === \"number\" || $util.isString(message.hashTreeSalt)))\n return \"hashTreeSalt: buffer expected\";\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecDataExtent);\n if (error)\n return \"fecDataExtent.\" + error;\n }\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecExtent);\n if (error)\n return \"fecExtent.\" + error;\n }\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n if (!$util.isInteger(message.fecRoots))\n return \"fecRoots: integer expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.mergeOperations != null && message.hasOwnProperty(\"mergeOperations\")) {\n if (!Array.isArray(message.mergeOperations))\n return \"mergeOperations: array expected\";\n for (let i = 0; i < message.mergeOperations.length; ++i) {\n let error = $root.chromeos_update_engine.CowMergeOperation.verify(message.mergeOperations[i]);\n if (error)\n return \"mergeOperations.\" + error;\n }\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (!$util.isInteger(message.estimateCowSize) && !(message.estimateCowSize && $util.isInteger(message.estimateCowSize.low) && $util.isInteger(message.estimateCowSize.high)))\n return \"estimateCowSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a PartitionUpdate message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n */\n PartitionUpdate.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionUpdate)\n return object;\n let message = new $root.chromeos_update_engine.PartitionUpdate();\n if (object.partitionName != null)\n message.partitionName = String(object.partitionName);\n if (object.runPostinstall != null)\n message.runPostinstall = Boolean(object.runPostinstall);\n if (object.postinstallPath != null)\n message.postinstallPath = String(object.postinstallPath);\n if (object.filesystemType != null)\n message.filesystemType = String(object.filesystemType);\n if (object.newPartitionSignature) {\n if (!Array.isArray(object.newPartitionSignature))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: array expected\");\n message.newPartitionSignature = [];\n for (let i = 0; i < object.newPartitionSignature.length; ++i) {\n if (typeof object.newPartitionSignature[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: object expected\");\n message.newPartitionSignature[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.newPartitionSignature[i]);\n }\n }\n if (object.oldPartitionInfo != null) {\n if (typeof object.oldPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.oldPartitionInfo: object expected\");\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldPartitionInfo);\n }\n if (object.newPartitionInfo != null) {\n if (typeof object.newPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionInfo: object expected\");\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newPartitionInfo);\n }\n if (object.operations) {\n if (!Array.isArray(object.operations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: array expected\");\n message.operations = [];\n for (let i = 0; i < object.operations.length; ++i) {\n if (typeof object.operations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: object expected\");\n message.operations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.operations[i]);\n }\n }\n if (object.postinstallOptional != null)\n message.postinstallOptional = Boolean(object.postinstallOptional);\n if (object.hashTreeDataExtent != null) {\n if (typeof object.hashTreeDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeDataExtent: object expected\");\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeDataExtent);\n }\n if (object.hashTreeExtent != null) {\n if (typeof object.hashTreeExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeExtent: object expected\");\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeExtent);\n }\n if (object.hashTreeAlgorithm != null)\n message.hashTreeAlgorithm = String(object.hashTreeAlgorithm);\n if (object.hashTreeSalt != null)\n if (typeof object.hashTreeSalt === \"string\")\n $util.base64.decode(object.hashTreeSalt, message.hashTreeSalt = $util.newBuffer($util.base64.length(object.hashTreeSalt)), 0);\n else if (object.hashTreeSalt.length)\n message.hashTreeSalt = object.hashTreeSalt;\n if (object.fecDataExtent != null) {\n if (typeof object.fecDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecDataExtent: object expected\");\n message.fecDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecDataExtent);\n }\n if (object.fecExtent != null) {\n if (typeof object.fecExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecExtent: object expected\");\n message.fecExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecExtent);\n }\n if (object.fecRoots != null)\n message.fecRoots = object.fecRoots >>> 0;\n if (object.version != null)\n message.version = String(object.version);\n if (object.mergeOperations) {\n if (!Array.isArray(object.mergeOperations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected\");\n message.mergeOperations = [];\n for (let i = 0; i < object.mergeOperations.length; ++i) {\n if (typeof object.mergeOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: object expected\");\n message.mergeOperations[i] = $root.chromeos_update_engine.CowMergeOperation.fromObject(object.mergeOperations[i]);\n }\n }\n if (object.estimateCowSize != null)\n if ($util.Long)\n (message.estimateCowSize = $util.Long.fromValue(object.estimateCowSize)).unsigned = true;\n else if (typeof object.estimateCowSize === \"string\")\n message.estimateCowSize = parseInt(object.estimateCowSize, 10);\n else if (typeof object.estimateCowSize === \"number\")\n message.estimateCowSize = object.estimateCowSize;\n else if (typeof object.estimateCowSize === \"object\")\n message.estimateCowSize = new $util.LongBits(object.estimateCowSize.low >>> 0, object.estimateCowSize.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionUpdate message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.PartitionUpdate} message PartitionUpdate\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionUpdate.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.newPartitionSignature = [];\n object.operations = [];\n object.mergeOperations = [];\n }\n if (options.defaults) {\n object.partitionName = \"\";\n object.runPostinstall = false;\n object.postinstallPath = \"\";\n object.filesystemType = \"\";\n object.oldPartitionInfo = null;\n object.newPartitionInfo = null;\n object.postinstallOptional = false;\n object.hashTreeDataExtent = null;\n object.hashTreeExtent = null;\n object.hashTreeAlgorithm = \"\";\n if (options.bytes === String)\n object.hashTreeSalt = \"\";\n else {\n object.hashTreeSalt = [];\n if (options.bytes !== Array)\n object.hashTreeSalt = $util.newBuffer(object.hashTreeSalt);\n }\n object.fecDataExtent = null;\n object.fecExtent = null;\n object.fecRoots = 2;\n object.version = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.estimateCowSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.estimateCowSize = options.longs === String ? \"0\" : 0;\n }\n if (message.partitionName != null && message.hasOwnProperty(\"partitionName\"))\n object.partitionName = message.partitionName;\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n object.runPostinstall = message.runPostinstall;\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n object.postinstallPath = message.postinstallPath;\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n object.filesystemType = message.filesystemType;\n if (message.newPartitionSignature && message.newPartitionSignature.length) {\n object.newPartitionSignature = [];\n for (let j = 0; j < message.newPartitionSignature.length; ++j)\n object.newPartitionSignature[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.newPartitionSignature[j], options);\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\"))\n object.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldPartitionInfo, options);\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\"))\n object.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newPartitionInfo, options);\n if (message.operations && message.operations.length) {\n object.operations = [];\n for (let j = 0; j < message.operations.length; ++j)\n object.operations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.operations[j], options);\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n object.postinstallOptional = message.postinstallOptional;\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\"))\n object.hashTreeDataExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeDataExtent, options);\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\"))\n object.hashTreeExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeExtent, options);\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n object.hashTreeAlgorithm = message.hashTreeAlgorithm;\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n object.hashTreeSalt = options.bytes === String ? $util.base64.encode(message.hashTreeSalt, 0, message.hashTreeSalt.length) : options.bytes === Array ? Array.prototype.slice.call(message.hashTreeSalt) : message.hashTreeSalt;\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\"))\n object.fecDataExtent = $root.chromeos_update_engine.Extent.toObject(message.fecDataExtent, options);\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\"))\n object.fecExtent = $root.chromeos_update_engine.Extent.toObject(message.fecExtent, options);\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n object.fecRoots = message.fecRoots;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.mergeOperations && message.mergeOperations.length) {\n object.mergeOperations = [];\n for (let j = 0; j < message.mergeOperations.length; ++j)\n object.mergeOperations[j] = $root.chromeos_update_engine.CowMergeOperation.toObject(message.mergeOperations[j], options);\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (typeof message.estimateCowSize === \"number\")\n object.estimateCowSize = options.longs === String ? String(message.estimateCowSize) : message.estimateCowSize;\n else\n object.estimateCowSize = options.longs === String ? $util.Long.prototype.toString.call(message.estimateCowSize) : options.longs === Number ? new $util.LongBits(message.estimateCowSize.low >>> 0, message.estimateCowSize.high >>> 0).toNumber(true) : message.estimateCowSize;\n return object;\n };\n\n /**\n * Converts this PartitionUpdate to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionUpdate.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionUpdate;\n })();\n\n chromeos_update_engine.DynamicPartitionGroup = (function() {\n\n /**\n * Properties of a DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionGroup\n * @property {string} name DynamicPartitionGroup name\n * @property {number|Long|null} [size] DynamicPartitionGroup size\n * @property {Array.|null} [partitionNames] DynamicPartitionGroup partitionNames\n */\n\n /**\n * Constructs a new DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionGroup.\n * @implements IDynamicPartitionGroup\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n */\n function DynamicPartitionGroup(properties) {\n this.partitionNames = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionGroup name.\n * @member {string} name\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.name = \"\";\n\n /**\n * DynamicPartitionGroup size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DynamicPartitionGroup partitionNames.\n * @member {Array.} partitionNames\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.partitionNames = $util.emptyArray;\n\n /**\n * Creates a new DynamicPartitionGroup instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup instance\n */\n DynamicPartitionGroup.create = function create(properties) {\n return new DynamicPartitionGroup(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.size);\n if (message.partitionNames != null && message.partitionNames.length)\n for (let i = 0; i < message.partitionNames.length; ++i)\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.partitionNames[i]);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.name = reader.string();\n break;\n case 2:\n message.size = reader.uint64();\n break;\n case 3:\n if (!(message.partitionNames && message.partitionNames.length))\n message.partitionNames = [];\n message.partitionNames.push(reader.string());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"name\"))\n throw $util.ProtocolError(\"missing required 'name'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionGroup message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionGroup.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.partitionNames != null && message.hasOwnProperty(\"partitionNames\")) {\n if (!Array.isArray(message.partitionNames))\n return \"partitionNames: array expected\";\n for (let i = 0; i < message.partitionNames.length; ++i)\n if (!$util.isString(message.partitionNames[i]))\n return \"partitionNames: string[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a DynamicPartitionGroup message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n */\n DynamicPartitionGroup.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionGroup)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n if (object.name != null)\n message.name = String(object.name);\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.partitionNames) {\n if (!Array.isArray(object.partitionNames))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected\");\n message.partitionNames = [];\n for (let i = 0; i < object.partitionNames.length; ++i)\n message.partitionNames[i] = String(object.partitionNames[i]);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionGroup message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.DynamicPartitionGroup} message DynamicPartitionGroup\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionGroup.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.partitionNames = [];\n if (options.defaults) {\n object.name = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.partitionNames && message.partitionNames.length) {\n object.partitionNames = [];\n for (let j = 0; j < message.partitionNames.length; ++j)\n object.partitionNames[j] = message.partitionNames[j];\n }\n return object;\n };\n\n /**\n * Converts this DynamicPartitionGroup to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionGroup.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionGroup;\n })();\n\n chromeos_update_engine.DynamicPartitionMetadata = (function() {\n\n /**\n * Properties of a DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionMetadata\n * @property {Array.|null} [groups] DynamicPartitionMetadata groups\n * @property {boolean|null} [snapshotEnabled] DynamicPartitionMetadata snapshotEnabled\n * @property {boolean|null} [vabcEnabled] DynamicPartitionMetadata vabcEnabled\n * @property {string|null} [vabcCompressionParam] DynamicPartitionMetadata vabcCompressionParam\n * @property {number|null} [cowVersion] DynamicPartitionMetadata cowVersion\n */\n\n /**\n * Constructs a new DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionMetadata.\n * @implements IDynamicPartitionMetadata\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n */\n function DynamicPartitionMetadata(properties) {\n this.groups = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionMetadata groups.\n * @member {Array.} groups\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.groups = $util.emptyArray;\n\n /**\n * DynamicPartitionMetadata snapshotEnabled.\n * @member {boolean} snapshotEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.snapshotEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcEnabled.\n * @member {boolean} vabcEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcCompressionParam.\n * @member {string} vabcCompressionParam\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcCompressionParam = \"\";\n\n /**\n * DynamicPartitionMetadata cowVersion.\n * @member {number} cowVersion\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.cowVersion = 0;\n\n /**\n * Creates a new DynamicPartitionMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata instance\n */\n DynamicPartitionMetadata.create = function create(properties) {\n return new DynamicPartitionMetadata(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.groups != null && message.groups.length)\n for (let i = 0; i < message.groups.length; ++i)\n $root.chromeos_update_engine.DynamicPartitionGroup.encode(message.groups[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.snapshotEnabled != null && Object.hasOwnProperty.call(message, \"snapshotEnabled\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.snapshotEnabled);\n if (message.vabcEnabled != null && Object.hasOwnProperty.call(message, \"vabcEnabled\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.vabcEnabled);\n if (message.vabcCompressionParam != null && Object.hasOwnProperty.call(message, \"vabcCompressionParam\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.vabcCompressionParam);\n if (message.cowVersion != null && Object.hasOwnProperty.call(message, \"cowVersion\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.cowVersion);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.groups && message.groups.length))\n message.groups = [];\n message.groups.push($root.chromeos_update_engine.DynamicPartitionGroup.decode(reader, reader.uint32()));\n break;\n case 2:\n message.snapshotEnabled = reader.bool();\n break;\n case 3:\n message.vabcEnabled = reader.bool();\n break;\n case 4:\n message.vabcCompressionParam = reader.string();\n break;\n case 5:\n message.cowVersion = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.groups != null && message.hasOwnProperty(\"groups\")) {\n if (!Array.isArray(message.groups))\n return \"groups: array expected\";\n for (let i = 0; i < message.groups.length; ++i) {\n let error = $root.chromeos_update_engine.DynamicPartitionGroup.verify(message.groups[i]);\n if (error)\n return \"groups.\" + error;\n }\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n if (typeof message.snapshotEnabled !== \"boolean\")\n return \"snapshotEnabled: boolean expected\";\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n if (typeof message.vabcEnabled !== \"boolean\")\n return \"vabcEnabled: boolean expected\";\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n if (!$util.isString(message.vabcCompressionParam))\n return \"vabcCompressionParam: string expected\";\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n if (!$util.isInteger(message.cowVersion))\n return \"cowVersion: integer expected\";\n return null;\n };\n\n /**\n * Creates a DynamicPartitionMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n */\n DynamicPartitionMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionMetadata)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n if (object.groups) {\n if (!Array.isArray(object.groups))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: array expected\");\n message.groups = [];\n for (let i = 0; i < object.groups.length; ++i) {\n if (typeof object.groups[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: object expected\");\n message.groups[i] = $root.chromeos_update_engine.DynamicPartitionGroup.fromObject(object.groups[i]);\n }\n }\n if (object.snapshotEnabled != null)\n message.snapshotEnabled = Boolean(object.snapshotEnabled);\n if (object.vabcEnabled != null)\n message.vabcEnabled = Boolean(object.vabcEnabled);\n if (object.vabcCompressionParam != null)\n message.vabcCompressionParam = String(object.vabcCompressionParam);\n if (object.cowVersion != null)\n message.cowVersion = object.cowVersion >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.DynamicPartitionMetadata} message DynamicPartitionMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.groups = [];\n if (options.defaults) {\n object.snapshotEnabled = false;\n object.vabcEnabled = false;\n object.vabcCompressionParam = \"\";\n object.cowVersion = 0;\n }\n if (message.groups && message.groups.length) {\n object.groups = [];\n for (let j = 0; j < message.groups.length; ++j)\n object.groups[j] = $root.chromeos_update_engine.DynamicPartitionGroup.toObject(message.groups[j], options);\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n object.snapshotEnabled = message.snapshotEnabled;\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n object.vabcEnabled = message.vabcEnabled;\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n object.vabcCompressionParam = message.vabcCompressionParam;\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n object.cowVersion = message.cowVersion;\n return object;\n };\n\n /**\n * Converts this DynamicPartitionMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionMetadata;\n })();\n\n chromeos_update_engine.ApexInfo = (function() {\n\n /**\n * Properties of an ApexInfo.\n * @memberof chromeos_update_engine\n * @interface IApexInfo\n * @property {string|null} [packageName] ApexInfo packageName\n * @property {number|Long|null} [version] ApexInfo version\n * @property {boolean|null} [isCompressed] ApexInfo isCompressed\n * @property {number|Long|null} [decompressedSize] ApexInfo decompressedSize\n */\n\n /**\n * Constructs a new ApexInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexInfo.\n * @implements IApexInfo\n * @constructor\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n */\n function ApexInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexInfo packageName.\n * @member {string} packageName\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.packageName = \"\";\n\n /**\n * ApexInfo version.\n * @member {number|Long} version\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * ApexInfo isCompressed.\n * @member {boolean} isCompressed\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.isCompressed = false;\n\n /**\n * ApexInfo decompressedSize.\n * @member {number|Long} decompressedSize\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.decompressedSize = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * Creates a new ApexInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo instance\n */\n ApexInfo.create = function create(properties) {\n return new ApexInfo(properties);\n };\n\n /**\n * Encodes the specified ApexInfo message. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.packageName != null && Object.hasOwnProperty.call(message, \"packageName\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.packageName);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.version);\n if (message.isCompressed != null && Object.hasOwnProperty.call(message, \"isCompressed\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isCompressed);\n if (message.decompressedSize != null && Object.hasOwnProperty.call(message, \"decompressedSize\"))\n writer.uint32(/* id 4, wireType 0 =*/32).int64(message.decompressedSize);\n return writer;\n };\n\n /**\n * Encodes the specified ApexInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.packageName = reader.string();\n break;\n case 2:\n message.version = reader.int64();\n break;\n case 3:\n message.isCompressed = reader.bool();\n break;\n case 4:\n message.decompressedSize = reader.int64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n if (!$util.isString(message.packageName))\n return \"packageName: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high)))\n return \"version: integer|Long expected\";\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n if (typeof message.isCompressed !== \"boolean\")\n return \"isCompressed: boolean expected\";\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (!$util.isInteger(message.decompressedSize) && !(message.decompressedSize && $util.isInteger(message.decompressedSize.low) && $util.isInteger(message.decompressedSize.high)))\n return \"decompressedSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an ApexInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n */\n ApexInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexInfo)\n return object;\n let message = new $root.chromeos_update_engine.ApexInfo();\n if (object.packageName != null)\n message.packageName = String(object.packageName);\n if (object.version != null)\n if ($util.Long)\n (message.version = $util.Long.fromValue(object.version)).unsigned = false;\n else if (typeof object.version === \"string\")\n message.version = parseInt(object.version, 10);\n else if (typeof object.version === \"number\")\n message.version = object.version;\n else if (typeof object.version === \"object\")\n message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber();\n if (object.isCompressed != null)\n message.isCompressed = Boolean(object.isCompressed);\n if (object.decompressedSize != null)\n if ($util.Long)\n (message.decompressedSize = $util.Long.fromValue(object.decompressedSize)).unsigned = false;\n else if (typeof object.decompressedSize === \"string\")\n message.decompressedSize = parseInt(object.decompressedSize, 10);\n else if (typeof object.decompressedSize === \"number\")\n message.decompressedSize = object.decompressedSize;\n else if (typeof object.decompressedSize === \"object\")\n message.decompressedSize = new $util.LongBits(object.decompressedSize.low >>> 0, object.decompressedSize.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from an ApexInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.ApexInfo} message ApexInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.packageName = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.version = options.longs === String ? \"0\" : 0;\n object.isCompressed = false;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.decompressedSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.decompressedSize = options.longs === String ? \"0\" : 0;\n }\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n object.packageName = message.packageName;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (typeof message.version === \"number\")\n object.version = options.longs === String ? String(message.version) : message.version;\n else\n object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version;\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n object.isCompressed = message.isCompressed;\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (typeof message.decompressedSize === \"number\")\n object.decompressedSize = options.longs === String ? String(message.decompressedSize) : message.decompressedSize;\n else\n object.decompressedSize = options.longs === String ? $util.Long.prototype.toString.call(message.decompressedSize) : options.longs === Number ? new $util.LongBits(message.decompressedSize.low >>> 0, message.decompressedSize.high >>> 0).toNumber() : message.decompressedSize;\n return object;\n };\n\n /**\n * Converts this ApexInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ApexInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexInfo;\n })();\n\n chromeos_update_engine.ApexMetadata = (function() {\n\n /**\n * Properties of an ApexMetadata.\n * @memberof chromeos_update_engine\n * @interface IApexMetadata\n * @property {Array.|null} [apexInfo] ApexMetadata apexInfo\n */\n\n /**\n * Constructs a new ApexMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexMetadata.\n * @implements IApexMetadata\n * @constructor\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n */\n function ApexMetadata(properties) {\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexMetadata apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n */\n ApexMetadata.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new ApexMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata instance\n */\n ApexMetadata.create = function create(properties) {\n return new ApexMetadata(properties);\n };\n\n /**\n * Encodes the specified ApexMetadata message. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified ApexMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates an ApexMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n */\n ApexMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexMetadata)\n return object;\n let message = new $root.chromeos_update_engine.ApexMetadata();\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from an ApexMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.ApexMetadata} message ApexMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.apexInfo = [];\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this ApexMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n ApexMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexMetadata;\n })();\n\n chromeos_update_engine.DeltaArchiveManifest = (function() {\n\n /**\n * Properties of a DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @interface IDeltaArchiveManifest\n * @property {Array.|null} [installOperations] DeltaArchiveManifest installOperations\n * @property {Array.|null} [kernelInstallOperations] DeltaArchiveManifest kernelInstallOperations\n * @property {number|null} [blockSize] DeltaArchiveManifest blockSize\n * @property {number|Long|null} [signaturesOffset] DeltaArchiveManifest signaturesOffset\n * @property {number|Long|null} [signaturesSize] DeltaArchiveManifest signaturesSize\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldKernelInfo] DeltaArchiveManifest oldKernelInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newKernelInfo] DeltaArchiveManifest newKernelInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldRootfsInfo] DeltaArchiveManifest oldRootfsInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newRootfsInfo] DeltaArchiveManifest newRootfsInfo\n * @property {chromeos_update_engine.IImageInfo|null} [oldImageInfo] DeltaArchiveManifest oldImageInfo\n * @property {chromeos_update_engine.IImageInfo|null} [newImageInfo] DeltaArchiveManifest newImageInfo\n * @property {number|null} [minorVersion] DeltaArchiveManifest minorVersion\n * @property {Array.|null} [partitions] DeltaArchiveManifest partitions\n * @property {number|Long|null} [maxTimestamp] DeltaArchiveManifest maxTimestamp\n * @property {chromeos_update_engine.IDynamicPartitionMetadata|null} [dynamicPartitionMetadata] DeltaArchiveManifest dynamicPartitionMetadata\n * @property {boolean|null} [partialUpdate] DeltaArchiveManifest partialUpdate\n * @property {Array.|null} [apexInfo] DeltaArchiveManifest apexInfo\n */\n\n /**\n * Constructs a new DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DeltaArchiveManifest.\n * @implements IDeltaArchiveManifest\n * @constructor\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n */\n function DeltaArchiveManifest(properties) {\n this.installOperations = [];\n this.kernelInstallOperations = [];\n this.partitions = [];\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DeltaArchiveManifest installOperations.\n * @member {Array.} installOperations\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.installOperations = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest kernelInstallOperations.\n * @member {Array.} kernelInstallOperations\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.kernelInstallOperations = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest blockSize.\n * @member {number} blockSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.blockSize = 4096;\n\n /**\n * DeltaArchiveManifest signaturesOffset.\n * @member {number|Long} signaturesOffset\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest signaturesSize.\n * @member {number|Long} signaturesSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest oldKernelInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldKernelInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.oldKernelInfo = null;\n\n /**\n * DeltaArchiveManifest newKernelInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newKernelInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.newKernelInfo = null;\n\n /**\n * DeltaArchiveManifest oldRootfsInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldRootfsInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.oldRootfsInfo = null;\n\n /**\n * DeltaArchiveManifest newRootfsInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newRootfsInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.newRootfsInfo = null;\n\n /**\n * DeltaArchiveManifest oldImageInfo.\n * @member {chromeos_update_engine.IImageInfo|null|undefined} oldImageInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.oldImageInfo = null;\n\n /**\n * DeltaArchiveManifest newImageInfo.\n * @member {chromeos_update_engine.IImageInfo|null|undefined} newImageInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.newImageInfo = null;\n\n /**\n * DeltaArchiveManifest minorVersion.\n * @member {number} minorVersion\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.minorVersion = 0;\n\n /**\n * DeltaArchiveManifest partitions.\n * @member {Array.} partitions\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partitions = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest maxTimestamp.\n * @member {number|Long} maxTimestamp\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.maxTimestamp = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * DeltaArchiveManifest dynamicPartitionMetadata.\n * @member {chromeos_update_engine.IDynamicPartitionMetadata|null|undefined} dynamicPartitionMetadata\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.dynamicPartitionMetadata = null;\n\n /**\n * DeltaArchiveManifest partialUpdate.\n * @member {boolean} partialUpdate\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partialUpdate = false;\n\n /**\n * DeltaArchiveManifest apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new DeltaArchiveManifest instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest instance\n */\n DeltaArchiveManifest.create = function create(properties) {\n return new DeltaArchiveManifest(properties);\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.installOperations != null && message.installOperations.length)\n for (let i = 0; i < message.installOperations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.installOperations[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.kernelInstallOperations != null && message.kernelInstallOperations.length)\n for (let i = 0; i < message.kernelInstallOperations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.kernelInstallOperations[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.blockSize != null && Object.hasOwnProperty.call(message, \"blockSize\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.blockSize);\n if (message.signaturesOffset != null && Object.hasOwnProperty.call(message, \"signaturesOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.signaturesOffset);\n if (message.signaturesSize != null && Object.hasOwnProperty.call(message, \"signaturesSize\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.signaturesSize);\n if (message.oldKernelInfo != null && Object.hasOwnProperty.call(message, \"oldKernelInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldKernelInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newKernelInfo != null && Object.hasOwnProperty.call(message, \"newKernelInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newKernelInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.oldRootfsInfo != null && Object.hasOwnProperty.call(message, \"oldRootfsInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldRootfsInfo, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.newRootfsInfo != null && Object.hasOwnProperty.call(message, \"newRootfsInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newRootfsInfo, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim();\n if (message.oldImageInfo != null && Object.hasOwnProperty.call(message, \"oldImageInfo\"))\n $root.chromeos_update_engine.ImageInfo.encode(message.oldImageInfo, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.newImageInfo != null && Object.hasOwnProperty.call(message, \"newImageInfo\"))\n $root.chromeos_update_engine.ImageInfo.encode(message.newImageInfo, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.minorVersion != null && Object.hasOwnProperty.call(message, \"minorVersion\"))\n writer.uint32(/* id 12, wireType 0 =*/96).uint32(message.minorVersion);\n if (message.partitions != null && message.partitions.length)\n for (let i = 0; i < message.partitions.length; ++i)\n $root.chromeos_update_engine.PartitionUpdate.encode(message.partitions[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();\n if (message.maxTimestamp != null && Object.hasOwnProperty.call(message, \"maxTimestamp\"))\n writer.uint32(/* id 14, wireType 0 =*/112).int64(message.maxTimestamp);\n if (message.dynamicPartitionMetadata != null && Object.hasOwnProperty.call(message, \"dynamicPartitionMetadata\"))\n $root.chromeos_update_engine.DynamicPartitionMetadata.encode(message.dynamicPartitionMetadata, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.partialUpdate != null && Object.hasOwnProperty.call(message, \"partialUpdate\"))\n writer.uint32(/* id 16, wireType 0 =*/128).bool(message.partialUpdate);\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message, length delimited. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.installOperations && message.installOperations.length))\n message.installOperations = [];\n message.installOperations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 2:\n if (!(message.kernelInstallOperations && message.kernelInstallOperations.length))\n message.kernelInstallOperations = [];\n message.kernelInstallOperations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 3:\n message.blockSize = reader.uint32();\n break;\n case 4:\n message.signaturesOffset = reader.uint64();\n break;\n case 5:\n message.signaturesSize = reader.uint64();\n break;\n case 6:\n message.oldKernelInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newKernelInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n message.oldRootfsInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 9:\n message.newRootfsInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 10:\n message.oldImageInfo = $root.chromeos_update_engine.ImageInfo.decode(reader, reader.uint32());\n break;\n case 11:\n message.newImageInfo = $root.chromeos_update_engine.ImageInfo.decode(reader, reader.uint32());\n break;\n case 12:\n message.minorVersion = reader.uint32();\n break;\n case 13:\n if (!(message.partitions && message.partitions.length))\n message.partitions = [];\n message.partitions.push($root.chromeos_update_engine.PartitionUpdate.decode(reader, reader.uint32()));\n break;\n case 14:\n message.maxTimestamp = reader.int64();\n break;\n case 15:\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.decode(reader, reader.uint32());\n break;\n case 16:\n message.partialUpdate = reader.bool();\n break;\n case 17:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DeltaArchiveManifest message.\n * @function verify\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DeltaArchiveManifest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.installOperations != null && message.hasOwnProperty(\"installOperations\")) {\n if (!Array.isArray(message.installOperations))\n return \"installOperations: array expected\";\n for (let i = 0; i < message.installOperations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.installOperations[i]);\n if (error)\n return \"installOperations.\" + error;\n }\n }\n if (message.kernelInstallOperations != null && message.hasOwnProperty(\"kernelInstallOperations\")) {\n if (!Array.isArray(message.kernelInstallOperations))\n return \"kernelInstallOperations: array expected\";\n for (let i = 0; i < message.kernelInstallOperations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.kernelInstallOperations[i]);\n if (error)\n return \"kernelInstallOperations.\" + error;\n }\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n if (!$util.isInteger(message.blockSize))\n return \"blockSize: integer expected\";\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (!$util.isInteger(message.signaturesOffset) && !(message.signaturesOffset && $util.isInteger(message.signaturesOffset.low) && $util.isInteger(message.signaturesOffset.high)))\n return \"signaturesOffset: integer|Long expected\";\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (!$util.isInteger(message.signaturesSize) && !(message.signaturesSize && $util.isInteger(message.signaturesSize.low) && $util.isInteger(message.signaturesSize.high)))\n return \"signaturesSize: integer|Long expected\";\n if (message.oldKernelInfo != null && message.hasOwnProperty(\"oldKernelInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldKernelInfo);\n if (error)\n return \"oldKernelInfo.\" + error;\n }\n if (message.newKernelInfo != null && message.hasOwnProperty(\"newKernelInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newKernelInfo);\n if (error)\n return \"newKernelInfo.\" + error;\n }\n if (message.oldRootfsInfo != null && message.hasOwnProperty(\"oldRootfsInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldRootfsInfo);\n if (error)\n return \"oldRootfsInfo.\" + error;\n }\n if (message.newRootfsInfo != null && message.hasOwnProperty(\"newRootfsInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newRootfsInfo);\n if (error)\n return \"newRootfsInfo.\" + error;\n }\n if (message.oldImageInfo != null && message.hasOwnProperty(\"oldImageInfo\")) {\n let error = $root.chromeos_update_engine.ImageInfo.verify(message.oldImageInfo);\n if (error)\n return \"oldImageInfo.\" + error;\n }\n if (message.newImageInfo != null && message.hasOwnProperty(\"newImageInfo\")) {\n let error = $root.chromeos_update_engine.ImageInfo.verify(message.newImageInfo);\n if (error)\n return \"newImageInfo.\" + error;\n }\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n if (!$util.isInteger(message.minorVersion))\n return \"minorVersion: integer expected\";\n if (message.partitions != null && message.hasOwnProperty(\"partitions\")) {\n if (!Array.isArray(message.partitions))\n return \"partitions: array expected\";\n for (let i = 0; i < message.partitions.length; ++i) {\n let error = $root.chromeos_update_engine.PartitionUpdate.verify(message.partitions[i]);\n if (error)\n return \"partitions.\" + error;\n }\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (!$util.isInteger(message.maxTimestamp) && !(message.maxTimestamp && $util.isInteger(message.maxTimestamp.low) && $util.isInteger(message.maxTimestamp.high)))\n return \"maxTimestamp: integer|Long expected\";\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\")) {\n let error = $root.chromeos_update_engine.DynamicPartitionMetadata.verify(message.dynamicPartitionMetadata);\n if (error)\n return \"dynamicPartitionMetadata.\" + error;\n }\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n if (typeof message.partialUpdate !== \"boolean\")\n return \"partialUpdate: boolean expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a DeltaArchiveManifest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n */\n DeltaArchiveManifest.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DeltaArchiveManifest)\n return object;\n let message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n if (object.installOperations) {\n if (!Array.isArray(object.installOperations))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.installOperations: array expected\");\n message.installOperations = [];\n for (let i = 0; i < object.installOperations.length; ++i) {\n if (typeof object.installOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.installOperations: object expected\");\n message.installOperations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.installOperations[i]);\n }\n }\n if (object.kernelInstallOperations) {\n if (!Array.isArray(object.kernelInstallOperations))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.kernelInstallOperations: array expected\");\n message.kernelInstallOperations = [];\n for (let i = 0; i < object.kernelInstallOperations.length; ++i) {\n if (typeof object.kernelInstallOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.kernelInstallOperations: object expected\");\n message.kernelInstallOperations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.kernelInstallOperations[i]);\n }\n }\n if (object.blockSize != null)\n message.blockSize = object.blockSize >>> 0;\n if (object.signaturesOffset != null)\n if ($util.Long)\n (message.signaturesOffset = $util.Long.fromValue(object.signaturesOffset)).unsigned = true;\n else if (typeof object.signaturesOffset === \"string\")\n message.signaturesOffset = parseInt(object.signaturesOffset, 10);\n else if (typeof object.signaturesOffset === \"number\")\n message.signaturesOffset = object.signaturesOffset;\n else if (typeof object.signaturesOffset === \"object\")\n message.signaturesOffset = new $util.LongBits(object.signaturesOffset.low >>> 0, object.signaturesOffset.high >>> 0).toNumber(true);\n if (object.signaturesSize != null)\n if ($util.Long)\n (message.signaturesSize = $util.Long.fromValue(object.signaturesSize)).unsigned = true;\n else if (typeof object.signaturesSize === \"string\")\n message.signaturesSize = parseInt(object.signaturesSize, 10);\n else if (typeof object.signaturesSize === \"number\")\n message.signaturesSize = object.signaturesSize;\n else if (typeof object.signaturesSize === \"object\")\n message.signaturesSize = new $util.LongBits(object.signaturesSize.low >>> 0, object.signaturesSize.high >>> 0).toNumber(true);\n if (object.oldKernelInfo != null) {\n if (typeof object.oldKernelInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.oldKernelInfo: object expected\");\n message.oldKernelInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldKernelInfo);\n }\n if (object.newKernelInfo != null) {\n if (typeof object.newKernelInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.newKernelInfo: object expected\");\n message.newKernelInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newKernelInfo);\n }\n if (object.oldRootfsInfo != null) {\n if (typeof object.oldRootfsInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.oldRootfsInfo: object expected\");\n message.oldRootfsInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldRootfsInfo);\n }\n if (object.newRootfsInfo != null) {\n if (typeof object.newRootfsInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.newRootfsInfo: object expected\");\n message.newRootfsInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newRootfsInfo);\n }\n if (object.oldImageInfo != null) {\n if (typeof object.oldImageInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.oldImageInfo: object expected\");\n message.oldImageInfo = $root.chromeos_update_engine.ImageInfo.fromObject(object.oldImageInfo);\n }\n if (object.newImageInfo != null) {\n if (typeof object.newImageInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.newImageInfo: object expected\");\n message.newImageInfo = $root.chromeos_update_engine.ImageInfo.fromObject(object.newImageInfo);\n }\n if (object.minorVersion != null)\n message.minorVersion = object.minorVersion >>> 0;\n if (object.partitions) {\n if (!Array.isArray(object.partitions))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected\");\n message.partitions = [];\n for (let i = 0; i < object.partitions.length; ++i) {\n if (typeof object.partitions[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: object expected\");\n message.partitions[i] = $root.chromeos_update_engine.PartitionUpdate.fromObject(object.partitions[i]);\n }\n }\n if (object.maxTimestamp != null)\n if ($util.Long)\n (message.maxTimestamp = $util.Long.fromValue(object.maxTimestamp)).unsigned = false;\n else if (typeof object.maxTimestamp === \"string\")\n message.maxTimestamp = parseInt(object.maxTimestamp, 10);\n else if (typeof object.maxTimestamp === \"number\")\n message.maxTimestamp = object.maxTimestamp;\n else if (typeof object.maxTimestamp === \"object\")\n message.maxTimestamp = new $util.LongBits(object.maxTimestamp.low >>> 0, object.maxTimestamp.high >>> 0).toNumber();\n if (object.dynamicPartitionMetadata != null) {\n if (typeof object.dynamicPartitionMetadata !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected\");\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.fromObject(object.dynamicPartitionMetadata);\n }\n if (object.partialUpdate != null)\n message.partialUpdate = Boolean(object.partialUpdate);\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DeltaArchiveManifest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.DeltaArchiveManifest} message DeltaArchiveManifest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DeltaArchiveManifest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.installOperations = [];\n object.kernelInstallOperations = [];\n object.partitions = [];\n object.apexInfo = [];\n }\n if (options.defaults) {\n object.blockSize = 4096;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesSize = options.longs === String ? \"0\" : 0;\n object.oldKernelInfo = null;\n object.newKernelInfo = null;\n object.oldRootfsInfo = null;\n object.newRootfsInfo = null;\n object.oldImageInfo = null;\n object.newImageInfo = null;\n object.minorVersion = 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.maxTimestamp = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.maxTimestamp = options.longs === String ? \"0\" : 0;\n object.dynamicPartitionMetadata = null;\n object.partialUpdate = false;\n }\n if (message.installOperations && message.installOperations.length) {\n object.installOperations = [];\n for (let j = 0; j < message.installOperations.length; ++j)\n object.installOperations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.installOperations[j], options);\n }\n if (message.kernelInstallOperations && message.kernelInstallOperations.length) {\n object.kernelInstallOperations = [];\n for (let j = 0; j < message.kernelInstallOperations.length; ++j)\n object.kernelInstallOperations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.kernelInstallOperations[j], options);\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n object.blockSize = message.blockSize;\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (typeof message.signaturesOffset === \"number\")\n object.signaturesOffset = options.longs === String ? String(message.signaturesOffset) : message.signaturesOffset;\n else\n object.signaturesOffset = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesOffset) : options.longs === Number ? new $util.LongBits(message.signaturesOffset.low >>> 0, message.signaturesOffset.high >>> 0).toNumber(true) : message.signaturesOffset;\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (typeof message.signaturesSize === \"number\")\n object.signaturesSize = options.longs === String ? String(message.signaturesSize) : message.signaturesSize;\n else\n object.signaturesSize = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesSize) : options.longs === Number ? new $util.LongBits(message.signaturesSize.low >>> 0, message.signaturesSize.high >>> 0).toNumber(true) : message.signaturesSize;\n if (message.oldKernelInfo != null && message.hasOwnProperty(\"oldKernelInfo\"))\n object.oldKernelInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldKernelInfo, options);\n if (message.newKernelInfo != null && message.hasOwnProperty(\"newKernelInfo\"))\n object.newKernelInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newKernelInfo, options);\n if (message.oldRootfsInfo != null && message.hasOwnProperty(\"oldRootfsInfo\"))\n object.oldRootfsInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldRootfsInfo, options);\n if (message.newRootfsInfo != null && message.hasOwnProperty(\"newRootfsInfo\"))\n object.newRootfsInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newRootfsInfo, options);\n if (message.oldImageInfo != null && message.hasOwnProperty(\"oldImageInfo\"))\n object.oldImageInfo = $root.chromeos_update_engine.ImageInfo.toObject(message.oldImageInfo, options);\n if (message.newImageInfo != null && message.hasOwnProperty(\"newImageInfo\"))\n object.newImageInfo = $root.chromeos_update_engine.ImageInfo.toObject(message.newImageInfo, options);\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n object.minorVersion = message.minorVersion;\n if (message.partitions && message.partitions.length) {\n object.partitions = [];\n for (let j = 0; j < message.partitions.length; ++j)\n object.partitions[j] = $root.chromeos_update_engine.PartitionUpdate.toObject(message.partitions[j], options);\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (typeof message.maxTimestamp === \"number\")\n object.maxTimestamp = options.longs === String ? String(message.maxTimestamp) : message.maxTimestamp;\n else\n object.maxTimestamp = options.longs === String ? $util.Long.prototype.toString.call(message.maxTimestamp) : options.longs === Number ? new $util.LongBits(message.maxTimestamp.low >>> 0, message.maxTimestamp.high >>> 0).toNumber() : message.maxTimestamp;\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\"))\n object.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.toObject(message.dynamicPartitionMetadata, options);\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n object.partialUpdate = message.partialUpdate;\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this DeltaArchiveManifest to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n * @returns {Object.} JSON object\n */\n DeltaArchiveManifest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DeltaArchiveManifest;\n })();\n\n return chromeos_update_engine;\n})();\n\nexport { $root as default };\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TextWriter, ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { chromeos_update_engine } from './update_metadata_pb.js'\n\n/**\n * Parse the non-A/B OTA package and return it as a DeltaArchiveManifest\n * @param {ZipReader} packedFile\n */\nexport class PayloadNonAB extends chromeos_update_engine.DeltaArchiveManifest {\n nonAB: boolean = true\n Blocksize: number = 4096\n packedFile: ZipReader\n constructor(packedFile: ZipReader) {\n super()\n this.packedFile = packedFile\n }\n\n async init() {\n this.Blocksize = 4096\n this.partialUpdate = false\n this.dynamicPartitionMetadata = new chromeos_update_engine.DynamicPartitionMetadata(\n { snapshotEnabled: false, vabcEnabled: false }\n )\n this.partitions = []\n\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.transfer.list)/g\n const /** Array */ entries = await this.packedFile.getEntries()\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n const match = entry.filename.match(regexName)![0]\n let newPartition = new chromeos_update_engine.PartitionUpdate({\n partitionName: match\n })\n newPartition.rawText = await entry.getData!(new TextWriter())\n await this.parseTransferList(newPartition)\n this.partitions.push(newPartition)\n }\n }\n }\n\n async parseTransferList(partition: chromeos_update_engine.PartitionUpdate) {\n let /** Array */ lines = partition.rawText.split('\\n')\n // First four line in header: version, total blocks,\n // number of stashed entries, maximum used memory for stash\n if (lines.length < 4) {\n throw 'At least 4 lines in header should be provided.'\n }\n partition.version = lines[0]\n partition.totalBlocks = parseInt(lines[1])\n partition.entryStashed = parseInt(lines[2])\n partition.maxStashed = parseInt(lines[3])\n partition.newPartitionInfo = new chromeos_update_engine.PartitionInfo()\n partition.newPartitionInfo.hash = new Uint8Array()\n partition.newPartitionInfo.size = 'unknown'\n /**\n * The main body have 8 different ops:\n * zero [rangeset] : fill zeros\n * new [rangeset] : fill with new data from \n * erase [rangeset] : mark given blocks as empty\n * move <...>\n * bsdiff <...>\n * imgdiff <...> :\n * Read the source blocks and apply (not for move op) to the target blocks\n * stash : load the given source range to memory\n * free : free the given \n * format:\n * [rangeset]: <# of pairs>, , , ...\n * : a hex number with length of 40\n * <...>: We expect to parse the remainder of the parameter tokens as one of:\n * (loads data from source image only)\n * - <[stash_id:stash_range] ...> (loads data from stashes only)\n * <[stash_id:stash_range] ...>\n * (loads data from both source image and stashes)\n */\n partition.operations = new Array()\n let newDataSize = await this.sizeNewData(partition.partitionName)\n for (const line of lines.slice(4)) {\n let op = new chromeos_update_engine.InstallOperation()\n let elements = line.split(' ')\n op.type = elements[0]\n switch ((op.type as unknown) as string) {\n case 'zero':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'new':\n // unlike an A/B OTA, the payload only exists in the payload.bin,\n // in an non-A/B OTA, the payload exists in both .new.data and .patch.data.\n // The new ops do not have any information about data length.\n // what we do here is: read in the size of .new.data, assume the first new\n // op have the data length of the size of .new.data.\n op.dataLength = newDataSize\n newDataSize = 0\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'erase':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'move':\n op.dstExtents = parseRange([], elements[2])\n break\n case 'bsdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'imgdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'stash':\n break\n case 'free':\n break\n }\n partition.operations.push(op)\n }\n }\n\n /**\n * Return the size of .new.data.*\n * @param {String} partitionName\n * @return {Number}\n */\n async sizeNewData(partitionName: string) {\n const /** Array */ entries = await this.packedFile.getEntries()\n const /** RegExp */ regexName = new RegExp(partitionName + '.new.dat.*')\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n return entry.uncompressedSize\n }\n }\n }\n}\n\n/**\n * Parse the range string and return it as an array of extents\n * @param {extents} Array\n * @param {String} rangeset\n * @return Array\n */\nfunction parseRange(extents: Object[], rangeset: string) {\n const regexRange = new RegExp('[d,]+')\n if (rangeset.match(regexRange)) {\n let elements = rangeset.split(',')\n for (let i = 1; i < elements.length; i = i + 2) {\n let extent = new Object({\n startBlock: parseInt(elements[i]),\n numBlocks: parseInt(elements[i + 1]) - parseInt(elements[i])\n })\n extents.push(extent)\n }\n }\n return extents\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class paypload is used to read in and\n * parse the payload.bin file from a OTA.zip file.\n * Class OpType creates a Map that can resolve the\n * operation type.\n * @package zip.js\n * @package protobufjs\n */\n\nimport {\n BlobReader,\n TextWriter,\n Writer,\n ZipReader,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\n// import '@zip.js/zip.js'\nimport { chromeos_update_engine as update_metadata_pb } from './update_metadata_pb'\nimport { PayloadNonAB } from './payload_nonab'\nimport { ZipFile } from './trim_zip'\n// import { Zip_js } from 'zip.js'\n\nconst /** String */ _MAGIC = 'CrAU'\nconst /** Number */ _VERSION_SIZE = 8\nconst /** Number */ _MANIFEST_LEN_SIZE = 8\nconst /** Number */ _METADATA_SIGNATURE_LEN_SIZE = 4\n\nconst /** Number */ _PAYLOAD_HEADER_SIZE =\n _MAGIC.length +\n _VERSION_SIZE +\n _MANIFEST_LEN_SIZE +\n _METADATA_SIGNATURE_LEN_SIZE\n\nconst /** Number */ _BRILLO_MAJOR_PAYLOAD_VERSION = 2\nexport const /** Array */ MetadataFormat = [\n {\n prefix: 'pre-build',\n key: 'preBuild',\n name: 'Pre-build'\n },\n {\n prefix: 'pre-build-incremental',\n key: 'preBuildVersion',\n name: 'Pre-build version'\n },\n {\n prefix: 'post-build',\n key: 'postBuild',\n name: 'Post-build'\n },\n {\n prefix: 'post-build-incremental',\n key: 'postBuildVersion',\n name: 'Post-build version'\n },\n {\n prefix: 'post-security-patch-level',\n key: 'postSecurityPatchLevel',\n name: 'Post-build SPL'\n },\n {\n prefix: 'post-timestamp',\n key: 'postTimestamp',\n name: 'Post-build timestamp'\n },\n ]\n\nclass StopIteration extends Error {}\n\nclass AbPayloadHeader {\n constructor(\n public magic: string,\n public version: number,\n public manifest_len: number,\n public metadata_signature_len: number\n ) {}\n}\n\n/**\n * Read in an integer from binary bufferArray.\n * @param {Int} size the size of a integer being read in\n * @return {Int} an integer.\n */\nasync function readIntAt(buffer: Blob, position: number, size: number) {\n let /** DataView */ view = new DataView(\n await buffer!.slice(position, position + size).arrayBuffer()\n )\n if (typeof view.getBigUint64 !== 'function') {\n view.getBigUint64 = function(offset) {\n const a = BigInt(view.getUint32(offset))\n const b = BigInt(view.getUint32(offset + 4))\n const bigNumber = a * 4294967296n + b\n return bigNumber\n }\n }\n switch (size) {\n case 2:\n return view.getUint16(0)\n case 4:\n return view.getUint32(0)\n case 8:\n return Number(view.getBigUint64(0))\n default:\n throw 'Cannot read this integer with size ' + size\n }\n}\n\nclass OTAPayloadBlobWriter extends Writer {\n offset: number\n contentType: string\n blob: Blob\n prefixLength: number\n\n header?: AbPayloadHeader\n\n async readHeader(blob: Blob) {\n let cursor = 0\n const readInt = (size: number) => {\n const ret = readIntAt(blob, cursor, size)\n cursor += size\n return ret\n }\n let buffer = await blob.slice(0, _PAYLOAD_HEADER_SIZE).arrayBuffer()\n let /** TextDecoder */ decoder = new TextDecoder()\n let magicBytes = buffer.slice(0, _MAGIC.length)\n const magic = decoder.decode(magicBytes)\n if (magic != _MAGIC) {\n throw new Error(\n `MAGIC is not correct, expected: ${_MAGIC} actual: ${magic}`\n )\n }\n cursor += _MAGIC.length\n const header_version = await readInt(_VERSION_SIZE)\n const manifest_len = await readInt(_MANIFEST_LEN_SIZE)\n if (header_version != _BRILLO_MAJOR_PAYLOAD_VERSION) {\n throw new Error(`Unexpected major version number: ${header_version}`)\n }\n const metadata_signature_len = await readInt(_METADATA_SIGNATURE_LEN_SIZE)\n this.header = new AbPayloadHeader(\n magic,\n header_version,\n manifest_len,\n metadata_signature_len\n )\n }\n /**\n * A zip.Writer that is tailored for OTA payload.bin read-in.\n * Instead of reading in all the contents in payload.bin, this writer will\n * throw an 'StopIteration' error when the header is read in.\n * The header will be stored into the .\n * @param {Payload} payload\n * @param {String} contentType\n */\n constructor(contentType = '') {\n super()\n this.offset = 0\n this.contentType = contentType\n this.blob = new Blob([], { type: contentType })\n this.prefixLength = 0\n }\n\n async writeUint8Array(array: Uint8Array) {\n super.writeUint8Array(array)\n this.blob = new Blob([this.blob, array.buffer], { type: this.contentType })\n this.offset = this.blob.size\n // Once the prefixLength is non-zero, the address of manifest and signature\n // become known and can be read in. Otherwise the header needs to be read\n // in first to determine the prefixLength.\n if (this.offset >= _PAYLOAD_HEADER_SIZE && this.prefixLength == 0) {\n console.log('Parsing header!')\n await this.readHeader(this.blob)\n this.prefixLength =\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n console.log(`Computed metadata length: ${this.prefixLength}`)\n }\n if (this.prefixLength > 0) {\n console.log(`${this.offset}/${this.prefixLength}`)\n if (this.offset >= this.prefixLength) {\n // The prefix has everything we need (header, manifest, signature). Once\n // the offset is beyond the prefix, no need to move on.\n this.blob = this.blob.slice(0, this.prefixLength)\n throw new StopIteration()\n }\n }\n }\n\n getData() {\n return this.blob\n }\n}\n\nexport class Payload {\n zipreader: ZipReader\n buffer: Blob | undefined\n private metadata: any\n manifest: update_metadata_pb.DeltaArchiveManifest | undefined\n metadata_signature!: update_metadata_pb.Signatures\n\n header?: AbPayloadHeader\n\n /**\n * This class parses the metadata of a OTA package.\n * @param {File} file A OTA.zip file read from user's machine.\n */\n constructor(file: File | URL | ZipFile) {\n if (file instanceof File) {\n this.zipreader = new ZipReader(new BlobReader(file))\n } else if (file instanceof URL) {\n this.zipreader = new ZipReader(new HttpReader(file.href))\n } else {\n this.zipreader = file.reader\n }\n }\n\n getMetadataLength(): number {\n return (\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n )\n }\n\n /**\n * Unzip the OTA package, get payload.bin and metadata\n */\n async unzip() {\n let entries = await this.zipreader.getEntries()\n for (let entry of entries) {\n if (entry.filename == 'payload.bin') {\n let writer = new OTAPayloadBlobWriter('')\n try {\n await entry.getData!(writer)\n } catch (e) {\n if (e instanceof StopIteration) {\n // Exception used as a hack to stop reading from zip. NO need to do anything\n // Ideally zip.js would provide an API to partialll read a zip\n // entry, but they don't. So this is what we get\n } else {\n console.log(e)\n throw e\n }\n }\n this.buffer = writer.getData()\n await this.readManifest(this.buffer, writer.header!)\n console.log('AB OTA manifest parsed')\n } else if (entry.filename == 'META-INF/com/android/metadata') {\n this.metadata = await entry.getData!(new TextWriter())\n console.log('OTA Package metadata parsed')\n }\n }\n if (!this.manifest) {\n console.log('Failed to parse AB OTA package, falling back to non-AB')\n try {\n // The temporary variable manifest has to be used here, to prevent the html page\n // being rendered before everything is read in properly\n let manifest = new PayloadNonAB(this.zipreader)\n await manifest.init()\n manifest.nonAB = true\n this.manifest = manifest\n } catch (error) {\n alert('Please select a legit OTA package')\n return\n }\n }\n }\n\n /**\n * Read the header of payload.bin, including the magic, header_version,\n * manifest_len, metadata_signature_len.\n */\n /**\n * Read in the manifest in an OTA.zip file.\n * The structure of the manifest can be found in:\n * aosp/system/update_engine/update_metadata.proto\n */\n async readManifest(buffer: Blob, header: AbPayloadHeader) {\n this.header = header\n let cursor = _PAYLOAD_HEADER_SIZE\n let manifestBlob = await buffer\n .slice(cursor, cursor + header.manifest_len)\n .arrayBuffer()\n cursor += header.manifest_len\n this.manifest = update_metadata_pb.DeltaArchiveManifest.decode(\n new Uint8Array(manifestBlob)\n )\n let signatureBlob = await buffer\n .slice(cursor, cursor + header.metadata_signature_len)\n .arrayBuffer()\n cursor += header.metadata_signature_len\n this.metadata_signature = update_metadata_pb.Signatures.decode(\n new Uint8Array(signatureBlob)\n )\n this.manifest!.nonAB = false\n }\n\n parseMetadata() {\n for (let formatter of MetadataFormat) {\n let regex = new RegExp(formatter.prefix + '.+')\n if (this.metadata.match(regex)) {\n ;(this as any)[formatter.key] = trimEntry(\n this.metadata.match(regex)[0],\n formatter.prefix\n )\n } else {\n ;(this as any)[formatter.key] = ''\n }\n }\n }\n\n async init() {\n await this.unzip()\n this.parseMetadata()\n }\n}\n\nexport class DefaultMap extends Map {\n /** Reload the original get method. Return the original key value if\n * the key does not exist.\n * @param {Any} key\n */\n getWithDefault(key: any) {\n if (!this.has(key)) return key\n return this.get(key)\n }\n}\n\nexport class OpType {\n mapType: DefaultMap\n /**\n * OpType.mapType create a map that could resolve the operation\n * types. The operation types are encoded as numbers in\n * update_metadata.proto and must be decoded before any usage.\n */\n constructor() {\n let types = update_metadata_pb.InstallOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport class MergeOpType {\n mapType: DefaultMap\n /**\n * MergeOpType create a map that could resolve the COW merge operation\n * types. This is very similar to OpType class except that one is for\n * installation operations.\n */\n constructor() {\n let /** Array<{String: Number}>*/ types =\n update_metadata_pb.CowMergeOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport function octToHex(bufferArray: Uint8Array, space = true, maxLine = 16) {\n let hex_table = ''\n for (let i = 0; i < bufferArray.length; i++) {\n const hex /** String **/ = bufferArray[i].toString(16).toUpperCase()\n if (hex.length === 2) {\n hex_table += hex + (space ? ' ' : '')\n } else {\n hex_table += '0' + hex + (space ? ' ' : '')\n }\n if ((i + 1) % maxLine == 0 && space) {\n hex_table += '\\n'\n }\n }\n return hex_table\n}\n\n/**\n * Trim the prefix in an entry. This is required because the lookbehind\n * regular expression is not supported in safari yet.\n * @param {String} entry\n * @param {String} prefix\n * @return String\n */\nfunction trimEntry(entry: string, prefix: string) {\n return entry.slice(prefix.length + 1, entry.length)\n}\n","\n\n\n\n\n\n\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EChartsOption } from 'echarts'\n\nexport class EchartsData {\n statisticData: Map\n trimmedData: Map\n title: string\n unit: string\n maximumEntries: number\n /**\n * Given a set of [key, value] pairs and title, create an object for further\n * usage in Vue-Echarts.\n * @param {Map} statisticData\n * @param {String} title\n * @param {String} unit\n * @param {Number} maximumEntries\n */\n constructor(\n statisticData: Map,\n title: string,\n unit: string,\n maximumEntries = 15\n ) {\n this.statisticData = statisticData\n this.trimmedData = trimMap(statisticData, maximumEntries)\n this.title = title\n this.unit = unit\n this.maximumEntries = maximumEntries\n }\n\n /**\n * Convert the raw data into a string.\n * @return {String} A list of [key, value].\n */\n listData() {\n let /** String */ table = ''\n for (let [key, value] of this.statisticData) {\n table += key + ' : ' + value.toString() + ' Blocks' + '\\n'\n }\n return table\n }\n\n /**\n * Generate necessary parameters (option) for vue-echarts.\n * Format of the parameters can be found here:\n * https://echarts.apache.org/en/option.html\n * @param {String} unit\n * @return {Object} an ECharts option object.\n */\n getEchartsOption(): EChartsOption {\n let /** Object */ option: EChartsOption = {}\n option.title = {\n text: this.title,\n left: 'center'\n }\n option.tooltip = {\n trigger: 'item',\n formatter: '{a}
{b} : {c} ' + this.unit + ' ({d}%)'\n }\n option.legend = {\n orient: 'horizontal',\n left: 'top',\n top: '10%',\n data: Array.from(this.trimmedData.keys())\n }\n option.series = [\n {\n name: this.title,\n type: 'pie',\n radius: '55%',\n center: ['50%', '60%'],\n data: Array.from(this.trimmedData).map((pair: any) => {\n return { value: pair[1], name: pair[0] }\n }),\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)'\n }\n }\n }\n ]\n return option\n }\n}\n\n/**\n * When there are too many entries in the map, the pie chart can be very\n * crowded. This function will return the entries that have high values.\n * Specifically, the top will be stored and the others\n * will be added into an entry called 'other'.\n * @param {Map} map\n * @param {Number} maximumEntries\n * @return {Map}\n */\nfunction trimMap(map: Map, maximumEntries: number) {\n if (map.size <= maximumEntries) return map\n let /** Map */ new_map = new Map()\n for (let i = 0; i < maximumEntries; i++) {\n let /** Number */ curr = 0\n let /** String */ currKey = ''\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n if (value > curr) {\n curr = value\n currKey = key\n }\n }\n }\n new_map.set(currKey, curr)\n }\n let /** Number */ restTotal = 0\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n restTotal += value\n }\n }\n new_map.set('other', restTotal)\n return new_map\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class MapParser will take in a Android build and construct\n * several file name maps (physical address: file name) according to it.\n * The map of each partitions is added by calling MapParser.add(partitionName).\n * You can query the file name being operated by calling\n * MapParser.query(address, datalength).\n */\n\nimport {\n ZipReader,\n BlobReader,\n TextWriter,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\nimport { chromeos_update_engine } from './update_metadata_pb'\n\nexport class MapParser {\n build: ZipReader\n mapFiles: Map\n maps: Map\n /**\n * This class will take in a .zip Android build and construct a file type map\n * @param {File} targetFile\n */\n constructor(targetFile: File | URL) {\n if (targetFile instanceof File) {\n this.build = new ZipReader(new BlobReader(targetFile))\n } else {\n this.build = new ZipReader(new HttpReader(targetFile.href))\n }\n this.mapFiles = new Map()\n this.maps = new Map()\n }\n\n /**\n * Find the .map entries in the .zip build file. Store them as a map with\n * pairs of (partition name: zip.js entry).\n */\n async init() {\n let /** Array */ entries = await this.build.getEntries()\n const /** RegExp*/ regexPath = /IMAGES\\/[a-z_]*\\.map/g\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.map)/g\n entries.forEach(entry => {\n if (entry.filename.match(regexPath)) {\n this.mapFiles.set(entry.filename.match(regexName)![0], entry)\n }\n })\n }\n\n /**\n * According to the .map in the build, build a map for later query.\n * @param {String} partitionName\n * @param {Number} totalLength\n */\n async add(partitionName: string, totalLength: number) {\n let /** Array */ map = []\n const /** RegExp */ regexNumber = /\\d+/g\n const /** Reg */ regexRange = /\\d+\\-\\d+/g\n for (let i = 0; i < totalLength; i++) map[i] = `<${partitionName}>`\n if (this.mapFiles.get(partitionName)) {\n let /** String */ mapText = await this.mapFiles\n .get(partitionName)\n .getData(new TextWriter())\n let /** Array */ fileEntries = mapText.split('\\n')\n // Each line of the .map file in Android build starts with the filename\n // Followed by the block address, either a number or a range, for example:\n // //system/apex/com.android.adbd.apex 54-66 66 66-2663\n for (let entry of fileEntries) {\n let /** Array */ elements = entry.split(' ')\n for (let j = 1; j < elements.length; j++) {\n let /** Number */ left = 0\n let /** Number */ right = 0\n if (elements[j].match(regexRange)) {\n left = parseInt(elements[j].match(/\\d+/g)[0])\n right = parseInt(elements[j].match(/\\d+/g)[1])\n } else {\n left = parseInt(elements[j].match(regexNumber))\n right = parseInt(elements[j].match(regexNumber))\n }\n InsertMap(map, elements[0], left, right)\n }\n }\n this.maps.set(partitionName, map)\n } else {\n this.maps.set(partitionName, map)\n }\n }\n\n /**\n * Return the filename of given address.\n * @param {String} partitionName\n * @param {Array} extents\n * @return {Array}\n */\n query(partitionName: string, extents: Array) {\n let /** Array */ names = []\n let /** Array */ map = this.maps.get(partitionName)\n for (let ext of extents) {\n names.push(queryMap(map, ext.startBlock, ext.startBlock + ext.numBlocks))\n }\n return names\n }\n}\n\n/**\n * Fill in the hashtable from to using .\n * @param {Array} map\n * @param {String} name\n * @param {Number} left\n * @param {Number} right\n */\nfunction InsertMap(\n map: Array,\n name: string,\n left: number,\n right: number\n) {\n for (let i = left; i <= right; i++) {\n map[i] = name\n }\n}\n\n/**\n * Query the hashtable using index
.\n * @param {Array} map\n * @param {Number} left\n * @param {Number} right\n */\nfunction queryMap(map: Array, left: number, right: number) {\n // Assuming the consecutive blocks belong to the same file\n // Only the start block is queried here.\n if (!map[left]) {\n return 'unknown'\n }\n return map[left]\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Offer functions that can be used to parse the partitionUpdate\n * and then do statistics over it. One can use analysePartitions to specify the\n * partitions been analysed and metrics.\n */\n\nimport { OpType, MergeOpType } from './payload'\nimport { EchartsData } from './echarts_data'\nimport { MapParser } from './map_parser'\nimport { chromeos_update_engine } from './update_metadata_pb'\n\n/**\n * Add a to a element associated to . If the element dose not\n * exists than its value will be initialized to zero.\n * @param {Map} map\n * @param {String} key\n * @param {Number} value\n */\nfunction addNumberToMap(map: Map, key: String, value: number) {\n if (!map.get(key)) {\n map.set(key, 0)\n }\n map.set(key, map.get(key)! + value)\n}\n\n/**\n * Return a statistics over the numbers of blocks (in destination) that are\n * being operated by different installation operation (e.g. REPLACE, BSDIFF).\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedBlockStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n operatedBlocks,\n operationType,\n numBlocks(operation.dstExtents)\n )\n }\n }\n return operatedBlocks\n}\n\nexport function mergeOperationStatistics(\n partitions: Array,\n blockSize: number\n) {\n let /** Map */ mergeOperations = new Map()\n let /** MergeOpType */ opType = new MergeOpType()\n let /** Number */ totalBlocks = 0\n for (let partition of partitions) {\n for (let operation of partition.mergeOperations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n mergeOperations,\n operationType,\n operation.dstExtent!.numBlocks\n )\n }\n // The total blocks number should be rounded up\n if (partition.newPartitionInfo == null) {\n throw new Error(\n `Partition ${partition.partitionName} doesn't have new_partition_info field.`\n )\n }\n totalBlocks += Math.ceil(partition.newPartitionInfo.size / blockSize)\n }\n // The COW merge operation is default to be COW_replace and not shown in\n // the manifest info. We have to mannually add that part of operations,\n // by subtracting the total blocks with other blocks.\n mergeOperations.forEach((value, key) => (totalBlocks -= value))\n mergeOperations.set('COW_REPLACE', totalBlocks)\n return mergeOperations\n}\n\n/**\n * Return a statistics over the disk usage of payload.bin, based on the type of\n * installation operations. Only partitions that are being passed in will be\n * included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedPayloadStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(operatedBlocks, operationType, operation.dataLength)\n }\n }\n return operatedBlocks\n}\n/**\n * Return a statistics over the disk usage of each file types in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFileExtensionsStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let filenameStats = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n const fileExtenstionStats = new Map()\n filenameStats.forEach((size, filename) => {\n addNumberToMap(fileExtenstionStats, name2Extension(filename), size)\n })\n return fileExtenstionStats\n}\n\n/**\n * Return a statistics over the disk usage of each file name in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFilenamesStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let /** Map */ operatedFilenames = new Map()\n if (!targetFile) {\n return operatedFilenames\n }\n let buildMap = new MapParser(targetFile)\n await buildMap.init()\n for (let partition of partitions) {\n await buildMap.add(\n partition.partitionName,\n Math.ceil(partition.newPartitionInfo!.size / blockSize)\n )\n for (let operation of partition.operations!) {\n if (!operation.hasOwnProperty('dataLength')) continue\n let operatedFileNames = buildMap.query(\n partition.partitionName,\n operation.dstExtents!\n )\n let extentDataLength = distributeFilenames(\n operatedFileNames,\n operation.dstExtents!,\n operation.dataLength\n )\n extentDataLength!.forEach((value, key) => {\n addNumberToMap(operatedFilenames, key, value)\n })\n }\n }\n return operatedFilenames\n}\n\n/**\n * Analyse the given partitions using the given metrics.\n * @param {String} metrics\n * @param {Array} partitions\n * @return {EchartsData}\n */\nexport async function analysePartitions(\n metrics: String,\n partitions: Array,\n blockSize = 4096,\n targetFile: File | null | URL = null\n) {\n let /** Map */ statisticsData\n let /** Echartsdata */ echartsData\n switch (metrics) {\n case 'blocks':\n statisticsData = operatedBlockStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Operated blocks in target build',\n 'blocks'\n )\n break\n case 'payload':\n statisticsData = operatedPayloadStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Payload disk usage',\n 'bytes'\n )\n break\n case 'COWmerge':\n statisticsData = mergeOperationStatistics(partitions, blockSize)\n echartsData = new EchartsData(\n statisticsData,\n 'COW merge operations',\n 'blocks'\n )\n break\n case 'filenames':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated filenames',\n 'bytes'\n )\n break\n case 'extensions':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFileExtensionsStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated extensions',\n 'bytes'\n )\n break\n }\n if (echartsData) {\n return echartsData\n } else {\n throw 'Please double check if this is a proper AB OTA package.'\n }\n}\n\n/**\n * Calculate the number of blocks being operated\n * @param {Array} exts\n * @return {number}\n */\nexport function numBlocks(\n exts: Array | null | undefined\n) {\n if (!exts) {\n return 0\n }\n const accumulator = (total: number, ext: chromeos_update_engine.IExtent) =>\n total + ext.numBlocks\n return exts.reduce(accumulator, 0)\n}\n\n/**\n * Return a string that indicates the blocks being operated\n * in the manner of (start_block, block_length)\n * @param {Array} exts\n * @return {string}\n */\nexport function displayBlocks(exts: Array) {\n const accumulator = (total: string, ext: chromeos_update_engine.Extent) =>\n total + '(' + ext.startBlock + ',' + ext.numBlocks + ')'\n return exts.reduce(accumulator, '')\n}\n\n/**\n * Return a map with pairs of (file extension, data length used by this\n * extension). The total data length will be distributed by the blocks ratio\n * of each extent.\n * @param {Array} filenames\n * @param {Array} exts\n * @param {Number} length\n * @return {Map}\n */\nexport function distributeFilenames(\n filenames: Array,\n exts: Array,\n length: number\n): Map {\n let totalBlocks = numBlocks(exts)\n let distributedLengths = new Map()\n for (let i = 0; i < filenames.length; i++) {\n addNumberToMap(\n distributedLengths,\n filenames[i],\n Math.round((length * exts[i].numBlocks) / totalBlocks)\n )\n }\n return distributedLengths\n}\n\n/**\n * convert a filename into extension, for example:\n * '//system/apex/com.android.adbd.apex' => 'apex'\n * @param {String} filename\n * @return {String}\n */\nexport function name2Extension(filename: string) {\n let elements = filename.split('.')\n if (elements.length > 1) {\n return elements[elements.length - 1]\n } else if (elements[0] === 'unknown') {\n return 'unknown'\n } else if (filename[0] == '<' && filename.endsWith('>')) {\n return filename\n } else {\n return 'no-extension'\n }\n}\n","\nimport { numBlocks, displayBlocks } from '../services/payload_composition'\nimport { DefaultMap } from '../services/payload'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n operation: {\n type: Object,\n required: true\n },\n mapType: {\n type: DefaultMap,\n required: true\n }\n },\n data() {\n return {\n srcTotalBlocks: 0,\n srcBlocks: '',\n dstTotalBlocks: 0,\n dstBlocks: ''\n }\n },\n mounted() {\n if (this.operation.srcExtents) {\n this.srcTotalBlocks = numBlocks(this.operation.srcExtents)\n this.srcBlocks = displayBlocks(this.operation.srcExtents)\n }\n if (this.operation.dstExtents) {\n this.dstTotalBlocks = numBlocks(this.operation.dstExtents)\n this.dstBlocks = displayBlocks(this.operation.dstExtents)\n }\n }\n})\n","import { render } from \"./OperationDetail.vue?vue&type=template&id=44174082&scoped=true\"\nimport script from \"./OperationDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./OperationDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-44174082\"\n\nexport default script","\nimport { chromeos_update_engine } from '@/services/update_metadata_pb'\nimport { defineComponent } from 'vue'\nimport { OpType, octToHex } from '../services/payload'\nimport OperationDetail from './OperationDetail.vue'\n\nexport default defineComponent({\n components: {\n OperationDetail\n },\n props: {\n partition: {\n type: chromeos_update_engine.PartitionUpdate,\n required: true\n },\n dynamicPartitionList: {\n type: Array,\n required: true\n }\n },\n data() {\n return {\n showOPs: false,\n showInfo: false,\n opType: new OpType()\n }\n },\n methods: {\n toggle(key: string) {\n ;(this as any)[key] = !(this as any)[key]\n },\n octToHex: octToHex\n },\n computed: {\n readableTimestamp() {\n const unixTimestamp = parseInt(this.partition.version)\n if (isNaN(unixTimestamp)) {\n return ''\n }\n // Unix timestamp is in seconds, but js want milliseconds. So *1000\n return new Date(unixTimestamp * 1000).toString()\n },\n isDynamicPartition(): boolean {\n return (\n this.dynamicPartitionList.indexOf(this.partition.partitionName) >= 0\n )\n }\n }\n})\n","import { render } from \"./PartitionDetail.vue?vue&type=template&id=6dba348a&scoped=true\"\nimport script from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PartitionDetail.vue?vue&type=style&index=0&id=6dba348a&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-6dba348a\"\n\nexport default script","\n\n\n\n\n\n\n","import * as zip from '@zip.js/zip.js/dist/zip.js'\nimport { ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { Payload } from './payload'\n\nexport class ZipFile {\n public reader: ZipReader\n\n constructor(private file: File | URL) {\n this.reader = getZipReader(file)\n }\n getFileName() {\n return getFileName(this.file)\n }\n getFileSize() {\n if (this.file instanceof File) {\n return this.file.size\n } else {\n // TODO(zhangkelvin) Support getting file size from URL\n return 0\n }\n }\n}\n\nexport async function trimZip(\n file: ZipReader,\n p: (entry: zip.Entry) => boolean\n): Promise {\n const reader = file\n const writer = new zip.ZipWriter(new zip.BlobWriter('application/zip'))\n const entries = await reader.getEntries()\n for (const entry of entries.filter(entry => !!entry && p(entry))) {\n const blobWriter = new zip.BlobWriter()\n const data = (await entry.getData!(blobWriter)) as Blob\n console.log(`Adding ${entry.filename}, ${data.size}`)\n writer.add(entry.filename, new zip.BlobReader(blobWriter.getData()), {\n level: 0 // no compression\n })\n }\n return writer\n}\n\nfunction getZipReader(file: File | URL) {\n if (file instanceof File) {\n return new zip.ZipReader(new zip.BlobReader(file))\n } else {\n return new zip.ZipReader(new zip.HttpReader(file.href))\n }\n}\n\nexport function getFileName(file: File | URL) {\n if (file instanceof File) {\n return file.name\n } else {\n return file.pathname\n }\n}\n\nexport async function trimTargetFiles(file: File | URL): Promise {\n const writer = await trimZip(getZipReader(file), entry => {\n return entry.filename.startsWith('META/') || entry.filename.endsWith('.map')\n })\n return await writer.close()\n}\n\nexport async function trimOTAPackage(payload: Payload): Promise {\n const writer = await trimZip(payload.zipreader, entry => {\n return entry.filename != 'payload.bin'\n })\n await writer.add(\n 'payload.bin',\n new zip.BlobReader(payload.buffer!.slice(0, payload.getMetadataLength())),\n // Most toolings assume that payload.bin and other entries are not\n // compressed, so use level 0\n {\n level: 0\n }\n )\n const blob: Blob = await writer.close()\n return blob\n}\n\nexport function downloadFile(\n blob: Blob,\n downloadNode: HTMLAnchorElement,\n filename: string\n) {\n const url = window.URL.createObjectURL(blob)\n downloadNode.href = url\n downloadNode.download = filename\n downloadNode.click()\n window.URL.revokeObjectURL(url)\n}\n\nexport function ensureSuffix(str: string, suffix: string) {\n if (str.endsWith(suffix)) {\n return str\n } else {\n return str + suffix\n }\n}\n","\nimport { Payload, MetadataFormat } from '../services/payload'\nimport { ZipFile } from '@/services/trim_zip'\n\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n zipFile: {\n type: ZipFile,\n required: true\n },\n payload: {\n type: Payload,\n required: true\n }\n },\n data() {\n return {\n MetadataFormat\n }\n },\n computed: {\n otaMetadata(): {\n prefix: string\n key: string\n name: string\n }[] {\n return MetadataFormat.filter(formatter =>\n String((this.payload as any)[formatter.key]).length > 0\n );\n },\n totalCOWSize(): number {\n const cowSizes = this.payload?.manifest?.partitions.map(p => p.estimateCowSize || 0);\n if (!cowSizes) {\n return 0;\n }\n return cowSizes.reduce((a, b) => a + b);\n },\n totalDynamicPartitionSize(): number {\n const groups = this.payload?.manifest?.dynamicPartitionMetadata?.groups\n if (!groups) {\n return 0\n }\n const dynamicPartitionNamess = new Set(\n groups.flatMap(g => g.partitionNames)\n )\n const dynamicPartitions =\n this.payload.manifest?.partitions.filter(p =>\n dynamicPartitionNamess.has(p.partitionName)\n ) || []\n if (dynamicPartitions.length <= 0) {\n return 0\n }\n return dynamicPartitions\n .map(p => p.newPartitionInfo?.size || 0)\n .reduce((acc, cur) => acc + cur)\n }\n }\n})\n","import { render } from \"./BasicInfo.vue?vue&type=template&id=0514c264&scoped=true\"\nimport script from \"./BasicInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./BasicInfo.vue?vue&type=script&lang=ts\"\n\nimport \"./BasicInfo.vue?vue&type=style&index=0&id=0514c264&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-0514c264\"\n\nexport default script","\nimport PartitionDetail from './PartitionDetail.vue'\nimport BasicInfo from './BasicInfo.vue'\nimport { Payload, octToHex } from '../services/payload'\nimport {\n downloadFile,\n ensureSuffix,\n trimOTAPackage,\n ZipFile\n} from '@/services/trim_zip'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n components: {\n PartitionDetail,\n BasicInfo\n },\n props: {\n zipFile: {\n type: ZipFile,\n default: null\n },\n payload: {\n type: Payload,\n default: null\n }\n },\n methods: {\n octToHex: octToHex,\n async exportOTAPackage() {\n const blob = await trimOTAPackage(this.payload as Payload)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(this.zipFile.getFileName(), '.zip')\n )\n }\n },\n computed: {\n dynamicPartitions(): string[] {\n return (\n this.payload.manifest?.dynamicPartitionMetadata?.groups?.flatMap(\n g => g.partitionNames || []\n ) || []\n )\n }\n }\n})\n","import { render } from \"./PayloadDetail.vue?vue&type=template&id=05db67f2&scoped=true\"\nimport script from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-05db67f2\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n labels: {\n type: Array,\n default: new Array()\n },\n modelValue: {\n type: Map,\n default: new Map()\n }\n },\n data() {\n return {\n selectAll: 1,\n selectAllText: ['Select All', 'Unselect All']\n }\n },\n mounted() {\n // Set the default value to be true once mounted\n for (let key of this.labels) {\n this.modelValue.set(key, true)\n }\n },\n methods: {\n updateSelected(newSelect: string) {\n this.modelValue.set(newSelect, !this.modelValue.get(newSelect))\n this.$emit('update:modelValue', this.modelValue)\n },\n revertAllSelection() {\n this.selectAll = 1 - this.selectAll\n for (let key of this.modelValue.keys()) {\n this.modelValue.set(key, Boolean(this.selectAll))\n }\n }\n }\n})\n","import { render } from \"./PartialCheckbox.vue?vue&type=template&id=533f2336&scoped=true\"\nimport script from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\n\nimport \"./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-533f2336\"\n\nexport default script","\n\n\n\n\n\n\n","import { render } from \"./PieChart.vue?vue&type=template&id=5d1cb486&scoped=true\"\nimport script from \"./PieChart.vue?vue&type=script&lang=js\"\nexport * from \"./PieChart.vue?vue&type=script&lang=js\"\n\nimport \"./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-5d1cb486\"\n\nexport default script","\nimport axios from 'axios'\nimport PartialCheckbox from './PartialCheckbox.vue'\nimport PieChart from './PieChart.vue'\nimport BaseFile from './BaseFile.vue'\nimport { analysePartitions } from '../services/payload_composition'\nimport { chromeos_update_engine as update_metadata_pb } from '../services/update_metadata_pb'\nimport { TooltipComponentPositionCallbackParams } from 'echarts'\nimport { EchartsData } from '@/services/echarts_data'\nimport { defineComponent } from 'vue'\nimport {\n downloadFile,\n ensureSuffix,\n getFileName,\n trimTargetFiles\n} from '@/services/trim_zip'\n\ninterface ComponentState {\n partitionInclude: Map\n echartsData: EchartsData | null\n listData: string\n targetFile: File | URL | null\n}\n\nexport default defineComponent({\n components: {\n PartialCheckbox,\n PieChart,\n BaseFile\n },\n props: {\n manifest: {\n type: update_metadata_pb.DeltaArchiveManifest,\n default: () => []\n },\n demo: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n partitionInclude: new Map(),\n echartsData: null,\n listData: '',\n targetFile: null\n } as ComponentState\n },\n computed: {\n updatePartitions(): string[] {\n return this.manifest.partitions.map(\n (partition: update_metadata_pb.IPartitionUpdate) => {\n return partition.partitionName\n }\n )\n }\n },\n async mounted() {\n if (this.demo) {\n try {\n const download = await axios.get(\n './files/cf_x86_target_file_demo.zip',\n { responseType: 'blob' }\n )\n this.targetFile = new File([download.data], 'target_demo.zip')\n } catch (err) {\n console.log('Please put a proper example target file in /public/files/')\n }\n }\n },\n methods: {\n piechartClick(param: TooltipComponentPositionCallbackParams) {\n console.log(param)\n },\n async updateChart(metrics: string) {\n let partitionSelected = this.manifest.partitions.filter(partition =>\n this.partitionInclude.get(partition.partitionName)\n )\n try {\n this.echartsData = await analysePartitions(\n metrics,\n partitionSelected,\n this.manifest.blockSize,\n this.targetFile\n )\n } catch (err) {\n alert(`Cannot be processed for the following issue: ${err}`)\n }\n },\n selectBuild(file: File | URL) {\n //TODO(lishutong) check the version of target file is same to the OTA target\n this.targetFile = file\n },\n async exportTargetFileMetadata() {\n const blob = await trimTargetFiles(this.targetFile!)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(getFileName(this.targetFile!), '.zip')\n )\n }\n }\n})\n","import { render } from \"./PayloadComposition.vue?vue&type=template&id=44b569bd&scoped=true\"\nimport script from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadComposition.vue?vue&type=style&index=0&id=44b569bd&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-44b569bd\"\n\nexport default script","\nimport BaseFile from '../components/BaseFile.vue'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n BaseFile,\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return ({\n zipFile: null,\n payload: null\n } as unknown) as {\n zipFile: ZipFile\n payload: Payload\n }\n },\n methods: {\n async unpackOTA(file: File | URL) {\n this.zipFile = new ZipFile(file)\n try {\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n alert(`Please check if this is a correct OTA package (.zip). ${err}`)\n console.log(err)\n }\n }\n }\n})\n","import { render } from \"./PackageAnalysis.vue?vue&type=template&id=62e63758\"\nimport script from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nexport * from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\nimport axios from 'axios'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return {\n zipFile: null,\n payload: null\n } as {\n zipFile: ZipFile | null\n payload: Payload | null\n }\n },\n async created() {\n // put cf_x86_demo.zip and cf_x86_target_file_demo into\n // this directory: /public/files\n try {\n const download = await axios.get('./files/cf_x86_demo.zip', {\n responseType: 'blob'\n })\n this.zipFile = new ZipFile(new File([download.data], 'ota_demo.zip'))\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n console.log('Please put a proper example OTA in /public/files/')\n }\n }\n})\n","import { render } from \"./Demo.vue?vue&type=template&id=1e5d071a\"\nimport script from \"./Demo.vue?vue&type=script&lang=ts\"\nexport * from \"./Demo.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n","import { render } from \"./About.vue?vue&type=template&id=67ed0bf6\"\nconst script = {}\nscript.render = render\n\nexport default script","\n\n\n\n","import { render } from \"./NotFound.vue?vue&type=template&id=50c6f348&scoped=true\"\nconst script = {}\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-50c6f348\"\n\nexport default script","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createRouter, createWebHistory } from 'vue-router'\nimport PackageAnalysis from '@/views/PackageAnalysis.vue'\nimport Demo from'@/views/Demo.vue'\nimport About from '@/views/About.vue'\nimport NotFound from '@/views/NotFound.vue'\n\nconst routes = [\n {\n path: '/',\n name: 'Analysis',\n component: PackageAnalysis,\n meta: {\n title: 'Analyse OTA package - from AOSP'\n }\n },\n {\n path: '/demo',\n name: 'Demo',\n component: Demo\n },\n {\n path: '/about',\n name: 'About',\n component: About\n },\n {\n path: '/:catchAll(.*)',\n name: 'Not Found',\n component: NotFound\n }\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes\n})\n\n// This callback runs before every route change, including on page load.\nrouter.beforeEach((to, from, next) => {\n // This goes through the matched routes from last to first, finding the closest route with a title.\n // e.g., if we have `/some/deep/nested/route` and `/some`, `/deep`, and `/nested` have titles,\n // `/nested`'s will be chosen.\n const nearestWithTitle = to.matched.slice().reverse().find(r => r.meta && r.meta.title);\n\n // Find the nearest route element with meta tags.\n const nearestWithMeta = to.matched.slice().reverse().find(r => r.meta && r.meta.metaTags)!;\n\n const previousNearestWithMeta = from.matched.slice().reverse().find(r => r.meta && r.meta.metaTags);\n\n // If a route with a title was found, set the document (page) title to that value.\n if(nearestWithTitle) {\n document.title = nearestWithTitle.meta.title as string;\n } else if(previousNearestWithMeta) {\n document.title = previousNearestWithMeta.meta.title as string;\n }\n\n // Remove any stale meta tags from the document using the key attribute we set below.\n Array.from(document.querySelectorAll('[data-vue-router-controlled]')).map(el => el.parentNode!.removeChild(el));\n\n next();\n});\n\nexport default router\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createStore } from 'vuex'\n\nexport default createStore({\n state: {},\n mutations: {},\n actions: {},\n modules: {}\n})\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createApp } from 'vue'\nimport vuetify from './plugins/vuetify'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nconst app = createApp(App)\napp.use(router)\napp.use(store)\napp.use(vuetify)\n\napp.mount('#app')","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartitionDetail.vue?vue&type=style&index=0&id=6dba348a&scoped=true&lang=css\""],"sourceRoot":""} \ No newline at end of file diff --git a/analyseOTA/js/app.a773d410.js b/analyseOTA/js/app.a773d410.js new file mode 100644 index 0000000..c63d34f --- /dev/null +++ b/analyseOTA/js/app.a773d410.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var r,o,s=t[0],c=t[1],l=t[2],p=0,d=[];p>>3){case 1:r.startBlock=e.uint64();break;case 2:r.numBlocks=e.uint64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(pe["a"])(e)||null===e?"object expected":null==e.startBlock||!e.hasOwnProperty("startBlock")||ge.isInteger(e.startBlock)||e.startBlock&&ge.isInteger(e.startBlock.low)&&ge.isInteger(e.startBlock.high)?null==e.numBlocks||!e.hasOwnProperty("numBlocks")||ge.isInteger(e.numBlocks)||e.numBlocks&&ge.isInteger(e.numBlocks.low)&&ge.isInteger(e.numBlocks.high)?null:"numBlocks: integer|Long expected":"startBlock: integer|Long expected"},e.fromObject=function(e){if(e instanceof be.chromeos_update_engine.Extent)return e;var t=new be.chromeos_update_engine.Extent;return null!=e.startBlock&&(ge.Long?(t.startBlock=ge.Long.fromValue(e.startBlock)).unsigned=!0:"string"===typeof e.startBlock?t.startBlock=parseInt(e.startBlock,10):"number"===typeof e.startBlock?t.startBlock=e.startBlock:"object"===Object(pe["a"])(e.startBlock)&&(t.startBlock=new ge.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0))),null!=e.numBlocks&&(ge.Long?(t.numBlocks=ge.Long.fromValue(e.numBlocks)).unsigned=!0:"string"===typeof e.numBlocks?t.numBlocks=parseInt(e.numBlocks,10):"number"===typeof e.numBlocks?t.numBlocks=e.numBlocks:"object"===Object(pe["a"])(e.numBlocks)&&(t.numBlocks=new ge.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(ge.Long){var r=new ge.Long(0,0,!0);n.startBlock=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.startBlock=t.longs===String?"0":0;if(ge.Long){var a=new ge.Long(0,0,!0);n.numBlocks=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.numBlocks=t.longs===String?"0":0}return null!=e.startBlock&&e.hasOwnProperty("startBlock")&&("number"===typeof e.startBlock?n.startBlock=t.longs===String?String(e.startBlock):e.startBlock:n.startBlock=t.longs===String?ge.Long.prototype.toString.call(e.startBlock):t.longs===Number?new ge.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0):e.startBlock),null!=e.numBlocks&&e.hasOwnProperty("numBlocks")&&("number"===typeof e.numBlocks?n.numBlocks=t.longs===String?String(e.numBlocks):e.numBlocks:n.numBlocks=t.longs===String?ge.Long.prototype.toString.call(e.numBlocks):t.longs===Number?new ge.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0):e.numBlocks),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e}(),e.Signatures=function(){function e(e){if(this.signatures=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.signatures&&r.signatures.length||(r.signatures=[]),r.signatures.push(be.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(null!=e.signatures&&e.hasOwnProperty("signatures")){if(!Array.isArray(e.signatures))return"signatures: array expected";for(var t=0;t>>3){case 1:r.version=e.uint32();break;case 2:r.data=e.bytes();break;case 3:r.unpaddedSignatureSize=e.fixed32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(pe["a"])(e)||null===e?"object expected":null!=e.version&&e.hasOwnProperty("version")&&!ge.isInteger(e.version)?"version: integer expected":null!=e.data&&e.hasOwnProperty("data")&&!(e.data&&"number"===typeof e.data.length||ge.isString(e.data))?"data: buffer expected":null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&!ge.isInteger(e.unpaddedSignatureSize)?"unpaddedSignatureSize: integer expected":null},e.fromObject=function(e){if(e instanceof be.chromeos_update_engine.Signatures.Signature)return e;var t=new be.chromeos_update_engine.Signatures.Signature;return null!=e.version&&(t.version=e.version>>>0),null!=e.data&&("string"===typeof e.data?ge.base64.decode(e.data,t.data=ge.newBuffer(ge.base64.length(e.data)),0):e.data.length&&(t.data=e.data)),null!=e.unpaddedSignatureSize&&(t.unpaddedSignatureSize=e.unpaddedSignatureSize>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.version=0,t.bytes===String?n.data="":(n.data=[],t.bytes!==Array&&(n.data=ge.newBuffer(n.data))),n.unpaddedSignatureSize=0),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.data&&e.hasOwnProperty("data")&&(n.data=t.bytes===String?ge.base64.encode(e.data,0,e.data.length):t.bytes===Array?Array.prototype.slice.call(e.data):e.data),null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&(n.unpaddedSignatureSize=e.unpaddedSignatureSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e}(),e}(),e.PartitionInfo=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.size=e.uint64();break;case 2:r.hash=e.bytes();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(pe["a"])(e)||null===e?"object expected":null==e.size||!e.hasOwnProperty("size")||ge.isInteger(e.size)||e.size&&ge.isInteger(e.size.low)&&ge.isInteger(e.size.high)?null!=e.hash&&e.hasOwnProperty("hash")&&!(e.hash&&"number"===typeof e.hash.length||ge.isString(e.hash))?"hash: buffer expected":null:"size: integer|Long expected"},e.fromObject=function(e){if(e instanceof be.chromeos_update_engine.PartitionInfo)return e;var t=new be.chromeos_update_engine.PartitionInfo;return null!=e.size&&(ge.Long?(t.size=ge.Long.fromValue(e.size)).unsigned=!0:"string"===typeof e.size?t.size=parseInt(e.size,10):"number"===typeof e.size?t.size=e.size:"object"===Object(pe["a"])(e.size)&&(t.size=new ge.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0))),null!=e.hash&&("string"===typeof e.hash?ge.base64.decode(e.hash,t.hash=ge.newBuffer(ge.base64.length(e.hash)),0):e.hash.length&&(t.hash=e.hash)),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(ge.Long){var r=new ge.Long(0,0,!0);n.size=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.size=t.longs===String?"0":0;t.bytes===String?n.hash="":(n.hash=[],t.bytes!==Array&&(n.hash=ge.newBuffer(n.hash)))}return null!=e.size&&e.hasOwnProperty("size")&&("number"===typeof e.size?n.size=t.longs===String?String(e.size):e.size:n.size=t.longs===String?ge.Long.prototype.toString.call(e.size):t.longs===Number?new ge.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0):e.size),null!=e.hash&&e.hasOwnProperty("hash")&&(n.hash=t.bytes===String?ge.base64.encode(e.hash,0,e.hash.length):t.bytes===Array?Array.prototype.slice.call(e.hash):e.hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e}(),e.InstallOperation=function(){function e(e){if(this.srcExtents=[],this.dstExtents=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.dataOffset=e.uint64();break;case 3:r.dataLength=e.uint64();break;case 4:r.srcExtents&&r.srcExtents.length||(r.srcExtents=[]),r.srcExtents.push(be.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 5:r.srcLength=e.uint64();break;case 6:r.dstExtents&&r.dstExtents.length||(r.dstExtents=[]),r.dstExtents.push(be.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 7:r.dstLength=e.uint64();break;case 8:r.dataSha256Hash=e.bytes();break;case 9:r.srcSha256Hash=e.bytes();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("type"))throw ge.ProtocolError("missing required 'type'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 8:case 6:case 7:case 10:case 9:case 11:case 12:case 13:break}if(null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&!ge.isInteger(e.dataOffset)&&!(e.dataOffset&&ge.isInteger(e.dataOffset.low)&&ge.isInteger(e.dataOffset.high)))return"dataOffset: integer|Long expected";if(null!=e.dataLength&&e.hasOwnProperty("dataLength")&&!ge.isInteger(e.dataLength)&&!(e.dataLength&&ge.isInteger(e.dataLength.low)&&ge.isInteger(e.dataLength.high)))return"dataLength: integer|Long expected";if(null!=e.srcExtents&&e.hasOwnProperty("srcExtents")){if(!Array.isArray(e.srcExtents))return"srcExtents: array expected";for(var t=0;t>>0,e.dataOffset.high>>>0).toNumber(!0))),null!=e.dataLength&&(ge.Long?(t.dataLength=ge.Long.fromValue(e.dataLength)).unsigned=!0:"string"===typeof e.dataLength?t.dataLength=parseInt(e.dataLength,10):"number"===typeof e.dataLength?t.dataLength=e.dataLength:"object"===Object(pe["a"])(e.dataLength)&&(t.dataLength=new ge.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0))),e.srcExtents){if(!Array.isArray(e.srcExtents))throw TypeError(".chromeos_update_engine.InstallOperation.srcExtents: array expected");t.srcExtents=[];for(var n=0;n>>0,e.srcLength.high>>>0).toNumber(!0))),e.dstExtents){if(!Array.isArray(e.dstExtents))throw TypeError(".chromeos_update_engine.InstallOperation.dstExtents: array expected");t.dstExtents=[];for(var r=0;r>>0,e.dstLength.high>>>0).toNumber(!0))),null!=e.dataSha256Hash&&("string"===typeof e.dataSha256Hash?ge.base64.decode(e.dataSha256Hash,t.dataSha256Hash=ge.newBuffer(ge.base64.length(e.dataSha256Hash)),0):e.dataSha256Hash.length&&(t.dataSha256Hash=e.dataSha256Hash)),null!=e.srcSha256Hash&&("string"===typeof e.srcSha256Hash?ge.base64.decode(e.srcSha256Hash,t.srcSha256Hash=ge.newBuffer(ge.base64.length(e.srcSha256Hash)),0):e.srcSha256Hash.length&&(t.srcSha256Hash=e.srcSha256Hash)),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.srcExtents=[],n.dstExtents=[]),t.defaults){if(n.type=t.enums===String?"REPLACE":0,ge.Long){var r=new ge.Long(0,0,!0);n.dataOffset=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.dataOffset=t.longs===String?"0":0;if(ge.Long){var a=new ge.Long(0,0,!0);n.dataLength=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.dataLength=t.longs===String?"0":0;if(ge.Long){var i=new ge.Long(0,0,!0);n.srcLength=t.longs===String?i.toString():t.longs===Number?i.toNumber():i}else n.srcLength=t.longs===String?"0":0;if(ge.Long){var o=new ge.Long(0,0,!0);n.dstLength=t.longs===String?o.toString():t.longs===Number?o.toNumber():o}else n.dstLength=t.longs===String?"0":0;t.bytes===String?n.dataSha256Hash="":(n.dataSha256Hash=[],t.bytes!==Array&&(n.dataSha256Hash=ge.newBuffer(n.dataSha256Hash))),t.bytes===String?n.srcSha256Hash="":(n.srcSha256Hash=[],t.bytes!==Array&&(n.srcSha256Hash=ge.newBuffer(n.srcSha256Hash)))}if(null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?be.chromeos_update_engine.InstallOperation.Type[e.type]:e.type),null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&("number"===typeof e.dataOffset?n.dataOffset=t.longs===String?String(e.dataOffset):e.dataOffset:n.dataOffset=t.longs===String?ge.Long.prototype.toString.call(e.dataOffset):t.longs===Number?new ge.LongBits(e.dataOffset.low>>>0,e.dataOffset.high>>>0).toNumber(!0):e.dataOffset),null!=e.dataLength&&e.hasOwnProperty("dataLength")&&("number"===typeof e.dataLength?n.dataLength=t.longs===String?String(e.dataLength):e.dataLength:n.dataLength=t.longs===String?ge.Long.prototype.toString.call(e.dataLength):t.longs===Number?new ge.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0):e.dataLength),e.srcExtents&&e.srcExtents.length){n.srcExtents=[];for(var s=0;s>>0,e.srcLength.high>>>0).toNumber(!0):e.srcLength),e.dstExtents&&e.dstExtents.length){n.dstExtents=[];for(var c=0;c>>0,e.dstLength.high>>>0).toNumber(!0):e.dstLength),null!=e.dataSha256Hash&&e.hasOwnProperty("dataSha256Hash")&&(n.dataSha256Hash=t.bytes===String?ge.base64.encode(e.dataSha256Hash,0,e.dataSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.dataSha256Hash):e.dataSha256Hash),null!=e.srcSha256Hash&&e.hasOwnProperty("srcSha256Hash")&&(n.srcSha256Hash=t.bytes===String?ge.base64.encode(e.srcSha256Hash,0,e.srcSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.srcSha256Hash):e.srcSha256Hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="REPLACE"]=0,t[e[1]="REPLACE_BZ"]=1,t[e[2]="MOVE"]=2,t[e[3]="BSDIFF"]=3,t[e[4]="SOURCE_COPY"]=4,t[e[5]="SOURCE_BSDIFF"]=5,t[e[8]="REPLACE_XZ"]=8,t[e[6]="ZERO"]=6,t[e[7]="DISCARD"]=7,t[e[10]="BROTLI_BSDIFF"]=10,t[e[9]="PUFFDIFF"]=9,t[e[11]="ZUCCHINI"]=11,t[e[12]="LZ4DIFF_BSDIFF"]=12,t[e[13]="LZ4DIFF_PUFFDIFF"]=13,t}(),e}(),e.CowMergeOperation=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.srcExtent=be.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 3:r.dstExtent=be.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 4:r.srcOffset=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:break}if(null!=e.srcExtent&&e.hasOwnProperty("srcExtent")){var t=be.chromeos_update_engine.Extent.verify(e.srcExtent);if(t)return"srcExtent."+t}if(null!=e.dstExtent&&e.hasOwnProperty("dstExtent")){var n=be.chromeos_update_engine.Extent.verify(e.dstExtent);if(n)return"dstExtent."+n}return null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&!ge.isInteger(e.srcOffset)?"srcOffset: integer expected":null},e.fromObject=function(e){if(e instanceof be.chromeos_update_engine.CowMergeOperation)return e;var t=new be.chromeos_update_engine.CowMergeOperation;switch(e.type){case"COW_COPY":case 0:t.type=0;break;case"COW_XOR":case 1:t.type=1;break;case"COW_REPLACE":case 2:t.type=2;break}if(null!=e.srcExtent){if("object"!==Object(pe["a"])(e.srcExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.srcExtent: object expected");t.srcExtent=be.chromeos_update_engine.Extent.fromObject(e.srcExtent)}if(null!=e.dstExtent){if("object"!==Object(pe["a"])(e.dstExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.dstExtent: object expected");t.dstExtent=be.chromeos_update_engine.Extent.fromObject(e.dstExtent)}return null!=e.srcOffset&&(t.srcOffset=e.srcOffset>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.type=t.enums===String?"COW_COPY":0,n.srcExtent=null,n.dstExtent=null,n.srcOffset=0),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?be.chromeos_update_engine.CowMergeOperation.Type[e.type]:e.type),null!=e.srcExtent&&e.hasOwnProperty("srcExtent")&&(n.srcExtent=be.chromeos_update_engine.Extent.toObject(e.srcExtent,t)),null!=e.dstExtent&&e.hasOwnProperty("dstExtent")&&(n.dstExtent=be.chromeos_update_engine.Extent.toObject(e.dstExtent,t)),null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&(n.srcOffset=e.srcOffset),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="COW_COPY"]=0,t[e[1]="COW_XOR"]=1,t[e[2]="COW_REPLACE"]=2,t}(),e}(),e.PartitionUpdate=function(){function e(e){if(this.newPartitionSignature=[],this.operations=[],this.mergeOperations=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.partitionName=e.string();break;case 2:r.runPostinstall=e.bool();break;case 3:r.postinstallPath=e.string();break;case 4:r.filesystemType=e.string();break;case 5:r.newPartitionSignature&&r.newPartitionSignature.length||(r.newPartitionSignature=[]),r.newPartitionSignature.push(be.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;case 6:r.oldPartitionInfo=be.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:r.newPartitionInfo=be.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:r.operations&&r.operations.length||(r.operations=[]),r.operations.push(be.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 9:r.postinstallOptional=e.bool();break;case 10:r.hashTreeDataExtent=be.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 11:r.hashTreeExtent=be.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 12:r.hashTreeAlgorithm=e.string();break;case 13:r.hashTreeSalt=e.bytes();break;case 14:r.fecDataExtent=be.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 15:r.fecExtent=be.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 16:r.fecRoots=e.uint32();break;case 17:r.version=e.string();break;case 18:r.mergeOperations&&r.mergeOperations.length||(r.mergeOperations=[]),r.mergeOperations.push(be.chromeos_update_engine.CowMergeOperation.decode(e,e.uint32()));break;case 19:r.estimateCowSize=e.uint64();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("partitionName"))throw ge.ProtocolError("missing required 'partitionName'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(!ge.isString(e.partitionName))return"partitionName: string expected";if(null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&"boolean"!==typeof e.runPostinstall)return"runPostinstall: boolean expected";if(null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&!ge.isString(e.postinstallPath))return"postinstallPath: string expected";if(null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&!ge.isString(e.filesystemType))return"filesystemType: string expected";if(null!=e.newPartitionSignature&&e.hasOwnProperty("newPartitionSignature")){if(!Array.isArray(e.newPartitionSignature))return"newPartitionSignature: array expected";for(var t=0;t>>0),null!=e.version&&(t.version=String(e.version)),e.mergeOperations){if(!Array.isArray(e.mergeOperations))throw TypeError(".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected");t.mergeOperations=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.newPartitionSignature=[],n.operations=[],n.mergeOperations=[]),t.defaults)if(n.partitionName="",n.runPostinstall=!1,n.postinstallPath="",n.filesystemType="",n.oldPartitionInfo=null,n.newPartitionInfo=null,n.postinstallOptional=!1,n.hashTreeDataExtent=null,n.hashTreeExtent=null,n.hashTreeAlgorithm="",t.bytes===String?n.hashTreeSalt="":(n.hashTreeSalt=[],t.bytes!==Array&&(n.hashTreeSalt=ge.newBuffer(n.hashTreeSalt))),n.fecDataExtent=null,n.fecExtent=null,n.fecRoots=2,n.version="",ge.Long){var r=new ge.Long(0,0,!0);n.estimateCowSize=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.estimateCowSize=t.longs===String?"0":0;if(null!=e.partitionName&&e.hasOwnProperty("partitionName")&&(n.partitionName=e.partitionName),null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&(n.runPostinstall=e.runPostinstall),null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&(n.postinstallPath=e.postinstallPath),null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&(n.filesystemType=e.filesystemType),e.newPartitionSignature&&e.newPartitionSignature.length){n.newPartitionSignature=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0):e.estimateCowSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e}(),e.DynamicPartitionGroup=function(){function e(e){if(this.partitionNames=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.name=e.string();break;case 2:r.size=e.uint64();break;case 3:r.partitionNames&&r.partitionNames.length||(r.partitionNames=[]),r.partitionNames.push(e.string());break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("name"))throw ge.ProtocolError("missing required 'name'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(!ge.isString(e.name))return"name: string expected";if(null!=e.size&&e.hasOwnProperty("size")&&!ge.isInteger(e.size)&&!(e.size&&ge.isInteger(e.size.low)&&ge.isInteger(e.size.high)))return"size: integer|Long expected";if(null!=e.partitionNames&&e.hasOwnProperty("partitionNames")){if(!Array.isArray(e.partitionNames))return"partitionNames: array expected";for(var t=0;t>>0,e.size.high>>>0).toNumber(!0))),e.partitionNames){if(!Array.isArray(e.partitionNames))throw TypeError(".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected");t.partitionNames=[];for(var n=0;n>>0,e.size.high>>>0).toNumber(!0):e.size),e.partitionNames&&e.partitionNames.length){n.partitionNames=[];for(var a=0;a>>3){case 1:r.groups&&r.groups.length||(r.groups=[]),r.groups.push(be.chromeos_update_engine.DynamicPartitionGroup.decode(e,e.uint32()));break;case 2:r.snapshotEnabled=e.bool();break;case 3:r.vabcEnabled=e.bool();break;case 4:r.vabcCompressionParam=e.string();break;case 5:r.cowVersion=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(null!=e.groups&&e.hasOwnProperty("groups")){if(!Array.isArray(e.groups))return"groups: array expected";for(var t=0;t>>0),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.groups=[]),t.defaults&&(n.snapshotEnabled=!1,n.vabcEnabled=!1,n.vabcCompressionParam="",n.cowVersion=0),e.groups&&e.groups.length){n.groups=[];for(var r=0;r>>3){case 1:r.packageName=e.string();break;case 2:r.version=e.int64();break;case 3:r.isCompressed=e.bool();break;case 4:r.decompressedSize=e.int64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(pe["a"])(e)||null===e?"object expected":null!=e.packageName&&e.hasOwnProperty("packageName")&&!ge.isString(e.packageName)?"packageName: string expected":null==e.version||!e.hasOwnProperty("version")||ge.isInteger(e.version)||e.version&&ge.isInteger(e.version.low)&&ge.isInteger(e.version.high)?null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&"boolean"!==typeof e.isCompressed?"isCompressed: boolean expected":null==e.decompressedSize||!e.hasOwnProperty("decompressedSize")||ge.isInteger(e.decompressedSize)||e.decompressedSize&&ge.isInteger(e.decompressedSize.low)&&ge.isInteger(e.decompressedSize.high)?null:"decompressedSize: integer|Long expected":"version: integer|Long expected"},e.fromObject=function(e){if(e instanceof be.chromeos_update_engine.ApexInfo)return e;var t=new be.chromeos_update_engine.ApexInfo;return null!=e.packageName&&(t.packageName=String(e.packageName)),null!=e.version&&(ge.Long?(t.version=ge.Long.fromValue(e.version)).unsigned=!1:"string"===typeof e.version?t.version=parseInt(e.version,10):"number"===typeof e.version?t.version=e.version:"object"===Object(pe["a"])(e.version)&&(t.version=new ge.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber())),null!=e.isCompressed&&(t.isCompressed=Boolean(e.isCompressed)),null!=e.decompressedSize&&(ge.Long?(t.decompressedSize=ge.Long.fromValue(e.decompressedSize)).unsigned=!1:"string"===typeof e.decompressedSize?t.decompressedSize=parseInt(e.decompressedSize,10):"number"===typeof e.decompressedSize?t.decompressedSize=e.decompressedSize:"object"===Object(pe["a"])(e.decompressedSize)&&(t.decompressedSize=new ge.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber())),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(n.packageName="",ge.Long){var r=new ge.Long(0,0,!1);n.version=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.version=t.longs===String?"0":0;if(n.isCompressed=!1,ge.Long){var a=new ge.Long(0,0,!1);n.decompressedSize=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.decompressedSize=t.longs===String?"0":0}return null!=e.packageName&&e.hasOwnProperty("packageName")&&(n.packageName=e.packageName),null!=e.version&&e.hasOwnProperty("version")&&("number"===typeof e.version?n.version=t.longs===String?String(e.version):e.version:n.version=t.longs===String?ge.Long.prototype.toString.call(e.version):t.longs===Number?new ge.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber():e.version),null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&(n.isCompressed=e.isCompressed),null!=e.decompressedSize&&e.hasOwnProperty("decompressedSize")&&("number"===typeof e.decompressedSize?n.decompressedSize=t.longs===String?String(e.decompressedSize):e.decompressedSize:n.decompressedSize=t.longs===String?ge.Long.prototype.toString.call(e.decompressedSize):t.longs===Number?new ge.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber():e.decompressedSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e}(),e.ApexMetadata=function(){function e(e){if(this.apexInfo=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(be.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(null!=e.apexInfo&&e.hasOwnProperty("apexInfo")){if(!Array.isArray(e.apexInfo))return"apexInfo: array expected";for(var t=0;t>>3){case 3:r.blockSize=e.uint32();break;case 4:r.signaturesOffset=e.uint64();break;case 5:r.signaturesSize=e.uint64();break;case 12:r.minorVersion=e.uint32();break;case 13:r.partitions&&r.partitions.length||(r.partitions=[]),r.partitions.push(be.chromeos_update_engine.PartitionUpdate.decode(e,e.uint32()));break;case 14:r.maxTimestamp=e.int64();break;case 15:r.dynamicPartitionMetadata=be.chromeos_update_engine.DynamicPartitionMetadata.decode(e,e.uint32());break;case 16:r.partialUpdate=e.bool();break;case 17:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(be.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;case 18:r.securityPatchLevel=e.string();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(null!=e.blockSize&&e.hasOwnProperty("blockSize")&&!ge.isInteger(e.blockSize))return"blockSize: integer expected";if(null!=e.signaturesOffset&&e.hasOwnProperty("signaturesOffset")&&!ge.isInteger(e.signaturesOffset)&&!(e.signaturesOffset&&ge.isInteger(e.signaturesOffset.low)&&ge.isInteger(e.signaturesOffset.high)))return"signaturesOffset: integer|Long expected";if(null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&!ge.isInteger(e.signaturesSize)&&!(e.signaturesSize&&ge.isInteger(e.signaturesSize.low)&&ge.isInteger(e.signaturesSize.high)))return"signaturesSize: integer|Long expected";if(null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&!ge.isInteger(e.minorVersion))return"minorVersion: integer expected";if(null!=e.partitions&&e.hasOwnProperty("partitions")){if(!Array.isArray(e.partitions))return"partitions: array expected";for(var t=0;t>>0),null!=e.signaturesOffset&&(ge.Long?(t.signaturesOffset=ge.Long.fromValue(e.signaturesOffset)).unsigned=!0:"string"===typeof e.signaturesOffset?t.signaturesOffset=parseInt(e.signaturesOffset,10):"number"===typeof e.signaturesOffset?t.signaturesOffset=e.signaturesOffset:"object"===Object(pe["a"])(e.signaturesOffset)&&(t.signaturesOffset=new ge.LongBits(e.signaturesOffset.low>>>0,e.signaturesOffset.high>>>0).toNumber(!0))),null!=e.signaturesSize&&(ge.Long?(t.signaturesSize=ge.Long.fromValue(e.signaturesSize)).unsigned=!0:"string"===typeof e.signaturesSize?t.signaturesSize=parseInt(e.signaturesSize,10):"number"===typeof e.signaturesSize?t.signaturesSize=e.signaturesSize:"object"===Object(pe["a"])(e.signaturesSize)&&(t.signaturesSize=new ge.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0))),null!=e.minorVersion&&(t.minorVersion=e.minorVersion>>>0),e.partitions){if(!Array.isArray(e.partitions))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected");t.partitions=[];for(var n=0;n>>0,e.maxTimestamp.high>>>0).toNumber())),null!=e.dynamicPartitionMetadata){if("object"!==Object(pe["a"])(e.dynamicPartitionMetadata))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected");t.dynamicPartitionMetadata=be.chromeos_update_engine.DynamicPartitionMetadata.fromObject(e.dynamicPartitionMetadata)}if(null!=e.partialUpdate&&(t.partialUpdate=Boolean(e.partialUpdate)),e.apexInfo){if(!Array.isArray(e.apexInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected");t.apexInfo=[];for(var r=0;r>>0,e.signaturesOffset.high>>>0).toNumber(!0):e.signaturesOffset),null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&("number"===typeof e.signaturesSize?n.signaturesSize=t.longs===String?String(e.signaturesSize):e.signaturesSize:n.signaturesSize=t.longs===String?ge.Long.prototype.toString.call(e.signaturesSize):t.longs===Number?new ge.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0):e.signaturesSize),null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&(n.minorVersion=e.minorVersion),e.partitions&&e.partitions.length){n.partitions=[];for(var o=0;o>>0,e.maxTimestamp.high>>>0).toNumber():e.maxTimestamp),null!=e.dynamicPartitionMetadata&&e.hasOwnProperty("dynamicPartitionMetadata")&&(n.dynamicPartitionMetadata=be.chromeos_update_engine.DynamicPartitionMetadata.toObject(e.dynamicPartitionMetadata,t)),null!=e.partialUpdate&&e.hasOwnProperty("partialUpdate")&&(n.partialUpdate=e.partialUpdate),e.apexInfo&&e.apexInfo.length){n.apexInfo=[];for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:"";return Object(we["a"])(this,n),e=t.call(this),e.offset=0,e.contentType=r,e.blob=new Blob([],{type:r}),e.prefixLength=0,e}return Object(ve["a"])(n,[{key:"readHeader",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r,a,i,o,s,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return n=0,r=function(e){var r=Fe(t,n,e);return n+=e,r},e.next=4,t.slice(0,Te).arrayBuffer();case 4:if(a=e.sent,i=new TextDecoder,o=a.slice(0,Le.length),s=i.decode(o),s==Le){e.next=10;break}throw new Error("MAGIC is not correct, expected: ".concat(Le," actual: ").concat(s));case 10:return n+=Le.length,e.next=13,r(Ie);case 13:return c=e.sent,e.next=16,r(ze);case 16:if(l=e.sent,c==Be){e.next=19;break}throw new Error("Unexpected major version number: ".concat(c));case 19:return e.next=21,r(Ae);case 21:u=e.sent,this.header=new De(s,c,l,u);case 23:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"writeUint8Array",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(Object(ye["a"])(Object(je["a"])(n.prototype),"writeUint8Array",this).call(this,t),this.blob=new Blob([this.blob,t.buffer],{type:this.contentType}),this.offset=this.blob.size,!(this.offset>=Te&&0==this.prefixLength)){e.next=9;break}return console.log("Parsing header!"),e.next=7,this.readHeader(this.blob);case 7:this.prefixLength=Te+this.header.manifest_len+this.header.metadata_signature_len,console.log("Computed metadata length: ".concat(this.prefixLength));case 9:if(!(this.prefixLength>0)){e.next=14;break}if(console.log("".concat(this.offset,"/").concat(this.prefixLength)),!(this.offset>=this.prefixLength)){e.next=14;break}throw this.blob=this.blob.slice(0,this.prefixLength),new Ce;case 14:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getData",value:function(){return this.blob}}]),n}(Pe["Writer"]),He=function(){function e(t){Object(we["a"])(this,e),t instanceof File?this.zipreader=new Pe["ZipReader"](new Pe["BlobReader"](t)):t instanceof URL?this.zipreader=new Pe["ZipReader"](new Pe["HttpReader"](t.href)):this.zipreader=t.reader}return Object(ve["a"])(e,[{key:"getMetadataLength",value:function(){return Te+this.header.manifest_len+this.header.metadata_signature_len}},{key:"unzip",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a,i,o,s;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.zipreader.getEntries();case 2:t=e.sent,n=Object(Oe["a"])(t),e.prev=4,n.s();case 6:if((r=n.n()).done){e.next=44;break}if(a=r.value,"payload.bin"!=a.filename){e.next=28;break}return i=new Me(""),e.prev=10,e.next=13,a.getData(i);case 13:e.next=22;break;case 15:if(e.prev=15,e.t0=e["catch"](10),!(e.t0 instanceof Ce)){e.next=20;break}e.next=22;break;case 20:throw console.log(e.t0),e.t0;case 22:return this.buffer=i.getData(),e.next=25,this.readManifest(this.buffer,i.header);case 25:console.log("AB OTA manifest parsed"),e.next=42;break;case 28:if("META-INF/com/android/metadata"!=a.filename){e.next=35;break}return e.next=31,a.getData(new Pe["TextWriter"]);case 31:this.metadata=e.sent,console.log("OTA Package metadata parsed"),e.next=42;break;case 35:if("payload_properties.txt"!=a.filename){e.next=42;break}return e.next=38,a.getData(new Pe["TextWriter"]);case 38:o=e.sent,this.payload_properties=o.split("\n"),console.log("OTA payload_properties.txt parsed"),console.log(this.getPayloadHash());case 42:e.next=6;break;case 44:e.next=49;break;case 46:e.prev=46,e.t1=e["catch"](4),n.e(e.t1);case 49:return e.prev=49,n.f(),e.finish(49);case 52:if(this.manifest){e.next=66;break}return console.log("Failed to parse AB OTA package, falling back to non-AB"),e.prev=54,s=new _e(this.zipreader),e.next=58,s.init();case 58:s.nonAB=!0,this.manifest=s,e.next=66;break;case 62:return e.prev=62,e.t2=e["catch"](54),alert("Please select a legit OTA package"),e.abrupt("return");case 66:case"end":return e.stop()}}),e,this,[[4,46,49,52],[10,15],[54,62]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"getPayloadHash",value:function(){var e,t="FILE_HASH=",n=Object(Oe["a"])(this.payload_properties);try{for(n.s();!(e=n.n()).done;){var r=e.value;if(r.startsWith(t))return Xe(r.substring(t.length))}}catch(a){n.e(a)}finally{n.f()}}},{key:"readManifest",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.header=n,r=Te,e.next=4,t.slice(r,r+n.manifest_len).arrayBuffer();case 4:return a=e.sent,r+=n.manifest_len,this.manifest=me.DeltaArchiveManifest.decode(new Uint8Array(a)),e.next=9,t.slice(r,r+n.metadata_signature_len).arrayBuffer();case 9:i=e.sent,r+=n.metadata_signature_len,this.metadata_signature=me.Signatures.decode(new Uint8Array(i)),this.manifest.nonAB=!1;case 13:case"end":return e.stop()}}),e,this)})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"parseMetadata",value:function(){var e,t=Object(Oe["a"])(Ne);try{for(t.s();!(e=t.n()).done;){var n=e.value,r=new RegExp(n.prefix+".+");this.metadata&&this.metadata.match(r)?this[n.key]=Je(this.metadata.match(r)[0],n.prefix):this[n.key]=""}}catch(a){t.e(a)}finally{t.f()}}},{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.unzip();case 2:this.parseMetadata();case 3:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}]),e}(),Ue=function(e){Object(xe["a"])(n,e);var t=Object(ke["a"])(n);function n(){return Object(we["a"])(this,n),t.apply(this,arguments)}return Object(ve["a"])(n,[{key:"getWithDefault",value:function(e){return this.has(e)?this.get(e):e}}]),n}(Object(Se["a"])(Map)),Ve=Object(ve["a"])((function e(){Object(we["a"])(this,e);var t=me.InstallOperation.Type;this.mapType=new Ue;for(var n=0,r=Object.keys(t);n1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:16,r="",a=0;a3&&void 0!==arguments[3]?arguments[3]:15;Object(we["a"])(this,e),this.statisticData=t,this.trimmedData=ct(t,a),this.title=n,this.unit=r,this.maximumEntries=a}return Object(ve["a"])(e,[{key:"listData",value:function(){var e,t="",n=Object(Oe["a"])(this.statisticData);try{for(n.s();!(e=n.n()).done;){var r=Object(ot["a"])(e.value,2),a=r[0],i=r[1];t+=a+" : "+i.toString()+" Blocks\n"}}catch(o){n.e(o)}finally{n.f()}return t}},{key:"getEchartsOption",value:function(){var e={};return e.title={text:this.title,left:"center"},e.tooltip={trigger:"item",formatter:"{a}
{b} : {c} "+this.unit+" ({d}%)"},e.legend={orient:"horizontal",left:"top",top:"10%",data:Array.from(this.trimmedData.keys())},e.series=[{name:this.title,type:"pie",radius:"55%",center:["50%","60%"],data:Array.from(this.trimmedData).map((function(e){return{value:e[1],name:e[0]}})),emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],e}}]),e}();function ct(e,t){if(e.size<=t)return e;for(var n=new Map,r=0;ri&&(i=u,o=l)}}catch(m){s.e(m)}finally{s.f()}n.set(o,i)}var p,d=0,f=Object(Oe["a"])(e);try{for(f.s();!(p=f.n()).done;){var h=Object(ot["a"])(p.value,2),g=h[0],b=h[1];n.get(g)||(d+=b)}}catch(m){f.e(m)}finally{f.f()}return n.set("other",d),n}var lt=function(){function e(t){Object(we["a"])(this,e),t instanceof File?this.build=new Pe["ZipReader"](new Pe["BlobReader"](t)):this.build=new Pe["ZipReader"](new Pe["HttpReader"](t.href)),this.mapFiles=new Map,this.maps=new Map}return Object(ve["a"])(e,[{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a=this;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.build.getEntries();case 2:t=e.sent,n=/IMAGES\/[a-z_]*\.map/g,r=/[\w_]+(?=\.map)/g,t.forEach((function(e){e.filename.match(n)&&a.mapFiles.set(e.filename.match(r)[0],e)}));case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"add",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,c,l,u,p,d,f,h,g;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:for(r=[],a=/\d+/g,i=/\d+\-\d+/g,o=0;o");if(!this.mapFiles.get(t)){e.next=14;break}return e.next=7,this.mapFiles.get(t).getData(new Pe["TextWriter"]);case 7:s=e.sent,c=s.split("\n"),l=Object(Oe["a"])(c);try{for(l.s();!(u=l.n()).done;)for(p=u.value,d=p.split(" "),f=1;f2&&void 0!==s[2]?s[2]:4096,a=s.length>3&&void 0!==s[3]?s[3]:null,e.t0=t,e.next="blocks"===e.t0?5:"payload"===e.t0?8:"COWmerge"===e.t0?11:"filenames"===e.t0?14:"extensions"===e.t0?21:"partitions"===e.t0?28:31;break;case 5:return i=ft(n),o=new st(i,"Operated blocks in target build","blocks"),e.abrupt("break",31);case 8:return i=mt(n),o=new st(i,"Payload disk usage","bytes"),e.abrupt("break",31);case 11:return i=bt(n,r),o=new st(i,"COW merge operations","blocks"),e.abrupt("break",31);case 14:if(null!=a){e.next=16;break}throw new Error("Target file is required for filenames analysis");case 16:return e.next=18,jt(n,r,a);case 18:return i=e.sent,o=new st(i,"Size of operated filenames","bytes"),e.abrupt("break",31);case 21:if(null!=a){e.next=23;break}throw new Error("Target file is required for filenames analysis");case 23:return e.next=25,Ot(n,r,a);case 25:return i=e.sent,o=new st(i,"Size of operated extensions","bytes"),e.abrupt("break",31);case 28:return i=gt(n),o=new st(i,"Partition payload size","bytes"),e.abrupt("break",31);case 31:if(!o){e.next=35;break}return e.abrupt("return",o);case 35:throw"Please double check if this is a proper AB OTA package.";case 36:case"end":return e.stop()}}),e)}))),xt.apply(this,arguments)}function kt(e){if(!e)return 0;var t=function(e,t){return e+t.numBlocks};return e.reduce(t,0)}function St(e){var t=function(e,t){return e+"("+t.startBlock+","+t.numBlocks+")"};return e.reduce(t,"")}function Pt(e,t,n){for(var r=kt(t),a=new Map,i=0;i1?t[t.length-1]:"unknown"===t[0]?"unknown":"<"==e[0]&&e.endsWith(">")?e:"no-extension"}var Et=Object(r["m"])({props:{operation:{type:Object,required:!0},mapType:{type:Ue,required:!0}},data:function(){return{srcTotalBlocks:0,srcBlocks:"",dstTotalBlocks:0,dstBlocks:""}},mounted:function(){this.operation.srcExtents&&(this.srcTotalBlocks=kt(this.operation.srcExtents),this.srcBlocks=St(this.operation.srcExtents)),this.operation.dstExtents&&(this.dstTotalBlocks=kt(this.operation.dstExtents),this.dstBlocks=St(this.operation.dstExtents))}});n("8edb");Et.render=it,Et.__scopeId="data-v-44174082";var Lt=Et,It=Object(r["m"])({components:{OperationDetail:Lt},props:{partition:{type:me.PartitionUpdate,required:!0},dynamicPartitionList:{type:Array,required:!0}},data:function(){return{showOPs:!1,showInfo:!1,opType:new Ve}},methods:{toggle:function(e){this[e]=!this[e]},octToHex:Ze},computed:{readableTimestamp:function(){var e=parseInt(this.partition.version);return isNaN(e)?"":new Date(1e3*e).toString()},isDynamicPartition:function(){return this.dynamicPartitionList.indexOf(this.partition.partitionName)>=0},isFECEnabled:function(){var e;return(null===(e=this.partition.fecExtent)||void 0===e?void 0:e.numBlocks)>0},isHashtreeEnabled:function(){var e;return(null===(e=this.partition.hashTreeExtent)||void 0===e?void 0:e.numBlocks)>0}}});n("c622");It.render=ue,It.__scopeId="data-v-21e569e9";var zt=It,At=(n("498a"),Object(r["Z"])("data-v-78cae893"));Object(r["D"])("data-v-78cae893");var Tt=Object(r["l"])("h3",null,"Basic infos",-1),Bt={class:"align"},Nt=Object(r["l"])("strong",null," File name ",-1),Ct=Object(r["l"])("strong",null," File size ",-1),Dt={class:"align"},Ft={class:"wrap"},Rt={key:2},Mt={class:"align"},Ht=Object(r["l"])("strong",null," Incremental ",-1),Ut={key:0},Vt={key:1},Wt=Object(r["l"])("strong",null," Partial ",-1),Zt={key:0},Jt={key:1},Xt=Object(r["l"])("strong",null," A/B update ",-1),qt={key:0},Gt={key:1},$t={key:0},Yt=Object(r["l"])("strong",null," VAB ",-1),Kt={key:0},Qt={key:1},en={key:1},tn=Object(r["l"])("strong",null," VABC ",-1),nn={key:0},rn={key:1},an=Object(r["l"])("strong",null," Wipes Data ",-1),on={key:0},sn={key:1},cn={key:2},ln=Object(r["l"])("strong",null," Total Dynamic Partition Size ",-1),un={key:3},pn=Object(r["l"])("strong",null," Total VABC COW Size ",-1),dn={key:4},fn=Object(r["l"])("strong",null," VABC Compression Param ",-1),hn={key:5},gn=Object(r["l"])("strong",null," Security Patch Level ",-1);Object(r["B"])();var bn=At((function(e,t,n,a,i,o){return Object(r["A"])(),Object(r["i"])(r["a"],null,[Tt,e.zipFile?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:0},e.$attrs),[Object(r["l"])("ul",Bt,[Object(r["l"])("li",null,[Nt,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileName()),1)]),Object(r["l"])("li",null,[Ct,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileSize())+" Bytes",1)])])],16)):Object(r["j"])("",!0),e.payload&&e.payload.metadata?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:1},e.$attrs),[Object(r["l"])("ul",Dt,[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.otaMetadata,(function(t){return Object(r["A"])(),Object(r["i"])("li",{key:t.name},[Object(r["l"])("strong",null,Object(r["N"])(t.name.trim()+" "),1),Object(r["l"])("p",Ft,Object(r["N"])(String(e.payload[t.key]).trim()),1)])})),128))])],16)):Object(r["j"])("",!0),e.payload&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])("div",Rt,[Object(r["l"])("ul",Mt,[Object(r["l"])("li",null,[Ht,e.payload.preBuild?(Object(r["A"])(),Object(r["i"])("span",Ut," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Vt," ❌ "))]),Object(r["l"])("li",null,[Wt,e.payload.manifest.partialUpdate?(Object(r["A"])(),Object(r["i"])("span",Zt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Jt," ❌ "))]),Object(r["l"])("li",null,[Xt,e.payload.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",Gt," ❌ ")):(Object(r["A"])(),Object(r["i"])("span",qt," ✅ "))]),e.payload.manifest.dynamicPartitionMetadata?(Object(r["A"])(),Object(r["i"])("li",$t,[Yt,e.payload.manifest.dynamicPartitionMetadata.snapshotEnabled?(Object(r["A"])(),Object(r["i"])("span",Kt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Qt," ❌ "))])):Object(r["j"])("",!0),e.payload.manifest.dynamicPartitionMetadata?(Object(r["A"])(),Object(r["i"])("li",en,[tn,e.payload.manifest.dynamicPartitionMetadata.vabcEnabled?(Object(r["A"])(),Object(r["i"])("span",nn," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",rn," ❌ "))])):Object(r["j"])("",!0),Object(r["l"])("li",null,[an,e.isDataWipePackage?(Object(r["A"])(),Object(r["i"])("span",on," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",sn," ❌ "))]),e.totalDynamicPartitionSize?(Object(r["A"])(),Object(r["i"])("li",cn,[ln,Object(r["k"])(" "+Object(r["N"])(e.totalDynamicPartitionSize),1)])):Object(r["j"])("",!0),e.totalCOWSize?(Object(r["A"])(),Object(r["i"])("li",un,[pn,Object(r["k"])(" "+Object(r["N"])(e.totalCOWSize),1)])):Object(r["j"])("",!0),e.vabcCompressionParam?(Object(r["A"])(),Object(r["i"])("li",dn,[fn,Object(r["k"])(" "+Object(r["N"])(e.vabcCompressionParam),1)])):Object(r["j"])("",!0),e.securityPatchLevel?(Object(r["A"])(),Object(r["i"])("li",hn,[gn,Object(r["k"])(" "+Object(r["N"])(e.securityPatchLevel),1)])):Object(r["j"])("",!0)])])):Object(r["j"])("",!0)],64)})),mn=(n("caad"),n("2532"),n("4de4"),n("6062"),function(){function e(t){Object(we["a"])(this,e),this.file=t,this.reader=jn(t)}return Object(ve["a"])(e,[{key:"getFileName",value:function(){return vn(this.file)}},{key:"getFileSize",value:function(){return this.file instanceof File?this.file.size:0}}]),e}());function On(e,t){return yn.apply(this,arguments)}function yn(){return yn=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return r=t,a=new Pe["ZipWriter"](new Pe["BlobWriter"]("application/zip")),e.next=4,r.getEntries();case 4:i=e.sent,o=Object(Oe["a"])(i.filter((function(e){return!!e&&n(e)}))),e.prev=6,o.s();case 8:if((s=o.n()).done){e.next=18;break}return c=s.value,l=new Pe["BlobWriter"],e.next=13,c.getData(l);case 13:u=e.sent,console.log("Adding ".concat(c.filename,", ").concat(u.size)),a.add(c.filename,new Pe["BlobReader"](l.getData()),{level:0});case 16:e.next=8;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e["catch"](6),o.e(e.t0);case 23:return e.prev=23,o.f(),e.finish(23);case 26:return e.abrupt("return",a);case 27:case"end":return e.stop()}}),e,null,[[6,20,23,26]])}))),yn.apply(this,arguments)}function jn(e){return e instanceof File?new Pe["ZipReader"](new Pe["BlobReader"](e)):new Pe["ZipReader"](new Pe["HttpReader"](e.href))}function vn(e){return e instanceof File?e.name:e.pathname}function wn(e){return xn.apply(this,arguments)}function xn(){return xn=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,On(jn(t),(function(e){return e.filename.startsWith("META/")||e.filename.endsWith(".map")||e.filename.endsWith(".prop")||"prop.default"==e.filename}));case 2:return n=e.sent,e.next=5,n.close();case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)}))),xn.apply(this,arguments)}function kn(e){return Sn.apply(this,arguments)}function Sn(){return Sn=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,On(t.zipreader,(function(e){return"payload.bin"!=e.filename}));case 2:return n=e.sent,e.next=5,n.add("payload.bin",new Pe["BlobReader"](t.buffer.slice(0,t.getMetadataLength())),{level:0});case 5:return e.next=7,n.close();case 7:return r=e.sent,e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)}))),Sn.apply(this,arguments)}function Pn(e,t,n){var r=window.URL.createObjectURL(e);t.href=r,t.download=n,t.click(),window.URL.revokeObjectURL(r)}function _n(e,t){return e.endsWith(t)?e:e+t}var En=Object(r["m"])({props:{zipFile:{type:mn,required:!0},payload:{type:He,required:!0}},data:function(){return{MetadataFormat:Ne}},computed:{isDataWipePackage:function(){return this.payload.payload_properties.includes("POWERWASH=1")},otaMetadata:function(){var e=this;return Ne.filter((function(t){return String(e.payload[t.key]).length>0}))},totalCOWSize:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.partitions.map((function(e){return e.estimateCowSize||0}));return n?n.reduce((function(e,t){return e+t})):0},vabcCompressionParam:function(){var e,t,n;return(null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.vabcCompressionParam)||""},securityPatchLevel:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.securityPatchLevel;return n||""},totalDynamicPartitionSize:function(){var e,t,n,r,a=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.groups;if(!a)return 0;var i=new Set(a.flatMap((function(e){return e.partitionNames}))),o=(null===(r=this.payload.manifest)||void 0===r?void 0:r.partitions.filter((function(e){return i.has(e.partitionName)})))||[];return o.length<=0?0:o.map((function(e){var t;return(null===(t=e.newPartitionInfo)||void 0===t?void 0:t.size)||0})).reduce((function(e,t){return e+t}))}}});n("9175");En.render=bn,En.__scopeId="data-v-78cae893";var Ln=En,In=Object(r["m"])({components:{PartitionDetail:zt,BasicInfo:Ln},props:{zipFile:{type:mn,default:null},payload:{type:He,default:null}},methods:{octToHex:Ze,exportOTAPackage:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,kn(e.payload);case 2:n=t.sent,r=e.$refs["download"],Pn(n,r,"trimmed_"+_n(e.zipFile.getFileName(),".zip"));case 5:case"end":return t.stop()}}),t)})))()}},computed:{dynamicPartitions:function(){var e,t,n;return(null===(e=this.payload.manifest)||void 0===e||null===(t=e.dynamicPartitionMetadata)||void 0===t||null===(n=t.groups)||void 0===n?void 0:n.flatMap((function(e){return e.partitionNames||[]})))||[]},payloadHash:function(){var e,t=null===(e=this.payload)||void 0===e?void 0:e.getPayloadHash();return t?Ze(t,!1):""}}});n("2948");In.render=N,In.__scopeId="data-v-5dd4ca12";var zn=In,An=Object(r["Z"])("data-v-4d98493f");Object(r["D"])("data-v-4d98493f");var Tn=Object(r["k"])("Export Target File Metadata"),Bn={ref:"download"},Nn={key:1},Cn=Object(r["k"])(" Analyse Installed Blocks (in target build) "),Dn=Object(r["k"])(" Analyse Payload Composition "),Fn=Object(r["k"])(" Analyse Partition Payload Composition "),Rn=Object(r["k"])(" Analyse COW Merge Operations "),Mn={key:0,class:"tooltiptext"},Hn=Object(r["k"])(" Analyse Filenames "),Un=Object(r["k"])(" Analyse File Extensions ");Object(r["B"])();var Vn=An((function(e,t,n,a,i,o){var s=Object(r["I"])("v-btn"),c=Object(r["I"])("PartialCheckbox"),l=Object(r["I"])("PieChart"),u=Object(r["I"])("v-divider"),p=Object(r["I"])("v-col"),d=Object(r["I"])("v-row"),f=Object(r["I"])("BaseFile");return Object(r["A"])(),Object(r["i"])(r["a"],null,[e.targetFile?(Object(r["A"])(),Object(r["i"])(s,{key:0,block:"",class:"md-6",onClick:e.exportTargetFileMetadata},{default:An((function(){return[Tn]})),_:1},8,["onClick"])):Object(r["j"])("",!0),Object(r["l"])("a",Bn,null,512),Object(r["l"])(c,{modelValue:e.partitionInclude,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.partitionInclude=t}),labels:e.updatePartitions},null,8,["modelValue","labels"]),e.echartsData?(Object(r["A"])(),Object(r["i"])("div",Nn,[Object(r["l"])(l,{echartsData:e.echartsData,onClick:e.piechartClick},null,8,["echartsData","onClick"])])):Object(r["j"])("",!0),Object(r["l"])(u),Object(r["l"])(d,null,{default:An((function(){return[Object(r["l"])(p,{cols:"12",md:"4"},{default:An((function(){return[Object(r["l"])(s,{block:"",onClick:t[2]||(t[2]=function(t){return e.updateChart("blocks")})},{default:An((function(){return[Cn]})),_:1})]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:An((function(){return[Object(r["l"])(s,{block:"",onClick:t[3]||(t[3]=function(t){return e.updateChart("payload")})},{default:An((function(){return[Dn]})),_:1})]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:An((function(){return[Object(r["l"])(s,{block:"",onClick:t[4]||(t[4]=function(t){return e.updateChart("partitions")})},{default:An((function(){return[Fn]})),_:1})]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:An((function(){return[Object(r["l"])(p,{cols:"12",md:"4",class:"tooltip"},{default:An((function(){return[Object(r["l"])(s,{disabled:e.manifest.nonAB||!e.manifest.dynamicPartitionMetadata||!e.manifest.dynamicPartitionMetadata.vabcEnabled,title:"Only available for VABC update",block:"",onClick:t[5]||(t[5]=function(t){return e.updateChart("COWmerge")})},{default:An((function(){return[Rn]})),_:1},8,["disabled"]),e.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",Mn," This function is only supported in A/B OTA ")):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:An((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[6]||(t[6]=function(t){return e.updateChart("filenames")})},{default:An((function(){return[Hn]})),_:1},8,["disabled"])]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:An((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[7]||(t[7]=function(t){return e.updateChart("extensions")})},{default:An((function(){return[Un]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:An((function(){return[Object(r["l"])(p,{cols:"12",md:"6"}),Object(r["l"])(p,{cols:"12",md:"6"},{default:An((function(){return[e.demo?Object(r["j"])("",!0):(Object(r["A"])(),Object(r["i"])(f,{key:0,label:"Drag and drop or Select The target Android build",onFileSelect:e.selectBuild},null,8,["onFileSelect"]))]})),_:1})]})),_:1})],64)})),Wn=n("bc3a"),Zn=n.n(Wn),Jn=Object(r["Z"])("data-v-533f2336");Object(r["D"])("data-v-533f2336");var Xn={key:0};Object(r["B"])();var qn=Jn((function(e,t,n,a,i,o){var s=Object(r["I"])("v-btn"),c=Object(r["I"])("v-col"),l=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(r["a"],null,[Object(r["l"])(s,{block:"",type:"button",class:"my-5",onClick:e.revertAllSelection},{default:Jn((function(){return[Object(r["k"])(Object(r["N"])(e.selectAllText[e.selectAll]),1)]})),_:1},8,["onClick"]),Object(r["l"])(l,{class:"mb-5"},{default:Jn((function(){return[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.labels,(function(n){return Object(r["A"])(),Object(r["i"])(c,{key:n,cols:"12",md:"4"},{default:Jn((function(){return[Object(r["l"])("input",{type:"checkbox",value:n,checked:e.modelValue.get(n),onChange:t[1]||(t[1]=function(t){return e.updateSelected(t.target.value)})},null,40,["value","checked"]),n?(Object(r["A"])(),Object(r["i"])("label",Xn,Object(r["N"])(n),1)):Object(r["j"])("",!0)]})),_:2},1024)})),128))]})),_:1})],64)})),Gn=Object(r["m"])({props:{labels:{type:Array,default:new Array},modelValue:{type:Map,default:new Map}},data:function(){return{selectAll:1,selectAllText:["Select All","Unselect All"]}},mounted:function(){var e,t=Object(Oe["a"])(this.labels);try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,!0)}}catch(r){t.e(r)}finally{t.f()}},methods:{updateSelected:function(e){this.modelValue.set(e,!this.modelValue.get(e)),this.$emit("update:modelValue",this.modelValue)},revertAllSelection:function(){this.selectAll=1-this.selectAll;var e,t=Object(Oe["a"])(this.modelValue.keys());try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,Boolean(this.selectAll))}}catch(r){t.e(r)}finally{t.f()}}}});n("a75a");Gn.render=qn,Gn.__scopeId="data-v-533f2336";var $n=Gn,Yn=n("2909"),Kn="undefined"===typeof arguments?void 0:arguments,Qn=Object(r["Z"])("data-v-5d1cb486"),er=Qn((function(e,t,n,a,i,o){var s=Object(r["I"])("v-chart");return Object(r["A"])(),Object(r["i"])(s,{class:"chart",option:o.getEchartsOption,onClick:t[1]||(t[1]=function(t){return e.$emit.apply(e,["click"].concat(Object(Yn["a"])(Kn)))})},null,8,["option"])})),tr=n("ade3"),nr=n("22b4"),rr=n("f95e"),ar=n("49bb"),ir=n("9394"),or=n("2da7"),sr=n("ff32"),cr=n("5c7f");Object(nr["a"])([rr["a"],ar["a"],ir["a"],or["a"],sr["a"]]);var lr={components:{VChart:cr["b"]},provide:Object(tr["a"])({},cr["a"],"dark"),props:{echartsData:{type:st,required:!0}},computed:{getEchartsOption:function(){return this.echartsData.getEchartsOption()}}};n("47e0");lr.render=er,lr.__scopeId="data-v-5d1cb486";var ur=lr,pr=Object(r["m"])({components:{PartialCheckbox:$n,PieChart:ur,BaseFile:x},props:{manifest:{type:me.DeltaArchiveManifest,default:function(){return[]}},demo:{type:Boolean,default:!1}},data:function(){return{partitionInclude:new Map,echartsData:null,listData:"",targetFile:null}},computed:{updatePartitions:function(){return this.manifest.partitions.map((function(e){return e.partitionName}))}},mounted:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(!e.demo){t.next=11;break}return t.prev=1,t.next=4,Zn.a.get("./files/cf_x86_target_file_demo.zip",{responseType:"blob"});case 4:n=t.sent,e.targetFile=new File([n.data],"target_demo.zip"),t.next=11;break;case 8:t.prev=8,t.t0=t["catch"](1),console.log("Please put a proper example target file in /public/files/");case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))()},methods:{piechartClick:function(e){console.log(e)},updateChart:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return r=t.manifest.partitions.filter((function(e){return t.partitionInclude.get(e.partitionName)})),n.prev=1,n.next=4,wt(e,r,t.manifest.blockSize,t.targetFile);case 4:t.echartsData=n.sent,n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Cannot be processed for the following issue: ".concat(n.t0));case 10:case"end":return n.stop()}}),n,null,[[1,7]])})))()},selectBuild:function(e){this.targetFile=e},exportTargetFileMetadata:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,wn(e.targetFile);case 2:n=t.sent,r=e.$refs["download"],Pn(n,r,"trimmed_"+_n(vn(e.targetFile),".zip"));case 5:case"end":return t.stop()}}),t)})))()}}});n("18ff");pr.render=Vn,pr.__scopeId="data-v-4d98493f";var dr=pr,fr=Object(r["m"])({components:{BaseFile:x,PayloadDetail:zn,PayloadComposition:dr},data:function(){return{zipFile:null,payload:null}},methods:{unpackOTA:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return t.zipFile=new mn(e),n.prev=1,r=new He(t.zipFile),n.next=5,r.init();case 5:t.payload=r,n.next=12;break;case 8:n.prev=8,n.t0=n["catch"](1),alert("Please check if this is a correct OTA package (.zip). ".concat(n.t0)),console.log(n.t0);case 12:case"end":return n.stop()}}),n,null,[[1,8]])})))()}}});fr.render=h;var hr=fr;function gr(e,t,n,a,i,o){var s=Object(r["I"])("PayloadDetail"),c=Object(r["I"])("v-col"),l=Object(r["I"])("v-divider"),u=Object(r["I"])("PayloadComposition"),p=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(p,null,{default:Object(r["X"])((function(){return[Object(r["l"])(c,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload?(Object(r["A"])(),Object(r["i"])(s,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(l,{vertical:""}),Object(r["l"])(c,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])(u,{key:0,manifest:e.payload.manifest,demo:!0},null,8,["manifest"])):Object(r["j"])("",!0)]})),_:1})]})),_:1})}var br=Object(r["m"])({components:{PayloadDetail:zn,PayloadComposition:dr},data:function(){return{zipFile:null,payload:null}},created:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,Zn.a.get("./files/cf_x86_demo.zip",{responseType:"blob"});case 3:return n=t.sent,e.zipFile=new mn(new File([n.data],"ota_demo.zip")),e.payload=new He(e.zipFile),t.next=8,e.payload.init();case 8:t.next=13;break;case 10:t.prev=10,t.t0=t["catch"](0),console.log("Please put a proper example OTA in /public/files/");case 13:case"end":return t.stop()}}),t,null,[[0,10]])})))()}});br.render=gr;var mr=br,Or={class:"about"},yr=Object(r["l"])("p",null,"A web based tool to inspect Android OTA packages.",-1);function jr(e,t){return Object(r["A"])(),Object(r["i"])("div",Or,[yr])}const vr={};vr.render=jr;var wr=vr,xr=Object(r["Z"])("data-v-50c6f348");Object(r["D"])("data-v-50c6f348");var kr=Object(r["l"])("h1",null,"Not Found!",-1),Sr=Object(r["l"])("p",null,[Object(r["l"])("a",{href:"/"},"Go home?")],-1);Object(r["B"])();var Pr=xr((function(e,t){var n=Object(r["I"])("center");return Object(r["A"])(),Object(r["i"])(n,null,{default:xr((function(){return[kr,Sr]})),_:1})}));n("8e71");const _r={};_r.render=Pr,_r.__scopeId="data-v-50c6f348";var Er=_r,Lr=[{path:"/",name:"Analysis",component:hr,meta:{title:"Analyse OTA package - from AOSP"}},{path:"/demo",name:"Demo",component:mr},{path:"/about",name:"About",component:wr},{path:"/:catchAll(.*)",name:"Not Found",component:Er}],Ir=Object(d["a"])({history:Object(d["b"])("/analyseOTA/"),routes:Lr});Ir.beforeEach((function(e,t,n){var r=e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.title})),a=(e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})),t.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})));r?document.title=r.meta.title:a&&(document.title=a.meta.title),Array.from(document.querySelectorAll("[data-vue-router-controlled]")).map((function(e){return e.parentNode.removeChild(e)})),n()}));var zr=Ir,Ar=n("5502"),Tr=Object(Ar["a"])({state:{},mutations:{},actions:{},modules:{}}),Br=Object(r["h"])(p);Br.use(zr),Br.use(Tr),Br.use(s),Br.mount("#app")},d978:function(e,t,n){}}); +//# sourceMappingURL=app.a773d410.js.map \ No newline at end of file diff --git a/analyseOTA/js/app.a773d410.js.map b/analyseOTA/js/app.a773d410.js.map new file mode 100644 index 0000000..c48ee6a --- /dev/null +++ b/analyseOTA/js/app.a773d410.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/PayloadComposition.vue?7153","webpack:///./src/components/PayloadDetail.vue?8f9f","webpack:///./src/App.vue?1825","webpack:///./src/components/PieChart.vue?3f25","webpack:///./src/components/BaseFile.vue?5b74","webpack:///./src/views/NotFound.vue?18b8","webpack:///./src/components/OperationDetail.vue?7823","webpack:///./src/components/BasicInfo.vue?97f5","webpack:///./src/components/PartialCheckbox.vue?cce7","webpack:///./src/components/PartitionDetail.vue?e22f","webpack:///./src/plugins/vuetify.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?6697","webpack:///./src/views/PackageAnalysis.vue","webpack:///./src/components/BaseFile.vue","webpack:///./src/components/BaseFile.vue?5af0","webpack:///./src/components/BaseFile.vue?408d","webpack:///./src/components/PayloadDetail.vue","webpack:///./src/components/PartitionDetail.vue","webpack:///./src/services/update_metadata_pb.js","webpack:///./src/services/payload_nonab.ts","webpack:///./src/services/payload.ts","webpack:///./src/components/OperationDetail.vue","webpack:///./src/services/echarts_data.ts","webpack:///./src/services/map_parser.ts","webpack:///./src/services/payload_composition.ts","webpack:///./src/components/OperationDetail.vue?0239","webpack:///./src/components/OperationDetail.vue?19cd","webpack:///./src/components/PartitionDetail.vue?7d27","webpack:///./src/components/PartitionDetail.vue?b40d","webpack:///./src/components/BasicInfo.vue","webpack:///./src/services/trim_zip.ts","webpack:///./src/components/BasicInfo.vue?bb39","webpack:///./src/components/BasicInfo.vue?e053","webpack:///./src/components/PayloadDetail.vue?cdd8","webpack:///./src/components/PayloadDetail.vue?a20c","webpack:///./src/components/PayloadComposition.vue","webpack:///./src/components/PartialCheckbox.vue","webpack:///./src/components/PartialCheckbox.vue?fbe3","webpack:///./src/components/PartialCheckbox.vue?59db","webpack:///./src/components/PieChart.vue","webpack:///./src/components/PieChart.vue?1278","webpack:///./src/components/PayloadComposition.vue?3e04","webpack:///./src/components/PayloadComposition.vue?d59c","webpack:///./src/views/PackageAnalysis.vue?3fdf","webpack:///./src/views/PackageAnalysis.vue?2d24","webpack:///./src/views/Demo.vue","webpack:///./src/views/Demo.vue?9616","webpack:///./src/views/Demo.vue?e633","webpack:///./src/views/About.vue","webpack:///./src/views/About.vue?aa81","webpack:///./src/views/NotFound.vue","webpack:///./src/views/NotFound.vue?2812","webpack:///./src/router/index.ts","webpack:///./src/store/index.ts","webpack:///./src/main.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","components","directives","theme","defaultTheme","rounded","color","links","link","to","class","fluid","render","style","cols","md","label","unpackOTA","zipFile","payload","vertical","manifest","dragover","dragleave","drop","fileName","ref","type","accept","handleFileChange","placeholder","url","urlKeyup","props","String","default","emits","computed","parsedURL","URL","this","methods","event","currentTarget","target","files","selectedFile","$emit","preventDefault","classList","contains","add","remove","dataTransfer","console","log","error","__scopeId","exportOTAPackage","partitions","partition","partitionName","elevation","hover","shaped","dynamicPartitionList","dynamicPartitions","nonAB","payloadHash","metadata_signature","octToHex","signatures","oldPartitionInfo","isDynamicPartition","isFECEnabled","isHashtreeEnabled","estimateCowSize","postinstallPath","toggle","showInfo","size","hash","newPartitionInfo","version","readableTimestamp","showOPs","operations","operation","dataSha256Hash","mapType","opType","$Reader","$protobuf","$Writer","$util","$root","chromeos_update_engine","Extent","properties","keys","startBlock","Long","fromBits","numBlocks","encode","message","writer","uint32","uint64","encodeDelimited","ldelim","decode","reader","end","undefined","len","pos","tag","skipType","decodeDelimited","verify","isInteger","low","high","fromObject","fromValue","unsigned","parseInt","LongBits","toNumber","toObject","options","defaults","long","longs","toString","Number","toJSON","constructor","toJSONOptions","Signatures","emptyArray","Signature","fork","Array","isArray","TypeError","arrays","newBuffer","unpaddedSignatureSize","bytes","fixed32","isString","base64","PartitionInfo","InstallOperation","srcExtents","dstExtents","dataOffset","dataLength","srcLength","dstLength","srcSha256Hash","int32","ProtocolError","instance","enums","Type","valuesById","values","CowMergeOperation","srcExtent","dstExtent","srcOffset","PartitionUpdate","newPartitionSignature","mergeOperations","runPostinstall","filesystemType","postinstallOptional","hashTreeDataExtent","hashTreeExtent","hashTreeAlgorithm","hashTreeSalt","fecDataExtent","fecExtent","fecRoots","string","bool","Boolean","DynamicPartitionGroup","partitionNames","DynamicPartitionMetadata","groups","snapshotEnabled","vabcEnabled","vabcCompressionParam","cowVersion","ApexInfo","packageName","isCompressed","decompressedSize","int64","ApexMetadata","apexInfo","DeltaArchiveManifest","blockSize","signaturesOffset","signaturesSize","minorVersion","maxTimestamp","dynamicPartitionMetadata","partialUpdate","securityPatchLevel","packedFile","Blocksize","regexName","getEntries","entries","entry","filename","match","newPartition","getData","rawText","parseTransferList","lines","split","totalBlocks","entryStashed","maxStashed","Uint8Array","sizeNewData","newDataSize","line","op","elements","reduce","parseRange","RegExp","uncompressedSize","extents","rangeset","regexRange","extent","_MAGIC","_VERSION_SIZE","_MANIFEST_LEN_SIZE","_METADATA_SIGNATURE_LEN_SIZE","_PAYLOAD_HEADER_SIZE","_BRILLO_MAJOR_PAYLOAD_VERSION","MetadataFormat","prefix","Error","magic","manifest_len","metadata_signature_len","readIntAt","buffer","position","DataView","arrayBuffer","view","getBigUint64","offset","a","BigInt","getUint32","b","bigNumber","getUint16","contentType","blob","Blob","prefixLength","cursor","readInt","ret","decoder","TextDecoder","magicBytes","header_version","header","array","readHeader","file","File","zipreader","href","readManifest","metadata","payload_properties","getPayloadHash","init","alert","file_hash_prefix","startsWith","base64ToBytes","substring","manifestBlob","signatureBlob","formatter","regex","trimEntry","unzip","parseMetadata","has","Map","types","set","bufferArray","space","maxLine","hex_table","hex","toUpperCase","binString","atob","from","codePointAt","getWithDefault","srcTotalBlocks","srcBlocks","dstTotalBlocks","dstBlocks","statisticData","title","unit","maximumEntries","trimmedData","trimMap","table","option","text","left","tooltip","trigger","legend","orient","top","series","radius","center","map","pair","emphasis","itemStyle","shadowBlur","shadowOffsetX","shadowColor","new_map","curr","currKey","restTotal","targetFile","build","mapFiles","maps","regexPath","forEach","totalLength","regexNumber","mapText","fileEntries","right","InsertMap","names","ext","queryMap","addNumberToMap","operatedBlockStatistics","operatedBlocks","operationType","partitionPayloadSize","partitionPayloadSizeStatistics","partitionStats","mergeOperationStatistics","Math","ceil","operatedPayloadStatistics","operatedFileExtensionsStatistics","operatedFilenamesStatistics","filenameStats","fileExtenstionStats","name2Extension","operatedFilenames","buildMap","operatedFileNames","query","extentDataLength","distributeFilenames","analysePartitions","metrics","statisticsData","echartsData","exts","accumulator","total","displayBlocks","filenames","distributedLengths","round","endsWith","required","mounted","OperationDetail","unixTimestamp","isNaN","Date","indexOf","$attrs","getFileName","getFileSize","otaMetadata","trim","preBuild","isDataWipePackage","totalDynamicPartitionSize","totalCOWSize","getZipReader","trimZip","zip","filter","blobWriter","level","pathname","trimTargetFiles","close","trimOTAPackage","getMetadataLength","downloadFile","downloadNode","createObjectURL","download","click","revokeObjectURL","ensureSuffix","str","suffix","includes","cowSizes","spl","dynamicPartitionNamess","Set","flatMap","g","acc","cur","PartitionDetail","BasicInfo","$refs","block","exportTargetFileMetadata","partitionInclude","labels","updatePartitions","piechartClick","updateChart","disabled","demo","selectBuild","revertAllSelection","selectAllText","selectAll","checked","modelValue","updateSelected","$event","newSelect","getEchartsOption","VChart","provide","PartialCheckbox","PieChart","BaseFile","listData","responseType","param","partitionSelected","PayloadDetail","PayloadComposition","created","script","routes","path","component","PackageAnalysis","meta","Demo","About","NotFound","router","history","beforeEach","next","nearestWithTitle","matched","reverse","find","previousNearestWithMeta","metaTags","document","querySelectorAll","el","parentNode","removeChild","state","mutations","actions","app","App","use","store","vuetify","mount"],"mappings":"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","file":"js/app.a773d410.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/analyseOTA/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadComposition.vue?vue&type=style&index=0&id=4d98493f&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadDetail.vue?vue&type=style&index=0&id=5dd4ca12&scoped=true&lang=css\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BasicInfo.vue?vue&type=style&index=0&id=78cae893&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartitionDetail.vue?vue&type=style&index=0&id=21e569e9&scoped=true&lang=css\"","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport 'vuetify/lib/styles/main.sass'\nimport { createVuetify } from 'vuetify'\nimport * as components from 'vuetify/lib/components'\nimport * as directives from 'vuetify/lib/directives'\n\nexport default createVuetify({\n components,\n directives,\n theme: {\n defaultTheme: 'dark'\n }\n})\n","\n\n\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=ee415730\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n label: {\n type: String,\n default: ''\n }\n },\n emits: {\n 'file-select': null\n },\n data() {\n return {\n fileName: '',\n url: ''\n }\n },\n computed: {\n parsedURL(): URL | null {\n try {\n return new URL(this.url)\n } catch {\n return null\n }\n }\n },\n\n methods: {\n handleFileChange(event: any) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (target.files == null || target.files.length < 1) {\n return\n }\n const selectedFile = target.files![0]\n this.$emit('file-select', selectedFile)\n // If user selects a file, clear the URL component\n this.url = ''\n this.fileName = target.files![0].name\n },\n dragover(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!target.classList.contains('file-hover')) {\n target.classList.add('file-hover')\n }\n },\n dragleave(event: DragEvent) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n target.classList.remove('file-hover')\n },\n drop(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!event.dataTransfer || event.dataTransfer.files.length == 0) {\n return\n }\n target.files = event.dataTransfer.files\n this.handleFileChange(event)\n target.classList.remove('file-hover')\n },\n urlKeyup(event: KeyboardEvent) {\n console.log(this.url)\n if (event.key == 'Enter') {\n const target = event.target as HTMLInputElement\n if (this.parsedURL == null) {\n console.error(`${target.value} is an invalid URL`)\n return\n }\n this.$emit('file-select', this.parsedURL)\n }\n }\n }\n})\n","import { render } from \"./BaseFile.vue?vue&type=template&id=0630c5ec&scoped=true\"\nimport script from \"./BaseFile.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseFile.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-0630c5ec\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\nimport * as $protobuf from \"protobufjs/minimal\";\n\n// Common aliases\nconst $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nconst $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\nexport const chromeos_update_engine = $root.chromeos_update_engine = (() => {\n\n /**\n * Namespace chromeos_update_engine.\n * @exports chromeos_update_engine\n * @namespace\n */\n const chromeos_update_engine = {};\n\n chromeos_update_engine.Extent = (function() {\n\n /**\n * Properties of an Extent.\n * @memberof chromeos_update_engine\n * @interface IExtent\n * @property {number|Long|null} [startBlock] Extent startBlock\n * @property {number|Long|null} [numBlocks] Extent numBlocks\n */\n\n /**\n * Constructs a new Extent.\n * @memberof chromeos_update_engine\n * @classdesc Represents an Extent.\n * @implements IExtent\n * @constructor\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n */\n function Extent(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Extent startBlock.\n * @member {number|Long} startBlock\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.startBlock = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Extent numBlocks.\n * @member {number|Long} numBlocks\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.numBlocks = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new Extent instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n * @returns {chromeos_update_engine.Extent} Extent instance\n */\n Extent.create = function create(properties) {\n return new Extent(properties);\n };\n\n /**\n * Encodes the specified Extent message. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startBlock != null && Object.hasOwnProperty.call(message, \"startBlock\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.startBlock);\n if (message.numBlocks != null && Object.hasOwnProperty.call(message, \"numBlocks\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.numBlocks);\n return writer;\n };\n\n /**\n * Encodes the specified Extent message, length delimited. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Extent();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.startBlock = reader.uint64();\n break;\n case 2:\n message.numBlocks = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an Extent message.\n * @function verify\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Extent.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (!$util.isInteger(message.startBlock) && !(message.startBlock && $util.isInteger(message.startBlock.low) && $util.isInteger(message.startBlock.high)))\n return \"startBlock: integer|Long expected\";\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (!$util.isInteger(message.numBlocks) && !(message.numBlocks && $util.isInteger(message.numBlocks.low) && $util.isInteger(message.numBlocks.high)))\n return \"numBlocks: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an Extent message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Extent} Extent\n */\n Extent.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Extent)\n return object;\n let message = new $root.chromeos_update_engine.Extent();\n if (object.startBlock != null)\n if ($util.Long)\n (message.startBlock = $util.Long.fromValue(object.startBlock)).unsigned = true;\n else if (typeof object.startBlock === \"string\")\n message.startBlock = parseInt(object.startBlock, 10);\n else if (typeof object.startBlock === \"number\")\n message.startBlock = object.startBlock;\n else if (typeof object.startBlock === \"object\")\n message.startBlock = new $util.LongBits(object.startBlock.low >>> 0, object.startBlock.high >>> 0).toNumber(true);\n if (object.numBlocks != null)\n if ($util.Long)\n (message.numBlocks = $util.Long.fromValue(object.numBlocks)).unsigned = true;\n else if (typeof object.numBlocks === \"string\")\n message.numBlocks = parseInt(object.numBlocks, 10);\n else if (typeof object.numBlocks === \"number\")\n message.numBlocks = object.numBlocks;\n else if (typeof object.numBlocks === \"object\")\n message.numBlocks = new $util.LongBits(object.numBlocks.low >>> 0, object.numBlocks.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from an Extent message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.Extent} message Extent\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Extent.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.startBlock = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.startBlock = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.numBlocks = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.numBlocks = options.longs === String ? \"0\" : 0;\n }\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (typeof message.startBlock === \"number\")\n object.startBlock = options.longs === String ? String(message.startBlock) : message.startBlock;\n else\n object.startBlock = options.longs === String ? $util.Long.prototype.toString.call(message.startBlock) : options.longs === Number ? new $util.LongBits(message.startBlock.low >>> 0, message.startBlock.high >>> 0).toNumber(true) : message.startBlock;\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (typeof message.numBlocks === \"number\")\n object.numBlocks = options.longs === String ? String(message.numBlocks) : message.numBlocks;\n else\n object.numBlocks = options.longs === String ? $util.Long.prototype.toString.call(message.numBlocks) : options.longs === Number ? new $util.LongBits(message.numBlocks.low >>> 0, message.numBlocks.high >>> 0).toNumber(true) : message.numBlocks;\n return object;\n };\n\n /**\n * Converts this Extent to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Extent\n * @instance\n * @returns {Object.} JSON object\n */\n Extent.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Extent;\n })();\n\n chromeos_update_engine.Signatures = (function() {\n\n /**\n * Properties of a Signatures.\n * @memberof chromeos_update_engine\n * @interface ISignatures\n * @property {Array.|null} [signatures] Signatures signatures\n */\n\n /**\n * Constructs a new Signatures.\n * @memberof chromeos_update_engine\n * @classdesc Represents a Signatures.\n * @implements ISignatures\n * @constructor\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n */\n function Signatures(properties) {\n this.signatures = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signatures signatures.\n * @member {Array.} signatures\n * @memberof chromeos_update_engine.Signatures\n * @instance\n */\n Signatures.prototype.signatures = $util.emptyArray;\n\n /**\n * Creates a new Signatures instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures} Signatures instance\n */\n Signatures.create = function create(properties) {\n return new Signatures(properties);\n };\n\n /**\n * Encodes the specified Signatures message. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.signatures != null && message.signatures.length)\n for (let i = 0; i < message.signatures.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.signatures[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Signatures message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.signatures && message.signatures.length))\n message.signatures = [];\n message.signatures.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signatures message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signatures.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.signatures != null && message.hasOwnProperty(\"signatures\")) {\n if (!Array.isArray(message.signatures))\n return \"signatures: array expected\";\n for (let i = 0; i < message.signatures.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.signatures[i]);\n if (error)\n return \"signatures.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a Signatures message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures} Signatures\n */\n Signatures.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures)\n return object;\n let message = new $root.chromeos_update_engine.Signatures();\n if (object.signatures) {\n if (!Array.isArray(object.signatures))\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: array expected\");\n message.signatures = [];\n for (let i = 0; i < object.signatures.length; ++i) {\n if (typeof object.signatures[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: object expected\");\n message.signatures[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.signatures[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Signatures message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.Signatures} message Signatures\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signatures.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.signatures = [];\n if (message.signatures && message.signatures.length) {\n object.signatures = [];\n for (let j = 0; j < message.signatures.length; ++j)\n object.signatures[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.signatures[j], options);\n }\n return object;\n };\n\n /**\n * Converts this Signatures to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures\n * @instance\n * @returns {Object.} JSON object\n */\n Signatures.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n Signatures.Signature = (function() {\n\n /**\n * Properties of a Signature.\n * @memberof chromeos_update_engine.Signatures\n * @interface ISignature\n * @property {number|null} [version] Signature version\n * @property {Uint8Array|null} [data] Signature data\n * @property {number|null} [unpaddedSignatureSize] Signature unpaddedSignatureSize\n */\n\n /**\n * Constructs a new Signature.\n * @memberof chromeos_update_engine.Signatures\n * @classdesc Represents a Signature.\n * @implements ISignature\n * @constructor\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n */\n function Signature(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signature version.\n * @member {number} version\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.version = 0;\n\n /**\n * Signature data.\n * @member {Uint8Array} data\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.data = $util.newBuffer([]);\n\n /**\n * Signature unpaddedSignatureSize.\n * @member {number} unpaddedSignatureSize\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.unpaddedSignatureSize = 0;\n\n /**\n * Creates a new Signature instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures.Signature} Signature instance\n */\n Signature.create = function create(properties) {\n return new Signature(properties);\n };\n\n /**\n * Encodes the specified Signature message. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.version);\n if (message.data != null && Object.hasOwnProperty.call(message, \"data\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.data);\n if (message.unpaddedSignatureSize != null && Object.hasOwnProperty.call(message, \"unpaddedSignatureSize\"))\n writer.uint32(/* id 3, wireType 5 =*/29).fixed32(message.unpaddedSignatureSize);\n return writer;\n };\n\n /**\n * Encodes the specified Signature message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures.Signature();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.version = reader.uint32();\n break;\n case 2:\n message.data = reader.bytes();\n break;\n case 3:\n message.unpaddedSignatureSize = reader.fixed32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signature message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signature.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version))\n return \"version: integer expected\";\n if (message.data != null && message.hasOwnProperty(\"data\"))\n if (!(message.data && typeof message.data.length === \"number\" || $util.isString(message.data)))\n return \"data: buffer expected\";\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n if (!$util.isInteger(message.unpaddedSignatureSize))\n return \"unpaddedSignatureSize: integer expected\";\n return null;\n };\n\n /**\n * Creates a Signature message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n */\n Signature.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures.Signature)\n return object;\n let message = new $root.chromeos_update_engine.Signatures.Signature();\n if (object.version != null)\n message.version = object.version >>> 0;\n if (object.data != null)\n if (typeof object.data === \"string\")\n $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);\n else if (object.data.length)\n message.data = object.data;\n if (object.unpaddedSignatureSize != null)\n message.unpaddedSignatureSize = object.unpaddedSignatureSize >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a Signature message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.Signature} message Signature\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signature.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.version = 0;\n if (options.bytes === String)\n object.data = \"\";\n else {\n object.data = [];\n if (options.bytes !== Array)\n object.data = $util.newBuffer(object.data);\n }\n object.unpaddedSignatureSize = 0;\n }\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.data != null && message.hasOwnProperty(\"data\"))\n object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n object.unpaddedSignatureSize = message.unpaddedSignatureSize;\n return object;\n };\n\n /**\n * Converts this Signature to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n * @returns {Object.} JSON object\n */\n Signature.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Signature;\n })();\n\n return Signatures;\n })();\n\n chromeos_update_engine.PartitionInfo = (function() {\n\n /**\n * Properties of a PartitionInfo.\n * @memberof chromeos_update_engine\n * @interface IPartitionInfo\n * @property {number|Long|null} [size] PartitionInfo size\n * @property {Uint8Array|null} [hash] PartitionInfo hash\n */\n\n /**\n * Constructs a new PartitionInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionInfo.\n * @implements IPartitionInfo\n * @constructor\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n */\n function PartitionInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionInfo size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * PartitionInfo hash.\n * @member {Uint8Array} hash\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.hash = $util.newBuffer([]);\n\n /**\n * Creates a new PartitionInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo instance\n */\n PartitionInfo.create = function create(properties) {\n return new PartitionInfo(properties);\n };\n\n /**\n * Encodes the specified PartitionInfo message. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.size);\n if (message.hash != null && Object.hasOwnProperty.call(message, \"hash\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.hash);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.size = reader.uint64();\n break;\n case 2:\n message.hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionInfo message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n if (!(message.hash && typeof message.hash.length === \"number\" || $util.isString(message.hash)))\n return \"hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates a PartitionInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n */\n PartitionInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionInfo)\n return object;\n let message = new $root.chromeos_update_engine.PartitionInfo();\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.hash != null)\n if (typeof object.hash === \"string\")\n $util.base64.decode(object.hash, message.hash = $util.newBuffer($util.base64.length(object.hash)), 0);\n else if (object.hash.length)\n message.hash = object.hash;\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.PartitionInfo} message PartitionInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.hash = \"\";\n else {\n object.hash = [];\n if (options.bytes !== Array)\n object.hash = $util.newBuffer(object.hash);\n }\n }\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n object.hash = options.bytes === String ? $util.base64.encode(message.hash, 0, message.hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.hash) : message.hash;\n return object;\n };\n\n /**\n * Converts this PartitionInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionInfo;\n })();\n\n chromeos_update_engine.InstallOperation = (function() {\n\n /**\n * Properties of an InstallOperation.\n * @memberof chromeos_update_engine\n * @interface IInstallOperation\n * @property {chromeos_update_engine.InstallOperation.Type} type InstallOperation type\n * @property {number|Long|null} [dataOffset] InstallOperation dataOffset\n * @property {number|Long|null} [dataLength] InstallOperation dataLength\n * @property {Array.|null} [srcExtents] InstallOperation srcExtents\n * @property {number|Long|null} [srcLength] InstallOperation srcLength\n * @property {Array.|null} [dstExtents] InstallOperation dstExtents\n * @property {number|Long|null} [dstLength] InstallOperation dstLength\n * @property {Uint8Array|null} [dataSha256Hash] InstallOperation dataSha256Hash\n * @property {Uint8Array|null} [srcSha256Hash] InstallOperation srcSha256Hash\n */\n\n /**\n * Constructs a new InstallOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents an InstallOperation.\n * @implements IInstallOperation\n * @constructor\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n */\n function InstallOperation(properties) {\n this.srcExtents = [];\n this.dstExtents = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * InstallOperation type.\n * @member {chromeos_update_engine.InstallOperation.Type} type\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.type = 0;\n\n /**\n * InstallOperation dataOffset.\n * @member {number|Long} dataOffset\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataLength.\n * @member {number|Long} dataLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation srcExtents.\n * @member {Array.} srcExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcExtents = $util.emptyArray;\n\n /**\n * InstallOperation srcLength.\n * @member {number|Long} srcLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dstExtents.\n * @member {Array.} dstExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstExtents = $util.emptyArray;\n\n /**\n * InstallOperation dstLength.\n * @member {number|Long} dstLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataSha256Hash.\n * @member {Uint8Array} dataSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataSha256Hash = $util.newBuffer([]);\n\n /**\n * InstallOperation srcSha256Hash.\n * @member {Uint8Array} srcSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcSha256Hash = $util.newBuffer([]);\n\n /**\n * Creates a new InstallOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation instance\n */\n InstallOperation.create = function create(properties) {\n return new InstallOperation(properties);\n };\n\n /**\n * Encodes the specified InstallOperation message. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.dataOffset != null && Object.hasOwnProperty.call(message, \"dataOffset\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.dataOffset);\n if (message.dataLength != null && Object.hasOwnProperty.call(message, \"dataLength\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.dataLength);\n if (message.srcExtents != null && message.srcExtents.length)\n for (let i = 0; i < message.srcExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.srcExtents[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.srcLength != null && Object.hasOwnProperty.call(message, \"srcLength\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.srcLength);\n if (message.dstExtents != null && message.dstExtents.length)\n for (let i = 0; i < message.dstExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.dstExtents[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.dstLength != null && Object.hasOwnProperty.call(message, \"dstLength\"))\n writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.dstLength);\n if (message.dataSha256Hash != null && Object.hasOwnProperty.call(message, \"dataSha256Hash\"))\n writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.dataSha256Hash);\n if (message.srcSha256Hash != null && Object.hasOwnProperty.call(message, \"srcSha256Hash\"))\n writer.uint32(/* id 9, wireType 2 =*/74).bytes(message.srcSha256Hash);\n return writer;\n };\n\n /**\n * Encodes the specified InstallOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.InstallOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.dataOffset = reader.uint64();\n break;\n case 3:\n message.dataLength = reader.uint64();\n break;\n case 4:\n if (!(message.srcExtents && message.srcExtents.length))\n message.srcExtents = [];\n message.srcExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 5:\n message.srcLength = reader.uint64();\n break;\n case 6:\n if (!(message.dstExtents && message.dstExtents.length))\n message.dstExtents = [];\n message.dstExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 7:\n message.dstLength = reader.uint64();\n break;\n case 8:\n message.dataSha256Hash = reader.bytes();\n break;\n case 9:\n message.srcSha256Hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"type\"))\n throw $util.ProtocolError(\"missing required 'type'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an InstallOperation message.\n * @function verify\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n InstallOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 8:\n case 6:\n case 7:\n case 10:\n case 9:\n case 11:\n case 12:\n case 13:\n break;\n }\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (!$util.isInteger(message.dataOffset) && !(message.dataOffset && $util.isInteger(message.dataOffset.low) && $util.isInteger(message.dataOffset.high)))\n return \"dataOffset: integer|Long expected\";\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (!$util.isInteger(message.dataLength) && !(message.dataLength && $util.isInteger(message.dataLength.low) && $util.isInteger(message.dataLength.high)))\n return \"dataLength: integer|Long expected\";\n if (message.srcExtents != null && message.hasOwnProperty(\"srcExtents\")) {\n if (!Array.isArray(message.srcExtents))\n return \"srcExtents: array expected\";\n for (let i = 0; i < message.srcExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtents[i]);\n if (error)\n return \"srcExtents.\" + error;\n }\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (!$util.isInteger(message.srcLength) && !(message.srcLength && $util.isInteger(message.srcLength.low) && $util.isInteger(message.srcLength.high)))\n return \"srcLength: integer|Long expected\";\n if (message.dstExtents != null && message.hasOwnProperty(\"dstExtents\")) {\n if (!Array.isArray(message.dstExtents))\n return \"dstExtents: array expected\";\n for (let i = 0; i < message.dstExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtents[i]);\n if (error)\n return \"dstExtents.\" + error;\n }\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (!$util.isInteger(message.dstLength) && !(message.dstLength && $util.isInteger(message.dstLength.low) && $util.isInteger(message.dstLength.high)))\n return \"dstLength: integer|Long expected\";\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n if (!(message.dataSha256Hash && typeof message.dataSha256Hash.length === \"number\" || $util.isString(message.dataSha256Hash)))\n return \"dataSha256Hash: buffer expected\";\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n if (!(message.srcSha256Hash && typeof message.srcSha256Hash.length === \"number\" || $util.isString(message.srcSha256Hash)))\n return \"srcSha256Hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates an InstallOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n */\n InstallOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.InstallOperation)\n return object;\n let message = new $root.chromeos_update_engine.InstallOperation();\n switch (object.type) {\n case \"REPLACE\":\n case 0:\n message.type = 0;\n break;\n case \"REPLACE_BZ\":\n case 1:\n message.type = 1;\n break;\n case \"MOVE\":\n case 2:\n message.type = 2;\n break;\n case \"BSDIFF\":\n case 3:\n message.type = 3;\n break;\n case \"SOURCE_COPY\":\n case 4:\n message.type = 4;\n break;\n case \"SOURCE_BSDIFF\":\n case 5:\n message.type = 5;\n break;\n case \"REPLACE_XZ\":\n case 8:\n message.type = 8;\n break;\n case \"ZERO\":\n case 6:\n message.type = 6;\n break;\n case \"DISCARD\":\n case 7:\n message.type = 7;\n break;\n case \"BROTLI_BSDIFF\":\n case 10:\n message.type = 10;\n break;\n case \"PUFFDIFF\":\n case 9:\n message.type = 9;\n break;\n case \"ZUCCHINI\":\n case 11:\n message.type = 11;\n break;\n case \"LZ4DIFF_BSDIFF\":\n case 12:\n message.type = 12;\n break;\n case \"LZ4DIFF_PUFFDIFF\":\n case 13:\n message.type = 13;\n break;\n }\n if (object.dataOffset != null)\n if ($util.Long)\n (message.dataOffset = $util.Long.fromValue(object.dataOffset)).unsigned = true;\n else if (typeof object.dataOffset === \"string\")\n message.dataOffset = parseInt(object.dataOffset, 10);\n else if (typeof object.dataOffset === \"number\")\n message.dataOffset = object.dataOffset;\n else if (typeof object.dataOffset === \"object\")\n message.dataOffset = new $util.LongBits(object.dataOffset.low >>> 0, object.dataOffset.high >>> 0).toNumber(true);\n if (object.dataLength != null)\n if ($util.Long)\n (message.dataLength = $util.Long.fromValue(object.dataLength)).unsigned = true;\n else if (typeof object.dataLength === \"string\")\n message.dataLength = parseInt(object.dataLength, 10);\n else if (typeof object.dataLength === \"number\")\n message.dataLength = object.dataLength;\n else if (typeof object.dataLength === \"object\")\n message.dataLength = new $util.LongBits(object.dataLength.low >>> 0, object.dataLength.high >>> 0).toNumber(true);\n if (object.srcExtents) {\n if (!Array.isArray(object.srcExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: array expected\");\n message.srcExtents = [];\n for (let i = 0; i < object.srcExtents.length; ++i) {\n if (typeof object.srcExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: object expected\");\n message.srcExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.srcExtents[i]);\n }\n }\n if (object.srcLength != null)\n if ($util.Long)\n (message.srcLength = $util.Long.fromValue(object.srcLength)).unsigned = true;\n else if (typeof object.srcLength === \"string\")\n message.srcLength = parseInt(object.srcLength, 10);\n else if (typeof object.srcLength === \"number\")\n message.srcLength = object.srcLength;\n else if (typeof object.srcLength === \"object\")\n message.srcLength = new $util.LongBits(object.srcLength.low >>> 0, object.srcLength.high >>> 0).toNumber(true);\n if (object.dstExtents) {\n if (!Array.isArray(object.dstExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: array expected\");\n message.dstExtents = [];\n for (let i = 0; i < object.dstExtents.length; ++i) {\n if (typeof object.dstExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: object expected\");\n message.dstExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.dstExtents[i]);\n }\n }\n if (object.dstLength != null)\n if ($util.Long)\n (message.dstLength = $util.Long.fromValue(object.dstLength)).unsigned = true;\n else if (typeof object.dstLength === \"string\")\n message.dstLength = parseInt(object.dstLength, 10);\n else if (typeof object.dstLength === \"number\")\n message.dstLength = object.dstLength;\n else if (typeof object.dstLength === \"object\")\n message.dstLength = new $util.LongBits(object.dstLength.low >>> 0, object.dstLength.high >>> 0).toNumber(true);\n if (object.dataSha256Hash != null)\n if (typeof object.dataSha256Hash === \"string\")\n $util.base64.decode(object.dataSha256Hash, message.dataSha256Hash = $util.newBuffer($util.base64.length(object.dataSha256Hash)), 0);\n else if (object.dataSha256Hash.length)\n message.dataSha256Hash = object.dataSha256Hash;\n if (object.srcSha256Hash != null)\n if (typeof object.srcSha256Hash === \"string\")\n $util.base64.decode(object.srcSha256Hash, message.srcSha256Hash = $util.newBuffer($util.base64.length(object.srcSha256Hash)), 0);\n else if (object.srcSha256Hash.length)\n message.srcSha256Hash = object.srcSha256Hash;\n return message;\n };\n\n /**\n * Creates a plain object from an InstallOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.InstallOperation} message InstallOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n InstallOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.srcExtents = [];\n object.dstExtents = [];\n }\n if (options.defaults) {\n object.type = options.enums === String ? \"REPLACE\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.srcLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.srcLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dstLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dstLength = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.dataSha256Hash = \"\";\n else {\n object.dataSha256Hash = [];\n if (options.bytes !== Array)\n object.dataSha256Hash = $util.newBuffer(object.dataSha256Hash);\n }\n if (options.bytes === String)\n object.srcSha256Hash = \"\";\n else {\n object.srcSha256Hash = [];\n if (options.bytes !== Array)\n object.srcSha256Hash = $util.newBuffer(object.srcSha256Hash);\n }\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.InstallOperation.Type[message.type] : message.type;\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (typeof message.dataOffset === \"number\")\n object.dataOffset = options.longs === String ? String(message.dataOffset) : message.dataOffset;\n else\n object.dataOffset = options.longs === String ? $util.Long.prototype.toString.call(message.dataOffset) : options.longs === Number ? new $util.LongBits(message.dataOffset.low >>> 0, message.dataOffset.high >>> 0).toNumber(true) : message.dataOffset;\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (typeof message.dataLength === \"number\")\n object.dataLength = options.longs === String ? String(message.dataLength) : message.dataLength;\n else\n object.dataLength = options.longs === String ? $util.Long.prototype.toString.call(message.dataLength) : options.longs === Number ? new $util.LongBits(message.dataLength.low >>> 0, message.dataLength.high >>> 0).toNumber(true) : message.dataLength;\n if (message.srcExtents && message.srcExtents.length) {\n object.srcExtents = [];\n for (let j = 0; j < message.srcExtents.length; ++j)\n object.srcExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.srcExtents[j], options);\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (typeof message.srcLength === \"number\")\n object.srcLength = options.longs === String ? String(message.srcLength) : message.srcLength;\n else\n object.srcLength = options.longs === String ? $util.Long.prototype.toString.call(message.srcLength) : options.longs === Number ? new $util.LongBits(message.srcLength.low >>> 0, message.srcLength.high >>> 0).toNumber(true) : message.srcLength;\n if (message.dstExtents && message.dstExtents.length) {\n object.dstExtents = [];\n for (let j = 0; j < message.dstExtents.length; ++j)\n object.dstExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.dstExtents[j], options);\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (typeof message.dstLength === \"number\")\n object.dstLength = options.longs === String ? String(message.dstLength) : message.dstLength;\n else\n object.dstLength = options.longs === String ? $util.Long.prototype.toString.call(message.dstLength) : options.longs === Number ? new $util.LongBits(message.dstLength.low >>> 0, message.dstLength.high >>> 0).toNumber(true) : message.dstLength;\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n object.dataSha256Hash = options.bytes === String ? $util.base64.encode(message.dataSha256Hash, 0, message.dataSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.dataSha256Hash) : message.dataSha256Hash;\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n object.srcSha256Hash = options.bytes === String ? $util.base64.encode(message.srcSha256Hash, 0, message.srcSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.srcSha256Hash) : message.srcSha256Hash;\n return object;\n };\n\n /**\n * Converts this InstallOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n * @returns {Object.} JSON object\n */\n InstallOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.InstallOperation.Type\n * @enum {number}\n * @property {number} REPLACE=0 REPLACE value\n * @property {number} REPLACE_BZ=1 REPLACE_BZ value\n * @property {number} MOVE=2 MOVE value\n * @property {number} BSDIFF=3 BSDIFF value\n * @property {number} SOURCE_COPY=4 SOURCE_COPY value\n * @property {number} SOURCE_BSDIFF=5 SOURCE_BSDIFF value\n * @property {number} REPLACE_XZ=8 REPLACE_XZ value\n * @property {number} ZERO=6 ZERO value\n * @property {number} DISCARD=7 DISCARD value\n * @property {number} BROTLI_BSDIFF=10 BROTLI_BSDIFF value\n * @property {number} PUFFDIFF=9 PUFFDIFF value\n * @property {number} ZUCCHINI=11 ZUCCHINI value\n * @property {number} LZ4DIFF_BSDIFF=12 LZ4DIFF_BSDIFF value\n * @property {number} LZ4DIFF_PUFFDIFF=13 LZ4DIFF_PUFFDIFF value\n */\n InstallOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"REPLACE\"] = 0;\n values[valuesById[1] = \"REPLACE_BZ\"] = 1;\n values[valuesById[2] = \"MOVE\"] = 2;\n values[valuesById[3] = \"BSDIFF\"] = 3;\n values[valuesById[4] = \"SOURCE_COPY\"] = 4;\n values[valuesById[5] = \"SOURCE_BSDIFF\"] = 5;\n values[valuesById[8] = \"REPLACE_XZ\"] = 8;\n values[valuesById[6] = \"ZERO\"] = 6;\n values[valuesById[7] = \"DISCARD\"] = 7;\n values[valuesById[10] = \"BROTLI_BSDIFF\"] = 10;\n values[valuesById[9] = \"PUFFDIFF\"] = 9;\n values[valuesById[11] = \"ZUCCHINI\"] = 11;\n values[valuesById[12] = \"LZ4DIFF_BSDIFF\"] = 12;\n values[valuesById[13] = \"LZ4DIFF_PUFFDIFF\"] = 13;\n return values;\n })();\n\n return InstallOperation;\n })();\n\n chromeos_update_engine.CowMergeOperation = (function() {\n\n /**\n * Properties of a CowMergeOperation.\n * @memberof chromeos_update_engine\n * @interface ICowMergeOperation\n * @property {chromeos_update_engine.CowMergeOperation.Type|null} [type] CowMergeOperation type\n * @property {chromeos_update_engine.IExtent|null} [srcExtent] CowMergeOperation srcExtent\n * @property {chromeos_update_engine.IExtent|null} [dstExtent] CowMergeOperation dstExtent\n * @property {number|null} [srcOffset] CowMergeOperation srcOffset\n */\n\n /**\n * Constructs a new CowMergeOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents a CowMergeOperation.\n * @implements ICowMergeOperation\n * @constructor\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n */\n function CowMergeOperation(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * CowMergeOperation type.\n * @member {chromeos_update_engine.CowMergeOperation.Type} type\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.type = 0;\n\n /**\n * CowMergeOperation srcExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} srcExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcExtent = null;\n\n /**\n * CowMergeOperation dstExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} dstExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.dstExtent = null;\n\n /**\n * CowMergeOperation srcOffset.\n * @member {number} srcOffset\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcOffset = 0;\n\n /**\n * Creates a new CowMergeOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation instance\n */\n CowMergeOperation.create = function create(properties) {\n return new CowMergeOperation(properties);\n };\n\n /**\n * Encodes the specified CowMergeOperation message. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.srcExtent != null && Object.hasOwnProperty.call(message, \"srcExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.srcExtent, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.dstExtent != null && Object.hasOwnProperty.call(message, \"dstExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.dstExtent, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.srcOffset != null && Object.hasOwnProperty.call(message, \"srcOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.srcOffset);\n return writer;\n };\n\n /**\n * Encodes the specified CowMergeOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.CowMergeOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.srcExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 3:\n message.dstExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 4:\n message.srcOffset = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a CowMergeOperation message.\n * @function verify\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n CowMergeOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtent);\n if (error)\n return \"srcExtent.\" + error;\n }\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtent);\n if (error)\n return \"dstExtent.\" + error;\n }\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n if (!$util.isInteger(message.srcOffset))\n return \"srcOffset: integer expected\";\n return null;\n };\n\n /**\n * Creates a CowMergeOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n */\n CowMergeOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.CowMergeOperation)\n return object;\n let message = new $root.chromeos_update_engine.CowMergeOperation();\n switch (object.type) {\n case \"COW_COPY\":\n case 0:\n message.type = 0;\n break;\n case \"COW_XOR\":\n case 1:\n message.type = 1;\n break;\n case \"COW_REPLACE\":\n case 2:\n message.type = 2;\n break;\n }\n if (object.srcExtent != null) {\n if (typeof object.srcExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.srcExtent: object expected\");\n message.srcExtent = $root.chromeos_update_engine.Extent.fromObject(object.srcExtent);\n }\n if (object.dstExtent != null) {\n if (typeof object.dstExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.dstExtent: object expected\");\n message.dstExtent = $root.chromeos_update_engine.Extent.fromObject(object.dstExtent);\n }\n if (object.srcOffset != null)\n message.srcOffset = object.srcOffset >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a CowMergeOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.CowMergeOperation} message CowMergeOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n CowMergeOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"COW_COPY\" : 0;\n object.srcExtent = null;\n object.dstExtent = null;\n object.srcOffset = 0;\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.CowMergeOperation.Type[message.type] : message.type;\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\"))\n object.srcExtent = $root.chromeos_update_engine.Extent.toObject(message.srcExtent, options);\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\"))\n object.dstExtent = $root.chromeos_update_engine.Extent.toObject(message.dstExtent, options);\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n object.srcOffset = message.srcOffset;\n return object;\n };\n\n /**\n * Converts this CowMergeOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n * @returns {Object.} JSON object\n */\n CowMergeOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.CowMergeOperation.Type\n * @enum {number}\n * @property {number} COW_COPY=0 COW_COPY value\n * @property {number} COW_XOR=1 COW_XOR value\n * @property {number} COW_REPLACE=2 COW_REPLACE value\n */\n CowMergeOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"COW_COPY\"] = 0;\n values[valuesById[1] = \"COW_XOR\"] = 1;\n values[valuesById[2] = \"COW_REPLACE\"] = 2;\n return values;\n })();\n\n return CowMergeOperation;\n })();\n\n chromeos_update_engine.PartitionUpdate = (function() {\n\n /**\n * Properties of a PartitionUpdate.\n * @memberof chromeos_update_engine\n * @interface IPartitionUpdate\n * @property {string} partitionName PartitionUpdate partitionName\n * @property {boolean|null} [runPostinstall] PartitionUpdate runPostinstall\n * @property {string|null} [postinstallPath] PartitionUpdate postinstallPath\n * @property {string|null} [filesystemType] PartitionUpdate filesystemType\n * @property {Array.|null} [newPartitionSignature] PartitionUpdate newPartitionSignature\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldPartitionInfo] PartitionUpdate oldPartitionInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newPartitionInfo] PartitionUpdate newPartitionInfo\n * @property {Array.|null} [operations] PartitionUpdate operations\n * @property {boolean|null} [postinstallOptional] PartitionUpdate postinstallOptional\n * @property {chromeos_update_engine.IExtent|null} [hashTreeDataExtent] PartitionUpdate hashTreeDataExtent\n * @property {chromeos_update_engine.IExtent|null} [hashTreeExtent] PartitionUpdate hashTreeExtent\n * @property {string|null} [hashTreeAlgorithm] PartitionUpdate hashTreeAlgorithm\n * @property {Uint8Array|null} [hashTreeSalt] PartitionUpdate hashTreeSalt\n * @property {chromeos_update_engine.IExtent|null} [fecDataExtent] PartitionUpdate fecDataExtent\n * @property {chromeos_update_engine.IExtent|null} [fecExtent] PartitionUpdate fecExtent\n * @property {number|null} [fecRoots] PartitionUpdate fecRoots\n * @property {string|null} [version] PartitionUpdate version\n * @property {Array.|null} [mergeOperations] PartitionUpdate mergeOperations\n * @property {number|Long|null} [estimateCowSize] PartitionUpdate estimateCowSize\n */\n\n /**\n * Constructs a new PartitionUpdate.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionUpdate.\n * @implements IPartitionUpdate\n * @constructor\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n */\n function PartitionUpdate(properties) {\n this.newPartitionSignature = [];\n this.operations = [];\n this.mergeOperations = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionUpdate partitionName.\n * @member {string} partitionName\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.partitionName = \"\";\n\n /**\n * PartitionUpdate runPostinstall.\n * @member {boolean} runPostinstall\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.runPostinstall = false;\n\n /**\n * PartitionUpdate postinstallPath.\n * @member {string} postinstallPath\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallPath = \"\";\n\n /**\n * PartitionUpdate filesystemType.\n * @member {string} filesystemType\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.filesystemType = \"\";\n\n /**\n * PartitionUpdate newPartitionSignature.\n * @member {Array.} newPartitionSignature\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionSignature = $util.emptyArray;\n\n /**\n * PartitionUpdate oldPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.oldPartitionInfo = null;\n\n /**\n * PartitionUpdate newPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionInfo = null;\n\n /**\n * PartitionUpdate operations.\n * @member {Array.} operations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.operations = $util.emptyArray;\n\n /**\n * PartitionUpdate postinstallOptional.\n * @member {boolean} postinstallOptional\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallOptional = false;\n\n /**\n * PartitionUpdate hashTreeDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeDataExtent = null;\n\n /**\n * PartitionUpdate hashTreeExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeExtent = null;\n\n /**\n * PartitionUpdate hashTreeAlgorithm.\n * @member {string} hashTreeAlgorithm\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeAlgorithm = \"\";\n\n /**\n * PartitionUpdate hashTreeSalt.\n * @member {Uint8Array} hashTreeSalt\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeSalt = $util.newBuffer([]);\n\n /**\n * PartitionUpdate fecDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecDataExtent = null;\n\n /**\n * PartitionUpdate fecExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecExtent = null;\n\n /**\n * PartitionUpdate fecRoots.\n * @member {number} fecRoots\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecRoots = 2;\n\n /**\n * PartitionUpdate version.\n * @member {string} version\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.version = \"\";\n\n /**\n * PartitionUpdate mergeOperations.\n * @member {Array.} mergeOperations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.mergeOperations = $util.emptyArray;\n\n /**\n * PartitionUpdate estimateCowSize.\n * @member {number|Long} estimateCowSize\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.estimateCowSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new PartitionUpdate instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate instance\n */\n PartitionUpdate.create = function create(properties) {\n return new PartitionUpdate(properties);\n };\n\n /**\n * Encodes the specified PartitionUpdate message. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.partitionName);\n if (message.runPostinstall != null && Object.hasOwnProperty.call(message, \"runPostinstall\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.runPostinstall);\n if (message.postinstallPath != null && Object.hasOwnProperty.call(message, \"postinstallPath\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.postinstallPath);\n if (message.filesystemType != null && Object.hasOwnProperty.call(message, \"filesystemType\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.filesystemType);\n if (message.newPartitionSignature != null && message.newPartitionSignature.length)\n for (let i = 0; i < message.newPartitionSignature.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.newPartitionSignature[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.oldPartitionInfo != null && Object.hasOwnProperty.call(message, \"oldPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldPartitionInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newPartitionInfo != null && Object.hasOwnProperty.call(message, \"newPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newPartitionInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.operations != null && message.operations.length)\n for (let i = 0; i < message.operations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.operations[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.postinstallOptional != null && Object.hasOwnProperty.call(message, \"postinstallOptional\"))\n writer.uint32(/* id 9, wireType 0 =*/72).bool(message.postinstallOptional);\n if (message.hashTreeDataExtent != null && Object.hasOwnProperty.call(message, \"hashTreeDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeDataExtent, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.hashTreeExtent != null && Object.hasOwnProperty.call(message, \"hashTreeExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeExtent, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.hashTreeAlgorithm != null && Object.hasOwnProperty.call(message, \"hashTreeAlgorithm\"))\n writer.uint32(/* id 12, wireType 2 =*/98).string(message.hashTreeAlgorithm);\n if (message.hashTreeSalt != null && Object.hasOwnProperty.call(message, \"hashTreeSalt\"))\n writer.uint32(/* id 13, wireType 2 =*/106).bytes(message.hashTreeSalt);\n if (message.fecDataExtent != null && Object.hasOwnProperty.call(message, \"fecDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecDataExtent, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.fecExtent != null && Object.hasOwnProperty.call(message, \"fecExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecExtent, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.fecRoots != null && Object.hasOwnProperty.call(message, \"fecRoots\"))\n writer.uint32(/* id 16, wireType 0 =*/128).uint32(message.fecRoots);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 17, wireType 2 =*/138).string(message.version);\n if (message.mergeOperations != null && message.mergeOperations.length)\n for (let i = 0; i < message.mergeOperations.length; ++i)\n $root.chromeos_update_engine.CowMergeOperation.encode(message.mergeOperations[i], writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n if (message.estimateCowSize != null && Object.hasOwnProperty.call(message, \"estimateCowSize\"))\n writer.uint32(/* id 19, wireType 0 =*/152).uint64(message.estimateCowSize);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionUpdate message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionUpdate();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.partitionName = reader.string();\n break;\n case 2:\n message.runPostinstall = reader.bool();\n break;\n case 3:\n message.postinstallPath = reader.string();\n break;\n case 4:\n message.filesystemType = reader.string();\n break;\n case 5:\n if (!(message.newPartitionSignature && message.newPartitionSignature.length))\n message.newPartitionSignature = [];\n message.newPartitionSignature.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n case 6:\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n if (!(message.operations && message.operations.length))\n message.operations = [];\n message.operations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 9:\n message.postinstallOptional = reader.bool();\n break;\n case 10:\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 11:\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 12:\n message.hashTreeAlgorithm = reader.string();\n break;\n case 13:\n message.hashTreeSalt = reader.bytes();\n break;\n case 14:\n message.fecDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 15:\n message.fecExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 16:\n message.fecRoots = reader.uint32();\n break;\n case 17:\n message.version = reader.string();\n break;\n case 18:\n if (!(message.mergeOperations && message.mergeOperations.length))\n message.mergeOperations = [];\n message.mergeOperations.push($root.chromeos_update_engine.CowMergeOperation.decode(reader, reader.uint32()));\n break;\n case 19:\n message.estimateCowSize = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"partitionName\"))\n throw $util.ProtocolError(\"missing required 'partitionName'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionUpdate message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionUpdate.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.partitionName))\n return \"partitionName: string expected\";\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n if (typeof message.runPostinstall !== \"boolean\")\n return \"runPostinstall: boolean expected\";\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n if (!$util.isString(message.postinstallPath))\n return \"postinstallPath: string expected\";\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n if (!$util.isString(message.filesystemType))\n return \"filesystemType: string expected\";\n if (message.newPartitionSignature != null && message.hasOwnProperty(\"newPartitionSignature\")) {\n if (!Array.isArray(message.newPartitionSignature))\n return \"newPartitionSignature: array expected\";\n for (let i = 0; i < message.newPartitionSignature.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.newPartitionSignature[i]);\n if (error)\n return \"newPartitionSignature.\" + error;\n }\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldPartitionInfo);\n if (error)\n return \"oldPartitionInfo.\" + error;\n }\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newPartitionInfo);\n if (error)\n return \"newPartitionInfo.\" + error;\n }\n if (message.operations != null && message.hasOwnProperty(\"operations\")) {\n if (!Array.isArray(message.operations))\n return \"operations: array expected\";\n for (let i = 0; i < message.operations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.operations[i]);\n if (error)\n return \"operations.\" + error;\n }\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n if (typeof message.postinstallOptional !== \"boolean\")\n return \"postinstallOptional: boolean expected\";\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeDataExtent);\n if (error)\n return \"hashTreeDataExtent.\" + error;\n }\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeExtent);\n if (error)\n return \"hashTreeExtent.\" + error;\n }\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n if (!$util.isString(message.hashTreeAlgorithm))\n return \"hashTreeAlgorithm: string expected\";\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n if (!(message.hashTreeSalt && typeof message.hashTreeSalt.length === \"number\" || $util.isString(message.hashTreeSalt)))\n return \"hashTreeSalt: buffer expected\";\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecDataExtent);\n if (error)\n return \"fecDataExtent.\" + error;\n }\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecExtent);\n if (error)\n return \"fecExtent.\" + error;\n }\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n if (!$util.isInteger(message.fecRoots))\n return \"fecRoots: integer expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.mergeOperations != null && message.hasOwnProperty(\"mergeOperations\")) {\n if (!Array.isArray(message.mergeOperations))\n return \"mergeOperations: array expected\";\n for (let i = 0; i < message.mergeOperations.length; ++i) {\n let error = $root.chromeos_update_engine.CowMergeOperation.verify(message.mergeOperations[i]);\n if (error)\n return \"mergeOperations.\" + error;\n }\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (!$util.isInteger(message.estimateCowSize) && !(message.estimateCowSize && $util.isInteger(message.estimateCowSize.low) && $util.isInteger(message.estimateCowSize.high)))\n return \"estimateCowSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a PartitionUpdate message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n */\n PartitionUpdate.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionUpdate)\n return object;\n let message = new $root.chromeos_update_engine.PartitionUpdate();\n if (object.partitionName != null)\n message.partitionName = String(object.partitionName);\n if (object.runPostinstall != null)\n message.runPostinstall = Boolean(object.runPostinstall);\n if (object.postinstallPath != null)\n message.postinstallPath = String(object.postinstallPath);\n if (object.filesystemType != null)\n message.filesystemType = String(object.filesystemType);\n if (object.newPartitionSignature) {\n if (!Array.isArray(object.newPartitionSignature))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: array expected\");\n message.newPartitionSignature = [];\n for (let i = 0; i < object.newPartitionSignature.length; ++i) {\n if (typeof object.newPartitionSignature[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: object expected\");\n message.newPartitionSignature[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.newPartitionSignature[i]);\n }\n }\n if (object.oldPartitionInfo != null) {\n if (typeof object.oldPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.oldPartitionInfo: object expected\");\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldPartitionInfo);\n }\n if (object.newPartitionInfo != null) {\n if (typeof object.newPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionInfo: object expected\");\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newPartitionInfo);\n }\n if (object.operations) {\n if (!Array.isArray(object.operations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: array expected\");\n message.operations = [];\n for (let i = 0; i < object.operations.length; ++i) {\n if (typeof object.operations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: object expected\");\n message.operations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.operations[i]);\n }\n }\n if (object.postinstallOptional != null)\n message.postinstallOptional = Boolean(object.postinstallOptional);\n if (object.hashTreeDataExtent != null) {\n if (typeof object.hashTreeDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeDataExtent: object expected\");\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeDataExtent);\n }\n if (object.hashTreeExtent != null) {\n if (typeof object.hashTreeExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeExtent: object expected\");\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeExtent);\n }\n if (object.hashTreeAlgorithm != null)\n message.hashTreeAlgorithm = String(object.hashTreeAlgorithm);\n if (object.hashTreeSalt != null)\n if (typeof object.hashTreeSalt === \"string\")\n $util.base64.decode(object.hashTreeSalt, message.hashTreeSalt = $util.newBuffer($util.base64.length(object.hashTreeSalt)), 0);\n else if (object.hashTreeSalt.length)\n message.hashTreeSalt = object.hashTreeSalt;\n if (object.fecDataExtent != null) {\n if (typeof object.fecDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecDataExtent: object expected\");\n message.fecDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecDataExtent);\n }\n if (object.fecExtent != null) {\n if (typeof object.fecExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecExtent: object expected\");\n message.fecExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecExtent);\n }\n if (object.fecRoots != null)\n message.fecRoots = object.fecRoots >>> 0;\n if (object.version != null)\n message.version = String(object.version);\n if (object.mergeOperations) {\n if (!Array.isArray(object.mergeOperations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected\");\n message.mergeOperations = [];\n for (let i = 0; i < object.mergeOperations.length; ++i) {\n if (typeof object.mergeOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: object expected\");\n message.mergeOperations[i] = $root.chromeos_update_engine.CowMergeOperation.fromObject(object.mergeOperations[i]);\n }\n }\n if (object.estimateCowSize != null)\n if ($util.Long)\n (message.estimateCowSize = $util.Long.fromValue(object.estimateCowSize)).unsigned = true;\n else if (typeof object.estimateCowSize === \"string\")\n message.estimateCowSize = parseInt(object.estimateCowSize, 10);\n else if (typeof object.estimateCowSize === \"number\")\n message.estimateCowSize = object.estimateCowSize;\n else if (typeof object.estimateCowSize === \"object\")\n message.estimateCowSize = new $util.LongBits(object.estimateCowSize.low >>> 0, object.estimateCowSize.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionUpdate message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.PartitionUpdate} message PartitionUpdate\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionUpdate.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.newPartitionSignature = [];\n object.operations = [];\n object.mergeOperations = [];\n }\n if (options.defaults) {\n object.partitionName = \"\";\n object.runPostinstall = false;\n object.postinstallPath = \"\";\n object.filesystemType = \"\";\n object.oldPartitionInfo = null;\n object.newPartitionInfo = null;\n object.postinstallOptional = false;\n object.hashTreeDataExtent = null;\n object.hashTreeExtent = null;\n object.hashTreeAlgorithm = \"\";\n if (options.bytes === String)\n object.hashTreeSalt = \"\";\n else {\n object.hashTreeSalt = [];\n if (options.bytes !== Array)\n object.hashTreeSalt = $util.newBuffer(object.hashTreeSalt);\n }\n object.fecDataExtent = null;\n object.fecExtent = null;\n object.fecRoots = 2;\n object.version = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.estimateCowSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.estimateCowSize = options.longs === String ? \"0\" : 0;\n }\n if (message.partitionName != null && message.hasOwnProperty(\"partitionName\"))\n object.partitionName = message.partitionName;\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n object.runPostinstall = message.runPostinstall;\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n object.postinstallPath = message.postinstallPath;\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n object.filesystemType = message.filesystemType;\n if (message.newPartitionSignature && message.newPartitionSignature.length) {\n object.newPartitionSignature = [];\n for (let j = 0; j < message.newPartitionSignature.length; ++j)\n object.newPartitionSignature[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.newPartitionSignature[j], options);\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\"))\n object.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldPartitionInfo, options);\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\"))\n object.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newPartitionInfo, options);\n if (message.operations && message.operations.length) {\n object.operations = [];\n for (let j = 0; j < message.operations.length; ++j)\n object.operations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.operations[j], options);\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n object.postinstallOptional = message.postinstallOptional;\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\"))\n object.hashTreeDataExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeDataExtent, options);\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\"))\n object.hashTreeExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeExtent, options);\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n object.hashTreeAlgorithm = message.hashTreeAlgorithm;\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n object.hashTreeSalt = options.bytes === String ? $util.base64.encode(message.hashTreeSalt, 0, message.hashTreeSalt.length) : options.bytes === Array ? Array.prototype.slice.call(message.hashTreeSalt) : message.hashTreeSalt;\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\"))\n object.fecDataExtent = $root.chromeos_update_engine.Extent.toObject(message.fecDataExtent, options);\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\"))\n object.fecExtent = $root.chromeos_update_engine.Extent.toObject(message.fecExtent, options);\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n object.fecRoots = message.fecRoots;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.mergeOperations && message.mergeOperations.length) {\n object.mergeOperations = [];\n for (let j = 0; j < message.mergeOperations.length; ++j)\n object.mergeOperations[j] = $root.chromeos_update_engine.CowMergeOperation.toObject(message.mergeOperations[j], options);\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (typeof message.estimateCowSize === \"number\")\n object.estimateCowSize = options.longs === String ? String(message.estimateCowSize) : message.estimateCowSize;\n else\n object.estimateCowSize = options.longs === String ? $util.Long.prototype.toString.call(message.estimateCowSize) : options.longs === Number ? new $util.LongBits(message.estimateCowSize.low >>> 0, message.estimateCowSize.high >>> 0).toNumber(true) : message.estimateCowSize;\n return object;\n };\n\n /**\n * Converts this PartitionUpdate to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionUpdate.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionUpdate;\n })();\n\n chromeos_update_engine.DynamicPartitionGroup = (function() {\n\n /**\n * Properties of a DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionGroup\n * @property {string} name DynamicPartitionGroup name\n * @property {number|Long|null} [size] DynamicPartitionGroup size\n * @property {Array.|null} [partitionNames] DynamicPartitionGroup partitionNames\n */\n\n /**\n * Constructs a new DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionGroup.\n * @implements IDynamicPartitionGroup\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n */\n function DynamicPartitionGroup(properties) {\n this.partitionNames = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionGroup name.\n * @member {string} name\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.name = \"\";\n\n /**\n * DynamicPartitionGroup size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DynamicPartitionGroup partitionNames.\n * @member {Array.} partitionNames\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.partitionNames = $util.emptyArray;\n\n /**\n * Creates a new DynamicPartitionGroup instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup instance\n */\n DynamicPartitionGroup.create = function create(properties) {\n return new DynamicPartitionGroup(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.size);\n if (message.partitionNames != null && message.partitionNames.length)\n for (let i = 0; i < message.partitionNames.length; ++i)\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.partitionNames[i]);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.name = reader.string();\n break;\n case 2:\n message.size = reader.uint64();\n break;\n case 3:\n if (!(message.partitionNames && message.partitionNames.length))\n message.partitionNames = [];\n message.partitionNames.push(reader.string());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"name\"))\n throw $util.ProtocolError(\"missing required 'name'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionGroup message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionGroup.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.partitionNames != null && message.hasOwnProperty(\"partitionNames\")) {\n if (!Array.isArray(message.partitionNames))\n return \"partitionNames: array expected\";\n for (let i = 0; i < message.partitionNames.length; ++i)\n if (!$util.isString(message.partitionNames[i]))\n return \"partitionNames: string[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a DynamicPartitionGroup message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n */\n DynamicPartitionGroup.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionGroup)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n if (object.name != null)\n message.name = String(object.name);\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.partitionNames) {\n if (!Array.isArray(object.partitionNames))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected\");\n message.partitionNames = [];\n for (let i = 0; i < object.partitionNames.length; ++i)\n message.partitionNames[i] = String(object.partitionNames[i]);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionGroup message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.DynamicPartitionGroup} message DynamicPartitionGroup\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionGroup.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.partitionNames = [];\n if (options.defaults) {\n object.name = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.partitionNames && message.partitionNames.length) {\n object.partitionNames = [];\n for (let j = 0; j < message.partitionNames.length; ++j)\n object.partitionNames[j] = message.partitionNames[j];\n }\n return object;\n };\n\n /**\n * Converts this DynamicPartitionGroup to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionGroup.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionGroup;\n })();\n\n chromeos_update_engine.DynamicPartitionMetadata = (function() {\n\n /**\n * Properties of a DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionMetadata\n * @property {Array.|null} [groups] DynamicPartitionMetadata groups\n * @property {boolean|null} [snapshotEnabled] DynamicPartitionMetadata snapshotEnabled\n * @property {boolean|null} [vabcEnabled] DynamicPartitionMetadata vabcEnabled\n * @property {string|null} [vabcCompressionParam] DynamicPartitionMetadata vabcCompressionParam\n * @property {number|null} [cowVersion] DynamicPartitionMetadata cowVersion\n */\n\n /**\n * Constructs a new DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionMetadata.\n * @implements IDynamicPartitionMetadata\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n */\n function DynamicPartitionMetadata(properties) {\n this.groups = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionMetadata groups.\n * @member {Array.} groups\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.groups = $util.emptyArray;\n\n /**\n * DynamicPartitionMetadata snapshotEnabled.\n * @member {boolean} snapshotEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.snapshotEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcEnabled.\n * @member {boolean} vabcEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcCompressionParam.\n * @member {string} vabcCompressionParam\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcCompressionParam = \"\";\n\n /**\n * DynamicPartitionMetadata cowVersion.\n * @member {number} cowVersion\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.cowVersion = 0;\n\n /**\n * Creates a new DynamicPartitionMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata instance\n */\n DynamicPartitionMetadata.create = function create(properties) {\n return new DynamicPartitionMetadata(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.groups != null && message.groups.length)\n for (let i = 0; i < message.groups.length; ++i)\n $root.chromeos_update_engine.DynamicPartitionGroup.encode(message.groups[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.snapshotEnabled != null && Object.hasOwnProperty.call(message, \"snapshotEnabled\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.snapshotEnabled);\n if (message.vabcEnabled != null && Object.hasOwnProperty.call(message, \"vabcEnabled\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.vabcEnabled);\n if (message.vabcCompressionParam != null && Object.hasOwnProperty.call(message, \"vabcCompressionParam\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.vabcCompressionParam);\n if (message.cowVersion != null && Object.hasOwnProperty.call(message, \"cowVersion\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.cowVersion);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.groups && message.groups.length))\n message.groups = [];\n message.groups.push($root.chromeos_update_engine.DynamicPartitionGroup.decode(reader, reader.uint32()));\n break;\n case 2:\n message.snapshotEnabled = reader.bool();\n break;\n case 3:\n message.vabcEnabled = reader.bool();\n break;\n case 4:\n message.vabcCompressionParam = reader.string();\n break;\n case 5:\n message.cowVersion = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.groups != null && message.hasOwnProperty(\"groups\")) {\n if (!Array.isArray(message.groups))\n return \"groups: array expected\";\n for (let i = 0; i < message.groups.length; ++i) {\n let error = $root.chromeos_update_engine.DynamicPartitionGroup.verify(message.groups[i]);\n if (error)\n return \"groups.\" + error;\n }\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n if (typeof message.snapshotEnabled !== \"boolean\")\n return \"snapshotEnabled: boolean expected\";\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n if (typeof message.vabcEnabled !== \"boolean\")\n return \"vabcEnabled: boolean expected\";\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n if (!$util.isString(message.vabcCompressionParam))\n return \"vabcCompressionParam: string expected\";\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n if (!$util.isInteger(message.cowVersion))\n return \"cowVersion: integer expected\";\n return null;\n };\n\n /**\n * Creates a DynamicPartitionMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n */\n DynamicPartitionMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionMetadata)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n if (object.groups) {\n if (!Array.isArray(object.groups))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: array expected\");\n message.groups = [];\n for (let i = 0; i < object.groups.length; ++i) {\n if (typeof object.groups[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: object expected\");\n message.groups[i] = $root.chromeos_update_engine.DynamicPartitionGroup.fromObject(object.groups[i]);\n }\n }\n if (object.snapshotEnabled != null)\n message.snapshotEnabled = Boolean(object.snapshotEnabled);\n if (object.vabcEnabled != null)\n message.vabcEnabled = Boolean(object.vabcEnabled);\n if (object.vabcCompressionParam != null)\n message.vabcCompressionParam = String(object.vabcCompressionParam);\n if (object.cowVersion != null)\n message.cowVersion = object.cowVersion >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.DynamicPartitionMetadata} message DynamicPartitionMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.groups = [];\n if (options.defaults) {\n object.snapshotEnabled = false;\n object.vabcEnabled = false;\n object.vabcCompressionParam = \"\";\n object.cowVersion = 0;\n }\n if (message.groups && message.groups.length) {\n object.groups = [];\n for (let j = 0; j < message.groups.length; ++j)\n object.groups[j] = $root.chromeos_update_engine.DynamicPartitionGroup.toObject(message.groups[j], options);\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n object.snapshotEnabled = message.snapshotEnabled;\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n object.vabcEnabled = message.vabcEnabled;\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n object.vabcCompressionParam = message.vabcCompressionParam;\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n object.cowVersion = message.cowVersion;\n return object;\n };\n\n /**\n * Converts this DynamicPartitionMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionMetadata;\n })();\n\n chromeos_update_engine.ApexInfo = (function() {\n\n /**\n * Properties of an ApexInfo.\n * @memberof chromeos_update_engine\n * @interface IApexInfo\n * @property {string|null} [packageName] ApexInfo packageName\n * @property {number|Long|null} [version] ApexInfo version\n * @property {boolean|null} [isCompressed] ApexInfo isCompressed\n * @property {number|Long|null} [decompressedSize] ApexInfo decompressedSize\n */\n\n /**\n * Constructs a new ApexInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexInfo.\n * @implements IApexInfo\n * @constructor\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n */\n function ApexInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexInfo packageName.\n * @member {string} packageName\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.packageName = \"\";\n\n /**\n * ApexInfo version.\n * @member {number|Long} version\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * ApexInfo isCompressed.\n * @member {boolean} isCompressed\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.isCompressed = false;\n\n /**\n * ApexInfo decompressedSize.\n * @member {number|Long} decompressedSize\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.decompressedSize = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * Creates a new ApexInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo instance\n */\n ApexInfo.create = function create(properties) {\n return new ApexInfo(properties);\n };\n\n /**\n * Encodes the specified ApexInfo message. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.packageName != null && Object.hasOwnProperty.call(message, \"packageName\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.packageName);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.version);\n if (message.isCompressed != null && Object.hasOwnProperty.call(message, \"isCompressed\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isCompressed);\n if (message.decompressedSize != null && Object.hasOwnProperty.call(message, \"decompressedSize\"))\n writer.uint32(/* id 4, wireType 0 =*/32).int64(message.decompressedSize);\n return writer;\n };\n\n /**\n * Encodes the specified ApexInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.packageName = reader.string();\n break;\n case 2:\n message.version = reader.int64();\n break;\n case 3:\n message.isCompressed = reader.bool();\n break;\n case 4:\n message.decompressedSize = reader.int64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n if (!$util.isString(message.packageName))\n return \"packageName: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high)))\n return \"version: integer|Long expected\";\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n if (typeof message.isCompressed !== \"boolean\")\n return \"isCompressed: boolean expected\";\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (!$util.isInteger(message.decompressedSize) && !(message.decompressedSize && $util.isInteger(message.decompressedSize.low) && $util.isInteger(message.decompressedSize.high)))\n return \"decompressedSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an ApexInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n */\n ApexInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexInfo)\n return object;\n let message = new $root.chromeos_update_engine.ApexInfo();\n if (object.packageName != null)\n message.packageName = String(object.packageName);\n if (object.version != null)\n if ($util.Long)\n (message.version = $util.Long.fromValue(object.version)).unsigned = false;\n else if (typeof object.version === \"string\")\n message.version = parseInt(object.version, 10);\n else if (typeof object.version === \"number\")\n message.version = object.version;\n else if (typeof object.version === \"object\")\n message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber();\n if (object.isCompressed != null)\n message.isCompressed = Boolean(object.isCompressed);\n if (object.decompressedSize != null)\n if ($util.Long)\n (message.decompressedSize = $util.Long.fromValue(object.decompressedSize)).unsigned = false;\n else if (typeof object.decompressedSize === \"string\")\n message.decompressedSize = parseInt(object.decompressedSize, 10);\n else if (typeof object.decompressedSize === \"number\")\n message.decompressedSize = object.decompressedSize;\n else if (typeof object.decompressedSize === \"object\")\n message.decompressedSize = new $util.LongBits(object.decompressedSize.low >>> 0, object.decompressedSize.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from an ApexInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.ApexInfo} message ApexInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.packageName = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.version = options.longs === String ? \"0\" : 0;\n object.isCompressed = false;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.decompressedSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.decompressedSize = options.longs === String ? \"0\" : 0;\n }\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n object.packageName = message.packageName;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (typeof message.version === \"number\")\n object.version = options.longs === String ? String(message.version) : message.version;\n else\n object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version;\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n object.isCompressed = message.isCompressed;\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (typeof message.decompressedSize === \"number\")\n object.decompressedSize = options.longs === String ? String(message.decompressedSize) : message.decompressedSize;\n else\n object.decompressedSize = options.longs === String ? $util.Long.prototype.toString.call(message.decompressedSize) : options.longs === Number ? new $util.LongBits(message.decompressedSize.low >>> 0, message.decompressedSize.high >>> 0).toNumber() : message.decompressedSize;\n return object;\n };\n\n /**\n * Converts this ApexInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ApexInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexInfo;\n })();\n\n chromeos_update_engine.ApexMetadata = (function() {\n\n /**\n * Properties of an ApexMetadata.\n * @memberof chromeos_update_engine\n * @interface IApexMetadata\n * @property {Array.|null} [apexInfo] ApexMetadata apexInfo\n */\n\n /**\n * Constructs a new ApexMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexMetadata.\n * @implements IApexMetadata\n * @constructor\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n */\n function ApexMetadata(properties) {\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexMetadata apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n */\n ApexMetadata.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new ApexMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata instance\n */\n ApexMetadata.create = function create(properties) {\n return new ApexMetadata(properties);\n };\n\n /**\n * Encodes the specified ApexMetadata message. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified ApexMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates an ApexMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n */\n ApexMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexMetadata)\n return object;\n let message = new $root.chromeos_update_engine.ApexMetadata();\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from an ApexMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.ApexMetadata} message ApexMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.apexInfo = [];\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this ApexMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n ApexMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexMetadata;\n })();\n\n chromeos_update_engine.DeltaArchiveManifest = (function() {\n\n /**\n * Properties of a DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @interface IDeltaArchiveManifest\n * @property {number|null} [blockSize] DeltaArchiveManifest blockSize\n * @property {number|Long|null} [signaturesOffset] DeltaArchiveManifest signaturesOffset\n * @property {number|Long|null} [signaturesSize] DeltaArchiveManifest signaturesSize\n * @property {number|null} [minorVersion] DeltaArchiveManifest minorVersion\n * @property {Array.|null} [partitions] DeltaArchiveManifest partitions\n * @property {number|Long|null} [maxTimestamp] DeltaArchiveManifest maxTimestamp\n * @property {chromeos_update_engine.IDynamicPartitionMetadata|null} [dynamicPartitionMetadata] DeltaArchiveManifest dynamicPartitionMetadata\n * @property {boolean|null} [partialUpdate] DeltaArchiveManifest partialUpdate\n * @property {Array.|null} [apexInfo] DeltaArchiveManifest apexInfo\n * @property {string|null} [securityPatchLevel] DeltaArchiveManifest securityPatchLevel\n */\n\n /**\n * Constructs a new DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DeltaArchiveManifest.\n * @implements IDeltaArchiveManifest\n * @constructor\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n */\n function DeltaArchiveManifest(properties) {\n this.partitions = [];\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DeltaArchiveManifest blockSize.\n * @member {number} blockSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.blockSize = 4096;\n\n /**\n * DeltaArchiveManifest signaturesOffset.\n * @member {number|Long} signaturesOffset\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest signaturesSize.\n * @member {number|Long} signaturesSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest minorVersion.\n * @member {number} minorVersion\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.minorVersion = 0;\n\n /**\n * DeltaArchiveManifest partitions.\n * @member {Array.} partitions\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partitions = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest maxTimestamp.\n * @member {number|Long} maxTimestamp\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.maxTimestamp = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * DeltaArchiveManifest dynamicPartitionMetadata.\n * @member {chromeos_update_engine.IDynamicPartitionMetadata|null|undefined} dynamicPartitionMetadata\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.dynamicPartitionMetadata = null;\n\n /**\n * DeltaArchiveManifest partialUpdate.\n * @member {boolean} partialUpdate\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partialUpdate = false;\n\n /**\n * DeltaArchiveManifest apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.apexInfo = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest securityPatchLevel.\n * @member {string} securityPatchLevel\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.securityPatchLevel = \"\";\n\n /**\n * Creates a new DeltaArchiveManifest instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest instance\n */\n DeltaArchiveManifest.create = function create(properties) {\n return new DeltaArchiveManifest(properties);\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.blockSize != null && Object.hasOwnProperty.call(message, \"blockSize\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.blockSize);\n if (message.signaturesOffset != null && Object.hasOwnProperty.call(message, \"signaturesOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.signaturesOffset);\n if (message.signaturesSize != null && Object.hasOwnProperty.call(message, \"signaturesSize\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.signaturesSize);\n if (message.minorVersion != null && Object.hasOwnProperty.call(message, \"minorVersion\"))\n writer.uint32(/* id 12, wireType 0 =*/96).uint32(message.minorVersion);\n if (message.partitions != null && message.partitions.length)\n for (let i = 0; i < message.partitions.length; ++i)\n $root.chromeos_update_engine.PartitionUpdate.encode(message.partitions[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();\n if (message.maxTimestamp != null && Object.hasOwnProperty.call(message, \"maxTimestamp\"))\n writer.uint32(/* id 14, wireType 0 =*/112).int64(message.maxTimestamp);\n if (message.dynamicPartitionMetadata != null && Object.hasOwnProperty.call(message, \"dynamicPartitionMetadata\"))\n $root.chromeos_update_engine.DynamicPartitionMetadata.encode(message.dynamicPartitionMetadata, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.partialUpdate != null && Object.hasOwnProperty.call(message, \"partialUpdate\"))\n writer.uint32(/* id 16, wireType 0 =*/128).bool(message.partialUpdate);\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();\n if (message.securityPatchLevel != null && Object.hasOwnProperty.call(message, \"securityPatchLevel\"))\n writer.uint32(/* id 18, wireType 2 =*/146).string(message.securityPatchLevel);\n return writer;\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message, length delimited. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 3:\n message.blockSize = reader.uint32();\n break;\n case 4:\n message.signaturesOffset = reader.uint64();\n break;\n case 5:\n message.signaturesSize = reader.uint64();\n break;\n case 12:\n message.minorVersion = reader.uint32();\n break;\n case 13:\n if (!(message.partitions && message.partitions.length))\n message.partitions = [];\n message.partitions.push($root.chromeos_update_engine.PartitionUpdate.decode(reader, reader.uint32()));\n break;\n case 14:\n message.maxTimestamp = reader.int64();\n break;\n case 15:\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.decode(reader, reader.uint32());\n break;\n case 16:\n message.partialUpdate = reader.bool();\n break;\n case 17:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n case 18:\n message.securityPatchLevel = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DeltaArchiveManifest message.\n * @function verify\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DeltaArchiveManifest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n if (!$util.isInteger(message.blockSize))\n return \"blockSize: integer expected\";\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (!$util.isInteger(message.signaturesOffset) && !(message.signaturesOffset && $util.isInteger(message.signaturesOffset.low) && $util.isInteger(message.signaturesOffset.high)))\n return \"signaturesOffset: integer|Long expected\";\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (!$util.isInteger(message.signaturesSize) && !(message.signaturesSize && $util.isInteger(message.signaturesSize.low) && $util.isInteger(message.signaturesSize.high)))\n return \"signaturesSize: integer|Long expected\";\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n if (!$util.isInteger(message.minorVersion))\n return \"minorVersion: integer expected\";\n if (message.partitions != null && message.hasOwnProperty(\"partitions\")) {\n if (!Array.isArray(message.partitions))\n return \"partitions: array expected\";\n for (let i = 0; i < message.partitions.length; ++i) {\n let error = $root.chromeos_update_engine.PartitionUpdate.verify(message.partitions[i]);\n if (error)\n return \"partitions.\" + error;\n }\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (!$util.isInteger(message.maxTimestamp) && !(message.maxTimestamp && $util.isInteger(message.maxTimestamp.low) && $util.isInteger(message.maxTimestamp.high)))\n return \"maxTimestamp: integer|Long expected\";\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\")) {\n let error = $root.chromeos_update_engine.DynamicPartitionMetadata.verify(message.dynamicPartitionMetadata);\n if (error)\n return \"dynamicPartitionMetadata.\" + error;\n }\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n if (typeof message.partialUpdate !== \"boolean\")\n return \"partialUpdate: boolean expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n if (!$util.isString(message.securityPatchLevel))\n return \"securityPatchLevel: string expected\";\n return null;\n };\n\n /**\n * Creates a DeltaArchiveManifest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n */\n DeltaArchiveManifest.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DeltaArchiveManifest)\n return object;\n let message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n if (object.blockSize != null)\n message.blockSize = object.blockSize >>> 0;\n if (object.signaturesOffset != null)\n if ($util.Long)\n (message.signaturesOffset = $util.Long.fromValue(object.signaturesOffset)).unsigned = true;\n else if (typeof object.signaturesOffset === \"string\")\n message.signaturesOffset = parseInt(object.signaturesOffset, 10);\n else if (typeof object.signaturesOffset === \"number\")\n message.signaturesOffset = object.signaturesOffset;\n else if (typeof object.signaturesOffset === \"object\")\n message.signaturesOffset = new $util.LongBits(object.signaturesOffset.low >>> 0, object.signaturesOffset.high >>> 0).toNumber(true);\n if (object.signaturesSize != null)\n if ($util.Long)\n (message.signaturesSize = $util.Long.fromValue(object.signaturesSize)).unsigned = true;\n else if (typeof object.signaturesSize === \"string\")\n message.signaturesSize = parseInt(object.signaturesSize, 10);\n else if (typeof object.signaturesSize === \"number\")\n message.signaturesSize = object.signaturesSize;\n else if (typeof object.signaturesSize === \"object\")\n message.signaturesSize = new $util.LongBits(object.signaturesSize.low >>> 0, object.signaturesSize.high >>> 0).toNumber(true);\n if (object.minorVersion != null)\n message.minorVersion = object.minorVersion >>> 0;\n if (object.partitions) {\n if (!Array.isArray(object.partitions))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected\");\n message.partitions = [];\n for (let i = 0; i < object.partitions.length; ++i) {\n if (typeof object.partitions[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: object expected\");\n message.partitions[i] = $root.chromeos_update_engine.PartitionUpdate.fromObject(object.partitions[i]);\n }\n }\n if (object.maxTimestamp != null)\n if ($util.Long)\n (message.maxTimestamp = $util.Long.fromValue(object.maxTimestamp)).unsigned = false;\n else if (typeof object.maxTimestamp === \"string\")\n message.maxTimestamp = parseInt(object.maxTimestamp, 10);\n else if (typeof object.maxTimestamp === \"number\")\n message.maxTimestamp = object.maxTimestamp;\n else if (typeof object.maxTimestamp === \"object\")\n message.maxTimestamp = new $util.LongBits(object.maxTimestamp.low >>> 0, object.maxTimestamp.high >>> 0).toNumber();\n if (object.dynamicPartitionMetadata != null) {\n if (typeof object.dynamicPartitionMetadata !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected\");\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.fromObject(object.dynamicPartitionMetadata);\n }\n if (object.partialUpdate != null)\n message.partialUpdate = Boolean(object.partialUpdate);\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n if (object.securityPatchLevel != null)\n message.securityPatchLevel = String(object.securityPatchLevel);\n return message;\n };\n\n /**\n * Creates a plain object from a DeltaArchiveManifest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.DeltaArchiveManifest} message DeltaArchiveManifest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DeltaArchiveManifest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.partitions = [];\n object.apexInfo = [];\n }\n if (options.defaults) {\n object.blockSize = 4096;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesSize = options.longs === String ? \"0\" : 0;\n object.minorVersion = 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.maxTimestamp = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.maxTimestamp = options.longs === String ? \"0\" : 0;\n object.dynamicPartitionMetadata = null;\n object.partialUpdate = false;\n object.securityPatchLevel = \"\";\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n object.blockSize = message.blockSize;\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (typeof message.signaturesOffset === \"number\")\n object.signaturesOffset = options.longs === String ? String(message.signaturesOffset) : message.signaturesOffset;\n else\n object.signaturesOffset = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesOffset) : options.longs === Number ? new $util.LongBits(message.signaturesOffset.low >>> 0, message.signaturesOffset.high >>> 0).toNumber(true) : message.signaturesOffset;\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (typeof message.signaturesSize === \"number\")\n object.signaturesSize = options.longs === String ? String(message.signaturesSize) : message.signaturesSize;\n else\n object.signaturesSize = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesSize) : options.longs === Number ? new $util.LongBits(message.signaturesSize.low >>> 0, message.signaturesSize.high >>> 0).toNumber(true) : message.signaturesSize;\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n object.minorVersion = message.minorVersion;\n if (message.partitions && message.partitions.length) {\n object.partitions = [];\n for (let j = 0; j < message.partitions.length; ++j)\n object.partitions[j] = $root.chromeos_update_engine.PartitionUpdate.toObject(message.partitions[j], options);\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (typeof message.maxTimestamp === \"number\")\n object.maxTimestamp = options.longs === String ? String(message.maxTimestamp) : message.maxTimestamp;\n else\n object.maxTimestamp = options.longs === String ? $util.Long.prototype.toString.call(message.maxTimestamp) : options.longs === Number ? new $util.LongBits(message.maxTimestamp.low >>> 0, message.maxTimestamp.high >>> 0).toNumber() : message.maxTimestamp;\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\"))\n object.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.toObject(message.dynamicPartitionMetadata, options);\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n object.partialUpdate = message.partialUpdate;\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n object.securityPatchLevel = message.securityPatchLevel;\n return object;\n };\n\n /**\n * Converts this DeltaArchiveManifest to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n * @returns {Object.} JSON object\n */\n DeltaArchiveManifest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DeltaArchiveManifest;\n })();\n\n return chromeos_update_engine;\n})();\n\nexport { $root as default };\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TextWriter, ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { chromeos_update_engine } from './update_metadata_pb.js'\n\n/**\n * Parse the non-A/B OTA package and return it as a DeltaArchiveManifest\n * @param {ZipReader} packedFile\n */\nexport class PayloadNonAB extends chromeos_update_engine.DeltaArchiveManifest {\n nonAB: boolean = true\n Blocksize: number = 4096\n packedFile: ZipReader\n constructor(packedFile: ZipReader) {\n super()\n this.packedFile = packedFile\n }\n\n async init() {\n this.Blocksize = 4096\n this.partialUpdate = false\n this.dynamicPartitionMetadata = new chromeos_update_engine.DynamicPartitionMetadata(\n { snapshotEnabled: false, vabcEnabled: false }\n )\n this.partitions = []\n\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.transfer.list)/g\n const /** Array */ entries = await this.packedFile.getEntries()\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n const match = entry.filename.match(regexName)![0]\n let newPartition: any = new chromeos_update_engine.PartitionUpdate({\n partitionName: match\n })\n newPartition.rawText = await entry.getData!(new TextWriter())\n await this.parseTransferList(newPartition)\n this.partitions.push(newPartition)\n }\n }\n }\n\n async parseTransferList(partition: chromeos_update_engine.PartitionUpdate | any) {\n let lines = (partition as any).rawText.split('\\n')\n // First four line in header: version, total blocks,\n // number of stashed entries, maximum used memory for stash\n if (lines.length < 4) {\n throw 'At least 4 lines in header should be provided.'\n }\n partition.version = lines[0]\n partition.totalBlocks = parseInt(lines[1])\n partition.entryStashed = parseInt(lines[2])\n partition.maxStashed = parseInt(lines[3])\n partition.newPartitionInfo = new chromeos_update_engine.PartitionInfo()\n partition.newPartitionInfo.hash = new Uint8Array()\n partition.newPartitionInfo.size = 'unknown'\n /**\n * The main body have 8 different ops:\n * zero [rangeset] : fill zeros\n * new [rangeset] : fill with new data from \n * erase [rangeset] : mark given blocks as empty\n * move <...>\n * bsdiff <...>\n * imgdiff <...> :\n * Read the source blocks and apply (not for move op) to the target blocks\n * stash : load the given source range to memory\n * free : free the given \n * format:\n * [rangeset]: <# of pairs>, , , ...\n * : a hex number with length of 40\n * <...>: We expect to parse the remainder of the parameter tokens as one of:\n * (loads data from source image only)\n * - <[stash_id:stash_range] ...> (loads data from stashes only)\n * <[stash_id:stash_range] ...>\n * (loads data from both source image and stashes)\n */\n partition.operations = new Array()\n let newDataSize = await this.sizeNewData(partition.partitionName)\n for (const line of lines.slice(4)) {\n let op = new chromeos_update_engine.InstallOperation()\n let elements = line.split(' ')\n op.type = elements[0]\n switch ((op.type as unknown) as string) {\n case 'zero':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'new':\n // unlike an A/B OTA, the payload only exists in the payload.bin,\n // in an non-A/B OTA, the payload exists in both .new.data and .patch.data.\n // The new ops do not have any information about data length.\n // what we do here is: read in the size of .new.data, assume the first new\n // op have the data length of the size of .new.data.\n op.dataLength = newDataSize\n newDataSize = 0\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'erase':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'move':\n op.dstExtents = parseRange([], elements[2])\n break\n case 'bsdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'imgdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'stash':\n break\n case 'free':\n break\n }\n partition.operations.push(op)\n }\n }\n\n /**\n * Return the size of .new.data.*\n * @param {String} partitionName\n * @return {Number}\n */\n async sizeNewData(partitionName: string) {\n const /** Array */ entries = await this.packedFile.getEntries()\n const /** RegExp */ regexName = new RegExp(partitionName + '.new.dat.*')\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n return entry.uncompressedSize\n }\n }\n }\n}\n\n/**\n * Parse the range string and return it as an array of extents\n * @param {extents} Array\n * @param {String} rangeset\n * @return Array\n */\nfunction parseRange(extents: Object[], rangeset: string) {\n const regexRange = new RegExp('[d,]+')\n if (rangeset.match(regexRange)) {\n let elements = rangeset.split(',')\n for (let i = 1; i < elements.length; i = i + 2) {\n let extent = new Object({\n startBlock: parseInt(elements[i]),\n numBlocks: parseInt(elements[i + 1]) - parseInt(elements[i])\n })\n extents.push(extent)\n }\n }\n return extents\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class paypload is used to read in and\n * parse the payload.bin file from a OTA.zip file.\n * Class OpType creates a Map that can resolve the\n * operation type.\n * @package zip.js\n * @package protobufjs\n */\n\nimport {\n BlobReader,\n TextWriter,\n Writer,\n ZipReader,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\n// import '@zip.js/zip.js'\nimport { chromeos_update_engine as update_metadata_pb } from './update_metadata_pb'\nimport { PayloadNonAB } from './payload_nonab'\nimport { ZipFile } from './trim_zip'\n// import { Zip_js } from 'zip.js'\n\nconst /** String */ _MAGIC = 'CrAU'\nconst /** Number */ _VERSION_SIZE = 8\nconst /** Number */ _MANIFEST_LEN_SIZE = 8\nconst /** Number */ _METADATA_SIGNATURE_LEN_SIZE = 4\n\nconst /** Number */ _PAYLOAD_HEADER_SIZE =\n _MAGIC.length +\n _VERSION_SIZE +\n _MANIFEST_LEN_SIZE +\n _METADATA_SIGNATURE_LEN_SIZE\n\nconst /** Number */ _BRILLO_MAJOR_PAYLOAD_VERSION = 2\nexport const /** Array */ MetadataFormat = [\n {\n prefix: 'pre-build',\n key: 'preBuild',\n name: 'Pre-build'\n },\n {\n prefix: 'pre-build-incremental',\n key: 'preBuildVersion',\n name: 'Pre-build version'\n },\n {\n prefix: 'post-build',\n key: 'postBuild',\n name: 'Post-build'\n },\n {\n prefix: 'post-build-incremental',\n key: 'postBuildVersion',\n name: 'Post-build version'\n },\n {\n prefix: 'post-security-patch-level',\n key: 'postSecurityPatchLevel',\n name: 'Post-build SPL'\n },\n {\n prefix: 'post-timestamp',\n key: 'postTimestamp',\n name: 'Post-build timestamp'\n },\n ]\n\nclass StopIteration extends Error {}\n\nclass AbPayloadHeader {\n constructor(\n public magic: string,\n public version: number,\n public manifest_len: number,\n public metadata_signature_len: number\n ) {}\n}\n\n/**\n * Read in an integer from binary bufferArray.\n * @param {Int} size the size of a integer being read in\n * @return {Int} an integer.\n */\nasync function readIntAt(buffer: Blob, position: number, size: number) {\n let /** DataView */ view = new DataView(\n await buffer!.slice(position, position + size).arrayBuffer()\n )\n if (typeof view.getBigUint64 !== 'function') {\n view.getBigUint64 = function(offset) {\n const a = BigInt(view.getUint32(offset))\n const b = BigInt(view.getUint32(offset + 4))\n const bigNumber = a * 4294967296n + b\n return bigNumber\n }\n }\n switch (size) {\n case 2:\n return view.getUint16(0)\n case 4:\n return view.getUint32(0)\n case 8:\n return Number(view.getBigUint64(0))\n default:\n throw 'Cannot read this integer with size ' + size\n }\n}\n\nclass OTAPayloadBlobWriter extends Writer {\n offset: number\n contentType: string\n blob: Blob\n prefixLength: number\n\n header?: AbPayloadHeader\n\n async readHeader(blob: Blob) {\n let cursor = 0\n const readInt = (size: number) => {\n const ret = readIntAt(blob, cursor, size)\n cursor += size\n return ret\n }\n let buffer = await blob.slice(0, _PAYLOAD_HEADER_SIZE).arrayBuffer()\n let /** TextDecoder */ decoder = new TextDecoder()\n let magicBytes = buffer.slice(0, _MAGIC.length)\n const magic = decoder.decode(magicBytes)\n if (magic != _MAGIC) {\n throw new Error(\n `MAGIC is not correct, expected: ${_MAGIC} actual: ${magic}`\n )\n }\n cursor += _MAGIC.length\n const header_version = await readInt(_VERSION_SIZE)\n const manifest_len = await readInt(_MANIFEST_LEN_SIZE)\n if (header_version != _BRILLO_MAJOR_PAYLOAD_VERSION) {\n throw new Error(`Unexpected major version number: ${header_version}`)\n }\n const metadata_signature_len = await readInt(_METADATA_SIGNATURE_LEN_SIZE)\n this.header = new AbPayloadHeader(\n magic,\n header_version,\n manifest_len,\n metadata_signature_len\n )\n }\n /**\n * A zip.Writer that is tailored for OTA payload.bin read-in.\n * Instead of reading in all the contents in payload.bin, this writer will\n * throw an 'StopIteration' error when the header is read in.\n * The header will be stored into the .\n * @param {Payload} payload\n * @param {String} contentType\n */\n constructor(contentType = '') {\n super()\n this.offset = 0\n this.contentType = contentType\n this.blob = new Blob([], { type: contentType })\n this.prefixLength = 0\n }\n\n async writeUint8Array(array: Uint8Array) {\n super.writeUint8Array(array)\n this.blob = new Blob([this.blob, array.buffer], { type: this.contentType })\n this.offset = this.blob.size\n // Once the prefixLength is non-zero, the address of manifest and signature\n // become known and can be read in. Otherwise the header needs to be read\n // in first to determine the prefixLength.\n if (this.offset >= _PAYLOAD_HEADER_SIZE && this.prefixLength == 0) {\n console.log('Parsing header!')\n await this.readHeader(this.blob)\n this.prefixLength =\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n console.log(`Computed metadata length: ${this.prefixLength}`)\n }\n if (this.prefixLength > 0) {\n console.log(`${this.offset}/${this.prefixLength}`)\n if (this.offset >= this.prefixLength) {\n // The prefix has everything we need (header, manifest, signature). Once\n // the offset is beyond the prefix, no need to move on.\n this.blob = this.blob.slice(0, this.prefixLength)\n throw new StopIteration()\n }\n }\n }\n\n getData() {\n return this.blob\n }\n}\n\nexport class Payload {\n zipreader: ZipReader\n buffer: Blob | undefined\n private metadata: any\n payload_properties!: string[]\n manifest: update_metadata_pb.DeltaArchiveManifest | undefined\n metadata_signature!: update_metadata_pb.Signatures\n\n header?: AbPayloadHeader\n\n /**\n * This class parses the metadata of a OTA package.\n * @param {File} file A OTA.zip file read from user's machine.\n */\n constructor(file: File | URL | ZipFile) {\n if (file instanceof File) {\n this.zipreader = new ZipReader(new BlobReader(file))\n } else if (file instanceof URL) {\n this.zipreader = new ZipReader(new HttpReader(file.href))\n } else {\n this.zipreader = file.reader\n }\n }\n\n getMetadataLength(): number {\n return (\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n )\n }\n\n /**\n * Unzip the OTA package, get payload.bin and metadata\n */\n async unzip() {\n let entries = await this.zipreader.getEntries()\n for (let entry of entries) {\n if (entry.filename == 'payload.bin') {\n let writer = new OTAPayloadBlobWriter('')\n try {\n await entry.getData!(writer)\n } catch (e) {\n if (e instanceof StopIteration) {\n // Exception used as a hack to stop reading from zip. NO need to do anything\n // Ideally zip.js would provide an API to partialll read a zip\n // entry, but they don't. So this is what we get\n } else {\n console.log(e)\n throw e\n }\n }\n this.buffer = writer.getData()\n await this.readManifest(this.buffer, writer.header!)\n console.log('AB OTA manifest parsed')\n } else if (entry.filename == 'META-INF/com/android/metadata') {\n this.metadata = await entry.getData!(new TextWriter())\n console.log('OTA Package metadata parsed')\n } else if (entry.filename == \"payload_properties.txt\") {\n let payload_properties: string = await entry.getData!(new TextWriter());\n this.payload_properties = payload_properties.split(\"\\n\");\n console.log('OTA payload_properties.txt parsed');\n console.log(this.getPayloadHash());\n }\n }\n if (!this.manifest) {\n console.log('Failed to parse AB OTA package, falling back to non-AB')\n try {\n // The temporary variable manifest has to be used here, to prevent the html page\n // being rendered before everything is read in properly\n let manifest = new PayloadNonAB(this.zipreader)\n await manifest.init()\n manifest.nonAB = true\n this.manifest = manifest\n } catch (error) {\n alert('Please select a legit OTA package')\n return\n }\n }\n }\n\n getPayloadHash() {\n const file_hash_prefix = \"FILE_HASH=\";\n for(let line of this.payload_properties) {\n if (line.startsWith(file_hash_prefix)) {\n return base64ToBytes(line.substring(file_hash_prefix.length));\n }\n }\n }\n\n /**\n * Read the header of payload.bin, including the magic, header_version,\n * manifest_len, metadata_signature_len.\n */\n /**\n * Read in the manifest in an OTA.zip file.\n * The structure of the manifest can be found in:\n * aosp/system/update_engine/update_metadata.proto\n */\n async readManifest(buffer: Blob, header: AbPayloadHeader) {\n this.header = header\n let cursor = _PAYLOAD_HEADER_SIZE\n let manifestBlob = await buffer\n .slice(cursor, cursor + header.manifest_len)\n .arrayBuffer()\n cursor += header.manifest_len\n this.manifest = update_metadata_pb.DeltaArchiveManifest.decode(\n new Uint8Array(manifestBlob)\n )\n let signatureBlob = await buffer\n .slice(cursor, cursor + header.metadata_signature_len)\n .arrayBuffer()\n cursor += header.metadata_signature_len\n this.metadata_signature = update_metadata_pb.Signatures.decode(\n new Uint8Array(signatureBlob)\n );\n (this.manifest! as any).nonAB = false\n }\n\n parseMetadata() {\n for (let formatter of MetadataFormat) {\n let regex = new RegExp(formatter.prefix + '.+')\n if (this.metadata && this.metadata.match(regex)) {\n (this as any)[formatter.key] = trimEntry(\n this.metadata.match(regex)[0],\n formatter.prefix\n )\n } else {\n (this as any)[formatter.key] = ''\n }\n }\n }\n\n async init() {\n await this.unzip()\n this.parseMetadata()\n }\n}\n\nexport class DefaultMap extends Map {\n /** Reload the original get method. Return the original key value if\n * the key does not exist.\n * @param {Any} key\n */\n getWithDefault(key: any) {\n if (!this.has(key)) return key\n return this.get(key)\n }\n}\n\nexport class OpType {\n mapType: DefaultMap\n /**\n * OpType.mapType create a map that could resolve the operation\n * types. The operation types are encoded as numbers in\n * update_metadata.proto and must be decoded before any usage.\n */\n constructor() {\n let types = update_metadata_pb.InstallOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport class MergeOpType {\n mapType: DefaultMap\n /**\n * MergeOpType create a map that could resolve the COW merge operation\n * types. This is very similar to OpType class except that one is for\n * installation operations.\n */\n constructor() {\n let /** Array<{String: Number}>*/ types =\n update_metadata_pb.CowMergeOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport function octToHex(bufferArray: Uint8Array, space = true, maxLine = 16) {\n let hex_table = ''\n for (let i = 0; i < bufferArray.length; i++) {\n const hex /** String **/ = bufferArray[i].toString(16).toUpperCase()\n if (hex.length === 2) {\n hex_table += hex + (space ? ' ' : '')\n } else {\n hex_table += '0' + hex + (space ? ' ' : '')\n }\n if ((i + 1) % maxLine == 0 && space) {\n hex_table += '\\n'\n }\n }\n return hex_table\n}\n\n/**\n * Trim the prefix in an entry. This is required because the lookbehind\n * regular expression is not supported in safari yet.\n * @param {String} entry\n * @param {String} prefix\n * @return String\n */\nfunction trimEntry(entry: string, prefix: string) {\n return entry.slice(prefix.length + 1, entry.length)\n}\n\nfunction base64ToBytes(base64: string) {\n const binString = atob(base64);\n return Uint8Array.from(binString, (m) => m.codePointAt(0)!);\n}\n","\n\n\n\n\n\n\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EChartsOption } from 'echarts'\n\nexport class EchartsData {\n statisticData: Map\n trimmedData: Map\n title: string\n unit: string\n maximumEntries: number\n /**\n * Given a set of [key, value] pairs and title, create an object for further\n * usage in Vue-Echarts.\n * @param {Map} statisticData\n * @param {String} title\n * @param {String} unit\n * @param {Number} maximumEntries\n */\n constructor(\n statisticData: Map,\n title: string,\n unit: string,\n maximumEntries = 15\n ) {\n this.statisticData = statisticData\n this.trimmedData = trimMap(statisticData, maximumEntries)\n this.title = title\n this.unit = unit\n this.maximumEntries = maximumEntries\n }\n\n /**\n * Convert the raw data into a string.\n * @return {String} A list of [key, value].\n */\n listData() {\n let /** String */ table = ''\n for (let [key, value] of this.statisticData) {\n table += key + ' : ' + value.toString() + ' Blocks' + '\\n'\n }\n return table\n }\n\n /**\n * Generate necessary parameters (option) for vue-echarts.\n * Format of the parameters can be found here:\n * https://echarts.apache.org/en/option.html\n * @param {String} unit\n * @return {Object} an ECharts option object.\n */\n getEchartsOption(): EChartsOption {\n let /** Object */ option: EChartsOption = {}\n option.title = {\n text: this.title,\n left: 'center'\n }\n option.tooltip = {\n trigger: 'item',\n formatter: '{a}
{b} : {c} ' + this.unit + ' ({d}%)'\n }\n option.legend = {\n orient: 'horizontal',\n left: 'top',\n top: '10%',\n data: Array.from(this.trimmedData.keys())\n }\n option.series = [\n {\n name: this.title,\n type: 'pie',\n radius: '55%',\n center: ['50%', '60%'],\n data: Array.from(this.trimmedData).map((pair: any) => {\n return { value: pair[1], name: pair[0] }\n }),\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)'\n }\n }\n }\n ]\n return option\n }\n}\n\n/**\n * When there are too many entries in the map, the pie chart can be very\n * crowded. This function will return the entries that have high values.\n * Specifically, the top will be stored and the others\n * will be added into an entry called 'other'.\n * @param {Map} map\n * @param {Number} maximumEntries\n * @return {Map}\n */\nfunction trimMap(map: Map, maximumEntries: number) {\n if (map.size <= maximumEntries) return map\n let /** Map */ new_map = new Map()\n for (let i = 0; i < maximumEntries; i++) {\n let /** Number */ curr = 0\n let /** String */ currKey = ''\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n if (value > curr) {\n curr = value\n currKey = key\n }\n }\n }\n new_map.set(currKey, curr)\n }\n let /** Number */ restTotal = 0\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n restTotal += value\n }\n }\n new_map.set('other', restTotal)\n return new_map\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class MapParser will take in a Android build and construct\n * several file name maps (physical address: file name) according to it.\n * The map of each partitions is added by calling MapParser.add(partitionName).\n * You can query the file name being operated by calling\n * MapParser.query(address, datalength).\n */\n\nimport {\n ZipReader,\n BlobReader,\n TextWriter,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\nimport { chromeos_update_engine } from './update_metadata_pb'\n\nexport class MapParser {\n build: ZipReader\n mapFiles: Map\n maps: Map\n /**\n * This class will take in a .zip Android build and construct a file type map\n * @param {File} targetFile\n */\n constructor(targetFile: File | URL) {\n if (targetFile instanceof File) {\n this.build = new ZipReader(new BlobReader(targetFile))\n } else {\n this.build = new ZipReader(new HttpReader(targetFile.href))\n }\n this.mapFiles = new Map()\n this.maps = new Map()\n }\n\n /**\n * Find the .map entries in the .zip build file. Store them as a map with\n * pairs of (partition name: zip.js entry).\n */\n async init() {\n let /** Array */ entries = await this.build.getEntries()\n const /** RegExp*/ regexPath = /IMAGES\\/[a-z_]*\\.map/g\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.map)/g\n entries.forEach(entry => {\n if (entry.filename.match(regexPath)) {\n this.mapFiles.set(entry.filename.match(regexName)![0], entry)\n }\n })\n }\n\n /**\n * According to the .map in the build, build a map for later query.\n * @param {String} partitionName\n * @param {Number} totalLength\n */\n async add(partitionName: string, totalLength: number) {\n let /** Array */ map = []\n const /** RegExp */ regexNumber = /\\d+/g\n const /** Reg */ regexRange = /\\d+\\-\\d+/g\n for (let i = 0; i < totalLength; i++) map[i] = `<${partitionName}>`\n if (this.mapFiles.get(partitionName)) {\n let /** String */ mapText = await this.mapFiles\n .get(partitionName)\n .getData(new TextWriter())\n let /** Array */ fileEntries = mapText.split('\\n')\n // Each line of the .map file in Android build starts with the filename\n // Followed by the block address, either a number or a range, for example:\n // //system/apex/com.android.adbd.apex 54-66 66 66-2663\n for (let entry of fileEntries) {\n let /** Array */ elements = entry.split(' ')\n for (let j = 1; j < elements.length; j++) {\n let /** Number */ left = 0\n let /** Number */ right = 0\n if (elements[j].match(regexRange)) {\n left = parseInt(elements[j].match(/\\d+/g)[0])\n right = parseInt(elements[j].match(/\\d+/g)[1])\n } else {\n left = parseInt(elements[j].match(regexNumber))\n right = parseInt(elements[j].match(regexNumber))\n }\n InsertMap(map, elements[0], left, right)\n }\n }\n this.maps.set(partitionName, map)\n } else {\n this.maps.set(partitionName, map)\n }\n }\n\n /**\n * Return the filename of given address.\n * @param {String} partitionName\n * @param {Array} extents\n * @return {Array}\n */\n query(partitionName: string, extents: Array) {\n let /** Array */ names = []\n let /** Array */ map = this.maps.get(partitionName)\n for (let ext of extents) {\n names.push(queryMap(map, ext.startBlock, ext.startBlock + ext.numBlocks))\n }\n return names\n }\n}\n\n/**\n * Fill in the hashtable from to using .\n * @param {Array} map\n * @param {String} name\n * @param {Number} left\n * @param {Number} right\n */\nfunction InsertMap(\n map: Array,\n name: string,\n left: number,\n right: number\n) {\n for (let i = left; i <= right; i++) {\n map[i] = name\n }\n}\n\n/**\n * Query the hashtable using index
.\n * @param {Array} map\n * @param {Number} left\n * @param {Number} right\n */\nfunction queryMap(map: Array, left: number, right: number) {\n // Assuming the consecutive blocks belong to the same file\n // Only the start block is queried here.\n if (!map[left]) {\n return 'unknown'\n }\n return map[left]\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Offer functions that can be used to parse the partitionUpdate\n * and then do statistics over it. One can use analysePartitions to specify the\n * partitions been analysed and metrics.\n */\n\nimport { OpType, MergeOpType } from './payload'\nimport { EchartsData } from './echarts_data'\nimport { MapParser } from './map_parser'\nimport { chromeos_update_engine } from './update_metadata_pb'\n\n/**\n * Add a to a element associated to . If the element dose not\n * exists than its value will be initialized to zero.\n * @param {Map} map\n * @param {String} key\n * @param {Number} value\n */\nfunction addNumberToMap(map: Map, key: String, value: number) {\n if (!map.get(key)) {\n map.set(key, 0)\n }\n map.set(key, map.get(key)! + value)\n}\n\n/**\n * Return a statistics over the numbers of blocks (in destination) that are\n * being operated by different installation operation (e.g. REPLACE, BSDIFF).\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedBlockStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n operatedBlocks,\n operationType,\n numBlocks(operation.dstExtents)\n )\n }\n }\n return operatedBlocks\n}\n\nfunction partitionPayloadSize(\n partition: chromeos_update_engine.IPartitionUpdate\n) {\n if (!partition.operations) {\n return 0\n }\n let size = 0\n for (let op of partition.operations!) {\n size += op.dataLength\n }\n return size\n}\n\nexport function partitionPayloadSizeStatistics(\n partitions: Array\n) {\n let partitionStats = new Map()\n for (let partition of partitions) {\n addNumberToMap(\n partitionStats,\n partition.partitionName,\n partitionPayloadSize(partition)\n )\n }\n return partitionStats\n}\n\nexport function mergeOperationStatistics(\n partitions: Array,\n blockSize: number\n) {\n let /** Map */ mergeOperations = new Map()\n let /** MergeOpType */ opType = new MergeOpType()\n let /** Number */ totalBlocks = 0\n for (let partition of partitions) {\n for (let operation of partition.mergeOperations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n mergeOperations,\n operationType,\n operation.dstExtent!.numBlocks\n )\n }\n // The total blocks number should be rounded up\n if (partition.newPartitionInfo == null) {\n throw new Error(\n `Partition ${partition.partitionName} doesn't have new_partition_info field.`\n )\n }\n totalBlocks += Math.ceil(partition.newPartitionInfo.size / blockSize)\n }\n // The COW merge operation is default to be COW_replace and not shown in\n // the manifest info. We have to mannually add that part of operations,\n // by subtracting the total blocks with other blocks.\n mergeOperations.forEach((value, key) => (totalBlocks -= value))\n mergeOperations.set('COW_REPLACE', totalBlocks)\n return mergeOperations\n}\n\n/**\n * Return a statistics over the disk usage of payload.bin, based on the type of\n * installation operations. Only partitions that are being passed in will be\n * included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedPayloadStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(operatedBlocks, operationType, operation.dataLength)\n }\n }\n return operatedBlocks\n}\n/**\n * Return a statistics over the disk usage of each file types in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFileExtensionsStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let filenameStats = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n const fileExtenstionStats = new Map()\n filenameStats.forEach((size, filename) => {\n addNumberToMap(fileExtenstionStats, name2Extension(filename), size)\n })\n return fileExtenstionStats\n}\n\n/**\n * Return a statistics over the disk usage of each file name in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFilenamesStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let /** Map */ operatedFilenames = new Map()\n if (!targetFile) {\n return operatedFilenames\n }\n let buildMap = new MapParser(targetFile)\n await buildMap.init()\n for (let partition of partitions) {\n await buildMap.add(\n partition.partitionName,\n Math.ceil(partition.newPartitionInfo!.size / blockSize)\n )\n for (let operation of partition.operations!) {\n if (!operation.hasOwnProperty('dataLength')) continue\n let operatedFileNames = buildMap.query(\n partition.partitionName,\n operation.dstExtents!\n )\n let extentDataLength = distributeFilenames(\n operatedFileNames,\n operation.dstExtents!,\n operation.dataLength\n )\n extentDataLength!.forEach((value, key) => {\n addNumberToMap(operatedFilenames, key, value)\n })\n }\n }\n return operatedFilenames\n}\n\n/**\n * Analyse the given partitions using the given metrics.\n * @param {String} metrics\n * @param {Array} partitions\n * @return {EchartsData}\n */\nexport async function analysePartitions(\n metrics: String,\n partitions: Array,\n blockSize = 4096,\n targetFile: File | null | URL = null\n) {\n let /** Map */ statisticsData\n let /** Echartsdata */ echartsData\n switch (metrics) {\n case 'blocks':\n statisticsData = operatedBlockStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Operated blocks in target build',\n 'blocks'\n )\n break\n case 'payload':\n statisticsData = operatedPayloadStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Payload disk usage',\n 'bytes'\n )\n break\n case 'COWmerge':\n statisticsData = mergeOperationStatistics(partitions, blockSize)\n echartsData = new EchartsData(\n statisticsData,\n 'COW merge operations',\n 'blocks'\n )\n break\n case 'filenames':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated filenames',\n 'bytes'\n )\n break\n case 'extensions':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFileExtensionsStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated extensions',\n 'bytes'\n )\n break\n case 'partitions':\n statisticsData = partitionPayloadSizeStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Partition payload size',\n 'bytes'\n )\n break\n }\n if (echartsData) {\n return echartsData\n } else {\n throw 'Please double check if this is a proper AB OTA package.'\n }\n}\n\n/**\n * Calculate the number of blocks being operated\n * @param {Array} exts\n * @return {number}\n */\nexport function numBlocks(\n exts: Array | null | undefined\n) {\n if (!exts) {\n return 0\n }\n const accumulator = (total: number, ext: chromeos_update_engine.IExtent) =>\n total + ext.numBlocks\n return exts.reduce(accumulator, 0)\n}\n\n/**\n * Return a string that indicates the blocks being operated\n * in the manner of (start_block, block_length)\n * @param {Array} exts\n * @return {string}\n */\nexport function displayBlocks(exts: Array) {\n const accumulator = (total: string, ext: chromeos_update_engine.Extent) =>\n total + '(' + ext.startBlock + ',' + ext.numBlocks + ')'\n return exts.reduce(accumulator, '')\n}\n\n/**\n * Return a map with pairs of (file extension, data length used by this\n * extension). The total data length will be distributed by the blocks ratio\n * of each extent.\n * @param {Array} filenames\n * @param {Array} exts\n * @param {Number} length\n * @return {Map}\n */\nexport function distributeFilenames(\n filenames: Array,\n exts: Array,\n length: number\n): Map {\n let totalBlocks = numBlocks(exts)\n let distributedLengths = new Map()\n for (let i = 0; i < filenames.length; i++) {\n addNumberToMap(\n distributedLengths,\n filenames[i],\n Math.round((length * exts[i].numBlocks) / totalBlocks)\n )\n }\n return distributedLengths\n}\n\n/**\n * convert a filename into extension, for example:\n * '//system/apex/com.android.adbd.apex' => 'apex'\n * @param {String} filename\n * @return {String}\n */\nexport function name2Extension(filename: string) {\n let elements = filename.split('.')\n if (elements.length > 1) {\n return elements[elements.length - 1]\n } else if (elements[0] === 'unknown') {\n return 'unknown'\n } else if (filename[0] == '<' && filename.endsWith('>')) {\n return filename\n } else {\n return 'no-extension'\n }\n}\n","\nimport { numBlocks, displayBlocks } from '../services/payload_composition'\nimport { DefaultMap } from '../services/payload'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n operation: {\n type: Object,\n required: true\n },\n mapType: {\n type: DefaultMap,\n required: true\n }\n },\n data() {\n return {\n srcTotalBlocks: 0,\n srcBlocks: '',\n dstTotalBlocks: 0,\n dstBlocks: ''\n }\n },\n mounted() {\n if (this.operation.srcExtents) {\n this.srcTotalBlocks = numBlocks(this.operation.srcExtents)\n this.srcBlocks = displayBlocks(this.operation.srcExtents)\n }\n if (this.operation.dstExtents) {\n this.dstTotalBlocks = numBlocks(this.operation.dstExtents)\n this.dstBlocks = displayBlocks(this.operation.dstExtents)\n }\n }\n})\n","import { render } from \"./OperationDetail.vue?vue&type=template&id=44174082&scoped=true\"\nimport script from \"./OperationDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./OperationDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-44174082\"\n\nexport default script","\nimport { chromeos_update_engine } from '@/services/update_metadata_pb'\nimport { defineComponent } from 'vue'\nimport { OpType, octToHex } from '../services/payload'\nimport OperationDetail from './OperationDetail.vue'\n\nexport default defineComponent({\n components: {\n OperationDetail\n },\n props: {\n partition: {\n type: chromeos_update_engine.PartitionUpdate,\n required: true\n },\n dynamicPartitionList: {\n type: Array,\n required: true\n }\n },\n data() {\n return {\n showOPs: false,\n showInfo: false,\n opType: new OpType()\n }\n },\n methods: {\n toggle(key: string) {\n ;(this as any)[key] = !(this as any)[key]\n },\n octToHex: octToHex\n },\n computed: {\n readableTimestamp() {\n const unixTimestamp = parseInt(this.partition.version)\n if (isNaN(unixTimestamp)) {\n return ''\n }\n // Unix timestamp is in seconds, but js want milliseconds. So *1000\n return new Date(unixTimestamp * 1000).toString()\n },\n isDynamicPartition(): boolean {\n return (\n this.dynamicPartitionList.indexOf(this.partition.partitionName) >= 0\n )\n },\n isFECEnabled(): boolean {\n return (\n this.partition.fecExtent?.numBlocks > 0\n )\n },\n isHashtreeEnabled(): boolean {\n return (\n this.partition.hashTreeExtent?.numBlocks > 0\n )\n }\n }\n})\n","import { render } from \"./PartitionDetail.vue?vue&type=template&id=21e569e9&scoped=true\"\nimport script from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PartitionDetail.vue?vue&type=style&index=0&id=21e569e9&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-21e569e9\"\n\nexport default script","\n\n\n\n\n\n\n","import * as zip from '@zip.js/zip.js/dist/zip.js'\nimport { ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { Payload } from './payload'\n\nexport class ZipFile {\n public reader: ZipReader\n\n constructor(private file: File | URL) {\n this.reader = getZipReader(file)\n }\n getFileName() {\n return getFileName(this.file)\n }\n getFileSize() {\n if (this.file instanceof File) {\n return this.file.size\n } else {\n // TODO(zhangkelvin) Support getting file size from URL\n return 0\n }\n }\n}\n\nexport async function trimZip(\n file: ZipReader,\n p: (entry: zip.Entry) => boolean\n): Promise {\n const reader = file\n const writer = new zip.ZipWriter(new zip.BlobWriter('application/zip'))\n const entries = await reader.getEntries()\n for (const entry of entries.filter(entry => !!entry && p(entry))) {\n const blobWriter = new zip.BlobWriter()\n const data = (await entry.getData!(blobWriter)) as Blob\n console.log(`Adding ${entry.filename}, ${data.size}`)\n writer.add(entry.filename, new zip.BlobReader(blobWriter.getData()), {\n level: 0 // no compression\n })\n }\n return writer\n}\n\nfunction getZipReader(file: File | URL) {\n if (file instanceof File) {\n return new zip.ZipReader(new zip.BlobReader(file))\n } else {\n return new zip.ZipReader(new zip.HttpReader(file.href))\n }\n}\n\nexport function getFileName(file: File | URL) {\n if (file instanceof File) {\n return file.name\n } else {\n return file.pathname\n }\n}\n\nexport async function trimTargetFiles(file: File | URL): Promise {\n const writer = await trimZip(getZipReader(file), entry => {\n return entry.filename.startsWith('META/') || entry.filename.endsWith('.map') || entry.filename.endsWith(\".prop\") || entry.filename == \"prop.default\"\n })\n return await writer.close()\n}\n\nexport async function trimOTAPackage(payload: Payload): Promise {\n const writer = await trimZip(payload.zipreader, entry => {\n return entry.filename != 'payload.bin'\n })\n await writer.add(\n 'payload.bin',\n new zip.BlobReader(payload.buffer!.slice(0, payload.getMetadataLength())),\n // Most toolings assume that payload.bin and other entries are not\n // compressed, so use level 0\n {\n level: 0\n }\n )\n const blob: Blob = await writer.close()\n return blob\n}\n\nexport function downloadFile(\n blob: Blob,\n downloadNode: HTMLAnchorElement,\n filename: string\n) {\n const url = window.URL.createObjectURL(blob)\n downloadNode.href = url\n downloadNode.download = filename\n downloadNode.click()\n window.URL.revokeObjectURL(url)\n}\n\nexport function ensureSuffix(str: string, suffix: string) {\n if (str.endsWith(suffix)) {\n return str\n } else {\n return str + suffix\n }\n}\n","\nimport { Payload, MetadataFormat } from '../services/payload'\nimport { ZipFile } from '@/services/trim_zip'\n\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n zipFile: {\n type: ZipFile,\n required: true\n },\n payload: {\n type: Payload,\n required: true\n }\n },\n data() {\n return {\n MetadataFormat\n }\n },\n computed: {\n isDataWipePackage(): boolean {\n return this.payload.payload_properties.includes(\"POWERWASH=1\");\n },\n otaMetadata(): {\n prefix: string\n key: string\n name: string\n }[] {\n return MetadataFormat.filter(formatter =>\n String((this.payload as any)[formatter.key]).length > 0\n );\n },\n totalCOWSize(): number {\n const cowSizes = this.payload?.manifest?.partitions.map(p => p.estimateCowSize || 0);\n if (!cowSizes) {\n return 0;\n }\n return cowSizes.reduce((a, b) => a + b);\n },\n vabcCompressionParam(): string {\n return this.payload?.manifest?.dynamicPartitionMetadata?.vabcCompressionParam || \"\";\n },\n securityPatchLevel(): string {\n const spl = this.payload?.manifest?.securityPatchLevel;\n if (!spl) {\n return \"\";\n }\n return spl;\n },\n totalDynamicPartitionSize(): number {\n const groups = this.payload?.manifest?.dynamicPartitionMetadata?.groups\n if (!groups) {\n return 0\n }\n const dynamicPartitionNamess = new Set(\n groups.flatMap(g => g.partitionNames)\n )\n const dynamicPartitions =\n this.payload.manifest?.partitions.filter(p =>\n dynamicPartitionNamess.has(p.partitionName)\n ) || []\n if (dynamicPartitions.length <= 0) {\n return 0\n }\n return dynamicPartitions\n .map(p => p.newPartitionInfo?.size || 0)\n .reduce((acc, cur) => acc + cur)\n }\n }\n})\n","import { render } from \"./BasicInfo.vue?vue&type=template&id=78cae893&scoped=true\"\nimport script from \"./BasicInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./BasicInfo.vue?vue&type=script&lang=ts\"\n\nimport \"./BasicInfo.vue?vue&type=style&index=0&id=78cae893&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-78cae893\"\n\nexport default script","\nimport PartitionDetail from './PartitionDetail.vue'\nimport BasicInfo from './BasicInfo.vue'\nimport { Payload, octToHex } from '../services/payload'\nimport {\n downloadFile,\n ensureSuffix,\n trimOTAPackage,\n ZipFile\n} from '@/services/trim_zip'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n components: {\n PartitionDetail,\n BasicInfo\n },\n props: {\n zipFile: {\n type: ZipFile,\n default: null\n },\n payload: {\n type: Payload,\n default: null\n }\n },\n methods: {\n octToHex: octToHex,\n async exportOTAPackage() {\n const blob = await trimOTAPackage(this.payload as Payload)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(this.zipFile.getFileName(), '.zip')\n )\n }\n },\n computed: {\n dynamicPartitions(): string[] {\n return (\n this.payload.manifest?.dynamicPartitionMetadata?.groups?.flatMap(\n g => g.partitionNames || []\n ) || []\n )\n },\n payloadHash(): string {\n const hash = this.payload?.getPayloadHash();\n if (!hash) {\n return \"\";\n }\n return octToHex(hash, false);\n },\n }\n})\n","import { render } from \"./PayloadDetail.vue?vue&type=template&id=5dd4ca12&scoped=true\"\nimport script from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadDetail.vue?vue&type=style&index=0&id=5dd4ca12&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-5dd4ca12\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n labels: {\n type: Array,\n default: new Array()\n },\n modelValue: {\n type: Map,\n default: new Map()\n }\n },\n data() {\n return {\n selectAll: 1,\n selectAllText: ['Select All', 'Unselect All']\n }\n },\n mounted() {\n // Set the default value to be true once mounted\n for (let key of this.labels) {\n this.modelValue.set(key, true)\n }\n },\n methods: {\n updateSelected(newSelect: string) {\n this.modelValue.set(newSelect, !this.modelValue.get(newSelect))\n this.$emit('update:modelValue', this.modelValue)\n },\n revertAllSelection() {\n this.selectAll = 1 - this.selectAll\n for (let key of this.modelValue.keys()) {\n this.modelValue.set(key, Boolean(this.selectAll))\n }\n }\n }\n})\n","import { render } from \"./PartialCheckbox.vue?vue&type=template&id=533f2336&scoped=true\"\nimport script from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\n\nimport \"./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-533f2336\"\n\nexport default script","\n\n\n\n\n\n\n","import { render } from \"./PieChart.vue?vue&type=template&id=5d1cb486&scoped=true\"\nimport script from \"./PieChart.vue?vue&type=script&lang=js\"\nexport * from \"./PieChart.vue?vue&type=script&lang=js\"\n\nimport \"./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-5d1cb486\"\n\nexport default script","\nimport axios from 'axios'\nimport PartialCheckbox from './PartialCheckbox.vue'\nimport PieChart from './PieChart.vue'\nimport BaseFile from './BaseFile.vue'\nimport { analysePartitions } from '../services/payload_composition'\nimport { chromeos_update_engine as update_metadata_pb } from '../services/update_metadata_pb'\nimport { TooltipComponentPositionCallbackParams } from 'echarts'\nimport { EchartsData } from '@/services/echarts_data'\nimport { defineComponent } from 'vue'\nimport {\n downloadFile,\n ensureSuffix,\n getFileName,\n trimTargetFiles\n} from '@/services/trim_zip'\n\ninterface ComponentState {\n partitionInclude: Map\n echartsData: EchartsData | null\n listData: string\n targetFile: File | URL | null\n}\n\nexport default defineComponent({\n components: {\n PartialCheckbox,\n PieChart,\n BaseFile\n },\n props: {\n manifest: {\n type: update_metadata_pb.DeltaArchiveManifest,\n default: () => []\n },\n demo: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n partitionInclude: new Map(),\n echartsData: null,\n listData: '',\n targetFile: null\n } as ComponentState\n },\n computed: {\n updatePartitions(): string[] {\n return this.manifest.partitions.map(\n (partition: update_metadata_pb.IPartitionUpdate) => {\n return partition.partitionName\n }\n )\n }\n },\n async mounted() {\n if (this.demo) {\n try {\n const download = await axios.get(\n './files/cf_x86_target_file_demo.zip',\n { responseType: 'blob' }\n )\n this.targetFile = new File([download.data], 'target_demo.zip')\n } catch (err) {\n console.log('Please put a proper example target file in /public/files/')\n }\n }\n },\n methods: {\n piechartClick(param: TooltipComponentPositionCallbackParams) {\n console.log(param)\n },\n async updateChart(metrics: string) {\n let partitionSelected = this.manifest.partitions.filter(partition =>\n this.partitionInclude.get(partition.partitionName)\n )\n try {\n this.echartsData = await analysePartitions(\n metrics,\n partitionSelected,\n this.manifest.blockSize,\n this.targetFile\n )\n } catch (err) {\n alert(`Cannot be processed for the following issue: ${err}`)\n }\n },\n selectBuild(file: File | URL) {\n //TODO(lishutong) check the version of target file is same to the OTA target\n this.targetFile = file\n },\n async exportTargetFileMetadata() {\n const blob = await trimTargetFiles(this.targetFile!)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(getFileName(this.targetFile!), '.zip')\n )\n }\n }\n})\n","import { render } from \"./PayloadComposition.vue?vue&type=template&id=4d98493f&scoped=true\"\nimport script from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadComposition.vue?vue&type=style&index=0&id=4d98493f&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-4d98493f\"\n\nexport default script","\nimport BaseFile from '../components/BaseFile.vue'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n BaseFile,\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return ({\n zipFile: null,\n payload: null\n } as unknown) as {\n zipFile: ZipFile\n payload: Payload\n }\n },\n methods: {\n async unpackOTA(file: File | URL) {\n this.zipFile = new ZipFile(file)\n try {\n const payload = new Payload(this.zipFile as ZipFile);\n await payload.init();\n this.payload = payload;\n } catch (err) {\n alert(`Please check if this is a correct OTA package (.zip). ${err}`)\n console.log(err)\n }\n }\n }\n})\n","import { render } from \"./PackageAnalysis.vue?vue&type=template&id=7bb77d0c\"\nimport script from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nexport * from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\nimport axios from 'axios'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return {\n zipFile: null,\n payload: null\n } as {\n zipFile: ZipFile | null\n payload: Payload | null\n }\n },\n async created() {\n // put cf_x86_demo.zip and cf_x86_target_file_demo into\n // this directory: /public/files\n try {\n const download = await axios.get('./files/cf_x86_demo.zip', {\n responseType: 'blob'\n })\n this.zipFile = new ZipFile(new File([download.data], 'ota_demo.zip'))\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n console.log('Please put a proper example OTA in /public/files/')\n }\n }\n})\n","import { render } from \"./Demo.vue?vue&type=template&id=1e5d071a\"\nimport script from \"./Demo.vue?vue&type=script&lang=ts\"\nexport * from \"./Demo.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n","import { render } from \"./About.vue?vue&type=template&id=67ed0bf6\"\nconst script = {}\nscript.render = render\n\nexport default script","\n\n\n\n","import { render } from \"./NotFound.vue?vue&type=template&id=50c6f348&scoped=true\"\nconst script = {}\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-50c6f348\"\n\nexport default script","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createRouter, createWebHistory } from 'vue-router'\nimport PackageAnalysis from '@/views/PackageAnalysis.vue'\nimport Demo from'@/views/Demo.vue'\nimport About from '@/views/About.vue'\nimport NotFound from '@/views/NotFound.vue'\n\nconst routes = [\n {\n path: '/',\n name: 'Analysis',\n component: PackageAnalysis,\n meta: {\n title: 'Analyse OTA package - from AOSP'\n }\n },\n {\n path: '/demo',\n name: 'Demo',\n component: Demo\n },\n {\n path: '/about',\n name: 'About',\n component: About\n },\n {\n path: '/:catchAll(.*)',\n name: 'Not Found',\n component: NotFound\n }\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes\n})\n\n// This callback runs before every route change, including on page load.\nrouter.beforeEach((to, from, next) => {\n // This goes through the matched routes from last to first, finding the closest route with a title.\n // e.g., if we have `/some/deep/nested/route` and `/some`, `/deep`, and `/nested` have titles,\n // `/nested`'s will be chosen.\n const nearestWithTitle = to.matched.slice().reverse().find(r => r.meta && r.meta.title);\n\n // Find the nearest route element with meta tags.\n const nearestWithMeta = to.matched.slice().reverse().find(r => r.meta && r.meta.metaTags)!;\n\n const previousNearestWithMeta = from.matched.slice().reverse().find(r => r.meta && r.meta.metaTags);\n\n // If a route with a title was found, set the document (page) title to that value.\n if(nearestWithTitle) {\n document.title = nearestWithTitle.meta.title as string;\n } else if(previousNearestWithMeta) {\n document.title = previousNearestWithMeta.meta.title as string;\n }\n\n // Remove any stale meta tags from the document using the key attribute we set below.\n Array.from(document.querySelectorAll('[data-vue-router-controlled]')).map(el => el.parentNode!.removeChild(el));\n\n next();\n});\n\nexport default router\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createStore } from 'vuex'\n\nexport default createStore({\n state: {},\n mutations: {},\n actions: {},\n modules: {}\n})\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createApp } from 'vue'\nimport vuetify from './plugins/vuetify'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nconst app = createApp(App)\napp.use(router)\napp.use(store)\napp.use(vuetify)\n\napp.mount('#app')"],"sourceRoot":""} \ No newline at end of file diff --git a/analyseOTA/js/app.ba9c406f.js b/analyseOTA/js/app.ba9c406f.js new file mode 100644 index 0000000..cb75cb8 --- /dev/null +++ b/analyseOTA/js/app.ba9c406f.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var r,o,s=t[0],c=t[1],l=t[2],p=0,d=[];p>>3){case 1:r.startBlock=e.uint64();break;case 2:r.numBlocks=e.uint64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null==e.startBlock||!e.hasOwnProperty("startBlock")||se.isInteger(e.startBlock)||e.startBlock&&se.isInteger(e.startBlock.low)&&se.isInteger(e.startBlock.high)?null==e.numBlocks||!e.hasOwnProperty("numBlocks")||se.isInteger(e.numBlocks)||e.numBlocks&&se.isInteger(e.numBlocks.low)&&se.isInteger(e.numBlocks.high)?null:"numBlocks: integer|Long expected":"startBlock: integer|Long expected"},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.Extent)return e;var t=new ce.chromeos_update_engine.Extent;return null!=e.startBlock&&(se.Long?(t.startBlock=se.Long.fromValue(e.startBlock)).unsigned=!0:"string"===typeof e.startBlock?t.startBlock=parseInt(e.startBlock,10):"number"===typeof e.startBlock?t.startBlock=e.startBlock:"object"===Object(re["a"])(e.startBlock)&&(t.startBlock=new se.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0))),null!=e.numBlocks&&(se.Long?(t.numBlocks=se.Long.fromValue(e.numBlocks)).unsigned=!0:"string"===typeof e.numBlocks?t.numBlocks=parseInt(e.numBlocks,10):"number"===typeof e.numBlocks?t.numBlocks=e.numBlocks:"object"===Object(re["a"])(e.numBlocks)&&(t.numBlocks=new se.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(se.Long){var r=new se.Long(0,0,!0);n.startBlock=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.startBlock=t.longs===String?"0":0;if(se.Long){var a=new se.Long(0,0,!0);n.numBlocks=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.numBlocks=t.longs===String?"0":0}return null!=e.startBlock&&e.hasOwnProperty("startBlock")&&("number"===typeof e.startBlock?n.startBlock=t.longs===String?String(e.startBlock):e.startBlock:n.startBlock=t.longs===String?se.Long.prototype.toString.call(e.startBlock):t.longs===Number?new se.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0):e.startBlock),null!=e.numBlocks&&e.hasOwnProperty("numBlocks")&&("number"===typeof e.numBlocks?n.numBlocks=t.longs===String?String(e.numBlocks):e.numBlocks:n.numBlocks=t.longs===String?se.Long.prototype.toString.call(e.numBlocks):t.longs===Number?new se.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0):e.numBlocks),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.Signatures=function(){function e(e){if(this.signatures=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.signatures&&r.signatures.length||(r.signatures=[]),r.signatures.push(ce.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.signatures&&e.hasOwnProperty("signatures")){if(!Array.isArray(e.signatures))return"signatures: array expected";for(var t=0;t>>3){case 1:r.version=e.uint32();break;case 2:r.data=e.bytes();break;case 3:r.unpaddedSignatureSize=e.fixed32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null!=e.version&&e.hasOwnProperty("version")&&!se.isInteger(e.version)?"version: integer expected":null!=e.data&&e.hasOwnProperty("data")&&!(e.data&&"number"===typeof e.data.length||se.isString(e.data))?"data: buffer expected":null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&!se.isInteger(e.unpaddedSignatureSize)?"unpaddedSignatureSize: integer expected":null},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.Signatures.Signature)return e;var t=new ce.chromeos_update_engine.Signatures.Signature;return null!=e.version&&(t.version=e.version>>>0),null!=e.data&&("string"===typeof e.data?se.base64.decode(e.data,t.data=se.newBuffer(se.base64.length(e.data)),0):e.data.length&&(t.data=e.data)),null!=e.unpaddedSignatureSize&&(t.unpaddedSignatureSize=e.unpaddedSignatureSize>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.version=0,t.bytes===String?n.data="":(n.data=[],t.bytes!==Array&&(n.data=se.newBuffer(n.data))),n.unpaddedSignatureSize=0),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.data&&e.hasOwnProperty("data")&&(n.data=t.bytes===String?se.base64.encode(e.data,0,e.data.length):t.bytes===Array?Array.prototype.slice.call(e.data):e.data),null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&(n.unpaddedSignatureSize=e.unpaddedSignatureSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e}(),e.PartitionInfo=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.size=e.uint64();break;case 2:r.hash=e.bytes();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null==e.size||!e.hasOwnProperty("size")||se.isInteger(e.size)||e.size&&se.isInteger(e.size.low)&&se.isInteger(e.size.high)?null!=e.hash&&e.hasOwnProperty("hash")&&!(e.hash&&"number"===typeof e.hash.length||se.isString(e.hash))?"hash: buffer expected":null:"size: integer|Long expected"},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.PartitionInfo)return e;var t=new ce.chromeos_update_engine.PartitionInfo;return null!=e.size&&(se.Long?(t.size=se.Long.fromValue(e.size)).unsigned=!0:"string"===typeof e.size?t.size=parseInt(e.size,10):"number"===typeof e.size?t.size=e.size:"object"===Object(re["a"])(e.size)&&(t.size=new se.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0))),null!=e.hash&&("string"===typeof e.hash?se.base64.decode(e.hash,t.hash=se.newBuffer(se.base64.length(e.hash)),0):e.hash.length&&(t.hash=e.hash)),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(se.Long){var r=new se.Long(0,0,!0);n.size=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.size=t.longs===String?"0":0;t.bytes===String?n.hash="":(n.hash=[],t.bytes!==Array&&(n.hash=se.newBuffer(n.hash)))}return null!=e.size&&e.hasOwnProperty("size")&&("number"===typeof e.size?n.size=t.longs===String?String(e.size):e.size:n.size=t.longs===String?se.Long.prototype.toString.call(e.size):t.longs===Number?new se.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0):e.size),null!=e.hash&&e.hasOwnProperty("hash")&&(n.hash=t.bytes===String?se.base64.encode(e.hash,0,e.hash.length):t.bytes===Array?Array.prototype.slice.call(e.hash):e.hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.InstallOperation=function(){function e(e){if(this.srcExtents=[],this.dstExtents=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.dataOffset=e.uint64();break;case 3:r.dataLength=e.uint64();break;case 4:r.srcExtents&&r.srcExtents.length||(r.srcExtents=[]),r.srcExtents.push(ce.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 5:r.srcLength=e.uint64();break;case 6:r.dstExtents&&r.dstExtents.length||(r.dstExtents=[]),r.dstExtents.push(ce.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 7:r.dstLength=e.uint64();break;case 8:r.dataSha256Hash=e.bytes();break;case 9:r.srcSha256Hash=e.bytes();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("type"))throw se.ProtocolError("missing required 'type'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 8:case 6:case 7:case 10:case 9:case 11:case 12:case 13:break}if(null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&!se.isInteger(e.dataOffset)&&!(e.dataOffset&&se.isInteger(e.dataOffset.low)&&se.isInteger(e.dataOffset.high)))return"dataOffset: integer|Long expected";if(null!=e.dataLength&&e.hasOwnProperty("dataLength")&&!se.isInteger(e.dataLength)&&!(e.dataLength&&se.isInteger(e.dataLength.low)&&se.isInteger(e.dataLength.high)))return"dataLength: integer|Long expected";if(null!=e.srcExtents&&e.hasOwnProperty("srcExtents")){if(!Array.isArray(e.srcExtents))return"srcExtents: array expected";for(var t=0;t>>0,e.dataOffset.high>>>0).toNumber(!0))),null!=e.dataLength&&(se.Long?(t.dataLength=se.Long.fromValue(e.dataLength)).unsigned=!0:"string"===typeof e.dataLength?t.dataLength=parseInt(e.dataLength,10):"number"===typeof e.dataLength?t.dataLength=e.dataLength:"object"===Object(re["a"])(e.dataLength)&&(t.dataLength=new se.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0))),e.srcExtents){if(!Array.isArray(e.srcExtents))throw TypeError(".chromeos_update_engine.InstallOperation.srcExtents: array expected");t.srcExtents=[];for(var n=0;n>>0,e.srcLength.high>>>0).toNumber(!0))),e.dstExtents){if(!Array.isArray(e.dstExtents))throw TypeError(".chromeos_update_engine.InstallOperation.dstExtents: array expected");t.dstExtents=[];for(var r=0;r>>0,e.dstLength.high>>>0).toNumber(!0))),null!=e.dataSha256Hash&&("string"===typeof e.dataSha256Hash?se.base64.decode(e.dataSha256Hash,t.dataSha256Hash=se.newBuffer(se.base64.length(e.dataSha256Hash)),0):e.dataSha256Hash.length&&(t.dataSha256Hash=e.dataSha256Hash)),null!=e.srcSha256Hash&&("string"===typeof e.srcSha256Hash?se.base64.decode(e.srcSha256Hash,t.srcSha256Hash=se.newBuffer(se.base64.length(e.srcSha256Hash)),0):e.srcSha256Hash.length&&(t.srcSha256Hash=e.srcSha256Hash)),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.srcExtents=[],n.dstExtents=[]),t.defaults){if(n.type=t.enums===String?"REPLACE":0,se.Long){var r=new se.Long(0,0,!0);n.dataOffset=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.dataOffset=t.longs===String?"0":0;if(se.Long){var a=new se.Long(0,0,!0);n.dataLength=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.dataLength=t.longs===String?"0":0;if(se.Long){var i=new se.Long(0,0,!0);n.srcLength=t.longs===String?i.toString():t.longs===Number?i.toNumber():i}else n.srcLength=t.longs===String?"0":0;if(se.Long){var o=new se.Long(0,0,!0);n.dstLength=t.longs===String?o.toString():t.longs===Number?o.toNumber():o}else n.dstLength=t.longs===String?"0":0;t.bytes===String?n.dataSha256Hash="":(n.dataSha256Hash=[],t.bytes!==Array&&(n.dataSha256Hash=se.newBuffer(n.dataSha256Hash))),t.bytes===String?n.srcSha256Hash="":(n.srcSha256Hash=[],t.bytes!==Array&&(n.srcSha256Hash=se.newBuffer(n.srcSha256Hash)))}if(null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?ce.chromeos_update_engine.InstallOperation.Type[e.type]:e.type),null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&("number"===typeof e.dataOffset?n.dataOffset=t.longs===String?String(e.dataOffset):e.dataOffset:n.dataOffset=t.longs===String?se.Long.prototype.toString.call(e.dataOffset):t.longs===Number?new se.LongBits(e.dataOffset.low>>>0,e.dataOffset.high>>>0).toNumber(!0):e.dataOffset),null!=e.dataLength&&e.hasOwnProperty("dataLength")&&("number"===typeof e.dataLength?n.dataLength=t.longs===String?String(e.dataLength):e.dataLength:n.dataLength=t.longs===String?se.Long.prototype.toString.call(e.dataLength):t.longs===Number?new se.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0):e.dataLength),e.srcExtents&&e.srcExtents.length){n.srcExtents=[];for(var s=0;s>>0,e.srcLength.high>>>0).toNumber(!0):e.srcLength),e.dstExtents&&e.dstExtents.length){n.dstExtents=[];for(var c=0;c>>0,e.dstLength.high>>>0).toNumber(!0):e.dstLength),null!=e.dataSha256Hash&&e.hasOwnProperty("dataSha256Hash")&&(n.dataSha256Hash=t.bytes===String?se.base64.encode(e.dataSha256Hash,0,e.dataSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.dataSha256Hash):e.dataSha256Hash),null!=e.srcSha256Hash&&e.hasOwnProperty("srcSha256Hash")&&(n.srcSha256Hash=t.bytes===String?se.base64.encode(e.srcSha256Hash,0,e.srcSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.srcSha256Hash):e.srcSha256Hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="REPLACE"]=0,t[e[1]="REPLACE_BZ"]=1,t[e[2]="MOVE"]=2,t[e[3]="BSDIFF"]=3,t[e[4]="SOURCE_COPY"]=4,t[e[5]="SOURCE_BSDIFF"]=5,t[e[8]="REPLACE_XZ"]=8,t[e[6]="ZERO"]=6,t[e[7]="DISCARD"]=7,t[e[10]="BROTLI_BSDIFF"]=10,t[e[9]="PUFFDIFF"]=9,t[e[11]="ZUCCHINI"]=11,t[e[12]="LZ4DIFF_BSDIFF"]=12,t[e[13]="LZ4DIFF_PUFFDIFF"]=13,t}(),e}(),e.CowMergeOperation=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.srcExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 3:r.dstExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 4:r.srcOffset=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:break}if(null!=e.srcExtent&&e.hasOwnProperty("srcExtent")){var t=ce.chromeos_update_engine.Extent.verify(e.srcExtent);if(t)return"srcExtent."+t}if(null!=e.dstExtent&&e.hasOwnProperty("dstExtent")){var n=ce.chromeos_update_engine.Extent.verify(e.dstExtent);if(n)return"dstExtent."+n}return null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&!se.isInteger(e.srcOffset)?"srcOffset: integer expected":null},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.CowMergeOperation)return e;var t=new ce.chromeos_update_engine.CowMergeOperation;switch(e.type){case"COW_COPY":case 0:t.type=0;break;case"COW_XOR":case 1:t.type=1;break;case"COW_REPLACE":case 2:t.type=2;break}if(null!=e.srcExtent){if("object"!==Object(re["a"])(e.srcExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.srcExtent: object expected");t.srcExtent=ce.chromeos_update_engine.Extent.fromObject(e.srcExtent)}if(null!=e.dstExtent){if("object"!==Object(re["a"])(e.dstExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.dstExtent: object expected");t.dstExtent=ce.chromeos_update_engine.Extent.fromObject(e.dstExtent)}return null!=e.srcOffset&&(t.srcOffset=e.srcOffset>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.type=t.enums===String?"COW_COPY":0,n.srcExtent=null,n.dstExtent=null,n.srcOffset=0),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?ce.chromeos_update_engine.CowMergeOperation.Type[e.type]:e.type),null!=e.srcExtent&&e.hasOwnProperty("srcExtent")&&(n.srcExtent=ce.chromeos_update_engine.Extent.toObject(e.srcExtent,t)),null!=e.dstExtent&&e.hasOwnProperty("dstExtent")&&(n.dstExtent=ce.chromeos_update_engine.Extent.toObject(e.dstExtent,t)),null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&(n.srcOffset=e.srcOffset),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="COW_COPY"]=0,t[e[1]="COW_XOR"]=1,t[e[2]="COW_REPLACE"]=2,t}(),e}(),e.PartitionUpdate=function(){function e(e){if(this.newPartitionSignature=[],this.operations=[],this.mergeOperations=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.partitionName=e.string();break;case 2:r.runPostinstall=e.bool();break;case 3:r.postinstallPath=e.string();break;case 4:r.filesystemType=e.string();break;case 5:r.newPartitionSignature&&r.newPartitionSignature.length||(r.newPartitionSignature=[]),r.newPartitionSignature.push(ce.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;case 6:r.oldPartitionInfo=ce.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:r.newPartitionInfo=ce.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:r.operations&&r.operations.length||(r.operations=[]),r.operations.push(ce.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 9:r.postinstallOptional=e.bool();break;case 10:r.hashTreeDataExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 11:r.hashTreeExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 12:r.hashTreeAlgorithm=e.string();break;case 13:r.hashTreeSalt=e.bytes();break;case 14:r.fecDataExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 15:r.fecExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 16:r.fecRoots=e.uint32();break;case 17:r.version=e.string();break;case 18:r.mergeOperations&&r.mergeOperations.length||(r.mergeOperations=[]),r.mergeOperations.push(ce.chromeos_update_engine.CowMergeOperation.decode(e,e.uint32()));break;case 19:r.estimateCowSize=e.uint64();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("partitionName"))throw se.ProtocolError("missing required 'partitionName'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(!se.isString(e.partitionName))return"partitionName: string expected";if(null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&"boolean"!==typeof e.runPostinstall)return"runPostinstall: boolean expected";if(null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&!se.isString(e.postinstallPath))return"postinstallPath: string expected";if(null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&!se.isString(e.filesystemType))return"filesystemType: string expected";if(null!=e.newPartitionSignature&&e.hasOwnProperty("newPartitionSignature")){if(!Array.isArray(e.newPartitionSignature))return"newPartitionSignature: array expected";for(var t=0;t>>0),null!=e.version&&(t.version=String(e.version)),e.mergeOperations){if(!Array.isArray(e.mergeOperations))throw TypeError(".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected");t.mergeOperations=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.newPartitionSignature=[],n.operations=[],n.mergeOperations=[]),t.defaults)if(n.partitionName="",n.runPostinstall=!1,n.postinstallPath="",n.filesystemType="",n.oldPartitionInfo=null,n.newPartitionInfo=null,n.postinstallOptional=!1,n.hashTreeDataExtent=null,n.hashTreeExtent=null,n.hashTreeAlgorithm="",t.bytes===String?n.hashTreeSalt="":(n.hashTreeSalt=[],t.bytes!==Array&&(n.hashTreeSalt=se.newBuffer(n.hashTreeSalt))),n.fecDataExtent=null,n.fecExtent=null,n.fecRoots=2,n.version="",se.Long){var r=new se.Long(0,0,!0);n.estimateCowSize=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.estimateCowSize=t.longs===String?"0":0;if(null!=e.partitionName&&e.hasOwnProperty("partitionName")&&(n.partitionName=e.partitionName),null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&(n.runPostinstall=e.runPostinstall),null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&(n.postinstallPath=e.postinstallPath),null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&(n.filesystemType=e.filesystemType),e.newPartitionSignature&&e.newPartitionSignature.length){n.newPartitionSignature=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0):e.estimateCowSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.DynamicPartitionGroup=function(){function e(e){if(this.partitionNames=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.name=e.string();break;case 2:r.size=e.uint64();break;case 3:r.partitionNames&&r.partitionNames.length||(r.partitionNames=[]),r.partitionNames.push(e.string());break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("name"))throw se.ProtocolError("missing required 'name'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(!se.isString(e.name))return"name: string expected";if(null!=e.size&&e.hasOwnProperty("size")&&!se.isInteger(e.size)&&!(e.size&&se.isInteger(e.size.low)&&se.isInteger(e.size.high)))return"size: integer|Long expected";if(null!=e.partitionNames&&e.hasOwnProperty("partitionNames")){if(!Array.isArray(e.partitionNames))return"partitionNames: array expected";for(var t=0;t>>0,e.size.high>>>0).toNumber(!0))),e.partitionNames){if(!Array.isArray(e.partitionNames))throw TypeError(".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected");t.partitionNames=[];for(var n=0;n>>0,e.size.high>>>0).toNumber(!0):e.size),e.partitionNames&&e.partitionNames.length){n.partitionNames=[];for(var a=0;a>>3){case 1:r.groups&&r.groups.length||(r.groups=[]),r.groups.push(ce.chromeos_update_engine.DynamicPartitionGroup.decode(e,e.uint32()));break;case 2:r.snapshotEnabled=e.bool();break;case 3:r.vabcEnabled=e.bool();break;case 4:r.vabcCompressionParam=e.string();break;case 5:r.cowVersion=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.groups&&e.hasOwnProperty("groups")){if(!Array.isArray(e.groups))return"groups: array expected";for(var t=0;t>>0),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.groups=[]),t.defaults&&(n.snapshotEnabled=!1,n.vabcEnabled=!1,n.vabcCompressionParam="",n.cowVersion=0),e.groups&&e.groups.length){n.groups=[];for(var r=0;r>>3){case 1:r.packageName=e.string();break;case 2:r.version=e.int64();break;case 3:r.isCompressed=e.bool();break;case 4:r.decompressedSize=e.int64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null!=e.packageName&&e.hasOwnProperty("packageName")&&!se.isString(e.packageName)?"packageName: string expected":null==e.version||!e.hasOwnProperty("version")||se.isInteger(e.version)||e.version&&se.isInteger(e.version.low)&&se.isInteger(e.version.high)?null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&"boolean"!==typeof e.isCompressed?"isCompressed: boolean expected":null==e.decompressedSize||!e.hasOwnProperty("decompressedSize")||se.isInteger(e.decompressedSize)||e.decompressedSize&&se.isInteger(e.decompressedSize.low)&&se.isInteger(e.decompressedSize.high)?null:"decompressedSize: integer|Long expected":"version: integer|Long expected"},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.ApexInfo)return e;var t=new ce.chromeos_update_engine.ApexInfo;return null!=e.packageName&&(t.packageName=String(e.packageName)),null!=e.version&&(se.Long?(t.version=se.Long.fromValue(e.version)).unsigned=!1:"string"===typeof e.version?t.version=parseInt(e.version,10):"number"===typeof e.version?t.version=e.version:"object"===Object(re["a"])(e.version)&&(t.version=new se.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber())),null!=e.isCompressed&&(t.isCompressed=Boolean(e.isCompressed)),null!=e.decompressedSize&&(se.Long?(t.decompressedSize=se.Long.fromValue(e.decompressedSize)).unsigned=!1:"string"===typeof e.decompressedSize?t.decompressedSize=parseInt(e.decompressedSize,10):"number"===typeof e.decompressedSize?t.decompressedSize=e.decompressedSize:"object"===Object(re["a"])(e.decompressedSize)&&(t.decompressedSize=new se.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber())),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(n.packageName="",se.Long){var r=new se.Long(0,0,!1);n.version=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.version=t.longs===String?"0":0;if(n.isCompressed=!1,se.Long){var a=new se.Long(0,0,!1);n.decompressedSize=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.decompressedSize=t.longs===String?"0":0}return null!=e.packageName&&e.hasOwnProperty("packageName")&&(n.packageName=e.packageName),null!=e.version&&e.hasOwnProperty("version")&&("number"===typeof e.version?n.version=t.longs===String?String(e.version):e.version:n.version=t.longs===String?se.Long.prototype.toString.call(e.version):t.longs===Number?new se.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber():e.version),null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&(n.isCompressed=e.isCompressed),null!=e.decompressedSize&&e.hasOwnProperty("decompressedSize")&&("number"===typeof e.decompressedSize?n.decompressedSize=t.longs===String?String(e.decompressedSize):e.decompressedSize:n.decompressedSize=t.longs===String?se.Long.prototype.toString.call(e.decompressedSize):t.longs===Number?new se.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber():e.decompressedSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.ApexMetadata=function(){function e(e){if(this.apexInfo=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(ce.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.apexInfo&&e.hasOwnProperty("apexInfo")){if(!Array.isArray(e.apexInfo))return"apexInfo: array expected";for(var t=0;t>>3){case 3:r.blockSize=e.uint32();break;case 4:r.signaturesOffset=e.uint64();break;case 5:r.signaturesSize=e.uint64();break;case 12:r.minorVersion=e.uint32();break;case 13:r.partitions&&r.partitions.length||(r.partitions=[]),r.partitions.push(ce.chromeos_update_engine.PartitionUpdate.decode(e,e.uint32()));break;case 14:r.maxTimestamp=e.int64();break;case 15:r.dynamicPartitionMetadata=ce.chromeos_update_engine.DynamicPartitionMetadata.decode(e,e.uint32());break;case 16:r.partialUpdate=e.bool();break;case 17:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(ce.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;case 18:r.securityPatchLevel=e.string();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.blockSize&&e.hasOwnProperty("blockSize")&&!se.isInteger(e.blockSize))return"blockSize: integer expected";if(null!=e.signaturesOffset&&e.hasOwnProperty("signaturesOffset")&&!se.isInteger(e.signaturesOffset)&&!(e.signaturesOffset&&se.isInteger(e.signaturesOffset.low)&&se.isInteger(e.signaturesOffset.high)))return"signaturesOffset: integer|Long expected";if(null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&!se.isInteger(e.signaturesSize)&&!(e.signaturesSize&&se.isInteger(e.signaturesSize.low)&&se.isInteger(e.signaturesSize.high)))return"signaturesSize: integer|Long expected";if(null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&!se.isInteger(e.minorVersion))return"minorVersion: integer expected";if(null!=e.partitions&&e.hasOwnProperty("partitions")){if(!Array.isArray(e.partitions))return"partitions: array expected";for(var t=0;t>>0),null!=e.signaturesOffset&&(se.Long?(t.signaturesOffset=se.Long.fromValue(e.signaturesOffset)).unsigned=!0:"string"===typeof e.signaturesOffset?t.signaturesOffset=parseInt(e.signaturesOffset,10):"number"===typeof e.signaturesOffset?t.signaturesOffset=e.signaturesOffset:"object"===Object(re["a"])(e.signaturesOffset)&&(t.signaturesOffset=new se.LongBits(e.signaturesOffset.low>>>0,e.signaturesOffset.high>>>0).toNumber(!0))),null!=e.signaturesSize&&(se.Long?(t.signaturesSize=se.Long.fromValue(e.signaturesSize)).unsigned=!0:"string"===typeof e.signaturesSize?t.signaturesSize=parseInt(e.signaturesSize,10):"number"===typeof e.signaturesSize?t.signaturesSize=e.signaturesSize:"object"===Object(re["a"])(e.signaturesSize)&&(t.signaturesSize=new se.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0))),null!=e.minorVersion&&(t.minorVersion=e.minorVersion>>>0),e.partitions){if(!Array.isArray(e.partitions))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected");t.partitions=[];for(var n=0;n>>0,e.maxTimestamp.high>>>0).toNumber())),null!=e.dynamicPartitionMetadata){if("object"!==Object(re["a"])(e.dynamicPartitionMetadata))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected");t.dynamicPartitionMetadata=ce.chromeos_update_engine.DynamicPartitionMetadata.fromObject(e.dynamicPartitionMetadata)}if(null!=e.partialUpdate&&(t.partialUpdate=Boolean(e.partialUpdate)),e.apexInfo){if(!Array.isArray(e.apexInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected");t.apexInfo=[];for(var r=0;r>>0,e.signaturesOffset.high>>>0).toNumber(!0):e.signaturesOffset),null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&("number"===typeof e.signaturesSize?n.signaturesSize=t.longs===String?String(e.signaturesSize):e.signaturesSize:n.signaturesSize=t.longs===String?se.Long.prototype.toString.call(e.signaturesSize):t.longs===Number?new se.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0):e.signaturesSize),null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&(n.minorVersion=e.minorVersion),e.partitions&&e.partitions.length){n.partitions=[];for(var o=0;o>>0,e.maxTimestamp.high>>>0).toNumber():e.maxTimestamp),null!=e.dynamicPartitionMetadata&&e.hasOwnProperty("dynamicPartitionMetadata")&&(n.dynamicPartitionMetadata=ce.chromeos_update_engine.DynamicPartitionMetadata.toObject(e.dynamicPartitionMetadata,t)),null!=e.partialUpdate&&e.hasOwnProperty("partialUpdate")&&(n.partialUpdate=e.partialUpdate),e.apexInfo&&e.apexInfo.length){n.apexInfo=[];for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:"";return Object(he["a"])(this,n),e=t.call(this),e.offset=0,e.contentType=r,e.blob=new Blob([],{type:r}),e.prefixLength=0,e}return Object(fe["a"])(n,[{key:"readHeader",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r,a,i,o,s,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return n=0,r=function(e){var r=Ie(t,n,e);return n+=e,r},e.next=4,t.slice(0,ke).arrayBuffer();case 4:if(a=e.sent,i=new TextDecoder,o=a.slice(0,ve.length),s=i.decode(o),s==ve){e.next=10;break}throw new Error("MAGIC is not correct, expected: ".concat(ve," actual: ").concat(s));case 10:return n+=ve.length,e.next=13,r(we);case 13:return c=e.sent,e.next=16,r(xe);case 16:if(l=e.sent,c==Pe){e.next=19;break}throw new Error("Unexpected major version number: ".concat(c));case 19:return e.next=21,r(Se);case 21:u=e.sent,this.header=new Le(s,c,l,u);case 23:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"writeUint8Array",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(Object(pe["a"])(Object(de["a"])(n.prototype),"writeUint8Array",this).call(this,t),this.blob=new Blob([this.blob,t.buffer],{type:this.contentType}),this.offset=this.blob.size,!(this.offset>=ke&&0==this.prefixLength)){e.next=9;break}return console.log("Parsing header!"),e.next=7,this.readHeader(this.blob);case 7:this.prefixLength=ke+this.header.manifest_len+this.header.metadata_signature_len,console.log("Computed metadata length: ".concat(this.prefixLength));case 9:if(!(this.prefixLength>0)){e.next=14;break}if(console.log("".concat(this.offset,"/").concat(this.prefixLength)),!(this.offset>=this.prefixLength)){e.next=14;break}throw this.blob=this.blob.slice(0,this.prefixLength),new Ee;case 14:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getData",value:function(){return this.blob}}]),n}(Oe["Writer"]),Te=function(){function e(t){Object(he["a"])(this,e),t instanceof File?this.zipreader=new Oe["ZipReader"](new Oe["BlobReader"](t)):t instanceof URL?this.zipreader=new Oe["ZipReader"](new Oe["HttpReader"](t.href)):this.zipreader=t.reader}return Object(fe["a"])(e,[{key:"getMetadataLength",value:function(){return ke+this.header.manifest_len+this.header.metadata_signature_len}},{key:"unzip",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a,i,o;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.zipreader.getEntries();case 2:t=e.sent,n=Object(ue["a"])(t),e.prev=4,n.s();case 6:if((r=n.n()).done){e.next=35;break}if(a=r.value,"payload.bin"!=a.filename){e.next=28;break}return i=new Ae(""),e.prev=10,e.next=13,a.getData(i);case 13:e.next=22;break;case 15:if(e.prev=15,e.t0=e["catch"](10),!(e.t0 instanceof Ee)){e.next=20;break}e.next=22;break;case 20:throw console.log(e.t0),e.t0;case 22:return this.buffer=i.getData(),e.next=25,this.readManifest(this.buffer,i.header);case 25:console.log("AB OTA manifest parsed"),e.next=33;break;case 28:if("META-INF/com/android/metadata"!=a.filename){e.next=33;break}return e.next=31,a.getData(new Oe["TextWriter"]);case 31:this.metadata=e.sent,console.log("OTA Package metadata parsed");case 33:e.next=6;break;case 35:e.next=40;break;case 37:e.prev=37,e.t1=e["catch"](4),n.e(e.t1);case 40:return e.prev=40,n.f(),e.finish(40);case 43:if(this.manifest){e.next=57;break}return console.log("Failed to parse AB OTA package, falling back to non-AB"),e.prev=45,o=new ye(this.zipreader),e.next=49,o.init();case 49:o.nonAB=!0,this.manifest=o,e.next=57;break;case 53:return e.prev=53,e.t2=e["catch"](45),alert("Please select a legit OTA package"),e.abrupt("return");case 57:case"end":return e.stop()}}),e,this,[[4,37,40,43],[10,15],[45,53]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"readManifest",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.header=n,r=ke,e.next=4,t.slice(r,r+n.manifest_len).arrayBuffer();case 4:return a=e.sent,r+=n.manifest_len,this.manifest=le.DeltaArchiveManifest.decode(new Uint8Array(a)),e.next=9,t.slice(r,r+n.metadata_signature_len).arrayBuffer();case 9:i=e.sent,r+=n.metadata_signature_len,this.metadata_signature=le.Signatures.decode(new Uint8Array(i)),this.manifest.nonAB=!1;case 13:case"end":return e.stop()}}),e,this)})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"parseMetadata",value:function(){var e,t=Object(ue["a"])(_e);try{for(t.s();!(e=t.n()).done;){var n=e.value,r=new RegExp(n.prefix+".+");this.metadata.match(r)?this[n.key]=Fe(this.metadata.match(r)[0],n.prefix):this[n.key]=""}}catch(a){t.e(a)}finally{t.f()}}},{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.unzip();case 2:this.parseMetadata();case 3:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}]),e}(),Be=function(e){Object(ge["a"])(n,e);var t=Object(be["a"])(n);function n(){return Object(he["a"])(this,n),t.apply(this,arguments)}return Object(fe["a"])(n,[{key:"getWithDefault",value:function(e){return this.has(e)?this.get(e):e}}]),n}(Object(me["a"])(Map)),Ne=Object(fe["a"])((function e(){Object(he["a"])(this,e);var t=le.InstallOperation.Type;this.mapType=new Be;for(var n=0,r=Object.keys(t);n1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:16,r="",a=0;a3&&void 0!==arguments[3]?arguments[3]:15;Object(he["a"])(this,e),this.statisticData=t,this.trimmedData=Qe(t,a),this.title=n,this.unit=r,this.maximumEntries=a}return Object(fe["a"])(e,[{key:"listData",value:function(){var e,t="",n=Object(ue["a"])(this.statisticData);try{for(n.s();!(e=n.n()).done;){var r=Object(Ye["a"])(e.value,2),a=r[0],i=r[1];t+=a+" : "+i.toString()+" Blocks\n"}}catch(o){n.e(o)}finally{n.f()}return t}},{key:"getEchartsOption",value:function(){var e={};return e.title={text:this.title,left:"center"},e.tooltip={trigger:"item",formatter:"{a}
{b} : {c} "+this.unit+" ({d}%)"},e.legend={orient:"horizontal",left:"top",top:"10%",data:Array.from(this.trimmedData.keys())},e.series=[{name:this.title,type:"pie",radius:"55%",center:["50%","60%"],data:Array.from(this.trimmedData).map((function(e){return{value:e[1],name:e[0]}})),emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],e}}]),e}();function Qe(e,t){if(e.size<=t)return e;for(var n=new Map,r=0;ri&&(i=u,o=l)}}catch(m){s.e(m)}finally{s.f()}n.set(o,i)}var p,d=0,f=Object(ue["a"])(e);try{for(f.s();!(p=f.n()).done;){var h=Object(Ye["a"])(p.value,2),g=h[0],b=h[1];n.get(g)||(d+=b)}}catch(m){f.e(m)}finally{f.f()}return n.set("other",d),n}var et=function(){function e(t){Object(he["a"])(this,e),t instanceof File?this.build=new Oe["ZipReader"](new Oe["BlobReader"](t)):this.build=new Oe["ZipReader"](new Oe["HttpReader"](t.href)),this.mapFiles=new Map,this.maps=new Map}return Object(fe["a"])(e,[{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a=this;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.build.getEntries();case 2:t=e.sent,n=/IMAGES\/[a-z_]*\.map/g,r=/[\w_]+(?=\.map)/g,t.forEach((function(e){e.filename.match(n)&&a.mapFiles.set(e.filename.match(r)[0],e)}));case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"add",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,c,l,u,p,d,f,h,g;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:for(r=[],a=/\d+/g,i=/\d+\-\d+/g,o=0;o");if(!this.mapFiles.get(t)){e.next=14;break}return e.next=7,this.mapFiles.get(t).getData(new Oe["TextWriter"]);case 7:s=e.sent,c=s.split("\n"),l=Object(ue["a"])(c);try{for(l.s();!(u=l.n()).done;)for(p=u.value,d=p.split(" "),f=1;f2&&void 0!==s[2]?s[2]:4096,a=s.length>3&&void 0!==s[3]?s[3]:null,e.t0=t,e.next="blocks"===e.t0?5:"payload"===e.t0?8:"COWmerge"===e.t0?11:"filenames"===e.t0?14:"extensions"===e.t0?21:28;break;case 5:return i=at(n),o=new Ke(i,"Operated blocks in target build","blocks"),e.abrupt("break",28);case 8:return i=ot(n),o=new Ke(i,"Payload disk usage","bytes"),e.abrupt("break",28);case 11:return i=it(n,r),o=new Ke(i,"COW merge operations","blocks"),e.abrupt("break",28);case 14:if(null!=a){e.next=16;break}throw new Error("Target file is required for filenames analysis");case 16:return e.next=18,lt(n,r,a);case 18:return i=e.sent,o=new Ke(i,"Size of operated filenames","bytes"),e.abrupt("break",28);case 21:if(null!=a){e.next=23;break}throw new Error("Target file is required for filenames analysis");case 23:return e.next=25,st(n,r,a);case 25:return i=e.sent,o=new Ke(i,"Size of operated extensions","bytes"),e.abrupt("break",28);case 28:if(!o){e.next=32;break}return e.abrupt("return",o);case 32:throw"Please double check if this is a proper AB OTA package.";case 33:case"end":return e.stop()}}),e)}))),dt.apply(this,arguments)}function ft(e){if(!e)return 0;var t=function(e,t){return e+t.numBlocks};return e.reduce(t,0)}function ht(e){var t=function(e,t){return e+"("+t.startBlock+","+t.numBlocks+")"};return e.reduce(t,"")}function gt(e,t,n){for(var r=ft(t),a=new Map,i=0;i1?t[t.length-1]:"unknown"===t[0]?"unknown":"<"==e[0]&&e.endsWith(">")?e:"no-extension"}var mt=Object(r["m"])({props:{operation:{type:Object,required:!0},mapType:{type:Be,required:!0}},data:function(){return{srcTotalBlocks:0,srcBlocks:"",dstTotalBlocks:0,dstBlocks:""}},mounted:function(){this.operation.srcExtents&&(this.srcTotalBlocks=ft(this.operation.srcExtents),this.srcBlocks=ht(this.operation.srcExtents)),this.operation.dstExtents&&(this.dstTotalBlocks=ft(this.operation.dstExtents),this.dstBlocks=ht(this.operation.dstExtents))}});n("8edb");mt.render=$e,mt.__scopeId="data-v-44174082";var Ot=mt,yt=Object(r["m"])({components:{OperationDetail:Ot},props:{partition:{type:le.PartitionUpdate,required:!0},dynamicPartitionList:{type:Array,required:!0}},data:function(){return{showOPs:!1,showInfo:!1,opType:new Ne}},methods:{toggle:function(e){this[e]=!this[e]},octToHex:De},computed:{readableTimestamp:function(){var e=parseInt(this.partition.version);return isNaN(e)?"":new Date(1e3*e).toString()},isDynamicPartition:function(){return this.dynamicPartitionList.indexOf(this.partition.partitionName)>=0}}});n("edc2");yt.render=ne,yt.__scopeId="data-v-6dba348a";var jt=yt,vt=(n("498a"),Object(r["Z"])("data-v-24adde54"));Object(r["D"])("data-v-24adde54");var wt=Object(r["l"])("h3",null,"Basic infos",-1),xt={class:"align"},St=Object(r["l"])("strong",null," File name ",-1),kt=Object(r["l"])("strong",null," File size ",-1),Pt={class:"align"},_t={class:"wrap"},Et={key:2},Lt={class:"align"},It=Object(r["l"])("strong",null," Incremental ",-1),zt={key:0},At={key:1},Tt=Object(r["l"])("strong",null," Partial ",-1),Bt={key:0},Nt={key:1},Ct=Object(r["l"])("strong",null," A/B update ",-1),Dt={key:0},Ft={key:1},Rt=Object(r["l"])("strong",null," VAB ",-1),Mt={key:0},Ut={key:1},Ht=Object(r["l"])("strong",null," VABC ",-1),Vt={key:0},Wt={key:1},Zt={key:0},Jt=Object(r["l"])("strong",null," Total Dynamic Partition Size ",-1),Xt={key:1},qt=Object(r["l"])("strong",null," Total VABC COW Size ",-1),Gt={key:2},$t=Object(r["l"])("strong",null," VABC Compression Param ",-1),Yt={key:3},Kt=Object(r["l"])("strong",null," Security Patch Level ",-1);Object(r["B"])();var Qt=vt((function(e,t,n,a,i,o){return Object(r["A"])(),Object(r["i"])(r["a"],null,[wt,e.zipFile?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:0},e.$attrs),[Object(r["l"])("ul",xt,[Object(r["l"])("li",null,[St,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileName()),1)]),Object(r["l"])("li",null,[kt,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileSize())+" Bytes",1)])])],16)):Object(r["j"])("",!0),e.payload&&e.payload.metadata?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:1},e.$attrs),[Object(r["l"])("ul",Pt,[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.otaMetadata,(function(t){return Object(r["A"])(),Object(r["i"])("li",{key:t.name},[Object(r["l"])("strong",null,Object(r["N"])(t.name.trim()+" "),1),Object(r["l"])("p",_t,Object(r["N"])(String(e.payload[t.key]).trim()),1)])})),128))])],16)):Object(r["j"])("",!0),e.payload&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])("div",Et,[Object(r["l"])("ul",Lt,[Object(r["l"])("li",null,[It,e.payload.preBuild?(Object(r["A"])(),Object(r["i"])("span",zt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",At," ❌ "))]),Object(r["l"])("li",null,[Tt,e.payload.manifest.partialUpdate?(Object(r["A"])(),Object(r["i"])("span",Bt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Nt," ❌ "))]),Object(r["l"])("li",null,[Ct,e.payload.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",Ft," ❌ ")):(Object(r["A"])(),Object(r["i"])("span",Dt," ✅ "))]),Object(r["l"])("li",null,[Rt,e.payload.manifest.dynamicPartitionMetadata.snapshotEnabled?(Object(r["A"])(),Object(r["i"])("span",Mt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Ut," ❌ "))]),Object(r["l"])("li",null,[Ht,e.payload.manifest.dynamicPartitionMetadata.vabcEnabled?(Object(r["A"])(),Object(r["i"])("span",Vt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Wt," ❌ "))]),e.totalDynamicPartitionSize?(Object(r["A"])(),Object(r["i"])("li",Zt,[Jt,Object(r["k"])(" "+Object(r["N"])(e.totalDynamicPartitionSize),1)])):Object(r["j"])("",!0),e.totalCOWSize?(Object(r["A"])(),Object(r["i"])("li",Xt,[qt,Object(r["k"])(" "+Object(r["N"])(e.totalCOWSize),1)])):Object(r["j"])("",!0),e.vabcCompressionParam?(Object(r["A"])(),Object(r["i"])("li",Gt,[$t,Object(r["k"])(" "+Object(r["N"])(e.vabcCompressionParam),1)])):Object(r["j"])("",!0),e.securityPatchLevel?(Object(r["A"])(),Object(r["i"])("li",Yt,[Kt,Object(r["k"])(" "+Object(r["N"])(e.securityPatchLevel),1)])):Object(r["j"])("",!0)])])):Object(r["j"])("",!0)],64)})),en=(n("4de4"),n("6062"),n("2ca0"),function(){function e(t){Object(he["a"])(this,e),this.file=t,this.reader=rn(t)}return Object(fe["a"])(e,[{key:"getFileName",value:function(){return an(this.file)}},{key:"getFileSize",value:function(){return this.file instanceof File?this.file.size:0}}]),e}());function tn(e,t){return nn.apply(this,arguments)}function nn(){return nn=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return r=t,a=new Oe["ZipWriter"](new Oe["BlobWriter"]("application/zip")),e.next=4,r.getEntries();case 4:i=e.sent,o=Object(ue["a"])(i.filter((function(e){return!!e&&n(e)}))),e.prev=6,o.s();case 8:if((s=o.n()).done){e.next=18;break}return c=s.value,l=new Oe["BlobWriter"],e.next=13,c.getData(l);case 13:u=e.sent,console.log("Adding ".concat(c.filename,", ").concat(u.size)),a.add(c.filename,new Oe["BlobReader"](l.getData()),{level:0});case 16:e.next=8;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e["catch"](6),o.e(e.t0);case 23:return e.prev=23,o.f(),e.finish(23);case 26:return e.abrupt("return",a);case 27:case"end":return e.stop()}}),e,null,[[6,20,23,26]])}))),nn.apply(this,arguments)}function rn(e){return e instanceof File?new Oe["ZipReader"](new Oe["BlobReader"](e)):new Oe["ZipReader"](new Oe["HttpReader"](e.href))}function an(e){return e instanceof File?e.name:e.pathname}function on(e){return sn.apply(this,arguments)}function sn(){return sn=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,tn(rn(t),(function(e){return e.filename.startsWith("META/")||e.filename.endsWith(".map")||e.filename.endsWith(".prop")||"prop.default"==e.filename}));case 2:return n=e.sent,e.next=5,n.close();case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)}))),sn.apply(this,arguments)}function cn(e){return ln.apply(this,arguments)}function ln(){return ln=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,tn(t.zipreader,(function(e){return"payload.bin"!=e.filename}));case 2:return n=e.sent,e.next=5,n.add("payload.bin",new Oe["BlobReader"](t.buffer.slice(0,t.getMetadataLength())),{level:0});case 5:return e.next=7,n.close();case 7:return r=e.sent,e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)}))),ln.apply(this,arguments)}function un(e,t,n){var r=window.URL.createObjectURL(e);t.href=r,t.download=n,t.click(),window.URL.revokeObjectURL(r)}function pn(e,t){return e.endsWith(t)?e:e+t}var dn=Object(r["m"])({props:{zipFile:{type:en,required:!0},payload:{type:Te,required:!0}},data:function(){return{MetadataFormat:_e}},computed:{otaMetadata:function(){var e=this;return _e.filter((function(t){return String(e.payload[t.key]).length>0}))},totalCOWSize:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.partitions.map((function(e){return e.estimateCowSize||0}));return n?n.reduce((function(e,t){return e+t})):0},vabcCompressionParam:function(){var e,t,n;return(null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.vabcCompressionParam)||""},securityPatchLevel:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.securityPatchLevel;return n||""},totalDynamicPartitionSize:function(){var e,t,n,r,a=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.groups;if(!a)return 0;var i=new Set(a.flatMap((function(e){return e.partitionNames}))),o=(null===(r=this.payload.manifest)||void 0===r?void 0:r.partitions.filter((function(e){return i.has(e.partitionName)})))||[];return o.length<=0?0:o.map((function(e){var t;return(null===(t=e.newPartitionInfo)||void 0===t?void 0:t.size)||0})).reduce((function(e,t){return e+t}))}}});n("2b88");dn.render=Qt,dn.__scopeId="data-v-24adde54";var fn=dn,hn=Object(r["m"])({components:{PartitionDetail:jt,BasicInfo:fn},props:{zipFile:{type:en,default:null},payload:{type:Te,default:null}},methods:{octToHex:De,exportOTAPackage:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,cn(e.payload);case 2:n=t.sent,r=e.$refs["download"],un(n,r,"trimmed_"+pn(e.zipFile.getFileName(),".zip"));case 5:case"end":return t.stop()}}),t)})))()}},computed:{dynamicPartitions:function(){var e,t,n;return(null===(e=this.payload.manifest)||void 0===e||null===(t=e.dynamicPartitionMetadata)||void 0===t||null===(n=t.groups)||void 0===n?void 0:n.flatMap((function(e){return e.partitionNames||[]})))||[]}}});n("dc41");hn.render=A,hn.__scopeId="data-v-05db67f2";var gn=hn,bn=Object(r["Z"])("data-v-44b569bd");Object(r["D"])("data-v-44b569bd");var mn=Object(r["k"])("Export Target File Metadata"),On={ref:"download"},yn={key:1},jn=Object(r["k"])(" Analyse Installed Blocks (in target build) "),vn=Object(r["k"])(" Analyse Payload Composition "),wn=Object(r["k"])(" Analyse COW Merge Operations "),xn={key:0,class:"tooltiptext"},Sn=Object(r["k"])(" Analyse Filenames "),kn=Object(r["k"])(" Analyse File Extensions ");Object(r["B"])();var Pn=bn((function(e,t,n,a,i,o){var s=Object(r["I"])("v-btn"),c=Object(r["I"])("PartialCheckbox"),l=Object(r["I"])("PieChart"),u=Object(r["I"])("v-divider"),p=Object(r["I"])("v-col"),d=Object(r["I"])("v-row"),f=Object(r["I"])("BaseFile");return Object(r["A"])(),Object(r["i"])(r["a"],null,[e.targetFile?(Object(r["A"])(),Object(r["i"])(s,{key:0,block:"",class:"md-6",onClick:e.exportTargetFileMetadata},{default:bn((function(){return[mn]})),_:1},8,["onClick"])):Object(r["j"])("",!0),Object(r["l"])("a",On,null,512),Object(r["l"])(c,{modelValue:e.partitionInclude,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.partitionInclude=t}),labels:e.updatePartitions},null,8,["modelValue","labels"]),e.echartsData?(Object(r["A"])(),Object(r["i"])("div",yn,[Object(r["l"])(l,{echartsData:e.echartsData,onClick:e.piechartClick},null,8,["echartsData","onClick"])])):Object(r["j"])("",!0),Object(r["l"])(u),Object(r["l"])(d,null,{default:bn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"},{default:bn((function(){return[Object(r["l"])(s,{block:"",onClick:t[2]||(t[2]=function(t){return e.updateChart("blocks")})},{default:bn((function(){return[jn]})),_:1})]})),_:1}),Object(r["l"])(p,{cols:"12",md:"6"},{default:bn((function(){return[Object(r["l"])(s,{block:"",onClick:t[3]||(t[3]=function(t){return e.updateChart("payload")})},{default:bn((function(){return[vn]})),_:1})]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:bn((function(){return[Object(r["l"])(p,{cols:"12",md:"6",class:"tooltip"},{default:bn((function(){return[Object(r["l"])(s,{disabled:e.manifest.nonAB||!e.manifest.dynamicPartitionMetadata.vabcEnabled,title:"Only available for VABC update",block:"",onClick:t[4]||(t[4]=function(t){return e.updateChart("COWmerge")})},{default:bn((function(){return[wn]})),_:1},8,["disabled"]),e.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",xn," This function is only supported in A/B OTA ")):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(p,{cols:"12",md:"6"},{default:bn((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[5]||(t[5]=function(t){return e.updateChart("filenames")})},{default:bn((function(){return[Sn]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:bn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"},{default:bn((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[6]||(t[6]=function(t){return e.updateChart("extensions")})},{default:bn((function(){return[kn]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:bn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"}),Object(r["l"])(p,{cols:"12",md:"6"},{default:bn((function(){return[e.demo?Object(r["j"])("",!0):(Object(r["A"])(),Object(r["i"])(f,{key:0,label:"Drag and drop or Select The target Android build",onFileSelect:e.selectBuild},null,8,["onFileSelect"]))]})),_:1})]})),_:1})],64)})),_n=n("bc3a"),En=n.n(_n),Ln=Object(r["Z"])("data-v-533f2336");Object(r["D"])("data-v-533f2336");var In={key:0};Object(r["B"])();var zn=Ln((function(e,t,n,a,i,o){var s=Object(r["I"])("v-btn"),c=Object(r["I"])("v-col"),l=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(r["a"],null,[Object(r["l"])(s,{block:"",type:"button",class:"my-5",onClick:e.revertAllSelection},{default:Ln((function(){return[Object(r["k"])(Object(r["N"])(e.selectAllText[e.selectAll]),1)]})),_:1},8,["onClick"]),Object(r["l"])(l,{class:"mb-5"},{default:Ln((function(){return[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.labels,(function(n){return Object(r["A"])(),Object(r["i"])(c,{key:n,cols:"12",md:"4"},{default:Ln((function(){return[Object(r["l"])("input",{type:"checkbox",value:n,checked:e.modelValue.get(n),onChange:t[1]||(t[1]=function(t){return e.updateSelected(t.target.value)})},null,40,["value","checked"]),n?(Object(r["A"])(),Object(r["i"])("label",In,Object(r["N"])(n),1)):Object(r["j"])("",!0)]})),_:2},1024)})),128))]})),_:1})],64)})),An=Object(r["m"])({props:{labels:{type:Array,default:new Array},modelValue:{type:Map,default:new Map}},data:function(){return{selectAll:1,selectAllText:["Select All","Unselect All"]}},mounted:function(){var e,t=Object(ue["a"])(this.labels);try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,!0)}}catch(r){t.e(r)}finally{t.f()}},methods:{updateSelected:function(e){this.modelValue.set(e,!this.modelValue.get(e)),this.$emit("update:modelValue",this.modelValue)},revertAllSelection:function(){this.selectAll=1-this.selectAll;var e,t=Object(ue["a"])(this.modelValue.keys());try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,Boolean(this.selectAll))}}catch(r){t.e(r)}finally{t.f()}}}});n("a75a");An.render=zn,An.__scopeId="data-v-533f2336";var Tn=An,Bn=n("2909"),Nn="undefined"===typeof arguments?void 0:arguments,Cn=Object(r["Z"])("data-v-5d1cb486"),Dn=Cn((function(e,t,n,a,i,o){var s=Object(r["I"])("v-chart");return Object(r["A"])(),Object(r["i"])(s,{class:"chart",option:o.getEchartsOption,onClick:t[1]||(t[1]=function(t){return e.$emit.apply(e,["click"].concat(Object(Bn["a"])(Nn)))})},null,8,["option"])})),Fn=n("ade3"),Rn=n("22b4"),Mn=n("f95e"),Un=n("49bb"),Hn=n("9394"),Vn=n("2da7"),Wn=n("ff32"),Zn=n("5c7f");Object(Rn["a"])([Mn["a"],Un["a"],Hn["a"],Vn["a"],Wn["a"]]);var Jn={components:{VChart:Zn["b"]},provide:Object(Fn["a"])({},Zn["a"],"dark"),props:{echartsData:{type:Ke,required:!0}},computed:{getEchartsOption:function(){return this.echartsData.getEchartsOption()}}};n("47e0");Jn.render=Dn,Jn.__scopeId="data-v-5d1cb486";var Xn=Jn,qn=Object(r["m"])({components:{PartialCheckbox:Tn,PieChart:Xn,BaseFile:x},props:{manifest:{type:le.DeltaArchiveManifest,default:function(){return[]}},demo:{type:Boolean,default:!1}},data:function(){return{partitionInclude:new Map,echartsData:null,listData:"",targetFile:null}},computed:{updatePartitions:function(){return this.manifest.partitions.map((function(e){return e.partitionName}))}},mounted:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(!e.demo){t.next=11;break}return t.prev=1,t.next=4,En.a.get("./files/cf_x86_target_file_demo.zip",{responseType:"blob"});case 4:n=t.sent,e.targetFile=new File([n.data],"target_demo.zip"),t.next=11;break;case 8:t.prev=8,t.t0=t["catch"](1),console.log("Please put a proper example target file in /public/files/");case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))()},methods:{piechartClick:function(e){console.log(e)},updateChart:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return r=t.manifest.partitions.filter((function(e){return t.partitionInclude.get(e.partitionName)})),n.prev=1,n.next=4,pt(e,r,t.manifest.blockSize,t.targetFile);case 4:t.echartsData=n.sent,n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Cannot be processed for the following issue: ".concat(n.t0));case 10:case"end":return n.stop()}}),n,null,[[1,7]])})))()},selectBuild:function(e){this.targetFile=e},exportTargetFileMetadata:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,on(e.targetFile);case 2:n=t.sent,r=e.$refs["download"],un(n,r,"trimmed_"+pn(an(e.targetFile),".zip"));case 5:case"end":return t.stop()}}),t)})))()}}});n("4b95");qn.render=Pn,qn.__scopeId="data-v-44b569bd";var Gn=qn,$n=Object(r["m"])({components:{BaseFile:x,PayloadDetail:gn,PayloadComposition:Gn},data:function(){return{zipFile:null,payload:null}},methods:{unpackOTA:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return t.zipFile=new en(e),n.prev=1,t.payload=new Te(t.zipFile),n.next=5,t.payload.init();case 5:n.next=11;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Please check if this is a correct OTA package (.zip). ".concat(n.t0)),console.log(n.t0);case 11:case"end":return n.stop()}}),n,null,[[1,7]])})))()}}});$n.render=h;var Yn=$n;function Kn(e,t,n,a,i,o){var s=Object(r["I"])("PayloadDetail"),c=Object(r["I"])("v-col"),l=Object(r["I"])("v-divider"),u=Object(r["I"])("PayloadComposition"),p=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(p,null,{default:Object(r["X"])((function(){return[Object(r["l"])(c,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload?(Object(r["A"])(),Object(r["i"])(s,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(l,{vertical:""}),Object(r["l"])(c,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])(u,{key:0,manifest:e.payload.manifest,demo:!0},null,8,["manifest"])):Object(r["j"])("",!0)]})),_:1})]})),_:1})}var Qn=Object(r["m"])({components:{PayloadDetail:gn,PayloadComposition:Gn},data:function(){return{zipFile:null,payload:null}},created:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,En.a.get("./files/cf_x86_demo.zip",{responseType:"blob"});case 3:return n=t.sent,e.zipFile=new en(new File([n.data],"ota_demo.zip")),e.payload=new Te(e.zipFile),t.next=8,e.payload.init();case 8:t.next=13;break;case 10:t.prev=10,t.t0=t["catch"](0),console.log("Please put a proper example OTA in /public/files/");case 13:case"end":return t.stop()}}),t,null,[[0,10]])})))()}});Qn.render=Kn;var er=Qn,tr={class:"about"},nr=Object(r["l"])("p",null,"A web based tool to inspect Android OTA packages.",-1);function rr(e,t){return Object(r["A"])(),Object(r["i"])("div",tr,[nr])}const ar={};ar.render=rr;var ir=ar,or=Object(r["Z"])("data-v-50c6f348");Object(r["D"])("data-v-50c6f348");var sr=Object(r["l"])("h1",null,"Not Found!",-1),cr=Object(r["l"])("p",null,[Object(r["l"])("a",{href:"/"},"Go home?")],-1);Object(r["B"])();var lr=or((function(e,t){var n=Object(r["I"])("center");return Object(r["A"])(),Object(r["i"])(n,null,{default:or((function(){return[sr,cr]})),_:1})}));n("8e71");const ur={};ur.render=lr,ur.__scopeId="data-v-50c6f348";var pr=ur,dr=[{path:"/",name:"Analysis",component:Yn,meta:{title:"Analyse OTA package - from AOSP"}},{path:"/demo",name:"Demo",component:er},{path:"/about",name:"About",component:ir},{path:"/:catchAll(.*)",name:"Not Found",component:pr}],fr=Object(d["a"])({history:Object(d["b"])("/analyseOTA/"),routes:dr});fr.beforeEach((function(e,t,n){var r=e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.title})),a=(e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})),t.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})));r?document.title=r.meta.title:a&&(document.title=a.meta.title),Array.from(document.querySelectorAll("[data-vue-router-controlled]")).map((function(e){return e.parentNode.removeChild(e)})),n()}));var hr=fr,gr=n("5502"),br=Object(gr["a"])({state:{},mutations:{},actions:{},modules:{}}),mr=Object(r["h"])(p);mr.use(hr),mr.use(br),mr.use(s),mr.mount("#app")},d978:function(e,t,n){},dc41:function(e,t,n){"use strict";n("027d")},edc2:function(e,t,n){"use strict";n("c021")}}); +//# sourceMappingURL=app.ba9c406f.js.map \ No newline at end of file diff --git a/analyseOTA/js/app.ba9c406f.js.map b/analyseOTA/js/app.ba9c406f.js.map new file mode 100644 index 0000000..56e5893 --- /dev/null +++ b/analyseOTA/js/app.ba9c406f.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?1825","webpack:///./src/components/BasicInfo.vue?0f75","webpack:///./src/components/PieChart.vue?3f25","webpack:///./src/components/BaseFile.vue?5b74","webpack:///./src/components/PayloadComposition.vue?8d59","webpack:///./src/views/NotFound.vue?18b8","webpack:///./src/components/OperationDetail.vue?7823","webpack:///./src/components/PartialCheckbox.vue?cce7","webpack:///./src/plugins/vuetify.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?6697","webpack:///./src/views/PackageAnalysis.vue","webpack:///./src/components/BaseFile.vue","webpack:///./src/components/BaseFile.vue?5af0","webpack:///./src/components/BaseFile.vue?408d","webpack:///./src/components/PayloadDetail.vue","webpack:///./src/components/PartitionDetail.vue","webpack:///./src/services/update_metadata_pb.js","webpack:///./src/services/payload_nonab.ts","webpack:///./src/services/payload.ts","webpack:///./src/components/OperationDetail.vue","webpack:///./src/services/echarts_data.ts","webpack:///./src/services/map_parser.ts","webpack:///./src/services/payload_composition.ts","webpack:///./src/components/OperationDetail.vue?0239","webpack:///./src/components/OperationDetail.vue?19cd","webpack:///./src/components/PartitionDetail.vue?7d27","webpack:///./src/components/PartitionDetail.vue?b40d","webpack:///./src/components/BasicInfo.vue","webpack:///./src/services/trim_zip.ts","webpack:///./src/components/BasicInfo.vue?bb39","webpack:///./src/components/BasicInfo.vue?e053","webpack:///./src/components/PayloadDetail.vue?cdd8","webpack:///./src/components/PayloadDetail.vue?a20c","webpack:///./src/components/PayloadComposition.vue","webpack:///./src/components/PartialCheckbox.vue","webpack:///./src/components/PartialCheckbox.vue?fbe3","webpack:///./src/components/PartialCheckbox.vue?59db","webpack:///./src/components/PieChart.vue","webpack:///./src/components/PieChart.vue?1278","webpack:///./src/components/PayloadComposition.vue?3e04","webpack:///./src/components/PayloadComposition.vue?d59c","webpack:///./src/views/PackageAnalysis.vue?3fdf","webpack:///./src/views/PackageAnalysis.vue?2d24","webpack:///./src/views/Demo.vue","webpack:///./src/views/Demo.vue?9616","webpack:///./src/views/Demo.vue?e633","webpack:///./src/views/About.vue","webpack:///./src/views/About.vue?aa81","webpack:///./src/views/NotFound.vue","webpack:///./src/views/NotFound.vue?2812","webpack:///./src/router/index.ts","webpack:///./src/store/index.ts","webpack:///./src/main.ts","webpack:///./src/components/PayloadDetail.vue?0b74","webpack:///./src/components/PartitionDetail.vue?3d89"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","components","directives","theme","defaultTheme","rounded","color","links","link","to","class","fluid","render","style","cols","md","label","unpackOTA","zipFile","payload","vertical","manifest","dragover","dragleave","drop","fileName","ref","type","accept","handleFileChange","placeholder","url","urlKeyup","props","String","default","emits","computed","parsedURL","URL","this","methods","event","currentTarget","target","files","selectedFile","$emit","preventDefault","classList","contains","add","remove","dataTransfer","console","log","error","__scopeId","exportOTAPackage","partitions","partition","partitionName","elevation","hover","shaped","dynamicPartitionList","dynamicPartitions","metadata_signature","nonAB","octToHex","signatures","oldPartitionInfo","isDynamicPartition","estimateCowSize","postinstallPath","toggle","showInfo","size","hash","newPartitionInfo","version","readableTimestamp","showOPs","operations","operation","dataSha256Hash","mapType","opType","$Reader","$protobuf","$Writer","$util","$root","chromeos_update_engine","Extent","properties","keys","startBlock","Long","fromBits","numBlocks","encode","message","writer","uint32","uint64","encodeDelimited","ldelim","decode","reader","end","undefined","len","pos","tag","skipType","decodeDelimited","verify","isInteger","low","high","fromObject","fromValue","unsigned","parseInt","LongBits","toNumber","toObject","options","defaults","long","longs","toString","Number","toJSON","constructor","toJSONOptions","Signatures","emptyArray","Signature","fork","Array","isArray","TypeError","arrays","newBuffer","unpaddedSignatureSize","bytes","fixed32","isString","base64","PartitionInfo","InstallOperation","srcExtents","dstExtents","dataOffset","dataLength","srcLength","dstLength","srcSha256Hash","int32","ProtocolError","instance","enums","Type","valuesById","values","CowMergeOperation","srcExtent","dstExtent","srcOffset","PartitionUpdate","newPartitionSignature","mergeOperations","runPostinstall","filesystemType","postinstallOptional","hashTreeDataExtent","hashTreeExtent","hashTreeAlgorithm","hashTreeSalt","fecDataExtent","fecExtent","fecRoots","string","bool","Boolean","DynamicPartitionGroup","partitionNames","DynamicPartitionMetadata","groups","snapshotEnabled","vabcEnabled","vabcCompressionParam","cowVersion","ApexInfo","packageName","isCompressed","decompressedSize","int64","ApexMetadata","apexInfo","DeltaArchiveManifest","blockSize","signaturesOffset","signaturesSize","minorVersion","maxTimestamp","dynamicPartitionMetadata","partialUpdate","securityPatchLevel","packedFile","Blocksize","regexName","getEntries","entries","entry","filename","match","newPartition","getData","rawText","parseTransferList","lines","split","totalBlocks","entryStashed","maxStashed","Uint8Array","sizeNewData","newDataSize","line","op","elements","reduce","parseRange","RegExp","uncompressedSize","extents","rangeset","regexRange","extent","_MAGIC","_VERSION_SIZE","_MANIFEST_LEN_SIZE","_METADATA_SIGNATURE_LEN_SIZE","_PAYLOAD_HEADER_SIZE","_BRILLO_MAJOR_PAYLOAD_VERSION","MetadataFormat","prefix","Error","magic","manifest_len","metadata_signature_len","readIntAt","buffer","position","DataView","arrayBuffer","view","getBigUint64","offset","a","BigInt","getUint32","b","bigNumber","getUint16","contentType","blob","Blob","prefixLength","cursor","readInt","ret","decoder","TextDecoder","magicBytes","header_version","header","array","readHeader","file","File","zipreader","href","readManifest","metadata","init","alert","manifestBlob","signatureBlob","formatter","regex","trimEntry","unzip","parseMetadata","has","Map","types","set","bufferArray","space","maxLine","hex_table","hex","toUpperCase","getWithDefault","srcTotalBlocks","srcBlocks","dstTotalBlocks","dstBlocks","statisticData","title","unit","maximumEntries","trimmedData","trimMap","table","option","text","left","tooltip","trigger","legend","orient","top","from","series","radius","center","map","pair","emphasis","itemStyle","shadowBlur","shadowOffsetX","shadowColor","new_map","curr","currKey","restTotal","targetFile","build","mapFiles","maps","regexPath","forEach","totalLength","regexNumber","mapText","fileEntries","right","InsertMap","names","ext","queryMap","addNumberToMap","operatedBlockStatistics","operatedBlocks","operationType","mergeOperationStatistics","Math","ceil","operatedPayloadStatistics","operatedFileExtensionsStatistics","operatedFilenamesStatistics","filenameStats","fileExtenstionStats","name2Extension","operatedFilenames","buildMap","operatedFileNames","query","extentDataLength","distributeFilenames","analysePartitions","metrics","statisticsData","echartsData","exts","accumulator","total","displayBlocks","filenames","distributedLengths","round","endsWith","required","mounted","OperationDetail","unixTimestamp","isNaN","Date","indexOf","$attrs","getFileName","getFileSize","otaMetadata","trim","preBuild","totalDynamicPartitionSize","totalCOWSize","getZipReader","trimZip","zip","filter","blobWriter","level","pathname","trimTargetFiles","startsWith","close","trimOTAPackage","getMetadataLength","downloadFile","downloadNode","createObjectURL","download","click","revokeObjectURL","ensureSuffix","str","suffix","cowSizes","spl","dynamicPartitionNamess","Set","flatMap","g","acc","cur","PartitionDetail","BasicInfo","$refs","block","exportTargetFileMetadata","partitionInclude","labels","updatePartitions","piechartClick","updateChart","disabled","demo","selectBuild","revertAllSelection","selectAllText","selectAll","checked","modelValue","updateSelected","$event","newSelect","getEchartsOption","VChart","provide","PartialCheckbox","PieChart","BaseFile","listData","responseType","param","partitionSelected","PayloadDetail","PayloadComposition","created","script","routes","path","component","PackageAnalysis","meta","Demo","About","NotFound","router","history","beforeEach","next","nearestWithTitle","matched","reverse","find","previousNearestWithMeta","metaTags","document","querySelectorAll","el","parentNode","removeChild","state","mutations","actions","app","App","use","store","vuetify","mount"],"mappings":"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","file":"js/app.ba9c406f.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/analyseOTA/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BasicInfo.vue?vue&type=style&index=0&id=24adde54&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadComposition.vue?vue&type=style&index=0&id=44b569bd&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport 'vuetify/lib/styles/main.sass'\nimport { createVuetify } from 'vuetify'\nimport * as components from 'vuetify/lib/components'\nimport * as directives from 'vuetify/lib/directives'\n\nexport default createVuetify({\n components,\n directives,\n theme: {\n defaultTheme: 'dark'\n }\n})\n","\n\n\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=ee415730\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n label: {\n type: String,\n default: ''\n }\n },\n emits: {\n 'file-select': null\n },\n data() {\n return {\n fileName: '',\n url: ''\n }\n },\n computed: {\n parsedURL(): URL | null {\n try {\n return new URL(this.url)\n } catch {\n return null\n }\n }\n },\n\n methods: {\n handleFileChange(event: any) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (target.files == null || target.files.length < 1) {\n return\n }\n const selectedFile = target.files![0]\n this.$emit('file-select', selectedFile)\n // If user selects a file, clear the URL component\n this.url = ''\n this.fileName = target.files![0].name\n },\n dragover(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!target.classList.contains('file-hover')) {\n target.classList.add('file-hover')\n }\n },\n dragleave(event: DragEvent) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n target.classList.remove('file-hover')\n },\n drop(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!event.dataTransfer || event.dataTransfer.files.length == 0) {\n return\n }\n target.files = event.dataTransfer.files\n this.handleFileChange(event)\n target.classList.remove('file-hover')\n },\n urlKeyup(event: KeyboardEvent) {\n console.log(this.url)\n if (event.key == 'Enter') {\n const target = event.target as HTMLInputElement\n if (this.parsedURL == null) {\n console.error(`${target.value} is an invalid URL`)\n return\n }\n this.$emit('file-select', this.parsedURL)\n }\n }\n }\n})\n","import { render } from \"./BaseFile.vue?vue&type=template&id=0630c5ec&scoped=true\"\nimport script from \"./BaseFile.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseFile.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-0630c5ec\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\nimport * as $protobuf from \"protobufjs/minimal\";\n\n// Common aliases\nconst $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nconst $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\nexport const chromeos_update_engine = $root.chromeos_update_engine = (() => {\n\n /**\n * Namespace chromeos_update_engine.\n * @exports chromeos_update_engine\n * @namespace\n */\n const chromeos_update_engine = {};\n\n chromeos_update_engine.Extent = (function() {\n\n /**\n * Properties of an Extent.\n * @memberof chromeos_update_engine\n * @interface IExtent\n * @property {number|Long|null} [startBlock] Extent startBlock\n * @property {number|Long|null} [numBlocks] Extent numBlocks\n */\n\n /**\n * Constructs a new Extent.\n * @memberof chromeos_update_engine\n * @classdesc Represents an Extent.\n * @implements IExtent\n * @constructor\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n */\n function Extent(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Extent startBlock.\n * @member {number|Long} startBlock\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.startBlock = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Extent numBlocks.\n * @member {number|Long} numBlocks\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.numBlocks = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new Extent instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n * @returns {chromeos_update_engine.Extent} Extent instance\n */\n Extent.create = function create(properties) {\n return new Extent(properties);\n };\n\n /**\n * Encodes the specified Extent message. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startBlock != null && Object.hasOwnProperty.call(message, \"startBlock\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.startBlock);\n if (message.numBlocks != null && Object.hasOwnProperty.call(message, \"numBlocks\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.numBlocks);\n return writer;\n };\n\n /**\n * Encodes the specified Extent message, length delimited. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Extent();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.startBlock = reader.uint64();\n break;\n case 2:\n message.numBlocks = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an Extent message.\n * @function verify\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Extent.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (!$util.isInteger(message.startBlock) && !(message.startBlock && $util.isInteger(message.startBlock.low) && $util.isInteger(message.startBlock.high)))\n return \"startBlock: integer|Long expected\";\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (!$util.isInteger(message.numBlocks) && !(message.numBlocks && $util.isInteger(message.numBlocks.low) && $util.isInteger(message.numBlocks.high)))\n return \"numBlocks: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an Extent message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Extent} Extent\n */\n Extent.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Extent)\n return object;\n let message = new $root.chromeos_update_engine.Extent();\n if (object.startBlock != null)\n if ($util.Long)\n (message.startBlock = $util.Long.fromValue(object.startBlock)).unsigned = true;\n else if (typeof object.startBlock === \"string\")\n message.startBlock = parseInt(object.startBlock, 10);\n else if (typeof object.startBlock === \"number\")\n message.startBlock = object.startBlock;\n else if (typeof object.startBlock === \"object\")\n message.startBlock = new $util.LongBits(object.startBlock.low >>> 0, object.startBlock.high >>> 0).toNumber(true);\n if (object.numBlocks != null)\n if ($util.Long)\n (message.numBlocks = $util.Long.fromValue(object.numBlocks)).unsigned = true;\n else if (typeof object.numBlocks === \"string\")\n message.numBlocks = parseInt(object.numBlocks, 10);\n else if (typeof object.numBlocks === \"number\")\n message.numBlocks = object.numBlocks;\n else if (typeof object.numBlocks === \"object\")\n message.numBlocks = new $util.LongBits(object.numBlocks.low >>> 0, object.numBlocks.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from an Extent message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.Extent} message Extent\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Extent.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.startBlock = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.startBlock = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.numBlocks = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.numBlocks = options.longs === String ? \"0\" : 0;\n }\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (typeof message.startBlock === \"number\")\n object.startBlock = options.longs === String ? String(message.startBlock) : message.startBlock;\n else\n object.startBlock = options.longs === String ? $util.Long.prototype.toString.call(message.startBlock) : options.longs === Number ? new $util.LongBits(message.startBlock.low >>> 0, message.startBlock.high >>> 0).toNumber(true) : message.startBlock;\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (typeof message.numBlocks === \"number\")\n object.numBlocks = options.longs === String ? String(message.numBlocks) : message.numBlocks;\n else\n object.numBlocks = options.longs === String ? $util.Long.prototype.toString.call(message.numBlocks) : options.longs === Number ? new $util.LongBits(message.numBlocks.low >>> 0, message.numBlocks.high >>> 0).toNumber(true) : message.numBlocks;\n return object;\n };\n\n /**\n * Converts this Extent to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Extent\n * @instance\n * @returns {Object.} JSON object\n */\n Extent.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Extent;\n })();\n\n chromeos_update_engine.Signatures = (function() {\n\n /**\n * Properties of a Signatures.\n * @memberof chromeos_update_engine\n * @interface ISignatures\n * @property {Array.|null} [signatures] Signatures signatures\n */\n\n /**\n * Constructs a new Signatures.\n * @memberof chromeos_update_engine\n * @classdesc Represents a Signatures.\n * @implements ISignatures\n * @constructor\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n */\n function Signatures(properties) {\n this.signatures = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signatures signatures.\n * @member {Array.} signatures\n * @memberof chromeos_update_engine.Signatures\n * @instance\n */\n Signatures.prototype.signatures = $util.emptyArray;\n\n /**\n * Creates a new Signatures instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures} Signatures instance\n */\n Signatures.create = function create(properties) {\n return new Signatures(properties);\n };\n\n /**\n * Encodes the specified Signatures message. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.signatures != null && message.signatures.length)\n for (let i = 0; i < message.signatures.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.signatures[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Signatures message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.signatures && message.signatures.length))\n message.signatures = [];\n message.signatures.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signatures message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signatures.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.signatures != null && message.hasOwnProperty(\"signatures\")) {\n if (!Array.isArray(message.signatures))\n return \"signatures: array expected\";\n for (let i = 0; i < message.signatures.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.signatures[i]);\n if (error)\n return \"signatures.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a Signatures message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures} Signatures\n */\n Signatures.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures)\n return object;\n let message = new $root.chromeos_update_engine.Signatures();\n if (object.signatures) {\n if (!Array.isArray(object.signatures))\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: array expected\");\n message.signatures = [];\n for (let i = 0; i < object.signatures.length; ++i) {\n if (typeof object.signatures[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: object expected\");\n message.signatures[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.signatures[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Signatures message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.Signatures} message Signatures\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signatures.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.signatures = [];\n if (message.signatures && message.signatures.length) {\n object.signatures = [];\n for (let j = 0; j < message.signatures.length; ++j)\n object.signatures[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.signatures[j], options);\n }\n return object;\n };\n\n /**\n * Converts this Signatures to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures\n * @instance\n * @returns {Object.} JSON object\n */\n Signatures.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n Signatures.Signature = (function() {\n\n /**\n * Properties of a Signature.\n * @memberof chromeos_update_engine.Signatures\n * @interface ISignature\n * @property {number|null} [version] Signature version\n * @property {Uint8Array|null} [data] Signature data\n * @property {number|null} [unpaddedSignatureSize] Signature unpaddedSignatureSize\n */\n\n /**\n * Constructs a new Signature.\n * @memberof chromeos_update_engine.Signatures\n * @classdesc Represents a Signature.\n * @implements ISignature\n * @constructor\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n */\n function Signature(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signature version.\n * @member {number} version\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.version = 0;\n\n /**\n * Signature data.\n * @member {Uint8Array} data\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.data = $util.newBuffer([]);\n\n /**\n * Signature unpaddedSignatureSize.\n * @member {number} unpaddedSignatureSize\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.unpaddedSignatureSize = 0;\n\n /**\n * Creates a new Signature instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures.Signature} Signature instance\n */\n Signature.create = function create(properties) {\n return new Signature(properties);\n };\n\n /**\n * Encodes the specified Signature message. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.version);\n if (message.data != null && Object.hasOwnProperty.call(message, \"data\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.data);\n if (message.unpaddedSignatureSize != null && Object.hasOwnProperty.call(message, \"unpaddedSignatureSize\"))\n writer.uint32(/* id 3, wireType 5 =*/29).fixed32(message.unpaddedSignatureSize);\n return writer;\n };\n\n /**\n * Encodes the specified Signature message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures.Signature();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.version = reader.uint32();\n break;\n case 2:\n message.data = reader.bytes();\n break;\n case 3:\n message.unpaddedSignatureSize = reader.fixed32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signature message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signature.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version))\n return \"version: integer expected\";\n if (message.data != null && message.hasOwnProperty(\"data\"))\n if (!(message.data && typeof message.data.length === \"number\" || $util.isString(message.data)))\n return \"data: buffer expected\";\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n if (!$util.isInteger(message.unpaddedSignatureSize))\n return \"unpaddedSignatureSize: integer expected\";\n return null;\n };\n\n /**\n * Creates a Signature message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n */\n Signature.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures.Signature)\n return object;\n let message = new $root.chromeos_update_engine.Signatures.Signature();\n if (object.version != null)\n message.version = object.version >>> 0;\n if (object.data != null)\n if (typeof object.data === \"string\")\n $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);\n else if (object.data.length)\n message.data = object.data;\n if (object.unpaddedSignatureSize != null)\n message.unpaddedSignatureSize = object.unpaddedSignatureSize >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a Signature message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.Signature} message Signature\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signature.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.version = 0;\n if (options.bytes === String)\n object.data = \"\";\n else {\n object.data = [];\n if (options.bytes !== Array)\n object.data = $util.newBuffer(object.data);\n }\n object.unpaddedSignatureSize = 0;\n }\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.data != null && message.hasOwnProperty(\"data\"))\n object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n object.unpaddedSignatureSize = message.unpaddedSignatureSize;\n return object;\n };\n\n /**\n * Converts this Signature to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n * @returns {Object.} JSON object\n */\n Signature.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Signature;\n })();\n\n return Signatures;\n })();\n\n chromeos_update_engine.PartitionInfo = (function() {\n\n /**\n * Properties of a PartitionInfo.\n * @memberof chromeos_update_engine\n * @interface IPartitionInfo\n * @property {number|Long|null} [size] PartitionInfo size\n * @property {Uint8Array|null} [hash] PartitionInfo hash\n */\n\n /**\n * Constructs a new PartitionInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionInfo.\n * @implements IPartitionInfo\n * @constructor\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n */\n function PartitionInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionInfo size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * PartitionInfo hash.\n * @member {Uint8Array} hash\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.hash = $util.newBuffer([]);\n\n /**\n * Creates a new PartitionInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo instance\n */\n PartitionInfo.create = function create(properties) {\n return new PartitionInfo(properties);\n };\n\n /**\n * Encodes the specified PartitionInfo message. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.size);\n if (message.hash != null && Object.hasOwnProperty.call(message, \"hash\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.hash);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.size = reader.uint64();\n break;\n case 2:\n message.hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionInfo message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n if (!(message.hash && typeof message.hash.length === \"number\" || $util.isString(message.hash)))\n return \"hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates a PartitionInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n */\n PartitionInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionInfo)\n return object;\n let message = new $root.chromeos_update_engine.PartitionInfo();\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.hash != null)\n if (typeof object.hash === \"string\")\n $util.base64.decode(object.hash, message.hash = $util.newBuffer($util.base64.length(object.hash)), 0);\n else if (object.hash.length)\n message.hash = object.hash;\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.PartitionInfo} message PartitionInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.hash = \"\";\n else {\n object.hash = [];\n if (options.bytes !== Array)\n object.hash = $util.newBuffer(object.hash);\n }\n }\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n object.hash = options.bytes === String ? $util.base64.encode(message.hash, 0, message.hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.hash) : message.hash;\n return object;\n };\n\n /**\n * Converts this PartitionInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionInfo;\n })();\n\n chromeos_update_engine.InstallOperation = (function() {\n\n /**\n * Properties of an InstallOperation.\n * @memberof chromeos_update_engine\n * @interface IInstallOperation\n * @property {chromeos_update_engine.InstallOperation.Type} type InstallOperation type\n * @property {number|Long|null} [dataOffset] InstallOperation dataOffset\n * @property {number|Long|null} [dataLength] InstallOperation dataLength\n * @property {Array.|null} [srcExtents] InstallOperation srcExtents\n * @property {number|Long|null} [srcLength] InstallOperation srcLength\n * @property {Array.|null} [dstExtents] InstallOperation dstExtents\n * @property {number|Long|null} [dstLength] InstallOperation dstLength\n * @property {Uint8Array|null} [dataSha256Hash] InstallOperation dataSha256Hash\n * @property {Uint8Array|null} [srcSha256Hash] InstallOperation srcSha256Hash\n */\n\n /**\n * Constructs a new InstallOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents an InstallOperation.\n * @implements IInstallOperation\n * @constructor\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n */\n function InstallOperation(properties) {\n this.srcExtents = [];\n this.dstExtents = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * InstallOperation type.\n * @member {chromeos_update_engine.InstallOperation.Type} type\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.type = 0;\n\n /**\n * InstallOperation dataOffset.\n * @member {number|Long} dataOffset\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataLength.\n * @member {number|Long} dataLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation srcExtents.\n * @member {Array.} srcExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcExtents = $util.emptyArray;\n\n /**\n * InstallOperation srcLength.\n * @member {number|Long} srcLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dstExtents.\n * @member {Array.} dstExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstExtents = $util.emptyArray;\n\n /**\n * InstallOperation dstLength.\n * @member {number|Long} dstLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataSha256Hash.\n * @member {Uint8Array} dataSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataSha256Hash = $util.newBuffer([]);\n\n /**\n * InstallOperation srcSha256Hash.\n * @member {Uint8Array} srcSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcSha256Hash = $util.newBuffer([]);\n\n /**\n * Creates a new InstallOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation instance\n */\n InstallOperation.create = function create(properties) {\n return new InstallOperation(properties);\n };\n\n /**\n * Encodes the specified InstallOperation message. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.dataOffset != null && Object.hasOwnProperty.call(message, \"dataOffset\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.dataOffset);\n if (message.dataLength != null && Object.hasOwnProperty.call(message, \"dataLength\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.dataLength);\n if (message.srcExtents != null && message.srcExtents.length)\n for (let i = 0; i < message.srcExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.srcExtents[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.srcLength != null && Object.hasOwnProperty.call(message, \"srcLength\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.srcLength);\n if (message.dstExtents != null && message.dstExtents.length)\n for (let i = 0; i < message.dstExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.dstExtents[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.dstLength != null && Object.hasOwnProperty.call(message, \"dstLength\"))\n writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.dstLength);\n if (message.dataSha256Hash != null && Object.hasOwnProperty.call(message, \"dataSha256Hash\"))\n writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.dataSha256Hash);\n if (message.srcSha256Hash != null && Object.hasOwnProperty.call(message, \"srcSha256Hash\"))\n writer.uint32(/* id 9, wireType 2 =*/74).bytes(message.srcSha256Hash);\n return writer;\n };\n\n /**\n * Encodes the specified InstallOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.InstallOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.dataOffset = reader.uint64();\n break;\n case 3:\n message.dataLength = reader.uint64();\n break;\n case 4:\n if (!(message.srcExtents && message.srcExtents.length))\n message.srcExtents = [];\n message.srcExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 5:\n message.srcLength = reader.uint64();\n break;\n case 6:\n if (!(message.dstExtents && message.dstExtents.length))\n message.dstExtents = [];\n message.dstExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 7:\n message.dstLength = reader.uint64();\n break;\n case 8:\n message.dataSha256Hash = reader.bytes();\n break;\n case 9:\n message.srcSha256Hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"type\"))\n throw $util.ProtocolError(\"missing required 'type'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an InstallOperation message.\n * @function verify\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n InstallOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 8:\n case 6:\n case 7:\n case 10:\n case 9:\n case 11:\n case 12:\n case 13:\n break;\n }\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (!$util.isInteger(message.dataOffset) && !(message.dataOffset && $util.isInteger(message.dataOffset.low) && $util.isInteger(message.dataOffset.high)))\n return \"dataOffset: integer|Long expected\";\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (!$util.isInteger(message.dataLength) && !(message.dataLength && $util.isInteger(message.dataLength.low) && $util.isInteger(message.dataLength.high)))\n return \"dataLength: integer|Long expected\";\n if (message.srcExtents != null && message.hasOwnProperty(\"srcExtents\")) {\n if (!Array.isArray(message.srcExtents))\n return \"srcExtents: array expected\";\n for (let i = 0; i < message.srcExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtents[i]);\n if (error)\n return \"srcExtents.\" + error;\n }\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (!$util.isInteger(message.srcLength) && !(message.srcLength && $util.isInteger(message.srcLength.low) && $util.isInteger(message.srcLength.high)))\n return \"srcLength: integer|Long expected\";\n if (message.dstExtents != null && message.hasOwnProperty(\"dstExtents\")) {\n if (!Array.isArray(message.dstExtents))\n return \"dstExtents: array expected\";\n for (let i = 0; i < message.dstExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtents[i]);\n if (error)\n return \"dstExtents.\" + error;\n }\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (!$util.isInteger(message.dstLength) && !(message.dstLength && $util.isInteger(message.dstLength.low) && $util.isInteger(message.dstLength.high)))\n return \"dstLength: integer|Long expected\";\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n if (!(message.dataSha256Hash && typeof message.dataSha256Hash.length === \"number\" || $util.isString(message.dataSha256Hash)))\n return \"dataSha256Hash: buffer expected\";\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n if (!(message.srcSha256Hash && typeof message.srcSha256Hash.length === \"number\" || $util.isString(message.srcSha256Hash)))\n return \"srcSha256Hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates an InstallOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n */\n InstallOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.InstallOperation)\n return object;\n let message = new $root.chromeos_update_engine.InstallOperation();\n switch (object.type) {\n case \"REPLACE\":\n case 0:\n message.type = 0;\n break;\n case \"REPLACE_BZ\":\n case 1:\n message.type = 1;\n break;\n case \"MOVE\":\n case 2:\n message.type = 2;\n break;\n case \"BSDIFF\":\n case 3:\n message.type = 3;\n break;\n case \"SOURCE_COPY\":\n case 4:\n message.type = 4;\n break;\n case \"SOURCE_BSDIFF\":\n case 5:\n message.type = 5;\n break;\n case \"REPLACE_XZ\":\n case 8:\n message.type = 8;\n break;\n case \"ZERO\":\n case 6:\n message.type = 6;\n break;\n case \"DISCARD\":\n case 7:\n message.type = 7;\n break;\n case \"BROTLI_BSDIFF\":\n case 10:\n message.type = 10;\n break;\n case \"PUFFDIFF\":\n case 9:\n message.type = 9;\n break;\n case \"ZUCCHINI\":\n case 11:\n message.type = 11;\n break;\n case \"LZ4DIFF_BSDIFF\":\n case 12:\n message.type = 12;\n break;\n case \"LZ4DIFF_PUFFDIFF\":\n case 13:\n message.type = 13;\n break;\n }\n if (object.dataOffset != null)\n if ($util.Long)\n (message.dataOffset = $util.Long.fromValue(object.dataOffset)).unsigned = true;\n else if (typeof object.dataOffset === \"string\")\n message.dataOffset = parseInt(object.dataOffset, 10);\n else if (typeof object.dataOffset === \"number\")\n message.dataOffset = object.dataOffset;\n else if (typeof object.dataOffset === \"object\")\n message.dataOffset = new $util.LongBits(object.dataOffset.low >>> 0, object.dataOffset.high >>> 0).toNumber(true);\n if (object.dataLength != null)\n if ($util.Long)\n (message.dataLength = $util.Long.fromValue(object.dataLength)).unsigned = true;\n else if (typeof object.dataLength === \"string\")\n message.dataLength = parseInt(object.dataLength, 10);\n else if (typeof object.dataLength === \"number\")\n message.dataLength = object.dataLength;\n else if (typeof object.dataLength === \"object\")\n message.dataLength = new $util.LongBits(object.dataLength.low >>> 0, object.dataLength.high >>> 0).toNumber(true);\n if (object.srcExtents) {\n if (!Array.isArray(object.srcExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: array expected\");\n message.srcExtents = [];\n for (let i = 0; i < object.srcExtents.length; ++i) {\n if (typeof object.srcExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: object expected\");\n message.srcExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.srcExtents[i]);\n }\n }\n if (object.srcLength != null)\n if ($util.Long)\n (message.srcLength = $util.Long.fromValue(object.srcLength)).unsigned = true;\n else if (typeof object.srcLength === \"string\")\n message.srcLength = parseInt(object.srcLength, 10);\n else if (typeof object.srcLength === \"number\")\n message.srcLength = object.srcLength;\n else if (typeof object.srcLength === \"object\")\n message.srcLength = new $util.LongBits(object.srcLength.low >>> 0, object.srcLength.high >>> 0).toNumber(true);\n if (object.dstExtents) {\n if (!Array.isArray(object.dstExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: array expected\");\n message.dstExtents = [];\n for (let i = 0; i < object.dstExtents.length; ++i) {\n if (typeof object.dstExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: object expected\");\n message.dstExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.dstExtents[i]);\n }\n }\n if (object.dstLength != null)\n if ($util.Long)\n (message.dstLength = $util.Long.fromValue(object.dstLength)).unsigned = true;\n else if (typeof object.dstLength === \"string\")\n message.dstLength = parseInt(object.dstLength, 10);\n else if (typeof object.dstLength === \"number\")\n message.dstLength = object.dstLength;\n else if (typeof object.dstLength === \"object\")\n message.dstLength = new $util.LongBits(object.dstLength.low >>> 0, object.dstLength.high >>> 0).toNumber(true);\n if (object.dataSha256Hash != null)\n if (typeof object.dataSha256Hash === \"string\")\n $util.base64.decode(object.dataSha256Hash, message.dataSha256Hash = $util.newBuffer($util.base64.length(object.dataSha256Hash)), 0);\n else if (object.dataSha256Hash.length)\n message.dataSha256Hash = object.dataSha256Hash;\n if (object.srcSha256Hash != null)\n if (typeof object.srcSha256Hash === \"string\")\n $util.base64.decode(object.srcSha256Hash, message.srcSha256Hash = $util.newBuffer($util.base64.length(object.srcSha256Hash)), 0);\n else if (object.srcSha256Hash.length)\n message.srcSha256Hash = object.srcSha256Hash;\n return message;\n };\n\n /**\n * Creates a plain object from an InstallOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.InstallOperation} message InstallOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n InstallOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.srcExtents = [];\n object.dstExtents = [];\n }\n if (options.defaults) {\n object.type = options.enums === String ? \"REPLACE\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.srcLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.srcLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dstLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dstLength = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.dataSha256Hash = \"\";\n else {\n object.dataSha256Hash = [];\n if (options.bytes !== Array)\n object.dataSha256Hash = $util.newBuffer(object.dataSha256Hash);\n }\n if (options.bytes === String)\n object.srcSha256Hash = \"\";\n else {\n object.srcSha256Hash = [];\n if (options.bytes !== Array)\n object.srcSha256Hash = $util.newBuffer(object.srcSha256Hash);\n }\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.InstallOperation.Type[message.type] : message.type;\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (typeof message.dataOffset === \"number\")\n object.dataOffset = options.longs === String ? String(message.dataOffset) : message.dataOffset;\n else\n object.dataOffset = options.longs === String ? $util.Long.prototype.toString.call(message.dataOffset) : options.longs === Number ? new $util.LongBits(message.dataOffset.low >>> 0, message.dataOffset.high >>> 0).toNumber(true) : message.dataOffset;\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (typeof message.dataLength === \"number\")\n object.dataLength = options.longs === String ? String(message.dataLength) : message.dataLength;\n else\n object.dataLength = options.longs === String ? $util.Long.prototype.toString.call(message.dataLength) : options.longs === Number ? new $util.LongBits(message.dataLength.low >>> 0, message.dataLength.high >>> 0).toNumber(true) : message.dataLength;\n if (message.srcExtents && message.srcExtents.length) {\n object.srcExtents = [];\n for (let j = 0; j < message.srcExtents.length; ++j)\n object.srcExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.srcExtents[j], options);\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (typeof message.srcLength === \"number\")\n object.srcLength = options.longs === String ? String(message.srcLength) : message.srcLength;\n else\n object.srcLength = options.longs === String ? $util.Long.prototype.toString.call(message.srcLength) : options.longs === Number ? new $util.LongBits(message.srcLength.low >>> 0, message.srcLength.high >>> 0).toNumber(true) : message.srcLength;\n if (message.dstExtents && message.dstExtents.length) {\n object.dstExtents = [];\n for (let j = 0; j < message.dstExtents.length; ++j)\n object.dstExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.dstExtents[j], options);\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (typeof message.dstLength === \"number\")\n object.dstLength = options.longs === String ? String(message.dstLength) : message.dstLength;\n else\n object.dstLength = options.longs === String ? $util.Long.prototype.toString.call(message.dstLength) : options.longs === Number ? new $util.LongBits(message.dstLength.low >>> 0, message.dstLength.high >>> 0).toNumber(true) : message.dstLength;\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n object.dataSha256Hash = options.bytes === String ? $util.base64.encode(message.dataSha256Hash, 0, message.dataSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.dataSha256Hash) : message.dataSha256Hash;\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n object.srcSha256Hash = options.bytes === String ? $util.base64.encode(message.srcSha256Hash, 0, message.srcSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.srcSha256Hash) : message.srcSha256Hash;\n return object;\n };\n\n /**\n * Converts this InstallOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n * @returns {Object.} JSON object\n */\n InstallOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.InstallOperation.Type\n * @enum {number}\n * @property {number} REPLACE=0 REPLACE value\n * @property {number} REPLACE_BZ=1 REPLACE_BZ value\n * @property {number} MOVE=2 MOVE value\n * @property {number} BSDIFF=3 BSDIFF value\n * @property {number} SOURCE_COPY=4 SOURCE_COPY value\n * @property {number} SOURCE_BSDIFF=5 SOURCE_BSDIFF value\n * @property {number} REPLACE_XZ=8 REPLACE_XZ value\n * @property {number} ZERO=6 ZERO value\n * @property {number} DISCARD=7 DISCARD value\n * @property {number} BROTLI_BSDIFF=10 BROTLI_BSDIFF value\n * @property {number} PUFFDIFF=9 PUFFDIFF value\n * @property {number} ZUCCHINI=11 ZUCCHINI value\n * @property {number} LZ4DIFF_BSDIFF=12 LZ4DIFF_BSDIFF value\n * @property {number} LZ4DIFF_PUFFDIFF=13 LZ4DIFF_PUFFDIFF value\n */\n InstallOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"REPLACE\"] = 0;\n values[valuesById[1] = \"REPLACE_BZ\"] = 1;\n values[valuesById[2] = \"MOVE\"] = 2;\n values[valuesById[3] = \"BSDIFF\"] = 3;\n values[valuesById[4] = \"SOURCE_COPY\"] = 4;\n values[valuesById[5] = \"SOURCE_BSDIFF\"] = 5;\n values[valuesById[8] = \"REPLACE_XZ\"] = 8;\n values[valuesById[6] = \"ZERO\"] = 6;\n values[valuesById[7] = \"DISCARD\"] = 7;\n values[valuesById[10] = \"BROTLI_BSDIFF\"] = 10;\n values[valuesById[9] = \"PUFFDIFF\"] = 9;\n values[valuesById[11] = \"ZUCCHINI\"] = 11;\n values[valuesById[12] = \"LZ4DIFF_BSDIFF\"] = 12;\n values[valuesById[13] = \"LZ4DIFF_PUFFDIFF\"] = 13;\n return values;\n })();\n\n return InstallOperation;\n })();\n\n chromeos_update_engine.CowMergeOperation = (function() {\n\n /**\n * Properties of a CowMergeOperation.\n * @memberof chromeos_update_engine\n * @interface ICowMergeOperation\n * @property {chromeos_update_engine.CowMergeOperation.Type|null} [type] CowMergeOperation type\n * @property {chromeos_update_engine.IExtent|null} [srcExtent] CowMergeOperation srcExtent\n * @property {chromeos_update_engine.IExtent|null} [dstExtent] CowMergeOperation dstExtent\n * @property {number|null} [srcOffset] CowMergeOperation srcOffset\n */\n\n /**\n * Constructs a new CowMergeOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents a CowMergeOperation.\n * @implements ICowMergeOperation\n * @constructor\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n */\n function CowMergeOperation(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * CowMergeOperation type.\n * @member {chromeos_update_engine.CowMergeOperation.Type} type\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.type = 0;\n\n /**\n * CowMergeOperation srcExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} srcExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcExtent = null;\n\n /**\n * CowMergeOperation dstExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} dstExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.dstExtent = null;\n\n /**\n * CowMergeOperation srcOffset.\n * @member {number} srcOffset\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcOffset = 0;\n\n /**\n * Creates a new CowMergeOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation instance\n */\n CowMergeOperation.create = function create(properties) {\n return new CowMergeOperation(properties);\n };\n\n /**\n * Encodes the specified CowMergeOperation message. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.srcExtent != null && Object.hasOwnProperty.call(message, \"srcExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.srcExtent, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.dstExtent != null && Object.hasOwnProperty.call(message, \"dstExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.dstExtent, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.srcOffset != null && Object.hasOwnProperty.call(message, \"srcOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.srcOffset);\n return writer;\n };\n\n /**\n * Encodes the specified CowMergeOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.CowMergeOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.srcExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 3:\n message.dstExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 4:\n message.srcOffset = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a CowMergeOperation message.\n * @function verify\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n CowMergeOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtent);\n if (error)\n return \"srcExtent.\" + error;\n }\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtent);\n if (error)\n return \"dstExtent.\" + error;\n }\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n if (!$util.isInteger(message.srcOffset))\n return \"srcOffset: integer expected\";\n return null;\n };\n\n /**\n * Creates a CowMergeOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n */\n CowMergeOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.CowMergeOperation)\n return object;\n let message = new $root.chromeos_update_engine.CowMergeOperation();\n switch (object.type) {\n case \"COW_COPY\":\n case 0:\n message.type = 0;\n break;\n case \"COW_XOR\":\n case 1:\n message.type = 1;\n break;\n case \"COW_REPLACE\":\n case 2:\n message.type = 2;\n break;\n }\n if (object.srcExtent != null) {\n if (typeof object.srcExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.srcExtent: object expected\");\n message.srcExtent = $root.chromeos_update_engine.Extent.fromObject(object.srcExtent);\n }\n if (object.dstExtent != null) {\n if (typeof object.dstExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.dstExtent: object expected\");\n message.dstExtent = $root.chromeos_update_engine.Extent.fromObject(object.dstExtent);\n }\n if (object.srcOffset != null)\n message.srcOffset = object.srcOffset >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a CowMergeOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.CowMergeOperation} message CowMergeOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n CowMergeOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"COW_COPY\" : 0;\n object.srcExtent = null;\n object.dstExtent = null;\n object.srcOffset = 0;\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.CowMergeOperation.Type[message.type] : message.type;\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\"))\n object.srcExtent = $root.chromeos_update_engine.Extent.toObject(message.srcExtent, options);\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\"))\n object.dstExtent = $root.chromeos_update_engine.Extent.toObject(message.dstExtent, options);\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n object.srcOffset = message.srcOffset;\n return object;\n };\n\n /**\n * Converts this CowMergeOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n * @returns {Object.} JSON object\n */\n CowMergeOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.CowMergeOperation.Type\n * @enum {number}\n * @property {number} COW_COPY=0 COW_COPY value\n * @property {number} COW_XOR=1 COW_XOR value\n * @property {number} COW_REPLACE=2 COW_REPLACE value\n */\n CowMergeOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"COW_COPY\"] = 0;\n values[valuesById[1] = \"COW_XOR\"] = 1;\n values[valuesById[2] = \"COW_REPLACE\"] = 2;\n return values;\n })();\n\n return CowMergeOperation;\n })();\n\n chromeos_update_engine.PartitionUpdate = (function() {\n\n /**\n * Properties of a PartitionUpdate.\n * @memberof chromeos_update_engine\n * @interface IPartitionUpdate\n * @property {string} partitionName PartitionUpdate partitionName\n * @property {boolean|null} [runPostinstall] PartitionUpdate runPostinstall\n * @property {string|null} [postinstallPath] PartitionUpdate postinstallPath\n * @property {string|null} [filesystemType] PartitionUpdate filesystemType\n * @property {Array.|null} [newPartitionSignature] PartitionUpdate newPartitionSignature\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldPartitionInfo] PartitionUpdate oldPartitionInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newPartitionInfo] PartitionUpdate newPartitionInfo\n * @property {Array.|null} [operations] PartitionUpdate operations\n * @property {boolean|null} [postinstallOptional] PartitionUpdate postinstallOptional\n * @property {chromeos_update_engine.IExtent|null} [hashTreeDataExtent] PartitionUpdate hashTreeDataExtent\n * @property {chromeos_update_engine.IExtent|null} [hashTreeExtent] PartitionUpdate hashTreeExtent\n * @property {string|null} [hashTreeAlgorithm] PartitionUpdate hashTreeAlgorithm\n * @property {Uint8Array|null} [hashTreeSalt] PartitionUpdate hashTreeSalt\n * @property {chromeos_update_engine.IExtent|null} [fecDataExtent] PartitionUpdate fecDataExtent\n * @property {chromeos_update_engine.IExtent|null} [fecExtent] PartitionUpdate fecExtent\n * @property {number|null} [fecRoots] PartitionUpdate fecRoots\n * @property {string|null} [version] PartitionUpdate version\n * @property {Array.|null} [mergeOperations] PartitionUpdate mergeOperations\n * @property {number|Long|null} [estimateCowSize] PartitionUpdate estimateCowSize\n */\n\n /**\n * Constructs a new PartitionUpdate.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionUpdate.\n * @implements IPartitionUpdate\n * @constructor\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n */\n function PartitionUpdate(properties) {\n this.newPartitionSignature = [];\n this.operations = [];\n this.mergeOperations = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionUpdate partitionName.\n * @member {string} partitionName\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.partitionName = \"\";\n\n /**\n * PartitionUpdate runPostinstall.\n * @member {boolean} runPostinstall\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.runPostinstall = false;\n\n /**\n * PartitionUpdate postinstallPath.\n * @member {string} postinstallPath\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallPath = \"\";\n\n /**\n * PartitionUpdate filesystemType.\n * @member {string} filesystemType\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.filesystemType = \"\";\n\n /**\n * PartitionUpdate newPartitionSignature.\n * @member {Array.} newPartitionSignature\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionSignature = $util.emptyArray;\n\n /**\n * PartitionUpdate oldPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.oldPartitionInfo = null;\n\n /**\n * PartitionUpdate newPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionInfo = null;\n\n /**\n * PartitionUpdate operations.\n * @member {Array.} operations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.operations = $util.emptyArray;\n\n /**\n * PartitionUpdate postinstallOptional.\n * @member {boolean} postinstallOptional\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallOptional = false;\n\n /**\n * PartitionUpdate hashTreeDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeDataExtent = null;\n\n /**\n * PartitionUpdate hashTreeExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeExtent = null;\n\n /**\n * PartitionUpdate hashTreeAlgorithm.\n * @member {string} hashTreeAlgorithm\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeAlgorithm = \"\";\n\n /**\n * PartitionUpdate hashTreeSalt.\n * @member {Uint8Array} hashTreeSalt\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeSalt = $util.newBuffer([]);\n\n /**\n * PartitionUpdate fecDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecDataExtent = null;\n\n /**\n * PartitionUpdate fecExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecExtent = null;\n\n /**\n * PartitionUpdate fecRoots.\n * @member {number} fecRoots\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecRoots = 2;\n\n /**\n * PartitionUpdate version.\n * @member {string} version\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.version = \"\";\n\n /**\n * PartitionUpdate mergeOperations.\n * @member {Array.} mergeOperations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.mergeOperations = $util.emptyArray;\n\n /**\n * PartitionUpdate estimateCowSize.\n * @member {number|Long} estimateCowSize\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.estimateCowSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new PartitionUpdate instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate instance\n */\n PartitionUpdate.create = function create(properties) {\n return new PartitionUpdate(properties);\n };\n\n /**\n * Encodes the specified PartitionUpdate message. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.partitionName);\n if (message.runPostinstall != null && Object.hasOwnProperty.call(message, \"runPostinstall\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.runPostinstall);\n if (message.postinstallPath != null && Object.hasOwnProperty.call(message, \"postinstallPath\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.postinstallPath);\n if (message.filesystemType != null && Object.hasOwnProperty.call(message, \"filesystemType\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.filesystemType);\n if (message.newPartitionSignature != null && message.newPartitionSignature.length)\n for (let i = 0; i < message.newPartitionSignature.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.newPartitionSignature[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.oldPartitionInfo != null && Object.hasOwnProperty.call(message, \"oldPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldPartitionInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newPartitionInfo != null && Object.hasOwnProperty.call(message, \"newPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newPartitionInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.operations != null && message.operations.length)\n for (let i = 0; i < message.operations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.operations[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.postinstallOptional != null && Object.hasOwnProperty.call(message, \"postinstallOptional\"))\n writer.uint32(/* id 9, wireType 0 =*/72).bool(message.postinstallOptional);\n if (message.hashTreeDataExtent != null && Object.hasOwnProperty.call(message, \"hashTreeDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeDataExtent, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.hashTreeExtent != null && Object.hasOwnProperty.call(message, \"hashTreeExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeExtent, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.hashTreeAlgorithm != null && Object.hasOwnProperty.call(message, \"hashTreeAlgorithm\"))\n writer.uint32(/* id 12, wireType 2 =*/98).string(message.hashTreeAlgorithm);\n if (message.hashTreeSalt != null && Object.hasOwnProperty.call(message, \"hashTreeSalt\"))\n writer.uint32(/* id 13, wireType 2 =*/106).bytes(message.hashTreeSalt);\n if (message.fecDataExtent != null && Object.hasOwnProperty.call(message, \"fecDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecDataExtent, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.fecExtent != null && Object.hasOwnProperty.call(message, \"fecExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecExtent, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.fecRoots != null && Object.hasOwnProperty.call(message, \"fecRoots\"))\n writer.uint32(/* id 16, wireType 0 =*/128).uint32(message.fecRoots);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 17, wireType 2 =*/138).string(message.version);\n if (message.mergeOperations != null && message.mergeOperations.length)\n for (let i = 0; i < message.mergeOperations.length; ++i)\n $root.chromeos_update_engine.CowMergeOperation.encode(message.mergeOperations[i], writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n if (message.estimateCowSize != null && Object.hasOwnProperty.call(message, \"estimateCowSize\"))\n writer.uint32(/* id 19, wireType 0 =*/152).uint64(message.estimateCowSize);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionUpdate message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionUpdate();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.partitionName = reader.string();\n break;\n case 2:\n message.runPostinstall = reader.bool();\n break;\n case 3:\n message.postinstallPath = reader.string();\n break;\n case 4:\n message.filesystemType = reader.string();\n break;\n case 5:\n if (!(message.newPartitionSignature && message.newPartitionSignature.length))\n message.newPartitionSignature = [];\n message.newPartitionSignature.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n case 6:\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n if (!(message.operations && message.operations.length))\n message.operations = [];\n message.operations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 9:\n message.postinstallOptional = reader.bool();\n break;\n case 10:\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 11:\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 12:\n message.hashTreeAlgorithm = reader.string();\n break;\n case 13:\n message.hashTreeSalt = reader.bytes();\n break;\n case 14:\n message.fecDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 15:\n message.fecExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 16:\n message.fecRoots = reader.uint32();\n break;\n case 17:\n message.version = reader.string();\n break;\n case 18:\n if (!(message.mergeOperations && message.mergeOperations.length))\n message.mergeOperations = [];\n message.mergeOperations.push($root.chromeos_update_engine.CowMergeOperation.decode(reader, reader.uint32()));\n break;\n case 19:\n message.estimateCowSize = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"partitionName\"))\n throw $util.ProtocolError(\"missing required 'partitionName'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionUpdate message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionUpdate.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.partitionName))\n return \"partitionName: string expected\";\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n if (typeof message.runPostinstall !== \"boolean\")\n return \"runPostinstall: boolean expected\";\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n if (!$util.isString(message.postinstallPath))\n return \"postinstallPath: string expected\";\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n if (!$util.isString(message.filesystemType))\n return \"filesystemType: string expected\";\n if (message.newPartitionSignature != null && message.hasOwnProperty(\"newPartitionSignature\")) {\n if (!Array.isArray(message.newPartitionSignature))\n return \"newPartitionSignature: array expected\";\n for (let i = 0; i < message.newPartitionSignature.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.newPartitionSignature[i]);\n if (error)\n return \"newPartitionSignature.\" + error;\n }\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldPartitionInfo);\n if (error)\n return \"oldPartitionInfo.\" + error;\n }\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newPartitionInfo);\n if (error)\n return \"newPartitionInfo.\" + error;\n }\n if (message.operations != null && message.hasOwnProperty(\"operations\")) {\n if (!Array.isArray(message.operations))\n return \"operations: array expected\";\n for (let i = 0; i < message.operations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.operations[i]);\n if (error)\n return \"operations.\" + error;\n }\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n if (typeof message.postinstallOptional !== \"boolean\")\n return \"postinstallOptional: boolean expected\";\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeDataExtent);\n if (error)\n return \"hashTreeDataExtent.\" + error;\n }\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeExtent);\n if (error)\n return \"hashTreeExtent.\" + error;\n }\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n if (!$util.isString(message.hashTreeAlgorithm))\n return \"hashTreeAlgorithm: string expected\";\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n if (!(message.hashTreeSalt && typeof message.hashTreeSalt.length === \"number\" || $util.isString(message.hashTreeSalt)))\n return \"hashTreeSalt: buffer expected\";\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecDataExtent);\n if (error)\n return \"fecDataExtent.\" + error;\n }\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecExtent);\n if (error)\n return \"fecExtent.\" + error;\n }\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n if (!$util.isInteger(message.fecRoots))\n return \"fecRoots: integer expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.mergeOperations != null && message.hasOwnProperty(\"mergeOperations\")) {\n if (!Array.isArray(message.mergeOperations))\n return \"mergeOperations: array expected\";\n for (let i = 0; i < message.mergeOperations.length; ++i) {\n let error = $root.chromeos_update_engine.CowMergeOperation.verify(message.mergeOperations[i]);\n if (error)\n return \"mergeOperations.\" + error;\n }\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (!$util.isInteger(message.estimateCowSize) && !(message.estimateCowSize && $util.isInteger(message.estimateCowSize.low) && $util.isInteger(message.estimateCowSize.high)))\n return \"estimateCowSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a PartitionUpdate message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n */\n PartitionUpdate.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionUpdate)\n return object;\n let message = new $root.chromeos_update_engine.PartitionUpdate();\n if (object.partitionName != null)\n message.partitionName = String(object.partitionName);\n if (object.runPostinstall != null)\n message.runPostinstall = Boolean(object.runPostinstall);\n if (object.postinstallPath != null)\n message.postinstallPath = String(object.postinstallPath);\n if (object.filesystemType != null)\n message.filesystemType = String(object.filesystemType);\n if (object.newPartitionSignature) {\n if (!Array.isArray(object.newPartitionSignature))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: array expected\");\n message.newPartitionSignature = [];\n for (let i = 0; i < object.newPartitionSignature.length; ++i) {\n if (typeof object.newPartitionSignature[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: object expected\");\n message.newPartitionSignature[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.newPartitionSignature[i]);\n }\n }\n if (object.oldPartitionInfo != null) {\n if (typeof object.oldPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.oldPartitionInfo: object expected\");\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldPartitionInfo);\n }\n if (object.newPartitionInfo != null) {\n if (typeof object.newPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionInfo: object expected\");\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newPartitionInfo);\n }\n if (object.operations) {\n if (!Array.isArray(object.operations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: array expected\");\n message.operations = [];\n for (let i = 0; i < object.operations.length; ++i) {\n if (typeof object.operations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: object expected\");\n message.operations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.operations[i]);\n }\n }\n if (object.postinstallOptional != null)\n message.postinstallOptional = Boolean(object.postinstallOptional);\n if (object.hashTreeDataExtent != null) {\n if (typeof object.hashTreeDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeDataExtent: object expected\");\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeDataExtent);\n }\n if (object.hashTreeExtent != null) {\n if (typeof object.hashTreeExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeExtent: object expected\");\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeExtent);\n }\n if (object.hashTreeAlgorithm != null)\n message.hashTreeAlgorithm = String(object.hashTreeAlgorithm);\n if (object.hashTreeSalt != null)\n if (typeof object.hashTreeSalt === \"string\")\n $util.base64.decode(object.hashTreeSalt, message.hashTreeSalt = $util.newBuffer($util.base64.length(object.hashTreeSalt)), 0);\n else if (object.hashTreeSalt.length)\n message.hashTreeSalt = object.hashTreeSalt;\n if (object.fecDataExtent != null) {\n if (typeof object.fecDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecDataExtent: object expected\");\n message.fecDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecDataExtent);\n }\n if (object.fecExtent != null) {\n if (typeof object.fecExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecExtent: object expected\");\n message.fecExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecExtent);\n }\n if (object.fecRoots != null)\n message.fecRoots = object.fecRoots >>> 0;\n if (object.version != null)\n message.version = String(object.version);\n if (object.mergeOperations) {\n if (!Array.isArray(object.mergeOperations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected\");\n message.mergeOperations = [];\n for (let i = 0; i < object.mergeOperations.length; ++i) {\n if (typeof object.mergeOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: object expected\");\n message.mergeOperations[i] = $root.chromeos_update_engine.CowMergeOperation.fromObject(object.mergeOperations[i]);\n }\n }\n if (object.estimateCowSize != null)\n if ($util.Long)\n (message.estimateCowSize = $util.Long.fromValue(object.estimateCowSize)).unsigned = true;\n else if (typeof object.estimateCowSize === \"string\")\n message.estimateCowSize = parseInt(object.estimateCowSize, 10);\n else if (typeof object.estimateCowSize === \"number\")\n message.estimateCowSize = object.estimateCowSize;\n else if (typeof object.estimateCowSize === \"object\")\n message.estimateCowSize = new $util.LongBits(object.estimateCowSize.low >>> 0, object.estimateCowSize.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionUpdate message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.PartitionUpdate} message PartitionUpdate\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionUpdate.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.newPartitionSignature = [];\n object.operations = [];\n object.mergeOperations = [];\n }\n if (options.defaults) {\n object.partitionName = \"\";\n object.runPostinstall = false;\n object.postinstallPath = \"\";\n object.filesystemType = \"\";\n object.oldPartitionInfo = null;\n object.newPartitionInfo = null;\n object.postinstallOptional = false;\n object.hashTreeDataExtent = null;\n object.hashTreeExtent = null;\n object.hashTreeAlgorithm = \"\";\n if (options.bytes === String)\n object.hashTreeSalt = \"\";\n else {\n object.hashTreeSalt = [];\n if (options.bytes !== Array)\n object.hashTreeSalt = $util.newBuffer(object.hashTreeSalt);\n }\n object.fecDataExtent = null;\n object.fecExtent = null;\n object.fecRoots = 2;\n object.version = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.estimateCowSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.estimateCowSize = options.longs === String ? \"0\" : 0;\n }\n if (message.partitionName != null && message.hasOwnProperty(\"partitionName\"))\n object.partitionName = message.partitionName;\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n object.runPostinstall = message.runPostinstall;\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n object.postinstallPath = message.postinstallPath;\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n object.filesystemType = message.filesystemType;\n if (message.newPartitionSignature && message.newPartitionSignature.length) {\n object.newPartitionSignature = [];\n for (let j = 0; j < message.newPartitionSignature.length; ++j)\n object.newPartitionSignature[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.newPartitionSignature[j], options);\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\"))\n object.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldPartitionInfo, options);\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\"))\n object.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newPartitionInfo, options);\n if (message.operations && message.operations.length) {\n object.operations = [];\n for (let j = 0; j < message.operations.length; ++j)\n object.operations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.operations[j], options);\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n object.postinstallOptional = message.postinstallOptional;\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\"))\n object.hashTreeDataExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeDataExtent, options);\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\"))\n object.hashTreeExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeExtent, options);\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n object.hashTreeAlgorithm = message.hashTreeAlgorithm;\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n object.hashTreeSalt = options.bytes === String ? $util.base64.encode(message.hashTreeSalt, 0, message.hashTreeSalt.length) : options.bytes === Array ? Array.prototype.slice.call(message.hashTreeSalt) : message.hashTreeSalt;\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\"))\n object.fecDataExtent = $root.chromeos_update_engine.Extent.toObject(message.fecDataExtent, options);\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\"))\n object.fecExtent = $root.chromeos_update_engine.Extent.toObject(message.fecExtent, options);\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n object.fecRoots = message.fecRoots;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.mergeOperations && message.mergeOperations.length) {\n object.mergeOperations = [];\n for (let j = 0; j < message.mergeOperations.length; ++j)\n object.mergeOperations[j] = $root.chromeos_update_engine.CowMergeOperation.toObject(message.mergeOperations[j], options);\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (typeof message.estimateCowSize === \"number\")\n object.estimateCowSize = options.longs === String ? String(message.estimateCowSize) : message.estimateCowSize;\n else\n object.estimateCowSize = options.longs === String ? $util.Long.prototype.toString.call(message.estimateCowSize) : options.longs === Number ? new $util.LongBits(message.estimateCowSize.low >>> 0, message.estimateCowSize.high >>> 0).toNumber(true) : message.estimateCowSize;\n return object;\n };\n\n /**\n * Converts this PartitionUpdate to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionUpdate.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionUpdate;\n })();\n\n chromeos_update_engine.DynamicPartitionGroup = (function() {\n\n /**\n * Properties of a DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionGroup\n * @property {string} name DynamicPartitionGroup name\n * @property {number|Long|null} [size] DynamicPartitionGroup size\n * @property {Array.|null} [partitionNames] DynamicPartitionGroup partitionNames\n */\n\n /**\n * Constructs a new DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionGroup.\n * @implements IDynamicPartitionGroup\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n */\n function DynamicPartitionGroup(properties) {\n this.partitionNames = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionGroup name.\n * @member {string} name\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.name = \"\";\n\n /**\n * DynamicPartitionGroup size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DynamicPartitionGroup partitionNames.\n * @member {Array.} partitionNames\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.partitionNames = $util.emptyArray;\n\n /**\n * Creates a new DynamicPartitionGroup instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup instance\n */\n DynamicPartitionGroup.create = function create(properties) {\n return new DynamicPartitionGroup(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.size);\n if (message.partitionNames != null && message.partitionNames.length)\n for (let i = 0; i < message.partitionNames.length; ++i)\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.partitionNames[i]);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.name = reader.string();\n break;\n case 2:\n message.size = reader.uint64();\n break;\n case 3:\n if (!(message.partitionNames && message.partitionNames.length))\n message.partitionNames = [];\n message.partitionNames.push(reader.string());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"name\"))\n throw $util.ProtocolError(\"missing required 'name'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionGroup message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionGroup.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.partitionNames != null && message.hasOwnProperty(\"partitionNames\")) {\n if (!Array.isArray(message.partitionNames))\n return \"partitionNames: array expected\";\n for (let i = 0; i < message.partitionNames.length; ++i)\n if (!$util.isString(message.partitionNames[i]))\n return \"partitionNames: string[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a DynamicPartitionGroup message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n */\n DynamicPartitionGroup.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionGroup)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n if (object.name != null)\n message.name = String(object.name);\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.partitionNames) {\n if (!Array.isArray(object.partitionNames))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected\");\n message.partitionNames = [];\n for (let i = 0; i < object.partitionNames.length; ++i)\n message.partitionNames[i] = String(object.partitionNames[i]);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionGroup message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.DynamicPartitionGroup} message DynamicPartitionGroup\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionGroup.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.partitionNames = [];\n if (options.defaults) {\n object.name = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.partitionNames && message.partitionNames.length) {\n object.partitionNames = [];\n for (let j = 0; j < message.partitionNames.length; ++j)\n object.partitionNames[j] = message.partitionNames[j];\n }\n return object;\n };\n\n /**\n * Converts this DynamicPartitionGroup to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionGroup.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionGroup;\n })();\n\n chromeos_update_engine.DynamicPartitionMetadata = (function() {\n\n /**\n * Properties of a DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionMetadata\n * @property {Array.|null} [groups] DynamicPartitionMetadata groups\n * @property {boolean|null} [snapshotEnabled] DynamicPartitionMetadata snapshotEnabled\n * @property {boolean|null} [vabcEnabled] DynamicPartitionMetadata vabcEnabled\n * @property {string|null} [vabcCompressionParam] DynamicPartitionMetadata vabcCompressionParam\n * @property {number|null} [cowVersion] DynamicPartitionMetadata cowVersion\n */\n\n /**\n * Constructs a new DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionMetadata.\n * @implements IDynamicPartitionMetadata\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n */\n function DynamicPartitionMetadata(properties) {\n this.groups = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionMetadata groups.\n * @member {Array.} groups\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.groups = $util.emptyArray;\n\n /**\n * DynamicPartitionMetadata snapshotEnabled.\n * @member {boolean} snapshotEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.snapshotEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcEnabled.\n * @member {boolean} vabcEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcCompressionParam.\n * @member {string} vabcCompressionParam\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcCompressionParam = \"\";\n\n /**\n * DynamicPartitionMetadata cowVersion.\n * @member {number} cowVersion\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.cowVersion = 0;\n\n /**\n * Creates a new DynamicPartitionMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata instance\n */\n DynamicPartitionMetadata.create = function create(properties) {\n return new DynamicPartitionMetadata(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.groups != null && message.groups.length)\n for (let i = 0; i < message.groups.length; ++i)\n $root.chromeos_update_engine.DynamicPartitionGroup.encode(message.groups[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.snapshotEnabled != null && Object.hasOwnProperty.call(message, \"snapshotEnabled\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.snapshotEnabled);\n if (message.vabcEnabled != null && Object.hasOwnProperty.call(message, \"vabcEnabled\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.vabcEnabled);\n if (message.vabcCompressionParam != null && Object.hasOwnProperty.call(message, \"vabcCompressionParam\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.vabcCompressionParam);\n if (message.cowVersion != null && Object.hasOwnProperty.call(message, \"cowVersion\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.cowVersion);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.groups && message.groups.length))\n message.groups = [];\n message.groups.push($root.chromeos_update_engine.DynamicPartitionGroup.decode(reader, reader.uint32()));\n break;\n case 2:\n message.snapshotEnabled = reader.bool();\n break;\n case 3:\n message.vabcEnabled = reader.bool();\n break;\n case 4:\n message.vabcCompressionParam = reader.string();\n break;\n case 5:\n message.cowVersion = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.groups != null && message.hasOwnProperty(\"groups\")) {\n if (!Array.isArray(message.groups))\n return \"groups: array expected\";\n for (let i = 0; i < message.groups.length; ++i) {\n let error = $root.chromeos_update_engine.DynamicPartitionGroup.verify(message.groups[i]);\n if (error)\n return \"groups.\" + error;\n }\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n if (typeof message.snapshotEnabled !== \"boolean\")\n return \"snapshotEnabled: boolean expected\";\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n if (typeof message.vabcEnabled !== \"boolean\")\n return \"vabcEnabled: boolean expected\";\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n if (!$util.isString(message.vabcCompressionParam))\n return \"vabcCompressionParam: string expected\";\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n if (!$util.isInteger(message.cowVersion))\n return \"cowVersion: integer expected\";\n return null;\n };\n\n /**\n * Creates a DynamicPartitionMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n */\n DynamicPartitionMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionMetadata)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n if (object.groups) {\n if (!Array.isArray(object.groups))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: array expected\");\n message.groups = [];\n for (let i = 0; i < object.groups.length; ++i) {\n if (typeof object.groups[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: object expected\");\n message.groups[i] = $root.chromeos_update_engine.DynamicPartitionGroup.fromObject(object.groups[i]);\n }\n }\n if (object.snapshotEnabled != null)\n message.snapshotEnabled = Boolean(object.snapshotEnabled);\n if (object.vabcEnabled != null)\n message.vabcEnabled = Boolean(object.vabcEnabled);\n if (object.vabcCompressionParam != null)\n message.vabcCompressionParam = String(object.vabcCompressionParam);\n if (object.cowVersion != null)\n message.cowVersion = object.cowVersion >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.DynamicPartitionMetadata} message DynamicPartitionMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.groups = [];\n if (options.defaults) {\n object.snapshotEnabled = false;\n object.vabcEnabled = false;\n object.vabcCompressionParam = \"\";\n object.cowVersion = 0;\n }\n if (message.groups && message.groups.length) {\n object.groups = [];\n for (let j = 0; j < message.groups.length; ++j)\n object.groups[j] = $root.chromeos_update_engine.DynamicPartitionGroup.toObject(message.groups[j], options);\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n object.snapshotEnabled = message.snapshotEnabled;\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n object.vabcEnabled = message.vabcEnabled;\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n object.vabcCompressionParam = message.vabcCompressionParam;\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n object.cowVersion = message.cowVersion;\n return object;\n };\n\n /**\n * Converts this DynamicPartitionMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionMetadata;\n })();\n\n chromeos_update_engine.ApexInfo = (function() {\n\n /**\n * Properties of an ApexInfo.\n * @memberof chromeos_update_engine\n * @interface IApexInfo\n * @property {string|null} [packageName] ApexInfo packageName\n * @property {number|Long|null} [version] ApexInfo version\n * @property {boolean|null} [isCompressed] ApexInfo isCompressed\n * @property {number|Long|null} [decompressedSize] ApexInfo decompressedSize\n */\n\n /**\n * Constructs a new ApexInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexInfo.\n * @implements IApexInfo\n * @constructor\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n */\n function ApexInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexInfo packageName.\n * @member {string} packageName\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.packageName = \"\";\n\n /**\n * ApexInfo version.\n * @member {number|Long} version\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * ApexInfo isCompressed.\n * @member {boolean} isCompressed\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.isCompressed = false;\n\n /**\n * ApexInfo decompressedSize.\n * @member {number|Long} decompressedSize\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.decompressedSize = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * Creates a new ApexInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo instance\n */\n ApexInfo.create = function create(properties) {\n return new ApexInfo(properties);\n };\n\n /**\n * Encodes the specified ApexInfo message. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.packageName != null && Object.hasOwnProperty.call(message, \"packageName\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.packageName);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.version);\n if (message.isCompressed != null && Object.hasOwnProperty.call(message, \"isCompressed\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isCompressed);\n if (message.decompressedSize != null && Object.hasOwnProperty.call(message, \"decompressedSize\"))\n writer.uint32(/* id 4, wireType 0 =*/32).int64(message.decompressedSize);\n return writer;\n };\n\n /**\n * Encodes the specified ApexInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.packageName = reader.string();\n break;\n case 2:\n message.version = reader.int64();\n break;\n case 3:\n message.isCompressed = reader.bool();\n break;\n case 4:\n message.decompressedSize = reader.int64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n if (!$util.isString(message.packageName))\n return \"packageName: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high)))\n return \"version: integer|Long expected\";\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n if (typeof message.isCompressed !== \"boolean\")\n return \"isCompressed: boolean expected\";\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (!$util.isInteger(message.decompressedSize) && !(message.decompressedSize && $util.isInteger(message.decompressedSize.low) && $util.isInteger(message.decompressedSize.high)))\n return \"decompressedSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an ApexInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n */\n ApexInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexInfo)\n return object;\n let message = new $root.chromeos_update_engine.ApexInfo();\n if (object.packageName != null)\n message.packageName = String(object.packageName);\n if (object.version != null)\n if ($util.Long)\n (message.version = $util.Long.fromValue(object.version)).unsigned = false;\n else if (typeof object.version === \"string\")\n message.version = parseInt(object.version, 10);\n else if (typeof object.version === \"number\")\n message.version = object.version;\n else if (typeof object.version === \"object\")\n message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber();\n if (object.isCompressed != null)\n message.isCompressed = Boolean(object.isCompressed);\n if (object.decompressedSize != null)\n if ($util.Long)\n (message.decompressedSize = $util.Long.fromValue(object.decompressedSize)).unsigned = false;\n else if (typeof object.decompressedSize === \"string\")\n message.decompressedSize = parseInt(object.decompressedSize, 10);\n else if (typeof object.decompressedSize === \"number\")\n message.decompressedSize = object.decompressedSize;\n else if (typeof object.decompressedSize === \"object\")\n message.decompressedSize = new $util.LongBits(object.decompressedSize.low >>> 0, object.decompressedSize.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from an ApexInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.ApexInfo} message ApexInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.packageName = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.version = options.longs === String ? \"0\" : 0;\n object.isCompressed = false;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.decompressedSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.decompressedSize = options.longs === String ? \"0\" : 0;\n }\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n object.packageName = message.packageName;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (typeof message.version === \"number\")\n object.version = options.longs === String ? String(message.version) : message.version;\n else\n object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version;\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n object.isCompressed = message.isCompressed;\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (typeof message.decompressedSize === \"number\")\n object.decompressedSize = options.longs === String ? String(message.decompressedSize) : message.decompressedSize;\n else\n object.decompressedSize = options.longs === String ? $util.Long.prototype.toString.call(message.decompressedSize) : options.longs === Number ? new $util.LongBits(message.decompressedSize.low >>> 0, message.decompressedSize.high >>> 0).toNumber() : message.decompressedSize;\n return object;\n };\n\n /**\n * Converts this ApexInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ApexInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexInfo;\n })();\n\n chromeos_update_engine.ApexMetadata = (function() {\n\n /**\n * Properties of an ApexMetadata.\n * @memberof chromeos_update_engine\n * @interface IApexMetadata\n * @property {Array.|null} [apexInfo] ApexMetadata apexInfo\n */\n\n /**\n * Constructs a new ApexMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexMetadata.\n * @implements IApexMetadata\n * @constructor\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n */\n function ApexMetadata(properties) {\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexMetadata apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n */\n ApexMetadata.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new ApexMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata instance\n */\n ApexMetadata.create = function create(properties) {\n return new ApexMetadata(properties);\n };\n\n /**\n * Encodes the specified ApexMetadata message. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified ApexMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates an ApexMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n */\n ApexMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexMetadata)\n return object;\n let message = new $root.chromeos_update_engine.ApexMetadata();\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from an ApexMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.ApexMetadata} message ApexMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.apexInfo = [];\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this ApexMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n ApexMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexMetadata;\n })();\n\n chromeos_update_engine.DeltaArchiveManifest = (function() {\n\n /**\n * Properties of a DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @interface IDeltaArchiveManifest\n * @property {number|null} [blockSize] DeltaArchiveManifest blockSize\n * @property {number|Long|null} [signaturesOffset] DeltaArchiveManifest signaturesOffset\n * @property {number|Long|null} [signaturesSize] DeltaArchiveManifest signaturesSize\n * @property {number|null} [minorVersion] DeltaArchiveManifest minorVersion\n * @property {Array.|null} [partitions] DeltaArchiveManifest partitions\n * @property {number|Long|null} [maxTimestamp] DeltaArchiveManifest maxTimestamp\n * @property {chromeos_update_engine.IDynamicPartitionMetadata|null} [dynamicPartitionMetadata] DeltaArchiveManifest dynamicPartitionMetadata\n * @property {boolean|null} [partialUpdate] DeltaArchiveManifest partialUpdate\n * @property {Array.|null} [apexInfo] DeltaArchiveManifest apexInfo\n * @property {string|null} [securityPatchLevel] DeltaArchiveManifest securityPatchLevel\n */\n\n /**\n * Constructs a new DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DeltaArchiveManifest.\n * @implements IDeltaArchiveManifest\n * @constructor\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n */\n function DeltaArchiveManifest(properties) {\n this.partitions = [];\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DeltaArchiveManifest blockSize.\n * @member {number} blockSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.blockSize = 4096;\n\n /**\n * DeltaArchiveManifest signaturesOffset.\n * @member {number|Long} signaturesOffset\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest signaturesSize.\n * @member {number|Long} signaturesSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest minorVersion.\n * @member {number} minorVersion\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.minorVersion = 0;\n\n /**\n * DeltaArchiveManifest partitions.\n * @member {Array.} partitions\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partitions = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest maxTimestamp.\n * @member {number|Long} maxTimestamp\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.maxTimestamp = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * DeltaArchiveManifest dynamicPartitionMetadata.\n * @member {chromeos_update_engine.IDynamicPartitionMetadata|null|undefined} dynamicPartitionMetadata\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.dynamicPartitionMetadata = null;\n\n /**\n * DeltaArchiveManifest partialUpdate.\n * @member {boolean} partialUpdate\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partialUpdate = false;\n\n /**\n * DeltaArchiveManifest apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.apexInfo = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest securityPatchLevel.\n * @member {string} securityPatchLevel\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.securityPatchLevel = \"\";\n\n /**\n * Creates a new DeltaArchiveManifest instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest instance\n */\n DeltaArchiveManifest.create = function create(properties) {\n return new DeltaArchiveManifest(properties);\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.blockSize != null && Object.hasOwnProperty.call(message, \"blockSize\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.blockSize);\n if (message.signaturesOffset != null && Object.hasOwnProperty.call(message, \"signaturesOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.signaturesOffset);\n if (message.signaturesSize != null && Object.hasOwnProperty.call(message, \"signaturesSize\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.signaturesSize);\n if (message.minorVersion != null && Object.hasOwnProperty.call(message, \"minorVersion\"))\n writer.uint32(/* id 12, wireType 0 =*/96).uint32(message.minorVersion);\n if (message.partitions != null && message.partitions.length)\n for (let i = 0; i < message.partitions.length; ++i)\n $root.chromeos_update_engine.PartitionUpdate.encode(message.partitions[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();\n if (message.maxTimestamp != null && Object.hasOwnProperty.call(message, \"maxTimestamp\"))\n writer.uint32(/* id 14, wireType 0 =*/112).int64(message.maxTimestamp);\n if (message.dynamicPartitionMetadata != null && Object.hasOwnProperty.call(message, \"dynamicPartitionMetadata\"))\n $root.chromeos_update_engine.DynamicPartitionMetadata.encode(message.dynamicPartitionMetadata, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.partialUpdate != null && Object.hasOwnProperty.call(message, \"partialUpdate\"))\n writer.uint32(/* id 16, wireType 0 =*/128).bool(message.partialUpdate);\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();\n if (message.securityPatchLevel != null && Object.hasOwnProperty.call(message, \"securityPatchLevel\"))\n writer.uint32(/* id 18, wireType 2 =*/146).string(message.securityPatchLevel);\n return writer;\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message, length delimited. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 3:\n message.blockSize = reader.uint32();\n break;\n case 4:\n message.signaturesOffset = reader.uint64();\n break;\n case 5:\n message.signaturesSize = reader.uint64();\n break;\n case 12:\n message.minorVersion = reader.uint32();\n break;\n case 13:\n if (!(message.partitions && message.partitions.length))\n message.partitions = [];\n message.partitions.push($root.chromeos_update_engine.PartitionUpdate.decode(reader, reader.uint32()));\n break;\n case 14:\n message.maxTimestamp = reader.int64();\n break;\n case 15:\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.decode(reader, reader.uint32());\n break;\n case 16:\n message.partialUpdate = reader.bool();\n break;\n case 17:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n case 18:\n message.securityPatchLevel = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DeltaArchiveManifest message.\n * @function verify\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DeltaArchiveManifest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n if (!$util.isInteger(message.blockSize))\n return \"blockSize: integer expected\";\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (!$util.isInteger(message.signaturesOffset) && !(message.signaturesOffset && $util.isInteger(message.signaturesOffset.low) && $util.isInteger(message.signaturesOffset.high)))\n return \"signaturesOffset: integer|Long expected\";\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (!$util.isInteger(message.signaturesSize) && !(message.signaturesSize && $util.isInteger(message.signaturesSize.low) && $util.isInteger(message.signaturesSize.high)))\n return \"signaturesSize: integer|Long expected\";\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n if (!$util.isInteger(message.minorVersion))\n return \"minorVersion: integer expected\";\n if (message.partitions != null && message.hasOwnProperty(\"partitions\")) {\n if (!Array.isArray(message.partitions))\n return \"partitions: array expected\";\n for (let i = 0; i < message.partitions.length; ++i) {\n let error = $root.chromeos_update_engine.PartitionUpdate.verify(message.partitions[i]);\n if (error)\n return \"partitions.\" + error;\n }\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (!$util.isInteger(message.maxTimestamp) && !(message.maxTimestamp && $util.isInteger(message.maxTimestamp.low) && $util.isInteger(message.maxTimestamp.high)))\n return \"maxTimestamp: integer|Long expected\";\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\")) {\n let error = $root.chromeos_update_engine.DynamicPartitionMetadata.verify(message.dynamicPartitionMetadata);\n if (error)\n return \"dynamicPartitionMetadata.\" + error;\n }\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n if (typeof message.partialUpdate !== \"boolean\")\n return \"partialUpdate: boolean expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n if (!$util.isString(message.securityPatchLevel))\n return \"securityPatchLevel: string expected\";\n return null;\n };\n\n /**\n * Creates a DeltaArchiveManifest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n */\n DeltaArchiveManifest.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DeltaArchiveManifest)\n return object;\n let message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n if (object.blockSize != null)\n message.blockSize = object.blockSize >>> 0;\n if (object.signaturesOffset != null)\n if ($util.Long)\n (message.signaturesOffset = $util.Long.fromValue(object.signaturesOffset)).unsigned = true;\n else if (typeof object.signaturesOffset === \"string\")\n message.signaturesOffset = parseInt(object.signaturesOffset, 10);\n else if (typeof object.signaturesOffset === \"number\")\n message.signaturesOffset = object.signaturesOffset;\n else if (typeof object.signaturesOffset === \"object\")\n message.signaturesOffset = new $util.LongBits(object.signaturesOffset.low >>> 0, object.signaturesOffset.high >>> 0).toNumber(true);\n if (object.signaturesSize != null)\n if ($util.Long)\n (message.signaturesSize = $util.Long.fromValue(object.signaturesSize)).unsigned = true;\n else if (typeof object.signaturesSize === \"string\")\n message.signaturesSize = parseInt(object.signaturesSize, 10);\n else if (typeof object.signaturesSize === \"number\")\n message.signaturesSize = object.signaturesSize;\n else if (typeof object.signaturesSize === \"object\")\n message.signaturesSize = new $util.LongBits(object.signaturesSize.low >>> 0, object.signaturesSize.high >>> 0).toNumber(true);\n if (object.minorVersion != null)\n message.minorVersion = object.minorVersion >>> 0;\n if (object.partitions) {\n if (!Array.isArray(object.partitions))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected\");\n message.partitions = [];\n for (let i = 0; i < object.partitions.length; ++i) {\n if (typeof object.partitions[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: object expected\");\n message.partitions[i] = $root.chromeos_update_engine.PartitionUpdate.fromObject(object.partitions[i]);\n }\n }\n if (object.maxTimestamp != null)\n if ($util.Long)\n (message.maxTimestamp = $util.Long.fromValue(object.maxTimestamp)).unsigned = false;\n else if (typeof object.maxTimestamp === \"string\")\n message.maxTimestamp = parseInt(object.maxTimestamp, 10);\n else if (typeof object.maxTimestamp === \"number\")\n message.maxTimestamp = object.maxTimestamp;\n else if (typeof object.maxTimestamp === \"object\")\n message.maxTimestamp = new $util.LongBits(object.maxTimestamp.low >>> 0, object.maxTimestamp.high >>> 0).toNumber();\n if (object.dynamicPartitionMetadata != null) {\n if (typeof object.dynamicPartitionMetadata !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected\");\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.fromObject(object.dynamicPartitionMetadata);\n }\n if (object.partialUpdate != null)\n message.partialUpdate = Boolean(object.partialUpdate);\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n if (object.securityPatchLevel != null)\n message.securityPatchLevel = String(object.securityPatchLevel);\n return message;\n };\n\n /**\n * Creates a plain object from a DeltaArchiveManifest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.DeltaArchiveManifest} message DeltaArchiveManifest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DeltaArchiveManifest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.partitions = [];\n object.apexInfo = [];\n }\n if (options.defaults) {\n object.blockSize = 4096;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesSize = options.longs === String ? \"0\" : 0;\n object.minorVersion = 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.maxTimestamp = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.maxTimestamp = options.longs === String ? \"0\" : 0;\n object.dynamicPartitionMetadata = null;\n object.partialUpdate = false;\n object.securityPatchLevel = \"\";\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n object.blockSize = message.blockSize;\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (typeof message.signaturesOffset === \"number\")\n object.signaturesOffset = options.longs === String ? String(message.signaturesOffset) : message.signaturesOffset;\n else\n object.signaturesOffset = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesOffset) : options.longs === Number ? new $util.LongBits(message.signaturesOffset.low >>> 0, message.signaturesOffset.high >>> 0).toNumber(true) : message.signaturesOffset;\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (typeof message.signaturesSize === \"number\")\n object.signaturesSize = options.longs === String ? String(message.signaturesSize) : message.signaturesSize;\n else\n object.signaturesSize = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesSize) : options.longs === Number ? new $util.LongBits(message.signaturesSize.low >>> 0, message.signaturesSize.high >>> 0).toNumber(true) : message.signaturesSize;\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n object.minorVersion = message.minorVersion;\n if (message.partitions && message.partitions.length) {\n object.partitions = [];\n for (let j = 0; j < message.partitions.length; ++j)\n object.partitions[j] = $root.chromeos_update_engine.PartitionUpdate.toObject(message.partitions[j], options);\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (typeof message.maxTimestamp === \"number\")\n object.maxTimestamp = options.longs === String ? String(message.maxTimestamp) : message.maxTimestamp;\n else\n object.maxTimestamp = options.longs === String ? $util.Long.prototype.toString.call(message.maxTimestamp) : options.longs === Number ? new $util.LongBits(message.maxTimestamp.low >>> 0, message.maxTimestamp.high >>> 0).toNumber() : message.maxTimestamp;\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\"))\n object.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.toObject(message.dynamicPartitionMetadata, options);\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n object.partialUpdate = message.partialUpdate;\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n object.securityPatchLevel = message.securityPatchLevel;\n return object;\n };\n\n /**\n * Converts this DeltaArchiveManifest to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n * @returns {Object.} JSON object\n */\n DeltaArchiveManifest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DeltaArchiveManifest;\n })();\n\n return chromeos_update_engine;\n})();\n\nexport { $root as default };\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TextWriter, ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { chromeos_update_engine } from './update_metadata_pb.js'\n\n/**\n * Parse the non-A/B OTA package and return it as a DeltaArchiveManifest\n * @param {ZipReader} packedFile\n */\nexport class PayloadNonAB extends chromeos_update_engine.DeltaArchiveManifest {\n nonAB: boolean = true\n Blocksize: number = 4096\n packedFile: ZipReader\n constructor(packedFile: ZipReader) {\n super()\n this.packedFile = packedFile\n }\n\n async init() {\n this.Blocksize = 4096\n this.partialUpdate = false\n this.dynamicPartitionMetadata = new chromeos_update_engine.DynamicPartitionMetadata(\n { snapshotEnabled: false, vabcEnabled: false }\n )\n this.partitions = []\n\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.transfer.list)/g\n const /** Array */ entries = await this.packedFile.getEntries()\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n const match = entry.filename.match(regexName)![0]\n let newPartition: any = new chromeos_update_engine.PartitionUpdate({\n partitionName: match\n })\n newPartition.rawText = await entry.getData!(new TextWriter())\n await this.parseTransferList(newPartition)\n this.partitions.push(newPartition)\n }\n }\n }\n\n async parseTransferList(partition: chromeos_update_engine.PartitionUpdate | any) {\n let lines = (partition as any).rawText.split('\\n')\n // First four line in header: version, total blocks,\n // number of stashed entries, maximum used memory for stash\n if (lines.length < 4) {\n throw 'At least 4 lines in header should be provided.'\n }\n partition.version = lines[0]\n partition.totalBlocks = parseInt(lines[1])\n partition.entryStashed = parseInt(lines[2])\n partition.maxStashed = parseInt(lines[3])\n partition.newPartitionInfo = new chromeos_update_engine.PartitionInfo()\n partition.newPartitionInfo.hash = new Uint8Array()\n partition.newPartitionInfo.size = 'unknown'\n /**\n * The main body have 8 different ops:\n * zero [rangeset] : fill zeros\n * new [rangeset] : fill with new data from \n * erase [rangeset] : mark given blocks as empty\n * move <...>\n * bsdiff <...>\n * imgdiff <...> :\n * Read the source blocks and apply (not for move op) to the target blocks\n * stash : load the given source range to memory\n * free : free the given \n * format:\n * [rangeset]: <# of pairs>, , , ...\n * : a hex number with length of 40\n * <...>: We expect to parse the remainder of the parameter tokens as one of:\n * (loads data from source image only)\n * - <[stash_id:stash_range] ...> (loads data from stashes only)\n * <[stash_id:stash_range] ...>\n * (loads data from both source image and stashes)\n */\n partition.operations = new Array()\n let newDataSize = await this.sizeNewData(partition.partitionName)\n for (const line of lines.slice(4)) {\n let op = new chromeos_update_engine.InstallOperation()\n let elements = line.split(' ')\n op.type = elements[0]\n switch ((op.type as unknown) as string) {\n case 'zero':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'new':\n // unlike an A/B OTA, the payload only exists in the payload.bin,\n // in an non-A/B OTA, the payload exists in both .new.data and .patch.data.\n // The new ops do not have any information about data length.\n // what we do here is: read in the size of .new.data, assume the first new\n // op have the data length of the size of .new.data.\n op.dataLength = newDataSize\n newDataSize = 0\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'erase':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'move':\n op.dstExtents = parseRange([], elements[2])\n break\n case 'bsdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'imgdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'stash':\n break\n case 'free':\n break\n }\n partition.operations.push(op)\n }\n }\n\n /**\n * Return the size of .new.data.*\n * @param {String} partitionName\n * @return {Number}\n */\n async sizeNewData(partitionName: string) {\n const /** Array */ entries = await this.packedFile.getEntries()\n const /** RegExp */ regexName = new RegExp(partitionName + '.new.dat.*')\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n return entry.uncompressedSize\n }\n }\n }\n}\n\n/**\n * Parse the range string and return it as an array of extents\n * @param {extents} Array\n * @param {String} rangeset\n * @return Array\n */\nfunction parseRange(extents: Object[], rangeset: string) {\n const regexRange = new RegExp('[d,]+')\n if (rangeset.match(regexRange)) {\n let elements = rangeset.split(',')\n for (let i = 1; i < elements.length; i = i + 2) {\n let extent = new Object({\n startBlock: parseInt(elements[i]),\n numBlocks: parseInt(elements[i + 1]) - parseInt(elements[i])\n })\n extents.push(extent)\n }\n }\n return extents\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class paypload is used to read in and\n * parse the payload.bin file from a OTA.zip file.\n * Class OpType creates a Map that can resolve the\n * operation type.\n * @package zip.js\n * @package protobufjs\n */\n\nimport {\n BlobReader,\n TextWriter,\n Writer,\n ZipReader,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\n// import '@zip.js/zip.js'\nimport { chromeos_update_engine as update_metadata_pb } from './update_metadata_pb'\nimport { PayloadNonAB } from './payload_nonab'\nimport { ZipFile } from './trim_zip'\n// import { Zip_js } from 'zip.js'\n\nconst /** String */ _MAGIC = 'CrAU'\nconst /** Number */ _VERSION_SIZE = 8\nconst /** Number */ _MANIFEST_LEN_SIZE = 8\nconst /** Number */ _METADATA_SIGNATURE_LEN_SIZE = 4\n\nconst /** Number */ _PAYLOAD_HEADER_SIZE =\n _MAGIC.length +\n _VERSION_SIZE +\n _MANIFEST_LEN_SIZE +\n _METADATA_SIGNATURE_LEN_SIZE\n\nconst /** Number */ _BRILLO_MAJOR_PAYLOAD_VERSION = 2\nexport const /** Array */ MetadataFormat = [\n {\n prefix: 'pre-build',\n key: 'preBuild',\n name: 'Pre-build'\n },\n {\n prefix: 'pre-build-incremental',\n key: 'preBuildVersion',\n name: 'Pre-build version'\n },\n {\n prefix: 'post-build',\n key: 'postBuild',\n name: 'Post-build'\n },\n {\n prefix: 'post-build-incremental',\n key: 'postBuildVersion',\n name: 'Post-build version'\n },\n {\n prefix: 'post-security-patch-level',\n key: 'postSecurityPatchLevel',\n name: 'Post-build SPL'\n },\n {\n prefix: 'post-timestamp',\n key: 'postTimestamp',\n name: 'Post-build timestamp'\n },\n ]\n\nclass StopIteration extends Error {}\n\nclass AbPayloadHeader {\n constructor(\n public magic: string,\n public version: number,\n public manifest_len: number,\n public metadata_signature_len: number\n ) {}\n}\n\n/**\n * Read in an integer from binary bufferArray.\n * @param {Int} size the size of a integer being read in\n * @return {Int} an integer.\n */\nasync function readIntAt(buffer: Blob, position: number, size: number) {\n let /** DataView */ view = new DataView(\n await buffer!.slice(position, position + size).arrayBuffer()\n )\n if (typeof view.getBigUint64 !== 'function') {\n view.getBigUint64 = function(offset) {\n const a = BigInt(view.getUint32(offset))\n const b = BigInt(view.getUint32(offset + 4))\n const bigNumber = a * 4294967296n + b\n return bigNumber\n }\n }\n switch (size) {\n case 2:\n return view.getUint16(0)\n case 4:\n return view.getUint32(0)\n case 8:\n return Number(view.getBigUint64(0))\n default:\n throw 'Cannot read this integer with size ' + size\n }\n}\n\nclass OTAPayloadBlobWriter extends Writer {\n offset: number\n contentType: string\n blob: Blob\n prefixLength: number\n\n header?: AbPayloadHeader\n\n async readHeader(blob: Blob) {\n let cursor = 0\n const readInt = (size: number) => {\n const ret = readIntAt(blob, cursor, size)\n cursor += size\n return ret\n }\n let buffer = await blob.slice(0, _PAYLOAD_HEADER_SIZE).arrayBuffer()\n let /** TextDecoder */ decoder = new TextDecoder()\n let magicBytes = buffer.slice(0, _MAGIC.length)\n const magic = decoder.decode(magicBytes)\n if (magic != _MAGIC) {\n throw new Error(\n `MAGIC is not correct, expected: ${_MAGIC} actual: ${magic}`\n )\n }\n cursor += _MAGIC.length\n const header_version = await readInt(_VERSION_SIZE)\n const manifest_len = await readInt(_MANIFEST_LEN_SIZE)\n if (header_version != _BRILLO_MAJOR_PAYLOAD_VERSION) {\n throw new Error(`Unexpected major version number: ${header_version}`)\n }\n const metadata_signature_len = await readInt(_METADATA_SIGNATURE_LEN_SIZE)\n this.header = new AbPayloadHeader(\n magic,\n header_version,\n manifest_len,\n metadata_signature_len\n )\n }\n /**\n * A zip.Writer that is tailored for OTA payload.bin read-in.\n * Instead of reading in all the contents in payload.bin, this writer will\n * throw an 'StopIteration' error when the header is read in.\n * The header will be stored into the .\n * @param {Payload} payload\n * @param {String} contentType\n */\n constructor(contentType = '') {\n super()\n this.offset = 0\n this.contentType = contentType\n this.blob = new Blob([], { type: contentType })\n this.prefixLength = 0\n }\n\n async writeUint8Array(array: Uint8Array) {\n super.writeUint8Array(array)\n this.blob = new Blob([this.blob, array.buffer], { type: this.contentType })\n this.offset = this.blob.size\n // Once the prefixLength is non-zero, the address of manifest and signature\n // become known and can be read in. Otherwise the header needs to be read\n // in first to determine the prefixLength.\n if (this.offset >= _PAYLOAD_HEADER_SIZE && this.prefixLength == 0) {\n console.log('Parsing header!')\n await this.readHeader(this.blob)\n this.prefixLength =\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n console.log(`Computed metadata length: ${this.prefixLength}`)\n }\n if (this.prefixLength > 0) {\n console.log(`${this.offset}/${this.prefixLength}`)\n if (this.offset >= this.prefixLength) {\n // The prefix has everything we need (header, manifest, signature). Once\n // the offset is beyond the prefix, no need to move on.\n this.blob = this.blob.slice(0, this.prefixLength)\n throw new StopIteration()\n }\n }\n }\n\n getData() {\n return this.blob\n }\n}\n\nexport class Payload {\n zipreader: ZipReader\n buffer: Blob | undefined\n private metadata: any\n manifest: update_metadata_pb.DeltaArchiveManifest | undefined\n metadata_signature!: update_metadata_pb.Signatures\n\n header?: AbPayloadHeader\n\n /**\n * This class parses the metadata of a OTA package.\n * @param {File} file A OTA.zip file read from user's machine.\n */\n constructor(file: File | URL | ZipFile) {\n if (file instanceof File) {\n this.zipreader = new ZipReader(new BlobReader(file))\n } else if (file instanceof URL) {\n this.zipreader = new ZipReader(new HttpReader(file.href))\n } else {\n this.zipreader = file.reader\n }\n }\n\n getMetadataLength(): number {\n return (\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n )\n }\n\n /**\n * Unzip the OTA package, get payload.bin and metadata\n */\n async unzip() {\n let entries = await this.zipreader.getEntries()\n for (let entry of entries) {\n if (entry.filename == 'payload.bin') {\n let writer = new OTAPayloadBlobWriter('')\n try {\n await entry.getData!(writer)\n } catch (e) {\n if (e instanceof StopIteration) {\n // Exception used as a hack to stop reading from zip. NO need to do anything\n // Ideally zip.js would provide an API to partialll read a zip\n // entry, but they don't. So this is what we get\n } else {\n console.log(e)\n throw e\n }\n }\n this.buffer = writer.getData()\n await this.readManifest(this.buffer, writer.header!)\n console.log('AB OTA manifest parsed')\n } else if (entry.filename == 'META-INF/com/android/metadata') {\n this.metadata = await entry.getData!(new TextWriter())\n console.log('OTA Package metadata parsed')\n }\n }\n if (!this.manifest) {\n console.log('Failed to parse AB OTA package, falling back to non-AB')\n try {\n // The temporary variable manifest has to be used here, to prevent the html page\n // being rendered before everything is read in properly\n let manifest = new PayloadNonAB(this.zipreader)\n await manifest.init()\n manifest.nonAB = true\n this.manifest = manifest\n } catch (error) {\n alert('Please select a legit OTA package')\n return\n }\n }\n }\n\n /**\n * Read the header of payload.bin, including the magic, header_version,\n * manifest_len, metadata_signature_len.\n */\n /**\n * Read in the manifest in an OTA.zip file.\n * The structure of the manifest can be found in:\n * aosp/system/update_engine/update_metadata.proto\n */\n async readManifest(buffer: Blob, header: AbPayloadHeader) {\n this.header = header\n let cursor = _PAYLOAD_HEADER_SIZE\n let manifestBlob = await buffer\n .slice(cursor, cursor + header.manifest_len)\n .arrayBuffer()\n cursor += header.manifest_len\n this.manifest = update_metadata_pb.DeltaArchiveManifest.decode(\n new Uint8Array(manifestBlob)\n )\n let signatureBlob = await buffer\n .slice(cursor, cursor + header.metadata_signature_len)\n .arrayBuffer()\n cursor += header.metadata_signature_len\n this.metadata_signature = update_metadata_pb.Signatures.decode(\n new Uint8Array(signatureBlob)\n );\n (this.manifest! as any).nonAB = false\n }\n\n parseMetadata() {\n for (let formatter of MetadataFormat) {\n let regex = new RegExp(formatter.prefix + '.+')\n if (this.metadata.match(regex)) {\n ;(this as any)[formatter.key] = trimEntry(\n this.metadata.match(regex)[0],\n formatter.prefix\n )\n } else {\n ;(this as any)[formatter.key] = ''\n }\n }\n }\n\n async init() {\n await this.unzip()\n this.parseMetadata()\n }\n}\n\nexport class DefaultMap extends Map {\n /** Reload the original get method. Return the original key value if\n * the key does not exist.\n * @param {Any} key\n */\n getWithDefault(key: any) {\n if (!this.has(key)) return key\n return this.get(key)\n }\n}\n\nexport class OpType {\n mapType: DefaultMap\n /**\n * OpType.mapType create a map that could resolve the operation\n * types. The operation types are encoded as numbers in\n * update_metadata.proto and must be decoded before any usage.\n */\n constructor() {\n let types = update_metadata_pb.InstallOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport class MergeOpType {\n mapType: DefaultMap\n /**\n * MergeOpType create a map that could resolve the COW merge operation\n * types. This is very similar to OpType class except that one is for\n * installation operations.\n */\n constructor() {\n let /** Array<{String: Number}>*/ types =\n update_metadata_pb.CowMergeOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport function octToHex(bufferArray: Uint8Array, space = true, maxLine = 16) {\n let hex_table = ''\n for (let i = 0; i < bufferArray.length; i++) {\n const hex /** String **/ = bufferArray[i].toString(16).toUpperCase()\n if (hex.length === 2) {\n hex_table += hex + (space ? ' ' : '')\n } else {\n hex_table += '0' + hex + (space ? ' ' : '')\n }\n if ((i + 1) % maxLine == 0 && space) {\n hex_table += '\\n'\n }\n }\n return hex_table\n}\n\n/**\n * Trim the prefix in an entry. This is required because the lookbehind\n * regular expression is not supported in safari yet.\n * @param {String} entry\n * @param {String} prefix\n * @return String\n */\nfunction trimEntry(entry: string, prefix: string) {\n return entry.slice(prefix.length + 1, entry.length)\n}\n","\n\n\n\n\n\n\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EChartsOption } from 'echarts'\n\nexport class EchartsData {\n statisticData: Map\n trimmedData: Map\n title: string\n unit: string\n maximumEntries: number\n /**\n * Given a set of [key, value] pairs and title, create an object for further\n * usage in Vue-Echarts.\n * @param {Map} statisticData\n * @param {String} title\n * @param {String} unit\n * @param {Number} maximumEntries\n */\n constructor(\n statisticData: Map,\n title: string,\n unit: string,\n maximumEntries = 15\n ) {\n this.statisticData = statisticData\n this.trimmedData = trimMap(statisticData, maximumEntries)\n this.title = title\n this.unit = unit\n this.maximumEntries = maximumEntries\n }\n\n /**\n * Convert the raw data into a string.\n * @return {String} A list of [key, value].\n */\n listData() {\n let /** String */ table = ''\n for (let [key, value] of this.statisticData) {\n table += key + ' : ' + value.toString() + ' Blocks' + '\\n'\n }\n return table\n }\n\n /**\n * Generate necessary parameters (option) for vue-echarts.\n * Format of the parameters can be found here:\n * https://echarts.apache.org/en/option.html\n * @param {String} unit\n * @return {Object} an ECharts option object.\n */\n getEchartsOption(): EChartsOption {\n let /** Object */ option: EChartsOption = {}\n option.title = {\n text: this.title,\n left: 'center'\n }\n option.tooltip = {\n trigger: 'item',\n formatter: '{a}
{b} : {c} ' + this.unit + ' ({d}%)'\n }\n option.legend = {\n orient: 'horizontal',\n left: 'top',\n top: '10%',\n data: Array.from(this.trimmedData.keys())\n }\n option.series = [\n {\n name: this.title,\n type: 'pie',\n radius: '55%',\n center: ['50%', '60%'],\n data: Array.from(this.trimmedData).map((pair: any) => {\n return { value: pair[1], name: pair[0] }\n }),\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)'\n }\n }\n }\n ]\n return option\n }\n}\n\n/**\n * When there are too many entries in the map, the pie chart can be very\n * crowded. This function will return the entries that have high values.\n * Specifically, the top will be stored and the others\n * will be added into an entry called 'other'.\n * @param {Map} map\n * @param {Number} maximumEntries\n * @return {Map}\n */\nfunction trimMap(map: Map, maximumEntries: number) {\n if (map.size <= maximumEntries) return map\n let /** Map */ new_map = new Map()\n for (let i = 0; i < maximumEntries; i++) {\n let /** Number */ curr = 0\n let /** String */ currKey = ''\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n if (value > curr) {\n curr = value\n currKey = key\n }\n }\n }\n new_map.set(currKey, curr)\n }\n let /** Number */ restTotal = 0\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n restTotal += value\n }\n }\n new_map.set('other', restTotal)\n return new_map\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class MapParser will take in a Android build and construct\n * several file name maps (physical address: file name) according to it.\n * The map of each partitions is added by calling MapParser.add(partitionName).\n * You can query the file name being operated by calling\n * MapParser.query(address, datalength).\n */\n\nimport {\n ZipReader,\n BlobReader,\n TextWriter,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\nimport { chromeos_update_engine } from './update_metadata_pb'\n\nexport class MapParser {\n build: ZipReader\n mapFiles: Map\n maps: Map\n /**\n * This class will take in a .zip Android build and construct a file type map\n * @param {File} targetFile\n */\n constructor(targetFile: File | URL) {\n if (targetFile instanceof File) {\n this.build = new ZipReader(new BlobReader(targetFile))\n } else {\n this.build = new ZipReader(new HttpReader(targetFile.href))\n }\n this.mapFiles = new Map()\n this.maps = new Map()\n }\n\n /**\n * Find the .map entries in the .zip build file. Store them as a map with\n * pairs of (partition name: zip.js entry).\n */\n async init() {\n let /** Array */ entries = await this.build.getEntries()\n const /** RegExp*/ regexPath = /IMAGES\\/[a-z_]*\\.map/g\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.map)/g\n entries.forEach(entry => {\n if (entry.filename.match(regexPath)) {\n this.mapFiles.set(entry.filename.match(regexName)![0], entry)\n }\n })\n }\n\n /**\n * According to the .map in the build, build a map for later query.\n * @param {String} partitionName\n * @param {Number} totalLength\n */\n async add(partitionName: string, totalLength: number) {\n let /** Array */ map = []\n const /** RegExp */ regexNumber = /\\d+/g\n const /** Reg */ regexRange = /\\d+\\-\\d+/g\n for (let i = 0; i < totalLength; i++) map[i] = `<${partitionName}>`\n if (this.mapFiles.get(partitionName)) {\n let /** String */ mapText = await this.mapFiles\n .get(partitionName)\n .getData(new TextWriter())\n let /** Array */ fileEntries = mapText.split('\\n')\n // Each line of the .map file in Android build starts with the filename\n // Followed by the block address, either a number or a range, for example:\n // //system/apex/com.android.adbd.apex 54-66 66 66-2663\n for (let entry of fileEntries) {\n let /** Array */ elements = entry.split(' ')\n for (let j = 1; j < elements.length; j++) {\n let /** Number */ left = 0\n let /** Number */ right = 0\n if (elements[j].match(regexRange)) {\n left = parseInt(elements[j].match(/\\d+/g)[0])\n right = parseInt(elements[j].match(/\\d+/g)[1])\n } else {\n left = parseInt(elements[j].match(regexNumber))\n right = parseInt(elements[j].match(regexNumber))\n }\n InsertMap(map, elements[0], left, right)\n }\n }\n this.maps.set(partitionName, map)\n } else {\n this.maps.set(partitionName, map)\n }\n }\n\n /**\n * Return the filename of given address.\n * @param {String} partitionName\n * @param {Array} extents\n * @return {Array}\n */\n query(partitionName: string, extents: Array) {\n let /** Array */ names = []\n let /** Array */ map = this.maps.get(partitionName)\n for (let ext of extents) {\n names.push(queryMap(map, ext.startBlock, ext.startBlock + ext.numBlocks))\n }\n return names\n }\n}\n\n/**\n * Fill in the hashtable from to using .\n * @param {Array} map\n * @param {String} name\n * @param {Number} left\n * @param {Number} right\n */\nfunction InsertMap(\n map: Array,\n name: string,\n left: number,\n right: number\n) {\n for (let i = left; i <= right; i++) {\n map[i] = name\n }\n}\n\n/**\n * Query the hashtable using index
.\n * @param {Array} map\n * @param {Number} left\n * @param {Number} right\n */\nfunction queryMap(map: Array, left: number, right: number) {\n // Assuming the consecutive blocks belong to the same file\n // Only the start block is queried here.\n if (!map[left]) {\n return 'unknown'\n }\n return map[left]\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Offer functions that can be used to parse the partitionUpdate\n * and then do statistics over it. One can use analysePartitions to specify the\n * partitions been analysed and metrics.\n */\n\nimport { OpType, MergeOpType } from './payload'\nimport { EchartsData } from './echarts_data'\nimport { MapParser } from './map_parser'\nimport { chromeos_update_engine } from './update_metadata_pb'\n\n/**\n * Add a to a element associated to . If the element dose not\n * exists than its value will be initialized to zero.\n * @param {Map} map\n * @param {String} key\n * @param {Number} value\n */\nfunction addNumberToMap(map: Map, key: String, value: number) {\n if (!map.get(key)) {\n map.set(key, 0)\n }\n map.set(key, map.get(key)! + value)\n}\n\n/**\n * Return a statistics over the numbers of blocks (in destination) that are\n * being operated by different installation operation (e.g. REPLACE, BSDIFF).\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedBlockStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n operatedBlocks,\n operationType,\n numBlocks(operation.dstExtents)\n )\n }\n }\n return operatedBlocks\n}\n\nexport function mergeOperationStatistics(\n partitions: Array,\n blockSize: number\n) {\n let /** Map */ mergeOperations = new Map()\n let /** MergeOpType */ opType = new MergeOpType()\n let /** Number */ totalBlocks = 0\n for (let partition of partitions) {\n for (let operation of partition.mergeOperations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n mergeOperations,\n operationType,\n operation.dstExtent!.numBlocks\n )\n }\n // The total blocks number should be rounded up\n if (partition.newPartitionInfo == null) {\n throw new Error(\n `Partition ${partition.partitionName} doesn't have new_partition_info field.`\n )\n }\n totalBlocks += Math.ceil(partition.newPartitionInfo.size / blockSize)\n }\n // The COW merge operation is default to be COW_replace and not shown in\n // the manifest info. We have to mannually add that part of operations,\n // by subtracting the total blocks with other blocks.\n mergeOperations.forEach((value, key) => (totalBlocks -= value))\n mergeOperations.set('COW_REPLACE', totalBlocks)\n return mergeOperations\n}\n\n/**\n * Return a statistics over the disk usage of payload.bin, based on the type of\n * installation operations. Only partitions that are being passed in will be\n * included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedPayloadStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(operatedBlocks, operationType, operation.dataLength)\n }\n }\n return operatedBlocks\n}\n/**\n * Return a statistics over the disk usage of each file types in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFileExtensionsStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let filenameStats = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n const fileExtenstionStats = new Map()\n filenameStats.forEach((size, filename) => {\n addNumberToMap(fileExtenstionStats, name2Extension(filename), size)\n })\n return fileExtenstionStats\n}\n\n/**\n * Return a statistics over the disk usage of each file name in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFilenamesStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let /** Map */ operatedFilenames = new Map()\n if (!targetFile) {\n return operatedFilenames\n }\n let buildMap = new MapParser(targetFile)\n await buildMap.init()\n for (let partition of partitions) {\n await buildMap.add(\n partition.partitionName,\n Math.ceil(partition.newPartitionInfo!.size / blockSize)\n )\n for (let operation of partition.operations!) {\n if (!operation.hasOwnProperty('dataLength')) continue\n let operatedFileNames = buildMap.query(\n partition.partitionName,\n operation.dstExtents!\n )\n let extentDataLength = distributeFilenames(\n operatedFileNames,\n operation.dstExtents!,\n operation.dataLength\n )\n extentDataLength!.forEach((value, key) => {\n addNumberToMap(operatedFilenames, key, value)\n })\n }\n }\n return operatedFilenames\n}\n\n/**\n * Analyse the given partitions using the given metrics.\n * @param {String} metrics\n * @param {Array} partitions\n * @return {EchartsData}\n */\nexport async function analysePartitions(\n metrics: String,\n partitions: Array,\n blockSize = 4096,\n targetFile: File | null | URL = null\n) {\n let /** Map */ statisticsData\n let /** Echartsdata */ echartsData\n switch (metrics) {\n case 'blocks':\n statisticsData = operatedBlockStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Operated blocks in target build',\n 'blocks'\n )\n break\n case 'payload':\n statisticsData = operatedPayloadStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Payload disk usage',\n 'bytes'\n )\n break\n case 'COWmerge':\n statisticsData = mergeOperationStatistics(partitions, blockSize)\n echartsData = new EchartsData(\n statisticsData,\n 'COW merge operations',\n 'blocks'\n )\n break\n case 'filenames':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated filenames',\n 'bytes'\n )\n break\n case 'extensions':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFileExtensionsStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated extensions',\n 'bytes'\n )\n break\n }\n if (echartsData) {\n return echartsData\n } else {\n throw 'Please double check if this is a proper AB OTA package.'\n }\n}\n\n/**\n * Calculate the number of blocks being operated\n * @param {Array} exts\n * @return {number}\n */\nexport function numBlocks(\n exts: Array | null | undefined\n) {\n if (!exts) {\n return 0\n }\n const accumulator = (total: number, ext: chromeos_update_engine.IExtent) =>\n total + ext.numBlocks\n return exts.reduce(accumulator, 0)\n}\n\n/**\n * Return a string that indicates the blocks being operated\n * in the manner of (start_block, block_length)\n * @param {Array} exts\n * @return {string}\n */\nexport function displayBlocks(exts: Array) {\n const accumulator = (total: string, ext: chromeos_update_engine.Extent) =>\n total + '(' + ext.startBlock + ',' + ext.numBlocks + ')'\n return exts.reduce(accumulator, '')\n}\n\n/**\n * Return a map with pairs of (file extension, data length used by this\n * extension). The total data length will be distributed by the blocks ratio\n * of each extent.\n * @param {Array} filenames\n * @param {Array} exts\n * @param {Number} length\n * @return {Map}\n */\nexport function distributeFilenames(\n filenames: Array,\n exts: Array,\n length: number\n): Map {\n let totalBlocks = numBlocks(exts)\n let distributedLengths = new Map()\n for (let i = 0; i < filenames.length; i++) {\n addNumberToMap(\n distributedLengths,\n filenames[i],\n Math.round((length * exts[i].numBlocks) / totalBlocks)\n )\n }\n return distributedLengths\n}\n\n/**\n * convert a filename into extension, for example:\n * '//system/apex/com.android.adbd.apex' => 'apex'\n * @param {String} filename\n * @return {String}\n */\nexport function name2Extension(filename: string) {\n let elements = filename.split('.')\n if (elements.length > 1) {\n return elements[elements.length - 1]\n } else if (elements[0] === 'unknown') {\n return 'unknown'\n } else if (filename[0] == '<' && filename.endsWith('>')) {\n return filename\n } else {\n return 'no-extension'\n }\n}\n","\nimport { numBlocks, displayBlocks } from '../services/payload_composition'\nimport { DefaultMap } from '../services/payload'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n operation: {\n type: Object,\n required: true\n },\n mapType: {\n type: DefaultMap,\n required: true\n }\n },\n data() {\n return {\n srcTotalBlocks: 0,\n srcBlocks: '',\n dstTotalBlocks: 0,\n dstBlocks: ''\n }\n },\n mounted() {\n if (this.operation.srcExtents) {\n this.srcTotalBlocks = numBlocks(this.operation.srcExtents)\n this.srcBlocks = displayBlocks(this.operation.srcExtents)\n }\n if (this.operation.dstExtents) {\n this.dstTotalBlocks = numBlocks(this.operation.dstExtents)\n this.dstBlocks = displayBlocks(this.operation.dstExtents)\n }\n }\n})\n","import { render } from \"./OperationDetail.vue?vue&type=template&id=44174082&scoped=true\"\nimport script from \"./OperationDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./OperationDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-44174082\"\n\nexport default script","\nimport { chromeos_update_engine } from '@/services/update_metadata_pb'\nimport { defineComponent } from 'vue'\nimport { OpType, octToHex } from '../services/payload'\nimport OperationDetail from './OperationDetail.vue'\n\nexport default defineComponent({\n components: {\n OperationDetail\n },\n props: {\n partition: {\n type: chromeos_update_engine.PartitionUpdate,\n required: true\n },\n dynamicPartitionList: {\n type: Array,\n required: true\n }\n },\n data() {\n return {\n showOPs: false,\n showInfo: false,\n opType: new OpType()\n }\n },\n methods: {\n toggle(key: string) {\n ;(this as any)[key] = !(this as any)[key]\n },\n octToHex: octToHex\n },\n computed: {\n readableTimestamp() {\n const unixTimestamp = parseInt(this.partition.version)\n if (isNaN(unixTimestamp)) {\n return ''\n }\n // Unix timestamp is in seconds, but js want milliseconds. So *1000\n return new Date(unixTimestamp * 1000).toString()\n },\n isDynamicPartition(): boolean {\n return (\n this.dynamicPartitionList.indexOf(this.partition.partitionName) >= 0\n )\n }\n }\n})\n","import { render } from \"./PartitionDetail.vue?vue&type=template&id=6dba348a&scoped=true\"\nimport script from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PartitionDetail.vue?vue&type=style&index=0&id=6dba348a&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-6dba348a\"\n\nexport default script","\n\n\n\n\n\n\n","import * as zip from '@zip.js/zip.js/dist/zip.js'\nimport { ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { Payload } from './payload'\n\nexport class ZipFile {\n public reader: ZipReader\n\n constructor(private file: File | URL) {\n this.reader = getZipReader(file)\n }\n getFileName() {\n return getFileName(this.file)\n }\n getFileSize() {\n if (this.file instanceof File) {\n return this.file.size\n } else {\n // TODO(zhangkelvin) Support getting file size from URL\n return 0\n }\n }\n}\n\nexport async function trimZip(\n file: ZipReader,\n p: (entry: zip.Entry) => boolean\n): Promise {\n const reader = file\n const writer = new zip.ZipWriter(new zip.BlobWriter('application/zip'))\n const entries = await reader.getEntries()\n for (const entry of entries.filter(entry => !!entry && p(entry))) {\n const blobWriter = new zip.BlobWriter()\n const data = (await entry.getData!(blobWriter)) as Blob\n console.log(`Adding ${entry.filename}, ${data.size}`)\n writer.add(entry.filename, new zip.BlobReader(blobWriter.getData()), {\n level: 0 // no compression\n })\n }\n return writer\n}\n\nfunction getZipReader(file: File | URL) {\n if (file instanceof File) {\n return new zip.ZipReader(new zip.BlobReader(file))\n } else {\n return new zip.ZipReader(new zip.HttpReader(file.href))\n }\n}\n\nexport function getFileName(file: File | URL) {\n if (file instanceof File) {\n return file.name\n } else {\n return file.pathname\n }\n}\n\nexport async function trimTargetFiles(file: File | URL): Promise {\n const writer = await trimZip(getZipReader(file), entry => {\n return entry.filename.startsWith('META/') || entry.filename.endsWith('.map') || entry.filename.endsWith(\".prop\") || entry.filename == \"prop.default\"\n })\n return await writer.close()\n}\n\nexport async function trimOTAPackage(payload: Payload): Promise {\n const writer = await trimZip(payload.zipreader, entry => {\n return entry.filename != 'payload.bin'\n })\n await writer.add(\n 'payload.bin',\n new zip.BlobReader(payload.buffer!.slice(0, payload.getMetadataLength())),\n // Most toolings assume that payload.bin and other entries are not\n // compressed, so use level 0\n {\n level: 0\n }\n )\n const blob: Blob = await writer.close()\n return blob\n}\n\nexport function downloadFile(\n blob: Blob,\n downloadNode: HTMLAnchorElement,\n filename: string\n) {\n const url = window.URL.createObjectURL(blob)\n downloadNode.href = url\n downloadNode.download = filename\n downloadNode.click()\n window.URL.revokeObjectURL(url)\n}\n\nexport function ensureSuffix(str: string, suffix: string) {\n if (str.endsWith(suffix)) {\n return str\n } else {\n return str + suffix\n }\n}\n","\nimport { Payload, MetadataFormat } from '../services/payload'\nimport { ZipFile } from '@/services/trim_zip'\n\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n zipFile: {\n type: ZipFile,\n required: true\n },\n payload: {\n type: Payload,\n required: true\n }\n },\n data() {\n return {\n MetadataFormat\n }\n },\n computed: {\n otaMetadata(): {\n prefix: string\n key: string\n name: string\n }[] {\n return MetadataFormat.filter(formatter =>\n String((this.payload as any)[formatter.key]).length > 0\n );\n },\n totalCOWSize(): number {\n const cowSizes = this.payload?.manifest?.partitions.map(p => p.estimateCowSize || 0);\n if (!cowSizes) {\n return 0;\n }\n return cowSizes.reduce((a, b) => a + b);\n },\n vabcCompressionParam(): string {\n return this.payload?.manifest?.dynamicPartitionMetadata?.vabcCompressionParam || \"\";\n },\n securityPatchLevel(): string {\n const spl = this.payload?.manifest?.securityPatchLevel;\n if (!spl) {\n return \"\";\n }\n return spl;\n },\n totalDynamicPartitionSize(): number {\n const groups = this.payload?.manifest?.dynamicPartitionMetadata?.groups\n if (!groups) {\n return 0\n }\n const dynamicPartitionNamess = new Set(\n groups.flatMap(g => g.partitionNames)\n )\n const dynamicPartitions =\n this.payload.manifest?.partitions.filter(p =>\n dynamicPartitionNamess.has(p.partitionName)\n ) || []\n if (dynamicPartitions.length <= 0) {\n return 0\n }\n return dynamicPartitions\n .map(p => p.newPartitionInfo?.size || 0)\n .reduce((acc, cur) => acc + cur)\n }\n }\n})\n","import { render } from \"./BasicInfo.vue?vue&type=template&id=24adde54&scoped=true\"\nimport script from \"./BasicInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./BasicInfo.vue?vue&type=script&lang=ts\"\n\nimport \"./BasicInfo.vue?vue&type=style&index=0&id=24adde54&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-24adde54\"\n\nexport default script","\nimport PartitionDetail from './PartitionDetail.vue'\nimport BasicInfo from './BasicInfo.vue'\nimport { Payload, octToHex } from '../services/payload'\nimport {\n downloadFile,\n ensureSuffix,\n trimOTAPackage,\n ZipFile\n} from '@/services/trim_zip'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n components: {\n PartitionDetail,\n BasicInfo\n },\n props: {\n zipFile: {\n type: ZipFile,\n default: null\n },\n payload: {\n type: Payload,\n default: null\n }\n },\n methods: {\n octToHex: octToHex,\n async exportOTAPackage() {\n const blob = await trimOTAPackage(this.payload as Payload)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(this.zipFile.getFileName(), '.zip')\n )\n }\n },\n computed: {\n dynamicPartitions(): string[] {\n return (\n this.payload.manifest?.dynamicPartitionMetadata?.groups?.flatMap(\n g => g.partitionNames || []\n ) || []\n )\n }\n }\n})\n","import { render } from \"./PayloadDetail.vue?vue&type=template&id=05db67f2&scoped=true\"\nimport script from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-05db67f2\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n labels: {\n type: Array,\n default: new Array()\n },\n modelValue: {\n type: Map,\n default: new Map()\n }\n },\n data() {\n return {\n selectAll: 1,\n selectAllText: ['Select All', 'Unselect All']\n }\n },\n mounted() {\n // Set the default value to be true once mounted\n for (let key of this.labels) {\n this.modelValue.set(key, true)\n }\n },\n methods: {\n updateSelected(newSelect: string) {\n this.modelValue.set(newSelect, !this.modelValue.get(newSelect))\n this.$emit('update:modelValue', this.modelValue)\n },\n revertAllSelection() {\n this.selectAll = 1 - this.selectAll\n for (let key of this.modelValue.keys()) {\n this.modelValue.set(key, Boolean(this.selectAll))\n }\n }\n }\n})\n","import { render } from \"./PartialCheckbox.vue?vue&type=template&id=533f2336&scoped=true\"\nimport script from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\n\nimport \"./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-533f2336\"\n\nexport default script","\n\n\n\n\n\n\n","import { render } from \"./PieChart.vue?vue&type=template&id=5d1cb486&scoped=true\"\nimport script from \"./PieChart.vue?vue&type=script&lang=js\"\nexport * from \"./PieChart.vue?vue&type=script&lang=js\"\n\nimport \"./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-5d1cb486\"\n\nexport default script","\nimport axios from 'axios'\nimport PartialCheckbox from './PartialCheckbox.vue'\nimport PieChart from './PieChart.vue'\nimport BaseFile from './BaseFile.vue'\nimport { analysePartitions } from '../services/payload_composition'\nimport { chromeos_update_engine as update_metadata_pb } from '../services/update_metadata_pb'\nimport { TooltipComponentPositionCallbackParams } from 'echarts'\nimport { EchartsData } from '@/services/echarts_data'\nimport { defineComponent } from 'vue'\nimport {\n downloadFile,\n ensureSuffix,\n getFileName,\n trimTargetFiles\n} from '@/services/trim_zip'\n\ninterface ComponentState {\n partitionInclude: Map\n echartsData: EchartsData | null\n listData: string\n targetFile: File | URL | null\n}\n\nexport default defineComponent({\n components: {\n PartialCheckbox,\n PieChart,\n BaseFile\n },\n props: {\n manifest: {\n type: update_metadata_pb.DeltaArchiveManifest,\n default: () => []\n },\n demo: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n partitionInclude: new Map(),\n echartsData: null,\n listData: '',\n targetFile: null\n } as ComponentState\n },\n computed: {\n updatePartitions(): string[] {\n return this.manifest.partitions.map(\n (partition: update_metadata_pb.IPartitionUpdate) => {\n return partition.partitionName\n }\n )\n }\n },\n async mounted() {\n if (this.demo) {\n try {\n const download = await axios.get(\n './files/cf_x86_target_file_demo.zip',\n { responseType: 'blob' }\n )\n this.targetFile = new File([download.data], 'target_demo.zip')\n } catch (err) {\n console.log('Please put a proper example target file in /public/files/')\n }\n }\n },\n methods: {\n piechartClick(param: TooltipComponentPositionCallbackParams) {\n console.log(param)\n },\n async updateChart(metrics: string) {\n let partitionSelected = this.manifest.partitions.filter(partition =>\n this.partitionInclude.get(partition.partitionName)\n )\n try {\n this.echartsData = await analysePartitions(\n metrics,\n partitionSelected,\n this.manifest.blockSize,\n this.targetFile\n )\n } catch (err) {\n alert(`Cannot be processed for the following issue: ${err}`)\n }\n },\n selectBuild(file: File | URL) {\n //TODO(lishutong) check the version of target file is same to the OTA target\n this.targetFile = file\n },\n async exportTargetFileMetadata() {\n const blob = await trimTargetFiles(this.targetFile!)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(getFileName(this.targetFile!), '.zip')\n )\n }\n }\n})\n","import { render } from \"./PayloadComposition.vue?vue&type=template&id=44b569bd&scoped=true\"\nimport script from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadComposition.vue?vue&type=style&index=0&id=44b569bd&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-44b569bd\"\n\nexport default script","\nimport BaseFile from '../components/BaseFile.vue'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n BaseFile,\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return ({\n zipFile: null,\n payload: null\n } as unknown) as {\n zipFile: ZipFile\n payload: Payload\n }\n },\n methods: {\n async unpackOTA(file: File | URL) {\n this.zipFile = new ZipFile(file)\n try {\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n alert(`Please check if this is a correct OTA package (.zip). ${err}`)\n console.log(err)\n }\n }\n }\n})\n","import { render } from \"./PackageAnalysis.vue?vue&type=template&id=4cbf2b67\"\nimport script from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nexport * from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\nimport axios from 'axios'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return {\n zipFile: null,\n payload: null\n } as {\n zipFile: ZipFile | null\n payload: Payload | null\n }\n },\n async created() {\n // put cf_x86_demo.zip and cf_x86_target_file_demo into\n // this directory: /public/files\n try {\n const download = await axios.get('./files/cf_x86_demo.zip', {\n responseType: 'blob'\n })\n this.zipFile = new ZipFile(new File([download.data], 'ota_demo.zip'))\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n console.log('Please put a proper example OTA in /public/files/')\n }\n }\n})\n","import { render } from \"./Demo.vue?vue&type=template&id=1e5d071a\"\nimport script from \"./Demo.vue?vue&type=script&lang=ts\"\nexport * from \"./Demo.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n","import { render } from \"./About.vue?vue&type=template&id=67ed0bf6\"\nconst script = {}\nscript.render = render\n\nexport default script","\n\n\n\n","import { render } from \"./NotFound.vue?vue&type=template&id=50c6f348&scoped=true\"\nconst script = {}\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-50c6f348\"\n\nexport default script","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createRouter, createWebHistory } from 'vue-router'\nimport PackageAnalysis from '@/views/PackageAnalysis.vue'\nimport Demo from'@/views/Demo.vue'\nimport About from '@/views/About.vue'\nimport NotFound from '@/views/NotFound.vue'\n\nconst routes = [\n {\n path: '/',\n name: 'Analysis',\n component: PackageAnalysis,\n meta: {\n title: 'Analyse OTA package - from AOSP'\n }\n },\n {\n path: '/demo',\n name: 'Demo',\n component: Demo\n },\n {\n path: '/about',\n name: 'About',\n component: About\n },\n {\n path: '/:catchAll(.*)',\n name: 'Not Found',\n component: NotFound\n }\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes\n})\n\n// This callback runs before every route change, including on page load.\nrouter.beforeEach((to, from, next) => {\n // This goes through the matched routes from last to first, finding the closest route with a title.\n // e.g., if we have `/some/deep/nested/route` and `/some`, `/deep`, and `/nested` have titles,\n // `/nested`'s will be chosen.\n const nearestWithTitle = to.matched.slice().reverse().find(r => r.meta && r.meta.title);\n\n // Find the nearest route element with meta tags.\n const nearestWithMeta = to.matched.slice().reverse().find(r => r.meta && r.meta.metaTags)!;\n\n const previousNearestWithMeta = from.matched.slice().reverse().find(r => r.meta && r.meta.metaTags);\n\n // If a route with a title was found, set the document (page) title to that value.\n if(nearestWithTitle) {\n document.title = nearestWithTitle.meta.title as string;\n } else if(previousNearestWithMeta) {\n document.title = previousNearestWithMeta.meta.title as string;\n }\n\n // Remove any stale meta tags from the document using the key attribute we set below.\n Array.from(document.querySelectorAll('[data-vue-router-controlled]')).map(el => el.parentNode!.removeChild(el));\n\n next();\n});\n\nexport default router\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createStore } from 'vuex'\n\nexport default createStore({\n state: {},\n mutations: {},\n actions: {},\n modules: {}\n})\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createApp } from 'vue'\nimport vuetify from './plugins/vuetify'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nconst app = createApp(App)\napp.use(router)\napp.use(store)\napp.use(vuetify)\n\napp.mount('#app')","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartitionDetail.vue?vue&type=style&index=0&id=6dba348a&scoped=true&lang=css\""],"sourceRoot":""} \ No newline at end of file diff --git a/analyseOTA/js/app.cd26fbce.js b/analyseOTA/js/app.cd26fbce.js new file mode 100644 index 0000000..ce78ec1 --- /dev/null +++ b/analyseOTA/js/app.cd26fbce.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var r,o,s=t[0],c=t[1],l=t[2],p=0,d=[];p>>3){case 1:r.startBlock=e.uint64();break;case 2:r.numBlocks=e.uint64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null==e.startBlock||!e.hasOwnProperty("startBlock")||se.isInteger(e.startBlock)||e.startBlock&&se.isInteger(e.startBlock.low)&&se.isInteger(e.startBlock.high)?null==e.numBlocks||!e.hasOwnProperty("numBlocks")||se.isInteger(e.numBlocks)||e.numBlocks&&se.isInteger(e.numBlocks.low)&&se.isInteger(e.numBlocks.high)?null:"numBlocks: integer|Long expected":"startBlock: integer|Long expected"},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.Extent)return e;var t=new ce.chromeos_update_engine.Extent;return null!=e.startBlock&&(se.Long?(t.startBlock=se.Long.fromValue(e.startBlock)).unsigned=!0:"string"===typeof e.startBlock?t.startBlock=parseInt(e.startBlock,10):"number"===typeof e.startBlock?t.startBlock=e.startBlock:"object"===Object(re["a"])(e.startBlock)&&(t.startBlock=new se.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0))),null!=e.numBlocks&&(se.Long?(t.numBlocks=se.Long.fromValue(e.numBlocks)).unsigned=!0:"string"===typeof e.numBlocks?t.numBlocks=parseInt(e.numBlocks,10):"number"===typeof e.numBlocks?t.numBlocks=e.numBlocks:"object"===Object(re["a"])(e.numBlocks)&&(t.numBlocks=new se.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(se.Long){var r=new se.Long(0,0,!0);n.startBlock=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.startBlock=t.longs===String?"0":0;if(se.Long){var a=new se.Long(0,0,!0);n.numBlocks=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.numBlocks=t.longs===String?"0":0}return null!=e.startBlock&&e.hasOwnProperty("startBlock")&&("number"===typeof e.startBlock?n.startBlock=t.longs===String?String(e.startBlock):e.startBlock:n.startBlock=t.longs===String?se.Long.prototype.toString.call(e.startBlock):t.longs===Number?new se.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0):e.startBlock),null!=e.numBlocks&&e.hasOwnProperty("numBlocks")&&("number"===typeof e.numBlocks?n.numBlocks=t.longs===String?String(e.numBlocks):e.numBlocks:n.numBlocks=t.longs===String?se.Long.prototype.toString.call(e.numBlocks):t.longs===Number?new se.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0):e.numBlocks),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.Signatures=function(){function e(e){if(this.signatures=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.signatures&&r.signatures.length||(r.signatures=[]),r.signatures.push(ce.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.signatures&&e.hasOwnProperty("signatures")){if(!Array.isArray(e.signatures))return"signatures: array expected";for(var t=0;t>>3){case 1:r.version=e.uint32();break;case 2:r.data=e.bytes();break;case 3:r.unpaddedSignatureSize=e.fixed32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null!=e.version&&e.hasOwnProperty("version")&&!se.isInteger(e.version)?"version: integer expected":null!=e.data&&e.hasOwnProperty("data")&&!(e.data&&"number"===typeof e.data.length||se.isString(e.data))?"data: buffer expected":null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&!se.isInteger(e.unpaddedSignatureSize)?"unpaddedSignatureSize: integer expected":null},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.Signatures.Signature)return e;var t=new ce.chromeos_update_engine.Signatures.Signature;return null!=e.version&&(t.version=e.version>>>0),null!=e.data&&("string"===typeof e.data?se.base64.decode(e.data,t.data=se.newBuffer(se.base64.length(e.data)),0):e.data.length&&(t.data=e.data)),null!=e.unpaddedSignatureSize&&(t.unpaddedSignatureSize=e.unpaddedSignatureSize>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.version=0,t.bytes===String?n.data="":(n.data=[],t.bytes!==Array&&(n.data=se.newBuffer(n.data))),n.unpaddedSignatureSize=0),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.data&&e.hasOwnProperty("data")&&(n.data=t.bytes===String?se.base64.encode(e.data,0,e.data.length):t.bytes===Array?Array.prototype.slice.call(e.data):e.data),null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&(n.unpaddedSignatureSize=e.unpaddedSignatureSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e}(),e.PartitionInfo=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.size=e.uint64();break;case 2:r.hash=e.bytes();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null==e.size||!e.hasOwnProperty("size")||se.isInteger(e.size)||e.size&&se.isInteger(e.size.low)&&se.isInteger(e.size.high)?null!=e.hash&&e.hasOwnProperty("hash")&&!(e.hash&&"number"===typeof e.hash.length||se.isString(e.hash))?"hash: buffer expected":null:"size: integer|Long expected"},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.PartitionInfo)return e;var t=new ce.chromeos_update_engine.PartitionInfo;return null!=e.size&&(se.Long?(t.size=se.Long.fromValue(e.size)).unsigned=!0:"string"===typeof e.size?t.size=parseInt(e.size,10):"number"===typeof e.size?t.size=e.size:"object"===Object(re["a"])(e.size)&&(t.size=new se.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0))),null!=e.hash&&("string"===typeof e.hash?se.base64.decode(e.hash,t.hash=se.newBuffer(se.base64.length(e.hash)),0):e.hash.length&&(t.hash=e.hash)),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(se.Long){var r=new se.Long(0,0,!0);n.size=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.size=t.longs===String?"0":0;t.bytes===String?n.hash="":(n.hash=[],t.bytes!==Array&&(n.hash=se.newBuffer(n.hash)))}return null!=e.size&&e.hasOwnProperty("size")&&("number"===typeof e.size?n.size=t.longs===String?String(e.size):e.size:n.size=t.longs===String?se.Long.prototype.toString.call(e.size):t.longs===Number?new se.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0):e.size),null!=e.hash&&e.hasOwnProperty("hash")&&(n.hash=t.bytes===String?se.base64.encode(e.hash,0,e.hash.length):t.bytes===Array?Array.prototype.slice.call(e.hash):e.hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.InstallOperation=function(){function e(e){if(this.srcExtents=[],this.dstExtents=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.dataOffset=e.uint64();break;case 3:r.dataLength=e.uint64();break;case 4:r.srcExtents&&r.srcExtents.length||(r.srcExtents=[]),r.srcExtents.push(ce.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 5:r.srcLength=e.uint64();break;case 6:r.dstExtents&&r.dstExtents.length||(r.dstExtents=[]),r.dstExtents.push(ce.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 7:r.dstLength=e.uint64();break;case 8:r.dataSha256Hash=e.bytes();break;case 9:r.srcSha256Hash=e.bytes();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("type"))throw se.ProtocolError("missing required 'type'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 8:case 6:case 7:case 10:case 9:case 11:case 12:case 13:break}if(null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&!se.isInteger(e.dataOffset)&&!(e.dataOffset&&se.isInteger(e.dataOffset.low)&&se.isInteger(e.dataOffset.high)))return"dataOffset: integer|Long expected";if(null!=e.dataLength&&e.hasOwnProperty("dataLength")&&!se.isInteger(e.dataLength)&&!(e.dataLength&&se.isInteger(e.dataLength.low)&&se.isInteger(e.dataLength.high)))return"dataLength: integer|Long expected";if(null!=e.srcExtents&&e.hasOwnProperty("srcExtents")){if(!Array.isArray(e.srcExtents))return"srcExtents: array expected";for(var t=0;t>>0,e.dataOffset.high>>>0).toNumber(!0))),null!=e.dataLength&&(se.Long?(t.dataLength=se.Long.fromValue(e.dataLength)).unsigned=!0:"string"===typeof e.dataLength?t.dataLength=parseInt(e.dataLength,10):"number"===typeof e.dataLength?t.dataLength=e.dataLength:"object"===Object(re["a"])(e.dataLength)&&(t.dataLength=new se.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0))),e.srcExtents){if(!Array.isArray(e.srcExtents))throw TypeError(".chromeos_update_engine.InstallOperation.srcExtents: array expected");t.srcExtents=[];for(var n=0;n>>0,e.srcLength.high>>>0).toNumber(!0))),e.dstExtents){if(!Array.isArray(e.dstExtents))throw TypeError(".chromeos_update_engine.InstallOperation.dstExtents: array expected");t.dstExtents=[];for(var r=0;r>>0,e.dstLength.high>>>0).toNumber(!0))),null!=e.dataSha256Hash&&("string"===typeof e.dataSha256Hash?se.base64.decode(e.dataSha256Hash,t.dataSha256Hash=se.newBuffer(se.base64.length(e.dataSha256Hash)),0):e.dataSha256Hash.length&&(t.dataSha256Hash=e.dataSha256Hash)),null!=e.srcSha256Hash&&("string"===typeof e.srcSha256Hash?se.base64.decode(e.srcSha256Hash,t.srcSha256Hash=se.newBuffer(se.base64.length(e.srcSha256Hash)),0):e.srcSha256Hash.length&&(t.srcSha256Hash=e.srcSha256Hash)),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.srcExtents=[],n.dstExtents=[]),t.defaults){if(n.type=t.enums===String?"REPLACE":0,se.Long){var r=new se.Long(0,0,!0);n.dataOffset=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.dataOffset=t.longs===String?"0":0;if(se.Long){var a=new se.Long(0,0,!0);n.dataLength=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.dataLength=t.longs===String?"0":0;if(se.Long){var i=new se.Long(0,0,!0);n.srcLength=t.longs===String?i.toString():t.longs===Number?i.toNumber():i}else n.srcLength=t.longs===String?"0":0;if(se.Long){var o=new se.Long(0,0,!0);n.dstLength=t.longs===String?o.toString():t.longs===Number?o.toNumber():o}else n.dstLength=t.longs===String?"0":0;t.bytes===String?n.dataSha256Hash="":(n.dataSha256Hash=[],t.bytes!==Array&&(n.dataSha256Hash=se.newBuffer(n.dataSha256Hash))),t.bytes===String?n.srcSha256Hash="":(n.srcSha256Hash=[],t.bytes!==Array&&(n.srcSha256Hash=se.newBuffer(n.srcSha256Hash)))}if(null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?ce.chromeos_update_engine.InstallOperation.Type[e.type]:e.type),null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&("number"===typeof e.dataOffset?n.dataOffset=t.longs===String?String(e.dataOffset):e.dataOffset:n.dataOffset=t.longs===String?se.Long.prototype.toString.call(e.dataOffset):t.longs===Number?new se.LongBits(e.dataOffset.low>>>0,e.dataOffset.high>>>0).toNumber(!0):e.dataOffset),null!=e.dataLength&&e.hasOwnProperty("dataLength")&&("number"===typeof e.dataLength?n.dataLength=t.longs===String?String(e.dataLength):e.dataLength:n.dataLength=t.longs===String?se.Long.prototype.toString.call(e.dataLength):t.longs===Number?new se.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0):e.dataLength),e.srcExtents&&e.srcExtents.length){n.srcExtents=[];for(var s=0;s>>0,e.srcLength.high>>>0).toNumber(!0):e.srcLength),e.dstExtents&&e.dstExtents.length){n.dstExtents=[];for(var c=0;c>>0,e.dstLength.high>>>0).toNumber(!0):e.dstLength),null!=e.dataSha256Hash&&e.hasOwnProperty("dataSha256Hash")&&(n.dataSha256Hash=t.bytes===String?se.base64.encode(e.dataSha256Hash,0,e.dataSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.dataSha256Hash):e.dataSha256Hash),null!=e.srcSha256Hash&&e.hasOwnProperty("srcSha256Hash")&&(n.srcSha256Hash=t.bytes===String?se.base64.encode(e.srcSha256Hash,0,e.srcSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.srcSha256Hash):e.srcSha256Hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="REPLACE"]=0,t[e[1]="REPLACE_BZ"]=1,t[e[2]="MOVE"]=2,t[e[3]="BSDIFF"]=3,t[e[4]="SOURCE_COPY"]=4,t[e[5]="SOURCE_BSDIFF"]=5,t[e[8]="REPLACE_XZ"]=8,t[e[6]="ZERO"]=6,t[e[7]="DISCARD"]=7,t[e[10]="BROTLI_BSDIFF"]=10,t[e[9]="PUFFDIFF"]=9,t[e[11]="ZUCCHINI"]=11,t[e[12]="LZ4DIFF_BSDIFF"]=12,t[e[13]="LZ4DIFF_PUFFDIFF"]=13,t}(),e}(),e.CowMergeOperation=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.srcExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 3:r.dstExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 4:r.srcOffset=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:break}if(null!=e.srcExtent&&e.hasOwnProperty("srcExtent")){var t=ce.chromeos_update_engine.Extent.verify(e.srcExtent);if(t)return"srcExtent."+t}if(null!=e.dstExtent&&e.hasOwnProperty("dstExtent")){var n=ce.chromeos_update_engine.Extent.verify(e.dstExtent);if(n)return"dstExtent."+n}return null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&!se.isInteger(e.srcOffset)?"srcOffset: integer expected":null},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.CowMergeOperation)return e;var t=new ce.chromeos_update_engine.CowMergeOperation;switch(e.type){case"COW_COPY":case 0:t.type=0;break;case"COW_XOR":case 1:t.type=1;break;case"COW_REPLACE":case 2:t.type=2;break}if(null!=e.srcExtent){if("object"!==Object(re["a"])(e.srcExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.srcExtent: object expected");t.srcExtent=ce.chromeos_update_engine.Extent.fromObject(e.srcExtent)}if(null!=e.dstExtent){if("object"!==Object(re["a"])(e.dstExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.dstExtent: object expected");t.dstExtent=ce.chromeos_update_engine.Extent.fromObject(e.dstExtent)}return null!=e.srcOffset&&(t.srcOffset=e.srcOffset>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.type=t.enums===String?"COW_COPY":0,n.srcExtent=null,n.dstExtent=null,n.srcOffset=0),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?ce.chromeos_update_engine.CowMergeOperation.Type[e.type]:e.type),null!=e.srcExtent&&e.hasOwnProperty("srcExtent")&&(n.srcExtent=ce.chromeos_update_engine.Extent.toObject(e.srcExtent,t)),null!=e.dstExtent&&e.hasOwnProperty("dstExtent")&&(n.dstExtent=ce.chromeos_update_engine.Extent.toObject(e.dstExtent,t)),null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&(n.srcOffset=e.srcOffset),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="COW_COPY"]=0,t[e[1]="COW_XOR"]=1,t[e[2]="COW_REPLACE"]=2,t}(),e}(),e.PartitionUpdate=function(){function e(e){if(this.newPartitionSignature=[],this.operations=[],this.mergeOperations=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.partitionName=e.string();break;case 2:r.runPostinstall=e.bool();break;case 3:r.postinstallPath=e.string();break;case 4:r.filesystemType=e.string();break;case 5:r.newPartitionSignature&&r.newPartitionSignature.length||(r.newPartitionSignature=[]),r.newPartitionSignature.push(ce.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;case 6:r.oldPartitionInfo=ce.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:r.newPartitionInfo=ce.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:r.operations&&r.operations.length||(r.operations=[]),r.operations.push(ce.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 9:r.postinstallOptional=e.bool();break;case 10:r.hashTreeDataExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 11:r.hashTreeExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 12:r.hashTreeAlgorithm=e.string();break;case 13:r.hashTreeSalt=e.bytes();break;case 14:r.fecDataExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 15:r.fecExtent=ce.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 16:r.fecRoots=e.uint32();break;case 17:r.version=e.string();break;case 18:r.mergeOperations&&r.mergeOperations.length||(r.mergeOperations=[]),r.mergeOperations.push(ce.chromeos_update_engine.CowMergeOperation.decode(e,e.uint32()));break;case 19:r.estimateCowSize=e.uint64();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("partitionName"))throw se.ProtocolError("missing required 'partitionName'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(!se.isString(e.partitionName))return"partitionName: string expected";if(null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&"boolean"!==typeof e.runPostinstall)return"runPostinstall: boolean expected";if(null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&!se.isString(e.postinstallPath))return"postinstallPath: string expected";if(null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&!se.isString(e.filesystemType))return"filesystemType: string expected";if(null!=e.newPartitionSignature&&e.hasOwnProperty("newPartitionSignature")){if(!Array.isArray(e.newPartitionSignature))return"newPartitionSignature: array expected";for(var t=0;t>>0),null!=e.version&&(t.version=String(e.version)),e.mergeOperations){if(!Array.isArray(e.mergeOperations))throw TypeError(".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected");t.mergeOperations=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.newPartitionSignature=[],n.operations=[],n.mergeOperations=[]),t.defaults)if(n.partitionName="",n.runPostinstall=!1,n.postinstallPath="",n.filesystemType="",n.oldPartitionInfo=null,n.newPartitionInfo=null,n.postinstallOptional=!1,n.hashTreeDataExtent=null,n.hashTreeExtent=null,n.hashTreeAlgorithm="",t.bytes===String?n.hashTreeSalt="":(n.hashTreeSalt=[],t.bytes!==Array&&(n.hashTreeSalt=se.newBuffer(n.hashTreeSalt))),n.fecDataExtent=null,n.fecExtent=null,n.fecRoots=2,n.version="",se.Long){var r=new se.Long(0,0,!0);n.estimateCowSize=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.estimateCowSize=t.longs===String?"0":0;if(null!=e.partitionName&&e.hasOwnProperty("partitionName")&&(n.partitionName=e.partitionName),null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&(n.runPostinstall=e.runPostinstall),null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&(n.postinstallPath=e.postinstallPath),null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&(n.filesystemType=e.filesystemType),e.newPartitionSignature&&e.newPartitionSignature.length){n.newPartitionSignature=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0):e.estimateCowSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.DynamicPartitionGroup=function(){function e(e){if(this.partitionNames=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.name=e.string();break;case 2:r.size=e.uint64();break;case 3:r.partitionNames&&r.partitionNames.length||(r.partitionNames=[]),r.partitionNames.push(e.string());break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("name"))throw se.ProtocolError("missing required 'name'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(!se.isString(e.name))return"name: string expected";if(null!=e.size&&e.hasOwnProperty("size")&&!se.isInteger(e.size)&&!(e.size&&se.isInteger(e.size.low)&&se.isInteger(e.size.high)))return"size: integer|Long expected";if(null!=e.partitionNames&&e.hasOwnProperty("partitionNames")){if(!Array.isArray(e.partitionNames))return"partitionNames: array expected";for(var t=0;t>>0,e.size.high>>>0).toNumber(!0))),e.partitionNames){if(!Array.isArray(e.partitionNames))throw TypeError(".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected");t.partitionNames=[];for(var n=0;n>>0,e.size.high>>>0).toNumber(!0):e.size),e.partitionNames&&e.partitionNames.length){n.partitionNames=[];for(var a=0;a>>3){case 1:r.groups&&r.groups.length||(r.groups=[]),r.groups.push(ce.chromeos_update_engine.DynamicPartitionGroup.decode(e,e.uint32()));break;case 2:r.snapshotEnabled=e.bool();break;case 3:r.vabcEnabled=e.bool();break;case 4:r.vabcCompressionParam=e.string();break;case 5:r.cowVersion=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.groups&&e.hasOwnProperty("groups")){if(!Array.isArray(e.groups))return"groups: array expected";for(var t=0;t>>0),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.groups=[]),t.defaults&&(n.snapshotEnabled=!1,n.vabcEnabled=!1,n.vabcCompressionParam="",n.cowVersion=0),e.groups&&e.groups.length){n.groups=[];for(var r=0;r>>3){case 1:r.packageName=e.string();break;case 2:r.version=e.int64();break;case 3:r.isCompressed=e.bool();break;case 4:r.decompressedSize=e.int64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(re["a"])(e)||null===e?"object expected":null!=e.packageName&&e.hasOwnProperty("packageName")&&!se.isString(e.packageName)?"packageName: string expected":null==e.version||!e.hasOwnProperty("version")||se.isInteger(e.version)||e.version&&se.isInteger(e.version.low)&&se.isInteger(e.version.high)?null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&"boolean"!==typeof e.isCompressed?"isCompressed: boolean expected":null==e.decompressedSize||!e.hasOwnProperty("decompressedSize")||se.isInteger(e.decompressedSize)||e.decompressedSize&&se.isInteger(e.decompressedSize.low)&&se.isInteger(e.decompressedSize.high)?null:"decompressedSize: integer|Long expected":"version: integer|Long expected"},e.fromObject=function(e){if(e instanceof ce.chromeos_update_engine.ApexInfo)return e;var t=new ce.chromeos_update_engine.ApexInfo;return null!=e.packageName&&(t.packageName=String(e.packageName)),null!=e.version&&(se.Long?(t.version=se.Long.fromValue(e.version)).unsigned=!1:"string"===typeof e.version?t.version=parseInt(e.version,10):"number"===typeof e.version?t.version=e.version:"object"===Object(re["a"])(e.version)&&(t.version=new se.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber())),null!=e.isCompressed&&(t.isCompressed=Boolean(e.isCompressed)),null!=e.decompressedSize&&(se.Long?(t.decompressedSize=se.Long.fromValue(e.decompressedSize)).unsigned=!1:"string"===typeof e.decompressedSize?t.decompressedSize=parseInt(e.decompressedSize,10):"number"===typeof e.decompressedSize?t.decompressedSize=e.decompressedSize:"object"===Object(re["a"])(e.decompressedSize)&&(t.decompressedSize=new se.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber())),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(n.packageName="",se.Long){var r=new se.Long(0,0,!1);n.version=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.version=t.longs===String?"0":0;if(n.isCompressed=!1,se.Long){var a=new se.Long(0,0,!1);n.decompressedSize=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.decompressedSize=t.longs===String?"0":0}return null!=e.packageName&&e.hasOwnProperty("packageName")&&(n.packageName=e.packageName),null!=e.version&&e.hasOwnProperty("version")&&("number"===typeof e.version?n.version=t.longs===String?String(e.version):e.version:n.version=t.longs===String?se.Long.prototype.toString.call(e.version):t.longs===Number?new se.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber():e.version),null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&(n.isCompressed=e.isCompressed),null!=e.decompressedSize&&e.hasOwnProperty("decompressedSize")&&("number"===typeof e.decompressedSize?n.decompressedSize=t.longs===String?String(e.decompressedSize):e.decompressedSize:n.decompressedSize=t.longs===String?se.Long.prototype.toString.call(e.decompressedSize):t.longs===Number?new se.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber():e.decompressedSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,ae["util"].toJSONOptions)},e}(),e.ApexMetadata=function(){function e(e){if(this.apexInfo=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(ce.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.apexInfo&&e.hasOwnProperty("apexInfo")){if(!Array.isArray(e.apexInfo))return"apexInfo: array expected";for(var t=0;t>>3){case 3:r.blockSize=e.uint32();break;case 4:r.signaturesOffset=e.uint64();break;case 5:r.signaturesSize=e.uint64();break;case 12:r.minorVersion=e.uint32();break;case 13:r.partitions&&r.partitions.length||(r.partitions=[]),r.partitions.push(ce.chromeos_update_engine.PartitionUpdate.decode(e,e.uint32()));break;case 14:r.maxTimestamp=e.int64();break;case 15:r.dynamicPartitionMetadata=ce.chromeos_update_engine.DynamicPartitionMetadata.decode(e,e.uint32());break;case 16:r.partialUpdate=e.bool();break;case 17:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(ce.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;case 18:r.securityPatchLevel=e.string();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof ie||(e=new ie(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(re["a"])(e)||null===e)return"object expected";if(null!=e.blockSize&&e.hasOwnProperty("blockSize")&&!se.isInteger(e.blockSize))return"blockSize: integer expected";if(null!=e.signaturesOffset&&e.hasOwnProperty("signaturesOffset")&&!se.isInteger(e.signaturesOffset)&&!(e.signaturesOffset&&se.isInteger(e.signaturesOffset.low)&&se.isInteger(e.signaturesOffset.high)))return"signaturesOffset: integer|Long expected";if(null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&!se.isInteger(e.signaturesSize)&&!(e.signaturesSize&&se.isInteger(e.signaturesSize.low)&&se.isInteger(e.signaturesSize.high)))return"signaturesSize: integer|Long expected";if(null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&!se.isInteger(e.minorVersion))return"minorVersion: integer expected";if(null!=e.partitions&&e.hasOwnProperty("partitions")){if(!Array.isArray(e.partitions))return"partitions: array expected";for(var t=0;t>>0),null!=e.signaturesOffset&&(se.Long?(t.signaturesOffset=se.Long.fromValue(e.signaturesOffset)).unsigned=!0:"string"===typeof e.signaturesOffset?t.signaturesOffset=parseInt(e.signaturesOffset,10):"number"===typeof e.signaturesOffset?t.signaturesOffset=e.signaturesOffset:"object"===Object(re["a"])(e.signaturesOffset)&&(t.signaturesOffset=new se.LongBits(e.signaturesOffset.low>>>0,e.signaturesOffset.high>>>0).toNumber(!0))),null!=e.signaturesSize&&(se.Long?(t.signaturesSize=se.Long.fromValue(e.signaturesSize)).unsigned=!0:"string"===typeof e.signaturesSize?t.signaturesSize=parseInt(e.signaturesSize,10):"number"===typeof e.signaturesSize?t.signaturesSize=e.signaturesSize:"object"===Object(re["a"])(e.signaturesSize)&&(t.signaturesSize=new se.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0))),null!=e.minorVersion&&(t.minorVersion=e.minorVersion>>>0),e.partitions){if(!Array.isArray(e.partitions))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected");t.partitions=[];for(var n=0;n>>0,e.maxTimestamp.high>>>0).toNumber())),null!=e.dynamicPartitionMetadata){if("object"!==Object(re["a"])(e.dynamicPartitionMetadata))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected");t.dynamicPartitionMetadata=ce.chromeos_update_engine.DynamicPartitionMetadata.fromObject(e.dynamicPartitionMetadata)}if(null!=e.partialUpdate&&(t.partialUpdate=Boolean(e.partialUpdate)),e.apexInfo){if(!Array.isArray(e.apexInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected");t.apexInfo=[];for(var r=0;r>>0,e.signaturesOffset.high>>>0).toNumber(!0):e.signaturesOffset),null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&("number"===typeof e.signaturesSize?n.signaturesSize=t.longs===String?String(e.signaturesSize):e.signaturesSize:n.signaturesSize=t.longs===String?se.Long.prototype.toString.call(e.signaturesSize):t.longs===Number?new se.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0):e.signaturesSize),null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&(n.minorVersion=e.minorVersion),e.partitions&&e.partitions.length){n.partitions=[];for(var o=0;o>>0,e.maxTimestamp.high>>>0).toNumber():e.maxTimestamp),null!=e.dynamicPartitionMetadata&&e.hasOwnProperty("dynamicPartitionMetadata")&&(n.dynamicPartitionMetadata=ce.chromeos_update_engine.DynamicPartitionMetadata.toObject(e.dynamicPartitionMetadata,t)),null!=e.partialUpdate&&e.hasOwnProperty("partialUpdate")&&(n.partialUpdate=e.partialUpdate),e.apexInfo&&e.apexInfo.length){n.apexInfo=[];for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:"";return Object(he["a"])(this,n),e=t.call(this),e.offset=0,e.contentType=r,e.blob=new Blob([],{type:r}),e.prefixLength=0,e}return Object(fe["a"])(n,[{key:"readHeader",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r,a,i,o,s,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return n=0,r=function(e){var r=Ie(t,n,e);return n+=e,r},e.next=4,t.slice(0,ke).arrayBuffer();case 4:if(a=e.sent,i=new TextDecoder,o=a.slice(0,ve.length),s=i.decode(o),s==ve){e.next=10;break}throw new Error("MAGIC is not correct, expected: ".concat(ve," actual: ").concat(s));case 10:return n+=ve.length,e.next=13,r(we);case 13:return c=e.sent,e.next=16,r(xe);case 16:if(l=e.sent,c==Pe){e.next=19;break}throw new Error("Unexpected major version number: ".concat(c));case 19:return e.next=21,r(Se);case 21:u=e.sent,this.header=new Le(s,c,l,u);case 23:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"writeUint8Array",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(Object(pe["a"])(Object(de["a"])(n.prototype),"writeUint8Array",this).call(this,t),this.blob=new Blob([this.blob,t.buffer],{type:this.contentType}),this.offset=this.blob.size,!(this.offset>=ke&&0==this.prefixLength)){e.next=9;break}return console.log("Parsing header!"),e.next=7,this.readHeader(this.blob);case 7:this.prefixLength=ke+this.header.manifest_len+this.header.metadata_signature_len,console.log("Computed metadata length: ".concat(this.prefixLength));case 9:if(!(this.prefixLength>0)){e.next=14;break}if(console.log("".concat(this.offset,"/").concat(this.prefixLength)),!(this.offset>=this.prefixLength)){e.next=14;break}throw this.blob=this.blob.slice(0,this.prefixLength),new Ee;case 14:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getData",value:function(){return this.blob}}]),n}(Oe["Writer"]),Te=function(){function e(t){Object(he["a"])(this,e),t instanceof File?this.zipreader=new Oe["ZipReader"](new Oe["BlobReader"](t)):t instanceof URL?this.zipreader=new Oe["ZipReader"](new Oe["HttpReader"](t.href)):this.zipreader=t.reader}return Object(fe["a"])(e,[{key:"getMetadataLength",value:function(){return ke+this.header.manifest_len+this.header.metadata_signature_len}},{key:"unzip",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a,i,o;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.zipreader.getEntries();case 2:t=e.sent,n=Object(ue["a"])(t),e.prev=4,n.s();case 6:if((r=n.n()).done){e.next=35;break}if(a=r.value,"payload.bin"!=a.filename){e.next=28;break}return i=new Ae(""),e.prev=10,e.next=13,a.getData(i);case 13:e.next=22;break;case 15:if(e.prev=15,e.t0=e["catch"](10),!(e.t0 instanceof Ee)){e.next=20;break}e.next=22;break;case 20:throw console.log(e.t0),e.t0;case 22:return this.buffer=i.getData(),e.next=25,this.readManifest(this.buffer,i.header);case 25:console.log("AB OTA manifest parsed"),e.next=33;break;case 28:if("META-INF/com/android/metadata"!=a.filename){e.next=33;break}return e.next=31,a.getData(new Oe["TextWriter"]);case 31:this.metadata=e.sent,console.log("OTA Package metadata parsed");case 33:e.next=6;break;case 35:e.next=40;break;case 37:e.prev=37,e.t1=e["catch"](4),n.e(e.t1);case 40:return e.prev=40,n.f(),e.finish(40);case 43:if(this.manifest){e.next=57;break}return console.log("Failed to parse AB OTA package, falling back to non-AB"),e.prev=45,o=new ye(this.zipreader),e.next=49,o.init();case 49:o.nonAB=!0,this.manifest=o,e.next=57;break;case 53:return e.prev=53,e.t2=e["catch"](45),alert("Please select a legit OTA package"),e.abrupt("return");case 57:case"end":return e.stop()}}),e,this,[[4,37,40,43],[10,15],[45,53]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"readManifest",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.header=n,r=ke,e.next=4,t.slice(r,r+n.manifest_len).arrayBuffer();case 4:return a=e.sent,r+=n.manifest_len,this.manifest=le.DeltaArchiveManifest.decode(new Uint8Array(a)),e.next=9,t.slice(r,r+n.metadata_signature_len).arrayBuffer();case 9:i=e.sent,r+=n.metadata_signature_len,this.metadata_signature=le.Signatures.decode(new Uint8Array(i)),this.manifest.nonAB=!1;case 13:case"end":return e.stop()}}),e,this)})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"parseMetadata",value:function(){var e,t=Object(ue["a"])(_e);try{for(t.s();!(e=t.n()).done;){var n=e.value,r=new RegExp(n.prefix+".+");this.metadata.match(r)?this[n.key]=Fe(this.metadata.match(r)[0],n.prefix):this[n.key]=""}}catch(a){t.e(a)}finally{t.f()}}},{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.unzip();case 2:this.parseMetadata();case 3:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}]),e}(),Be=function(e){Object(ge["a"])(n,e);var t=Object(be["a"])(n);function n(){return Object(he["a"])(this,n),t.apply(this,arguments)}return Object(fe["a"])(n,[{key:"getWithDefault",value:function(e){return this.has(e)?this.get(e):e}}]),n}(Object(me["a"])(Map)),Ne=Object(fe["a"])((function e(){Object(he["a"])(this,e);var t=le.InstallOperation.Type;this.mapType=new Be;for(var n=0,r=Object.keys(t);n1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:16,r="",a=0;a3&&void 0!==arguments[3]?arguments[3]:15;Object(he["a"])(this,e),this.statisticData=t,this.trimmedData=Qe(t,a),this.title=n,this.unit=r,this.maximumEntries=a}return Object(fe["a"])(e,[{key:"listData",value:function(){var e,t="",n=Object(ue["a"])(this.statisticData);try{for(n.s();!(e=n.n()).done;){var r=Object(Ye["a"])(e.value,2),a=r[0],i=r[1];t+=a+" : "+i.toString()+" Blocks\n"}}catch(o){n.e(o)}finally{n.f()}return t}},{key:"getEchartsOption",value:function(){var e={};return e.title={text:this.title,left:"center"},e.tooltip={trigger:"item",formatter:"{a}
{b} : {c} "+this.unit+" ({d}%)"},e.legend={orient:"horizontal",left:"top",top:"10%",data:Array.from(this.trimmedData.keys())},e.series=[{name:this.title,type:"pie",radius:"55%",center:["50%","60%"],data:Array.from(this.trimmedData).map((function(e){return{value:e[1],name:e[0]}})),emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],e}}]),e}();function Qe(e,t){if(e.size<=t)return e;for(var n=new Map,r=0;ri&&(i=u,o=l)}}catch(m){s.e(m)}finally{s.f()}n.set(o,i)}var p,d=0,f=Object(ue["a"])(e);try{for(f.s();!(p=f.n()).done;){var h=Object(Ye["a"])(p.value,2),g=h[0],b=h[1];n.get(g)||(d+=b)}}catch(m){f.e(m)}finally{f.f()}return n.set("other",d),n}var et=function(){function e(t){Object(he["a"])(this,e),t instanceof File?this.build=new Oe["ZipReader"](new Oe["BlobReader"](t)):this.build=new Oe["ZipReader"](new Oe["HttpReader"](t.href)),this.mapFiles=new Map,this.maps=new Map}return Object(fe["a"])(e,[{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a=this;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.build.getEntries();case 2:t=e.sent,n=/IMAGES\/[a-z_]*\.map/g,r=/[\w_]+(?=\.map)/g,t.forEach((function(e){e.filename.match(n)&&a.mapFiles.set(e.filename.match(r)[0],e)}));case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"add",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,c,l,u,p,d,f,h,g;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:for(r=[],a=/\d+/g,i=/\d+\-\d+/g,o=0;o");if(!this.mapFiles.get(t)){e.next=14;break}return e.next=7,this.mapFiles.get(t).getData(new Oe["TextWriter"]);case 7:s=e.sent,c=s.split("\n"),l=Object(ue["a"])(c);try{for(l.s();!(u=l.n()).done;)for(p=u.value,d=p.split(" "),f=1;f2&&void 0!==s[2]?s[2]:4096,a=s.length>3&&void 0!==s[3]?s[3]:null,e.t0=t,e.next="blocks"===e.t0?5:"payload"===e.t0?8:"COWmerge"===e.t0?11:"filenames"===e.t0?14:"extensions"===e.t0?21:28;break;case 5:return i=at(n),o=new Ke(i,"Operated blocks in target build","blocks"),e.abrupt("break",28);case 8:return i=ot(n),o=new Ke(i,"Payload disk usage","bytes"),e.abrupt("break",28);case 11:return i=it(n,r),o=new Ke(i,"COW merge operations","blocks"),e.abrupt("break",28);case 14:if(null!=a){e.next=16;break}throw new Error("Target file is required for filenames analysis");case 16:return e.next=18,lt(n,r,a);case 18:return i=e.sent,o=new Ke(i,"Size of operated filenames","bytes"),e.abrupt("break",28);case 21:if(null!=a){e.next=23;break}throw new Error("Target file is required for filenames analysis");case 23:return e.next=25,st(n,r,a);case 25:return i=e.sent,o=new Ke(i,"Size of operated extensions","bytes"),e.abrupt("break",28);case 28:if(!o){e.next=32;break}return e.abrupt("return",o);case 32:throw"Please double check if this is a proper AB OTA package.";case 33:case"end":return e.stop()}}),e)}))),dt.apply(this,arguments)}function ft(e){if(!e)return 0;var t=function(e,t){return e+t.numBlocks};return e.reduce(t,0)}function ht(e){var t=function(e,t){return e+"("+t.startBlock+","+t.numBlocks+")"};return e.reduce(t,"")}function gt(e,t,n){for(var r=ft(t),a=new Map,i=0;i1?t[t.length-1]:"unknown"===t[0]?"unknown":"<"==e[0]&&e.endsWith(">")?e:"no-extension"}var mt=Object(r["m"])({props:{operation:{type:Object,required:!0},mapType:{type:Be,required:!0}},data:function(){return{srcTotalBlocks:0,srcBlocks:"",dstTotalBlocks:0,dstBlocks:""}},mounted:function(){this.operation.srcExtents&&(this.srcTotalBlocks=ft(this.operation.srcExtents),this.srcBlocks=ht(this.operation.srcExtents)),this.operation.dstExtents&&(this.dstTotalBlocks=ft(this.operation.dstExtents),this.dstBlocks=ht(this.operation.dstExtents))}});n("8edb");mt.render=$e,mt.__scopeId="data-v-44174082";var Ot=mt,yt=Object(r["m"])({components:{OperationDetail:Ot},props:{partition:{type:le.PartitionUpdate,required:!0},dynamicPartitionList:{type:Array,required:!0}},data:function(){return{showOPs:!1,showInfo:!1,opType:new Ne}},methods:{toggle:function(e){this[e]=!this[e]},octToHex:De},computed:{readableTimestamp:function(){var e=parseInt(this.partition.version);return isNaN(e)?"":new Date(1e3*e).toString()},isDynamicPartition:function(){return this.dynamicPartitionList.indexOf(this.partition.partitionName)>=0}}});n("edc2");yt.render=ne,yt.__scopeId="data-v-6dba348a";var jt=yt,vt=(n("498a"),Object(r["Z"])("data-v-7df356bf"));Object(r["D"])("data-v-7df356bf");var wt=Object(r["l"])("h3",null,"Basic infos",-1),xt={class:"align"},St=Object(r["l"])("strong",null," File name ",-1),kt=Object(r["l"])("strong",null," File size ",-1),Pt={class:"align"},_t={class:"wrap"},Et={key:2},Lt={class:"align"},It=Object(r["l"])("strong",null," Incremental ",-1),zt={key:0},At={key:1},Tt=Object(r["l"])("strong",null," Partial ",-1),Bt={key:0},Nt={key:1},Ct=Object(r["l"])("strong",null," A/B update ",-1),Dt={key:0},Ft={key:1},Rt=Object(r["l"])("strong",null," VAB ",-1),Mt={key:0},Ut={key:1},Ht=Object(r["l"])("strong",null," VABC ",-1),Vt={key:0},Wt={key:1},Zt={key:0},Jt=Object(r["l"])("strong",null," Total Dynamic Partition Size ",-1),Xt={key:1},qt=Object(r["l"])("strong",null," Total VABC COW Size ",-1),Gt={key:2},$t=Object(r["l"])("strong",null," VABC Compression Param ",-1),Yt={key:3},Kt=Object(r["l"])("strong",null," Security Patch Level ",-1);Object(r["B"])();var Qt=vt((function(e,t,n,a,i,o){return Object(r["A"])(),Object(r["i"])(r["a"],null,[wt,e.zipFile?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:0},e.$attrs),[Object(r["l"])("ul",xt,[Object(r["l"])("li",null,[St,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileName()),1)]),Object(r["l"])("li",null,[kt,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileSize())+" Bytes",1)])])],16)):Object(r["j"])("",!0),e.payload&&e.payload.metadata?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:1},e.$attrs),[Object(r["l"])("ul",Pt,[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.otaMetadata,(function(t){return Object(r["A"])(),Object(r["i"])("li",{key:t.name},[Object(r["l"])("strong",null,Object(r["N"])(t.name.trim()+" "),1),Object(r["l"])("p",_t,Object(r["N"])(String(e.payload[t.key]).trim()),1)])})),128))])],16)):Object(r["j"])("",!0),e.payload&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])("div",Et,[Object(r["l"])("ul",Lt,[Object(r["l"])("li",null,[It,e.payload.preBuild?(Object(r["A"])(),Object(r["i"])("span",zt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",At," ❌ "))]),Object(r["l"])("li",null,[Tt,e.payload.manifest.partialUpdate?(Object(r["A"])(),Object(r["i"])("span",Bt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Nt," ❌ "))]),Object(r["l"])("li",null,[Ct,e.payload.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",Ft," ❌ ")):(Object(r["A"])(),Object(r["i"])("span",Dt," ✅ "))]),Object(r["l"])("li",null,[Rt,e.payload.manifest.dynamicPartitionMetadata.snapshotEnabled?(Object(r["A"])(),Object(r["i"])("span",Mt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Ut," ❌ "))]),Object(r["l"])("li",null,[Ht,e.payload.manifest.dynamicPartitionMetadata.vabcEnabled?(Object(r["A"])(),Object(r["i"])("span",Vt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Wt," ❌ "))]),e.totalDynamicPartitionSize?(Object(r["A"])(),Object(r["i"])("li",Zt,[Jt,Object(r["k"])(" "+Object(r["N"])(e.totalDynamicPartitionSize),1)])):Object(r["j"])("",!0),e.totalCOWSize?(Object(r["A"])(),Object(r["i"])("li",Xt,[qt,Object(r["k"])(" "+Object(r["N"])(e.totalCOWSize),1)])):Object(r["j"])("",!0),e.vabcCompressionParam?(Object(r["A"])(),Object(r["i"])("li",Gt,[$t,Object(r["k"])(" "+Object(r["N"])(e.totalCOWSize),1)])):Object(r["j"])("",!0),e.securityPatchLevel?(Object(r["A"])(),Object(r["i"])("li",Yt,[Kt,Object(r["k"])(" "+Object(r["N"])(e.securityPatchLevel),1)])):Object(r["j"])("",!0)])])):Object(r["j"])("",!0)],64)})),en=(n("4de4"),n("6062"),n("2ca0"),function(){function e(t){Object(he["a"])(this,e),this.file=t,this.reader=rn(t)}return Object(fe["a"])(e,[{key:"getFileName",value:function(){return an(this.file)}},{key:"getFileSize",value:function(){return this.file instanceof File?this.file.size:0}}]),e}());function tn(e,t){return nn.apply(this,arguments)}function nn(){return nn=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return r=t,a=new Oe["ZipWriter"](new Oe["BlobWriter"]("application/zip")),e.next=4,r.getEntries();case 4:i=e.sent,o=Object(ue["a"])(i.filter((function(e){return!!e&&n(e)}))),e.prev=6,o.s();case 8:if((s=o.n()).done){e.next=18;break}return c=s.value,l=new Oe["BlobWriter"],e.next=13,c.getData(l);case 13:u=e.sent,console.log("Adding ".concat(c.filename,", ").concat(u.size)),a.add(c.filename,new Oe["BlobReader"](l.getData()),{level:0});case 16:e.next=8;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e["catch"](6),o.e(e.t0);case 23:return e.prev=23,o.f(),e.finish(23);case 26:return e.abrupt("return",a);case 27:case"end":return e.stop()}}),e,null,[[6,20,23,26]])}))),nn.apply(this,arguments)}function rn(e){return e instanceof File?new Oe["ZipReader"](new Oe["BlobReader"](e)):new Oe["ZipReader"](new Oe["HttpReader"](e.href))}function an(e){return e instanceof File?e.name:e.pathname}function on(e){return sn.apply(this,arguments)}function sn(){return sn=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,tn(rn(t),(function(e){return e.filename.startsWith("META/")||e.filename.endsWith(".map")}));case 2:return n=e.sent,e.next=5,n.close();case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)}))),sn.apply(this,arguments)}function cn(e){return ln.apply(this,arguments)}function ln(){return ln=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,tn(t.zipreader,(function(e){return"payload.bin"!=e.filename}));case 2:return n=e.sent,e.next=5,n.add("payload.bin",new Oe["BlobReader"](t.buffer.slice(0,t.getMetadataLength())),{level:0});case 5:return e.next=7,n.close();case 7:return r=e.sent,e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)}))),ln.apply(this,arguments)}function un(e,t,n){var r=window.URL.createObjectURL(e);t.href=r,t.download=n,t.click(),window.URL.revokeObjectURL(r)}function pn(e,t){return e.endsWith(t)?e:e+t}var dn=Object(r["m"])({props:{zipFile:{type:en,required:!0},payload:{type:Te,required:!0}},data:function(){return{MetadataFormat:_e}},computed:{otaMetadata:function(){var e=this;return _e.filter((function(t){return String(e.payload[t.key]).length>0}))},totalCOWSize:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.partitions.map((function(e){return e.estimateCowSize||0}));return n?n.reduce((function(e,t){return e+t})):0},vabcCompressionParam:function(){var e,t,n;return(null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.vabcCompressionParam)||""},securityPatchLevel:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.securityPatchLevel;return n||""},totalDynamicPartitionSize:function(){var e,t,n,r,a=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.groups;if(!a)return 0;var i=new Set(a.flatMap((function(e){return e.partitionNames}))),o=(null===(r=this.payload.manifest)||void 0===r?void 0:r.partitions.filter((function(e){return i.has(e.partitionName)})))||[];return o.length<=0?0:o.map((function(e){var t;return(null===(t=e.newPartitionInfo)||void 0===t?void 0:t.size)||0})).reduce((function(e,t){return e+t}))}}});n("ceb1");dn.render=Qt,dn.__scopeId="data-v-7df356bf";var fn=dn,hn=Object(r["m"])({components:{PartitionDetail:jt,BasicInfo:fn},props:{zipFile:{type:en,default:null},payload:{type:Te,default:null}},methods:{octToHex:De,exportOTAPackage:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,cn(e.payload);case 2:n=t.sent,r=e.$refs["download"],un(n,r,"trimmed_"+pn(e.zipFile.getFileName(),".zip"));case 5:case"end":return t.stop()}}),t)})))()}},computed:{dynamicPartitions:function(){var e,t,n;return(null===(e=this.payload.manifest)||void 0===e||null===(t=e.dynamicPartitionMetadata)||void 0===t||null===(n=t.groups)||void 0===n?void 0:n.flatMap((function(e){return e.partitionNames||[]})))||[]}}});n("dc41");hn.render=A,hn.__scopeId="data-v-05db67f2";var gn=hn,bn=Object(r["Z"])("data-v-44b569bd");Object(r["D"])("data-v-44b569bd");var mn=Object(r["k"])("Export Target File Metadata"),On={ref:"download"},yn={key:1},jn=Object(r["k"])(" Analyse Installed Blocks (in target build) "),vn=Object(r["k"])(" Analyse Payload Composition "),wn=Object(r["k"])(" Analyse COW Merge Operations "),xn={key:0,class:"tooltiptext"},Sn=Object(r["k"])(" Analyse Filenames "),kn=Object(r["k"])(" Analyse File Extensions ");Object(r["B"])();var Pn=bn((function(e,t,n,a,i,o){var s=Object(r["I"])("v-btn"),c=Object(r["I"])("PartialCheckbox"),l=Object(r["I"])("PieChart"),u=Object(r["I"])("v-divider"),p=Object(r["I"])("v-col"),d=Object(r["I"])("v-row"),f=Object(r["I"])("BaseFile");return Object(r["A"])(),Object(r["i"])(r["a"],null,[e.targetFile?(Object(r["A"])(),Object(r["i"])(s,{key:0,block:"",class:"md-6",onClick:e.exportTargetFileMetadata},{default:bn((function(){return[mn]})),_:1},8,["onClick"])):Object(r["j"])("",!0),Object(r["l"])("a",On,null,512),Object(r["l"])(c,{modelValue:e.partitionInclude,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.partitionInclude=t}),labels:e.updatePartitions},null,8,["modelValue","labels"]),e.echartsData?(Object(r["A"])(),Object(r["i"])("div",yn,[Object(r["l"])(l,{echartsData:e.echartsData,onClick:e.piechartClick},null,8,["echartsData","onClick"])])):Object(r["j"])("",!0),Object(r["l"])(u),Object(r["l"])(d,null,{default:bn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"},{default:bn((function(){return[Object(r["l"])(s,{block:"",onClick:t[2]||(t[2]=function(t){return e.updateChart("blocks")})},{default:bn((function(){return[jn]})),_:1})]})),_:1}),Object(r["l"])(p,{cols:"12",md:"6"},{default:bn((function(){return[Object(r["l"])(s,{block:"",onClick:t[3]||(t[3]=function(t){return e.updateChart("payload")})},{default:bn((function(){return[vn]})),_:1})]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:bn((function(){return[Object(r["l"])(p,{cols:"12",md:"6",class:"tooltip"},{default:bn((function(){return[Object(r["l"])(s,{disabled:e.manifest.nonAB||!e.manifest.dynamicPartitionMetadata.vabcEnabled,title:"Only available for VABC update",block:"",onClick:t[4]||(t[4]=function(t){return e.updateChart("COWmerge")})},{default:bn((function(){return[wn]})),_:1},8,["disabled"]),e.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",xn," This function is only supported in A/B OTA ")):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(p,{cols:"12",md:"6"},{default:bn((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[5]||(t[5]=function(t){return e.updateChart("filenames")})},{default:bn((function(){return[Sn]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:bn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"},{default:bn((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[6]||(t[6]=function(t){return e.updateChart("extensions")})},{default:bn((function(){return[kn]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:bn((function(){return[Object(r["l"])(p,{cols:"12",md:"6"}),Object(r["l"])(p,{cols:"12",md:"6"},{default:bn((function(){return[e.demo?Object(r["j"])("",!0):(Object(r["A"])(),Object(r["i"])(f,{key:0,label:"Drag and drop or Select The target Android build",onFileSelect:e.selectBuild},null,8,["onFileSelect"]))]})),_:1})]})),_:1})],64)})),_n=n("bc3a"),En=n.n(_n),Ln=Object(r["Z"])("data-v-533f2336");Object(r["D"])("data-v-533f2336");var In={key:0};Object(r["B"])();var zn=Ln((function(e,t,n,a,i,o){var s=Object(r["I"])("v-btn"),c=Object(r["I"])("v-col"),l=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(r["a"],null,[Object(r["l"])(s,{block:"",type:"button",class:"my-5",onClick:e.revertAllSelection},{default:Ln((function(){return[Object(r["k"])(Object(r["N"])(e.selectAllText[e.selectAll]),1)]})),_:1},8,["onClick"]),Object(r["l"])(l,{class:"mb-5"},{default:Ln((function(){return[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.labels,(function(n){return Object(r["A"])(),Object(r["i"])(c,{key:n,cols:"12",md:"4"},{default:Ln((function(){return[Object(r["l"])("input",{type:"checkbox",value:n,checked:e.modelValue.get(n),onChange:t[1]||(t[1]=function(t){return e.updateSelected(t.target.value)})},null,40,["value","checked"]),n?(Object(r["A"])(),Object(r["i"])("label",In,Object(r["N"])(n),1)):Object(r["j"])("",!0)]})),_:2},1024)})),128))]})),_:1})],64)})),An=Object(r["m"])({props:{labels:{type:Array,default:new Array},modelValue:{type:Map,default:new Map}},data:function(){return{selectAll:1,selectAllText:["Select All","Unselect All"]}},mounted:function(){var e,t=Object(ue["a"])(this.labels);try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,!0)}}catch(r){t.e(r)}finally{t.f()}},methods:{updateSelected:function(e){this.modelValue.set(e,!this.modelValue.get(e)),this.$emit("update:modelValue",this.modelValue)},revertAllSelection:function(){this.selectAll=1-this.selectAll;var e,t=Object(ue["a"])(this.modelValue.keys());try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,Boolean(this.selectAll))}}catch(r){t.e(r)}finally{t.f()}}}});n("a75a");An.render=zn,An.__scopeId="data-v-533f2336";var Tn=An,Bn=n("2909"),Nn="undefined"===typeof arguments?void 0:arguments,Cn=Object(r["Z"])("data-v-5d1cb486"),Dn=Cn((function(e,t,n,a,i,o){var s=Object(r["I"])("v-chart");return Object(r["A"])(),Object(r["i"])(s,{class:"chart",option:o.getEchartsOption,onClick:t[1]||(t[1]=function(t){return e.$emit.apply(e,["click"].concat(Object(Bn["a"])(Nn)))})},null,8,["option"])})),Fn=n("ade3"),Rn=n("22b4"),Mn=n("f95e"),Un=n("49bb"),Hn=n("9394"),Vn=n("2da7"),Wn=n("ff32"),Zn=n("5c7f");Object(Rn["a"])([Mn["a"],Un["a"],Hn["a"],Vn["a"],Wn["a"]]);var Jn={components:{VChart:Zn["b"]},provide:Object(Fn["a"])({},Zn["a"],"dark"),props:{echartsData:{type:Ke,required:!0}},computed:{getEchartsOption:function(){return this.echartsData.getEchartsOption()}}};n("47e0");Jn.render=Dn,Jn.__scopeId="data-v-5d1cb486";var Xn=Jn,qn=Object(r["m"])({components:{PartialCheckbox:Tn,PieChart:Xn,BaseFile:x},props:{manifest:{type:le.DeltaArchiveManifest,default:function(){return[]}},demo:{type:Boolean,default:!1}},data:function(){return{partitionInclude:new Map,echartsData:null,listData:"",targetFile:null}},computed:{updatePartitions:function(){return this.manifest.partitions.map((function(e){return e.partitionName}))}},mounted:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(!e.demo){t.next=11;break}return t.prev=1,t.next=4,En.a.get("./files/cf_x86_target_file_demo.zip",{responseType:"blob"});case 4:n=t.sent,e.targetFile=new File([n.data],"target_demo.zip"),t.next=11;break;case 8:t.prev=8,t.t0=t["catch"](1),console.log("Please put a proper example target file in /public/files/");case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))()},methods:{piechartClick:function(e){console.log(e)},updateChart:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return r=t.manifest.partitions.filter((function(e){return t.partitionInclude.get(e.partitionName)})),n.prev=1,n.next=4,pt(e,r,t.manifest.blockSize,t.targetFile);case 4:t.echartsData=n.sent,n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Cannot be processed for the following issue: ".concat(n.t0));case 10:case"end":return n.stop()}}),n,null,[[1,7]])})))()},selectBuild:function(e){this.targetFile=e},exportTargetFileMetadata:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,on(e.targetFile);case 2:n=t.sent,r=e.$refs["download"],un(n,r,"trimmed_"+pn(an(e.targetFile),".zip"));case 5:case"end":return t.stop()}}),t)})))()}}});n("4b95");qn.render=Pn,qn.__scopeId="data-v-44b569bd";var Gn=qn,$n=Object(r["m"])({components:{BaseFile:x,PayloadDetail:gn,PayloadComposition:Gn},data:function(){return{zipFile:null,payload:null}},methods:{unpackOTA:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return t.zipFile=new en(e),n.prev=1,t.payload=new Te(t.zipFile),n.next=5,t.payload.init();case 5:n.next=11;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Please check if this is a correct OTA package (.zip). ".concat(n.t0)),console.log(n.t0);case 11:case"end":return n.stop()}}),n,null,[[1,7]])})))()}}});$n.render=h;var Yn=$n;function Kn(e,t,n,a,i,o){var s=Object(r["I"])("PayloadDetail"),c=Object(r["I"])("v-col"),l=Object(r["I"])("v-divider"),u=Object(r["I"])("PayloadComposition"),p=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(p,null,{default:Object(r["X"])((function(){return[Object(r["l"])(c,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload?(Object(r["A"])(),Object(r["i"])(s,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(l,{vertical:""}),Object(r["l"])(c,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])(u,{key:0,manifest:e.payload.manifest,demo:!0},null,8,["manifest"])):Object(r["j"])("",!0)]})),_:1})]})),_:1})}var Qn=Object(r["m"])({components:{PayloadDetail:gn,PayloadComposition:Gn},data:function(){return{zipFile:null,payload:null}},created:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,En.a.get("./files/cf_x86_demo.zip",{responseType:"blob"});case 3:return n=t.sent,e.zipFile=new en(new File([n.data],"ota_demo.zip")),e.payload=new Te(e.zipFile),t.next=8,e.payload.init();case 8:t.next=13;break;case 10:t.prev=10,t.t0=t["catch"](0),console.log("Please put a proper example OTA in /public/files/");case 13:case"end":return t.stop()}}),t,null,[[0,10]])})))()}});Qn.render=Kn;var er=Qn,tr={class:"about"},nr=Object(r["l"])("p",null,"A web based tool to inspect Android OTA packages.",-1);function rr(e,t){return Object(r["A"])(),Object(r["i"])("div",tr,[nr])}const ar={};ar.render=rr;var ir=ar,or=Object(r["Z"])("data-v-50c6f348");Object(r["D"])("data-v-50c6f348");var sr=Object(r["l"])("h1",null,"Not Found!",-1),cr=Object(r["l"])("p",null,[Object(r["l"])("a",{href:"/"},"Go home?")],-1);Object(r["B"])();var lr=or((function(e,t){var n=Object(r["I"])("center");return Object(r["A"])(),Object(r["i"])(n,null,{default:or((function(){return[sr,cr]})),_:1})}));n("8e71");const ur={};ur.render=lr,ur.__scopeId="data-v-50c6f348";var pr=ur,dr=[{path:"/",name:"Analysis",component:Yn,meta:{title:"Analyse OTA package - from AOSP"}},{path:"/demo",name:"Demo",component:er},{path:"/about",name:"About",component:ir},{path:"/:catchAll(.*)",name:"Not Found",component:pr}],fr=Object(d["a"])({history:Object(d["b"])("/analyseOTA/"),routes:dr});fr.beforeEach((function(e,t,n){var r=e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.title})),a=(e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})),t.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})));r?document.title=r.meta.title:a&&(document.title=a.meta.title),Array.from(document.querySelectorAll("[data-vue-router-controlled]")).map((function(e){return e.parentNode.removeChild(e)})),n()}));var hr=fr,gr=n("5502"),br=Object(gr["a"])({state:{},mutations:{},actions:{},modules:{}}),mr=Object(r["h"])(p);mr.use(hr),mr.use(br),mr.use(s),mr.mount("#app")},ceb1:function(e,t,n){"use strict";n("54ab")},d978:function(e,t,n){},dc41:function(e,t,n){"use strict";n("027d")},edc2:function(e,t,n){"use strict";n("c021")}}); +//# sourceMappingURL=app.cd26fbce.js.map \ No newline at end of file diff --git a/analyseOTA/js/app.cd26fbce.js.map b/analyseOTA/js/app.cd26fbce.js.map new file mode 100644 index 0000000..d9006ce --- /dev/null +++ b/analyseOTA/js/app.cd26fbce.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?1825","webpack:///./src/components/PieChart.vue?3f25","webpack:///./src/components/BaseFile.vue?5b74","webpack:///./src/components/PayloadComposition.vue?8d59","webpack:///./src/views/NotFound.vue?18b8","webpack:///./src/components/OperationDetail.vue?7823","webpack:///./src/components/PartialCheckbox.vue?cce7","webpack:///./src/plugins/vuetify.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?6697","webpack:///./src/views/PackageAnalysis.vue","webpack:///./src/components/BaseFile.vue","webpack:///./src/components/BaseFile.vue?5af0","webpack:///./src/components/BaseFile.vue?408d","webpack:///./src/components/PayloadDetail.vue","webpack:///./src/components/PartitionDetail.vue","webpack:///./src/services/update_metadata_pb.js","webpack:///./src/services/payload_nonab.ts","webpack:///./src/services/payload.ts","webpack:///./src/components/OperationDetail.vue","webpack:///./src/services/echarts_data.ts","webpack:///./src/services/map_parser.ts","webpack:///./src/services/payload_composition.ts","webpack:///./src/components/OperationDetail.vue?0239","webpack:///./src/components/OperationDetail.vue?19cd","webpack:///./src/components/PartitionDetail.vue?7d27","webpack:///./src/components/PartitionDetail.vue?b40d","webpack:///./src/components/BasicInfo.vue","webpack:///./src/services/trim_zip.ts","webpack:///./src/components/BasicInfo.vue?bb39","webpack:///./src/components/BasicInfo.vue?e053","webpack:///./src/components/PayloadDetail.vue?cdd8","webpack:///./src/components/PayloadDetail.vue?a20c","webpack:///./src/components/PayloadComposition.vue","webpack:///./src/components/PartialCheckbox.vue","webpack:///./src/components/PartialCheckbox.vue?fbe3","webpack:///./src/components/PartialCheckbox.vue?59db","webpack:///./src/components/PieChart.vue","webpack:///./src/components/PieChart.vue?1278","webpack:///./src/components/PayloadComposition.vue?3e04","webpack:///./src/components/PayloadComposition.vue?d59c","webpack:///./src/views/PackageAnalysis.vue?3fdf","webpack:///./src/views/PackageAnalysis.vue?2d24","webpack:///./src/views/Demo.vue","webpack:///./src/views/Demo.vue?9616","webpack:///./src/views/Demo.vue?e633","webpack:///./src/views/About.vue","webpack:///./src/views/About.vue?aa81","webpack:///./src/views/NotFound.vue","webpack:///./src/views/NotFound.vue?2812","webpack:///./src/router/index.ts","webpack:///./src/store/index.ts","webpack:///./src/main.ts","webpack:///./src/components/BasicInfo.vue?f05c","webpack:///./src/components/PayloadDetail.vue?0b74","webpack:///./src/components/PartitionDetail.vue?3d89"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","components","directives","theme","defaultTheme","rounded","color","links","link","to","class","fluid","render","style","cols","md","label","unpackOTA","zipFile","payload","vertical","manifest","dragover","dragleave","drop","fileName","ref","type","accept","handleFileChange","placeholder","url","urlKeyup","props","String","default","emits","computed","parsedURL","URL","this","methods","event","currentTarget","target","files","selectedFile","$emit","preventDefault","classList","contains","add","remove","dataTransfer","console","log","error","__scopeId","exportOTAPackage","partitions","partition","partitionName","elevation","hover","shaped","dynamicPartitionList","dynamicPartitions","metadata_signature","nonAB","octToHex","signatures","oldPartitionInfo","isDynamicPartition","estimateCowSize","postinstallPath","toggle","showInfo","size","hash","newPartitionInfo","version","readableTimestamp","showOPs","operations","operation","dataSha256Hash","mapType","opType","$Reader","$protobuf","$Writer","$util","$root","chromeos_update_engine","Extent","properties","keys","startBlock","Long","fromBits","numBlocks","encode","message","writer","uint32","uint64","encodeDelimited","ldelim","decode","reader","end","undefined","len","pos","tag","skipType","decodeDelimited","verify","isInteger","low","high","fromObject","fromValue","unsigned","parseInt","LongBits","toNumber","toObject","options","defaults","long","longs","toString","Number","toJSON","constructor","toJSONOptions","Signatures","emptyArray","Signature","fork","Array","isArray","TypeError","arrays","newBuffer","unpaddedSignatureSize","bytes","fixed32","isString","base64","PartitionInfo","InstallOperation","srcExtents","dstExtents","dataOffset","dataLength","srcLength","dstLength","srcSha256Hash","int32","ProtocolError","instance","enums","Type","valuesById","values","CowMergeOperation","srcExtent","dstExtent","srcOffset","PartitionUpdate","newPartitionSignature","mergeOperations","runPostinstall","filesystemType","postinstallOptional","hashTreeDataExtent","hashTreeExtent","hashTreeAlgorithm","hashTreeSalt","fecDataExtent","fecExtent","fecRoots","string","bool","Boolean","DynamicPartitionGroup","partitionNames","DynamicPartitionMetadata","groups","snapshotEnabled","vabcEnabled","vabcCompressionParam","cowVersion","ApexInfo","packageName","isCompressed","decompressedSize","int64","ApexMetadata","apexInfo","DeltaArchiveManifest","blockSize","signaturesOffset","signaturesSize","minorVersion","maxTimestamp","dynamicPartitionMetadata","partialUpdate","securityPatchLevel","packedFile","Blocksize","regexName","getEntries","entries","entry","filename","match","newPartition","getData","rawText","parseTransferList","lines","split","totalBlocks","entryStashed","maxStashed","Uint8Array","sizeNewData","newDataSize","line","op","elements","reduce","parseRange","RegExp","uncompressedSize","extents","rangeset","regexRange","extent","_MAGIC","_VERSION_SIZE","_MANIFEST_LEN_SIZE","_METADATA_SIGNATURE_LEN_SIZE","_PAYLOAD_HEADER_SIZE","_BRILLO_MAJOR_PAYLOAD_VERSION","MetadataFormat","prefix","Error","magic","manifest_len","metadata_signature_len","readIntAt","buffer","position","DataView","arrayBuffer","view","getBigUint64","offset","a","BigInt","getUint32","b","bigNumber","getUint16","contentType","blob","Blob","prefixLength","cursor","readInt","ret","decoder","TextDecoder","magicBytes","header_version","header","array","readHeader","file","File","zipreader","href","readManifest","metadata","init","alert","manifestBlob","signatureBlob","formatter","regex","trimEntry","unzip","parseMetadata","has","Map","types","set","bufferArray","space","maxLine","hex_table","hex","toUpperCase","getWithDefault","srcTotalBlocks","srcBlocks","dstTotalBlocks","dstBlocks","statisticData","title","unit","maximumEntries","trimmedData","trimMap","table","option","text","left","tooltip","trigger","legend","orient","top","from","series","radius","center","map","pair","emphasis","itemStyle","shadowBlur","shadowOffsetX","shadowColor","new_map","curr","currKey","restTotal","targetFile","build","mapFiles","maps","regexPath","forEach","totalLength","regexNumber","mapText","fileEntries","right","InsertMap","names","ext","queryMap","addNumberToMap","operatedBlockStatistics","operatedBlocks","operationType","mergeOperationStatistics","Math","ceil","operatedPayloadStatistics","operatedFileExtensionsStatistics","operatedFilenamesStatistics","filenameStats","fileExtenstionStats","name2Extension","operatedFilenames","buildMap","operatedFileNames","query","extentDataLength","distributeFilenames","analysePartitions","metrics","statisticsData","echartsData","exts","accumulator","total","displayBlocks","filenames","distributedLengths","round","endsWith","required","mounted","OperationDetail","unixTimestamp","isNaN","Date","indexOf","$attrs","getFileName","getFileSize","otaMetadata","trim","preBuild","totalDynamicPartitionSize","totalCOWSize","getZipReader","trimZip","zip","filter","blobWriter","level","pathname","trimTargetFiles","startsWith","close","trimOTAPackage","getMetadataLength","downloadFile","downloadNode","createObjectURL","download","click","revokeObjectURL","ensureSuffix","str","suffix","cowSizes","spl","dynamicPartitionNamess","Set","flatMap","g","acc","cur","PartitionDetail","BasicInfo","$refs","block","exportTargetFileMetadata","partitionInclude","labels","updatePartitions","piechartClick","updateChart","disabled","demo","selectBuild","revertAllSelection","selectAllText","selectAll","checked","modelValue","updateSelected","$event","newSelect","getEchartsOption","VChart","provide","PartialCheckbox","PieChart","BaseFile","listData","responseType","param","partitionSelected","PayloadDetail","PayloadComposition","created","script","routes","path","component","PackageAnalysis","meta","Demo","About","NotFound","router","history","beforeEach","next","nearestWithTitle","matched","reverse","find","previousNearestWithMeta","metaTags","document","querySelectorAll","el","parentNode","removeChild","state","mutations","actions","app","App","use","store","vuetify","mount"],"mappings":"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","file":"js/app.cd26fbce.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/analyseOTA/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadComposition.vue?vue&type=style&index=0&id=44b569bd&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport 'vuetify/lib/styles/main.sass'\nimport { createVuetify } from 'vuetify'\nimport * as components from 'vuetify/lib/components'\nimport * as directives from 'vuetify/lib/directives'\n\nexport default createVuetify({\n components,\n directives,\n theme: {\n defaultTheme: 'dark'\n }\n})\n","\n\n\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=ee415730\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n label: {\n type: String,\n default: ''\n }\n },\n emits: {\n 'file-select': null\n },\n data() {\n return {\n fileName: '',\n url: ''\n }\n },\n computed: {\n parsedURL(): URL | null {\n try {\n return new URL(this.url)\n } catch {\n return null\n }\n }\n },\n\n methods: {\n handleFileChange(event: any) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (target.files == null || target.files.length < 1) {\n return\n }\n const selectedFile = target.files![0]\n this.$emit('file-select', selectedFile)\n // If user selects a file, clear the URL component\n this.url = ''\n this.fileName = target.files![0].name\n },\n dragover(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!target.classList.contains('file-hover')) {\n target.classList.add('file-hover')\n }\n },\n dragleave(event: DragEvent) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n target.classList.remove('file-hover')\n },\n drop(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!event.dataTransfer || event.dataTransfer.files.length == 0) {\n return\n }\n target.files = event.dataTransfer.files\n this.handleFileChange(event)\n target.classList.remove('file-hover')\n },\n urlKeyup(event: KeyboardEvent) {\n console.log(this.url)\n if (event.key == 'Enter') {\n const target = event.target as HTMLInputElement\n if (this.parsedURL == null) {\n console.error(`${target.value} is an invalid URL`)\n return\n }\n this.$emit('file-select', this.parsedURL)\n }\n }\n }\n})\n","import { render } from \"./BaseFile.vue?vue&type=template&id=0630c5ec&scoped=true\"\nimport script from \"./BaseFile.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseFile.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-0630c5ec\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\nimport * as $protobuf from \"protobufjs/minimal\";\n\n// Common aliases\nconst $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nconst $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\nexport const chromeos_update_engine = $root.chromeos_update_engine = (() => {\n\n /**\n * Namespace chromeos_update_engine.\n * @exports chromeos_update_engine\n * @namespace\n */\n const chromeos_update_engine = {};\n\n chromeos_update_engine.Extent = (function() {\n\n /**\n * Properties of an Extent.\n * @memberof chromeos_update_engine\n * @interface IExtent\n * @property {number|Long|null} [startBlock] Extent startBlock\n * @property {number|Long|null} [numBlocks] Extent numBlocks\n */\n\n /**\n * Constructs a new Extent.\n * @memberof chromeos_update_engine\n * @classdesc Represents an Extent.\n * @implements IExtent\n * @constructor\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n */\n function Extent(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Extent startBlock.\n * @member {number|Long} startBlock\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.startBlock = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Extent numBlocks.\n * @member {number|Long} numBlocks\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.numBlocks = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new Extent instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n * @returns {chromeos_update_engine.Extent} Extent instance\n */\n Extent.create = function create(properties) {\n return new Extent(properties);\n };\n\n /**\n * Encodes the specified Extent message. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startBlock != null && Object.hasOwnProperty.call(message, \"startBlock\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.startBlock);\n if (message.numBlocks != null && Object.hasOwnProperty.call(message, \"numBlocks\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.numBlocks);\n return writer;\n };\n\n /**\n * Encodes the specified Extent message, length delimited. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Extent();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.startBlock = reader.uint64();\n break;\n case 2:\n message.numBlocks = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an Extent message.\n * @function verify\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Extent.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (!$util.isInteger(message.startBlock) && !(message.startBlock && $util.isInteger(message.startBlock.low) && $util.isInteger(message.startBlock.high)))\n return \"startBlock: integer|Long expected\";\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (!$util.isInteger(message.numBlocks) && !(message.numBlocks && $util.isInteger(message.numBlocks.low) && $util.isInteger(message.numBlocks.high)))\n return \"numBlocks: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an Extent message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Extent} Extent\n */\n Extent.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Extent)\n return object;\n let message = new $root.chromeos_update_engine.Extent();\n if (object.startBlock != null)\n if ($util.Long)\n (message.startBlock = $util.Long.fromValue(object.startBlock)).unsigned = true;\n else if (typeof object.startBlock === \"string\")\n message.startBlock = parseInt(object.startBlock, 10);\n else if (typeof object.startBlock === \"number\")\n message.startBlock = object.startBlock;\n else if (typeof object.startBlock === \"object\")\n message.startBlock = new $util.LongBits(object.startBlock.low >>> 0, object.startBlock.high >>> 0).toNumber(true);\n if (object.numBlocks != null)\n if ($util.Long)\n (message.numBlocks = $util.Long.fromValue(object.numBlocks)).unsigned = true;\n else if (typeof object.numBlocks === \"string\")\n message.numBlocks = parseInt(object.numBlocks, 10);\n else if (typeof object.numBlocks === \"number\")\n message.numBlocks = object.numBlocks;\n else if (typeof object.numBlocks === \"object\")\n message.numBlocks = new $util.LongBits(object.numBlocks.low >>> 0, object.numBlocks.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from an Extent message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.Extent} message Extent\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Extent.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.startBlock = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.startBlock = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.numBlocks = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.numBlocks = options.longs === String ? \"0\" : 0;\n }\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (typeof message.startBlock === \"number\")\n object.startBlock = options.longs === String ? String(message.startBlock) : message.startBlock;\n else\n object.startBlock = options.longs === String ? $util.Long.prototype.toString.call(message.startBlock) : options.longs === Number ? new $util.LongBits(message.startBlock.low >>> 0, message.startBlock.high >>> 0).toNumber(true) : message.startBlock;\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (typeof message.numBlocks === \"number\")\n object.numBlocks = options.longs === String ? String(message.numBlocks) : message.numBlocks;\n else\n object.numBlocks = options.longs === String ? $util.Long.prototype.toString.call(message.numBlocks) : options.longs === Number ? new $util.LongBits(message.numBlocks.low >>> 0, message.numBlocks.high >>> 0).toNumber(true) : message.numBlocks;\n return object;\n };\n\n /**\n * Converts this Extent to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Extent\n * @instance\n * @returns {Object.} JSON object\n */\n Extent.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Extent;\n })();\n\n chromeos_update_engine.Signatures = (function() {\n\n /**\n * Properties of a Signatures.\n * @memberof chromeos_update_engine\n * @interface ISignatures\n * @property {Array.|null} [signatures] Signatures signatures\n */\n\n /**\n * Constructs a new Signatures.\n * @memberof chromeos_update_engine\n * @classdesc Represents a Signatures.\n * @implements ISignatures\n * @constructor\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n */\n function Signatures(properties) {\n this.signatures = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signatures signatures.\n * @member {Array.} signatures\n * @memberof chromeos_update_engine.Signatures\n * @instance\n */\n Signatures.prototype.signatures = $util.emptyArray;\n\n /**\n * Creates a new Signatures instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures} Signatures instance\n */\n Signatures.create = function create(properties) {\n return new Signatures(properties);\n };\n\n /**\n * Encodes the specified Signatures message. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.signatures != null && message.signatures.length)\n for (let i = 0; i < message.signatures.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.signatures[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Signatures message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.signatures && message.signatures.length))\n message.signatures = [];\n message.signatures.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signatures message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signatures.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.signatures != null && message.hasOwnProperty(\"signatures\")) {\n if (!Array.isArray(message.signatures))\n return \"signatures: array expected\";\n for (let i = 0; i < message.signatures.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.signatures[i]);\n if (error)\n return \"signatures.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a Signatures message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures} Signatures\n */\n Signatures.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures)\n return object;\n let message = new $root.chromeos_update_engine.Signatures();\n if (object.signatures) {\n if (!Array.isArray(object.signatures))\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: array expected\");\n message.signatures = [];\n for (let i = 0; i < object.signatures.length; ++i) {\n if (typeof object.signatures[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: object expected\");\n message.signatures[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.signatures[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Signatures message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.Signatures} message Signatures\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signatures.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.signatures = [];\n if (message.signatures && message.signatures.length) {\n object.signatures = [];\n for (let j = 0; j < message.signatures.length; ++j)\n object.signatures[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.signatures[j], options);\n }\n return object;\n };\n\n /**\n * Converts this Signatures to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures\n * @instance\n * @returns {Object.} JSON object\n */\n Signatures.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n Signatures.Signature = (function() {\n\n /**\n * Properties of a Signature.\n * @memberof chromeos_update_engine.Signatures\n * @interface ISignature\n * @property {number|null} [version] Signature version\n * @property {Uint8Array|null} [data] Signature data\n * @property {number|null} [unpaddedSignatureSize] Signature unpaddedSignatureSize\n */\n\n /**\n * Constructs a new Signature.\n * @memberof chromeos_update_engine.Signatures\n * @classdesc Represents a Signature.\n * @implements ISignature\n * @constructor\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n */\n function Signature(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signature version.\n * @member {number} version\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.version = 0;\n\n /**\n * Signature data.\n * @member {Uint8Array} data\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.data = $util.newBuffer([]);\n\n /**\n * Signature unpaddedSignatureSize.\n * @member {number} unpaddedSignatureSize\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.unpaddedSignatureSize = 0;\n\n /**\n * Creates a new Signature instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures.Signature} Signature instance\n */\n Signature.create = function create(properties) {\n return new Signature(properties);\n };\n\n /**\n * Encodes the specified Signature message. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.version);\n if (message.data != null && Object.hasOwnProperty.call(message, \"data\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.data);\n if (message.unpaddedSignatureSize != null && Object.hasOwnProperty.call(message, \"unpaddedSignatureSize\"))\n writer.uint32(/* id 3, wireType 5 =*/29).fixed32(message.unpaddedSignatureSize);\n return writer;\n };\n\n /**\n * Encodes the specified Signature message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures.Signature();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.version = reader.uint32();\n break;\n case 2:\n message.data = reader.bytes();\n break;\n case 3:\n message.unpaddedSignatureSize = reader.fixed32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signature message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signature.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version))\n return \"version: integer expected\";\n if (message.data != null && message.hasOwnProperty(\"data\"))\n if (!(message.data && typeof message.data.length === \"number\" || $util.isString(message.data)))\n return \"data: buffer expected\";\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n if (!$util.isInteger(message.unpaddedSignatureSize))\n return \"unpaddedSignatureSize: integer expected\";\n return null;\n };\n\n /**\n * Creates a Signature message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n */\n Signature.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures.Signature)\n return object;\n let message = new $root.chromeos_update_engine.Signatures.Signature();\n if (object.version != null)\n message.version = object.version >>> 0;\n if (object.data != null)\n if (typeof object.data === \"string\")\n $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);\n else if (object.data.length)\n message.data = object.data;\n if (object.unpaddedSignatureSize != null)\n message.unpaddedSignatureSize = object.unpaddedSignatureSize >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a Signature message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.Signature} message Signature\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signature.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.version = 0;\n if (options.bytes === String)\n object.data = \"\";\n else {\n object.data = [];\n if (options.bytes !== Array)\n object.data = $util.newBuffer(object.data);\n }\n object.unpaddedSignatureSize = 0;\n }\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.data != null && message.hasOwnProperty(\"data\"))\n object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n object.unpaddedSignatureSize = message.unpaddedSignatureSize;\n return object;\n };\n\n /**\n * Converts this Signature to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n * @returns {Object.} JSON object\n */\n Signature.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Signature;\n })();\n\n return Signatures;\n })();\n\n chromeos_update_engine.PartitionInfo = (function() {\n\n /**\n * Properties of a PartitionInfo.\n * @memberof chromeos_update_engine\n * @interface IPartitionInfo\n * @property {number|Long|null} [size] PartitionInfo size\n * @property {Uint8Array|null} [hash] PartitionInfo hash\n */\n\n /**\n * Constructs a new PartitionInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionInfo.\n * @implements IPartitionInfo\n * @constructor\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n */\n function PartitionInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionInfo size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * PartitionInfo hash.\n * @member {Uint8Array} hash\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.hash = $util.newBuffer([]);\n\n /**\n * Creates a new PartitionInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo instance\n */\n PartitionInfo.create = function create(properties) {\n return new PartitionInfo(properties);\n };\n\n /**\n * Encodes the specified PartitionInfo message. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.size);\n if (message.hash != null && Object.hasOwnProperty.call(message, \"hash\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.hash);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.size = reader.uint64();\n break;\n case 2:\n message.hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionInfo message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n if (!(message.hash && typeof message.hash.length === \"number\" || $util.isString(message.hash)))\n return \"hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates a PartitionInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n */\n PartitionInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionInfo)\n return object;\n let message = new $root.chromeos_update_engine.PartitionInfo();\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.hash != null)\n if (typeof object.hash === \"string\")\n $util.base64.decode(object.hash, message.hash = $util.newBuffer($util.base64.length(object.hash)), 0);\n else if (object.hash.length)\n message.hash = object.hash;\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.PartitionInfo} message PartitionInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.hash = \"\";\n else {\n object.hash = [];\n if (options.bytes !== Array)\n object.hash = $util.newBuffer(object.hash);\n }\n }\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n object.hash = options.bytes === String ? $util.base64.encode(message.hash, 0, message.hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.hash) : message.hash;\n return object;\n };\n\n /**\n * Converts this PartitionInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionInfo;\n })();\n\n chromeos_update_engine.InstallOperation = (function() {\n\n /**\n * Properties of an InstallOperation.\n * @memberof chromeos_update_engine\n * @interface IInstallOperation\n * @property {chromeos_update_engine.InstallOperation.Type} type InstallOperation type\n * @property {number|Long|null} [dataOffset] InstallOperation dataOffset\n * @property {number|Long|null} [dataLength] InstallOperation dataLength\n * @property {Array.|null} [srcExtents] InstallOperation srcExtents\n * @property {number|Long|null} [srcLength] InstallOperation srcLength\n * @property {Array.|null} [dstExtents] InstallOperation dstExtents\n * @property {number|Long|null} [dstLength] InstallOperation dstLength\n * @property {Uint8Array|null} [dataSha256Hash] InstallOperation dataSha256Hash\n * @property {Uint8Array|null} [srcSha256Hash] InstallOperation srcSha256Hash\n */\n\n /**\n * Constructs a new InstallOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents an InstallOperation.\n * @implements IInstallOperation\n * @constructor\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n */\n function InstallOperation(properties) {\n this.srcExtents = [];\n this.dstExtents = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * InstallOperation type.\n * @member {chromeos_update_engine.InstallOperation.Type} type\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.type = 0;\n\n /**\n * InstallOperation dataOffset.\n * @member {number|Long} dataOffset\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataLength.\n * @member {number|Long} dataLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation srcExtents.\n * @member {Array.} srcExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcExtents = $util.emptyArray;\n\n /**\n * InstallOperation srcLength.\n * @member {number|Long} srcLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dstExtents.\n * @member {Array.} dstExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstExtents = $util.emptyArray;\n\n /**\n * InstallOperation dstLength.\n * @member {number|Long} dstLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataSha256Hash.\n * @member {Uint8Array} dataSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataSha256Hash = $util.newBuffer([]);\n\n /**\n * InstallOperation srcSha256Hash.\n * @member {Uint8Array} srcSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcSha256Hash = $util.newBuffer([]);\n\n /**\n * Creates a new InstallOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation instance\n */\n InstallOperation.create = function create(properties) {\n return new InstallOperation(properties);\n };\n\n /**\n * Encodes the specified InstallOperation message. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.dataOffset != null && Object.hasOwnProperty.call(message, \"dataOffset\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.dataOffset);\n if (message.dataLength != null && Object.hasOwnProperty.call(message, \"dataLength\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.dataLength);\n if (message.srcExtents != null && message.srcExtents.length)\n for (let i = 0; i < message.srcExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.srcExtents[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.srcLength != null && Object.hasOwnProperty.call(message, \"srcLength\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.srcLength);\n if (message.dstExtents != null && message.dstExtents.length)\n for (let i = 0; i < message.dstExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.dstExtents[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.dstLength != null && Object.hasOwnProperty.call(message, \"dstLength\"))\n writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.dstLength);\n if (message.dataSha256Hash != null && Object.hasOwnProperty.call(message, \"dataSha256Hash\"))\n writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.dataSha256Hash);\n if (message.srcSha256Hash != null && Object.hasOwnProperty.call(message, \"srcSha256Hash\"))\n writer.uint32(/* id 9, wireType 2 =*/74).bytes(message.srcSha256Hash);\n return writer;\n };\n\n /**\n * Encodes the specified InstallOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.InstallOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.dataOffset = reader.uint64();\n break;\n case 3:\n message.dataLength = reader.uint64();\n break;\n case 4:\n if (!(message.srcExtents && message.srcExtents.length))\n message.srcExtents = [];\n message.srcExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 5:\n message.srcLength = reader.uint64();\n break;\n case 6:\n if (!(message.dstExtents && message.dstExtents.length))\n message.dstExtents = [];\n message.dstExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 7:\n message.dstLength = reader.uint64();\n break;\n case 8:\n message.dataSha256Hash = reader.bytes();\n break;\n case 9:\n message.srcSha256Hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"type\"))\n throw $util.ProtocolError(\"missing required 'type'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an InstallOperation message.\n * @function verify\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n InstallOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 8:\n case 6:\n case 7:\n case 10:\n case 9:\n case 11:\n case 12:\n case 13:\n break;\n }\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (!$util.isInteger(message.dataOffset) && !(message.dataOffset && $util.isInteger(message.dataOffset.low) && $util.isInteger(message.dataOffset.high)))\n return \"dataOffset: integer|Long expected\";\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (!$util.isInteger(message.dataLength) && !(message.dataLength && $util.isInteger(message.dataLength.low) && $util.isInteger(message.dataLength.high)))\n return \"dataLength: integer|Long expected\";\n if (message.srcExtents != null && message.hasOwnProperty(\"srcExtents\")) {\n if (!Array.isArray(message.srcExtents))\n return \"srcExtents: array expected\";\n for (let i = 0; i < message.srcExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtents[i]);\n if (error)\n return \"srcExtents.\" + error;\n }\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (!$util.isInteger(message.srcLength) && !(message.srcLength && $util.isInteger(message.srcLength.low) && $util.isInteger(message.srcLength.high)))\n return \"srcLength: integer|Long expected\";\n if (message.dstExtents != null && message.hasOwnProperty(\"dstExtents\")) {\n if (!Array.isArray(message.dstExtents))\n return \"dstExtents: array expected\";\n for (let i = 0; i < message.dstExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtents[i]);\n if (error)\n return \"dstExtents.\" + error;\n }\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (!$util.isInteger(message.dstLength) && !(message.dstLength && $util.isInteger(message.dstLength.low) && $util.isInteger(message.dstLength.high)))\n return \"dstLength: integer|Long expected\";\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n if (!(message.dataSha256Hash && typeof message.dataSha256Hash.length === \"number\" || $util.isString(message.dataSha256Hash)))\n return \"dataSha256Hash: buffer expected\";\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n if (!(message.srcSha256Hash && typeof message.srcSha256Hash.length === \"number\" || $util.isString(message.srcSha256Hash)))\n return \"srcSha256Hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates an InstallOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n */\n InstallOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.InstallOperation)\n return object;\n let message = new $root.chromeos_update_engine.InstallOperation();\n switch (object.type) {\n case \"REPLACE\":\n case 0:\n message.type = 0;\n break;\n case \"REPLACE_BZ\":\n case 1:\n message.type = 1;\n break;\n case \"MOVE\":\n case 2:\n message.type = 2;\n break;\n case \"BSDIFF\":\n case 3:\n message.type = 3;\n break;\n case \"SOURCE_COPY\":\n case 4:\n message.type = 4;\n break;\n case \"SOURCE_BSDIFF\":\n case 5:\n message.type = 5;\n break;\n case \"REPLACE_XZ\":\n case 8:\n message.type = 8;\n break;\n case \"ZERO\":\n case 6:\n message.type = 6;\n break;\n case \"DISCARD\":\n case 7:\n message.type = 7;\n break;\n case \"BROTLI_BSDIFF\":\n case 10:\n message.type = 10;\n break;\n case \"PUFFDIFF\":\n case 9:\n message.type = 9;\n break;\n case \"ZUCCHINI\":\n case 11:\n message.type = 11;\n break;\n case \"LZ4DIFF_BSDIFF\":\n case 12:\n message.type = 12;\n break;\n case \"LZ4DIFF_PUFFDIFF\":\n case 13:\n message.type = 13;\n break;\n }\n if (object.dataOffset != null)\n if ($util.Long)\n (message.dataOffset = $util.Long.fromValue(object.dataOffset)).unsigned = true;\n else if (typeof object.dataOffset === \"string\")\n message.dataOffset = parseInt(object.dataOffset, 10);\n else if (typeof object.dataOffset === \"number\")\n message.dataOffset = object.dataOffset;\n else if (typeof object.dataOffset === \"object\")\n message.dataOffset = new $util.LongBits(object.dataOffset.low >>> 0, object.dataOffset.high >>> 0).toNumber(true);\n if (object.dataLength != null)\n if ($util.Long)\n (message.dataLength = $util.Long.fromValue(object.dataLength)).unsigned = true;\n else if (typeof object.dataLength === \"string\")\n message.dataLength = parseInt(object.dataLength, 10);\n else if (typeof object.dataLength === \"number\")\n message.dataLength = object.dataLength;\n else if (typeof object.dataLength === \"object\")\n message.dataLength = new $util.LongBits(object.dataLength.low >>> 0, object.dataLength.high >>> 0).toNumber(true);\n if (object.srcExtents) {\n if (!Array.isArray(object.srcExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: array expected\");\n message.srcExtents = [];\n for (let i = 0; i < object.srcExtents.length; ++i) {\n if (typeof object.srcExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: object expected\");\n message.srcExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.srcExtents[i]);\n }\n }\n if (object.srcLength != null)\n if ($util.Long)\n (message.srcLength = $util.Long.fromValue(object.srcLength)).unsigned = true;\n else if (typeof object.srcLength === \"string\")\n message.srcLength = parseInt(object.srcLength, 10);\n else if (typeof object.srcLength === \"number\")\n message.srcLength = object.srcLength;\n else if (typeof object.srcLength === \"object\")\n message.srcLength = new $util.LongBits(object.srcLength.low >>> 0, object.srcLength.high >>> 0).toNumber(true);\n if (object.dstExtents) {\n if (!Array.isArray(object.dstExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: array expected\");\n message.dstExtents = [];\n for (let i = 0; i < object.dstExtents.length; ++i) {\n if (typeof object.dstExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: object expected\");\n message.dstExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.dstExtents[i]);\n }\n }\n if (object.dstLength != null)\n if ($util.Long)\n (message.dstLength = $util.Long.fromValue(object.dstLength)).unsigned = true;\n else if (typeof object.dstLength === \"string\")\n message.dstLength = parseInt(object.dstLength, 10);\n else if (typeof object.dstLength === \"number\")\n message.dstLength = object.dstLength;\n else if (typeof object.dstLength === \"object\")\n message.dstLength = new $util.LongBits(object.dstLength.low >>> 0, object.dstLength.high >>> 0).toNumber(true);\n if (object.dataSha256Hash != null)\n if (typeof object.dataSha256Hash === \"string\")\n $util.base64.decode(object.dataSha256Hash, message.dataSha256Hash = $util.newBuffer($util.base64.length(object.dataSha256Hash)), 0);\n else if (object.dataSha256Hash.length)\n message.dataSha256Hash = object.dataSha256Hash;\n if (object.srcSha256Hash != null)\n if (typeof object.srcSha256Hash === \"string\")\n $util.base64.decode(object.srcSha256Hash, message.srcSha256Hash = $util.newBuffer($util.base64.length(object.srcSha256Hash)), 0);\n else if (object.srcSha256Hash.length)\n message.srcSha256Hash = object.srcSha256Hash;\n return message;\n };\n\n /**\n * Creates a plain object from an InstallOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.InstallOperation} message InstallOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n InstallOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.srcExtents = [];\n object.dstExtents = [];\n }\n if (options.defaults) {\n object.type = options.enums === String ? \"REPLACE\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.srcLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.srcLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dstLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dstLength = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.dataSha256Hash = \"\";\n else {\n object.dataSha256Hash = [];\n if (options.bytes !== Array)\n object.dataSha256Hash = $util.newBuffer(object.dataSha256Hash);\n }\n if (options.bytes === String)\n object.srcSha256Hash = \"\";\n else {\n object.srcSha256Hash = [];\n if (options.bytes !== Array)\n object.srcSha256Hash = $util.newBuffer(object.srcSha256Hash);\n }\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.InstallOperation.Type[message.type] : message.type;\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (typeof message.dataOffset === \"number\")\n object.dataOffset = options.longs === String ? String(message.dataOffset) : message.dataOffset;\n else\n object.dataOffset = options.longs === String ? $util.Long.prototype.toString.call(message.dataOffset) : options.longs === Number ? new $util.LongBits(message.dataOffset.low >>> 0, message.dataOffset.high >>> 0).toNumber(true) : message.dataOffset;\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (typeof message.dataLength === \"number\")\n object.dataLength = options.longs === String ? String(message.dataLength) : message.dataLength;\n else\n object.dataLength = options.longs === String ? $util.Long.prototype.toString.call(message.dataLength) : options.longs === Number ? new $util.LongBits(message.dataLength.low >>> 0, message.dataLength.high >>> 0).toNumber(true) : message.dataLength;\n if (message.srcExtents && message.srcExtents.length) {\n object.srcExtents = [];\n for (let j = 0; j < message.srcExtents.length; ++j)\n object.srcExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.srcExtents[j], options);\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (typeof message.srcLength === \"number\")\n object.srcLength = options.longs === String ? String(message.srcLength) : message.srcLength;\n else\n object.srcLength = options.longs === String ? $util.Long.prototype.toString.call(message.srcLength) : options.longs === Number ? new $util.LongBits(message.srcLength.low >>> 0, message.srcLength.high >>> 0).toNumber(true) : message.srcLength;\n if (message.dstExtents && message.dstExtents.length) {\n object.dstExtents = [];\n for (let j = 0; j < message.dstExtents.length; ++j)\n object.dstExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.dstExtents[j], options);\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (typeof message.dstLength === \"number\")\n object.dstLength = options.longs === String ? String(message.dstLength) : message.dstLength;\n else\n object.dstLength = options.longs === String ? $util.Long.prototype.toString.call(message.dstLength) : options.longs === Number ? new $util.LongBits(message.dstLength.low >>> 0, message.dstLength.high >>> 0).toNumber(true) : message.dstLength;\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n object.dataSha256Hash = options.bytes === String ? $util.base64.encode(message.dataSha256Hash, 0, message.dataSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.dataSha256Hash) : message.dataSha256Hash;\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n object.srcSha256Hash = options.bytes === String ? $util.base64.encode(message.srcSha256Hash, 0, message.srcSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.srcSha256Hash) : message.srcSha256Hash;\n return object;\n };\n\n /**\n * Converts this InstallOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n * @returns {Object.} JSON object\n */\n InstallOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.InstallOperation.Type\n * @enum {number}\n * @property {number} REPLACE=0 REPLACE value\n * @property {number} REPLACE_BZ=1 REPLACE_BZ value\n * @property {number} MOVE=2 MOVE value\n * @property {number} BSDIFF=3 BSDIFF value\n * @property {number} SOURCE_COPY=4 SOURCE_COPY value\n * @property {number} SOURCE_BSDIFF=5 SOURCE_BSDIFF value\n * @property {number} REPLACE_XZ=8 REPLACE_XZ value\n * @property {number} ZERO=6 ZERO value\n * @property {number} DISCARD=7 DISCARD value\n * @property {number} BROTLI_BSDIFF=10 BROTLI_BSDIFF value\n * @property {number} PUFFDIFF=9 PUFFDIFF value\n * @property {number} ZUCCHINI=11 ZUCCHINI value\n * @property {number} LZ4DIFF_BSDIFF=12 LZ4DIFF_BSDIFF value\n * @property {number} LZ4DIFF_PUFFDIFF=13 LZ4DIFF_PUFFDIFF value\n */\n InstallOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"REPLACE\"] = 0;\n values[valuesById[1] = \"REPLACE_BZ\"] = 1;\n values[valuesById[2] = \"MOVE\"] = 2;\n values[valuesById[3] = \"BSDIFF\"] = 3;\n values[valuesById[4] = \"SOURCE_COPY\"] = 4;\n values[valuesById[5] = \"SOURCE_BSDIFF\"] = 5;\n values[valuesById[8] = \"REPLACE_XZ\"] = 8;\n values[valuesById[6] = \"ZERO\"] = 6;\n values[valuesById[7] = \"DISCARD\"] = 7;\n values[valuesById[10] = \"BROTLI_BSDIFF\"] = 10;\n values[valuesById[9] = \"PUFFDIFF\"] = 9;\n values[valuesById[11] = \"ZUCCHINI\"] = 11;\n values[valuesById[12] = \"LZ4DIFF_BSDIFF\"] = 12;\n values[valuesById[13] = \"LZ4DIFF_PUFFDIFF\"] = 13;\n return values;\n })();\n\n return InstallOperation;\n })();\n\n chromeos_update_engine.CowMergeOperation = (function() {\n\n /**\n * Properties of a CowMergeOperation.\n * @memberof chromeos_update_engine\n * @interface ICowMergeOperation\n * @property {chromeos_update_engine.CowMergeOperation.Type|null} [type] CowMergeOperation type\n * @property {chromeos_update_engine.IExtent|null} [srcExtent] CowMergeOperation srcExtent\n * @property {chromeos_update_engine.IExtent|null} [dstExtent] CowMergeOperation dstExtent\n * @property {number|null} [srcOffset] CowMergeOperation srcOffset\n */\n\n /**\n * Constructs a new CowMergeOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents a CowMergeOperation.\n * @implements ICowMergeOperation\n * @constructor\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n */\n function CowMergeOperation(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * CowMergeOperation type.\n * @member {chromeos_update_engine.CowMergeOperation.Type} type\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.type = 0;\n\n /**\n * CowMergeOperation srcExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} srcExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcExtent = null;\n\n /**\n * CowMergeOperation dstExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} dstExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.dstExtent = null;\n\n /**\n * CowMergeOperation srcOffset.\n * @member {number} srcOffset\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcOffset = 0;\n\n /**\n * Creates a new CowMergeOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation instance\n */\n CowMergeOperation.create = function create(properties) {\n return new CowMergeOperation(properties);\n };\n\n /**\n * Encodes the specified CowMergeOperation message. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.srcExtent != null && Object.hasOwnProperty.call(message, \"srcExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.srcExtent, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.dstExtent != null && Object.hasOwnProperty.call(message, \"dstExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.dstExtent, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.srcOffset != null && Object.hasOwnProperty.call(message, \"srcOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.srcOffset);\n return writer;\n };\n\n /**\n * Encodes the specified CowMergeOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.CowMergeOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.srcExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 3:\n message.dstExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 4:\n message.srcOffset = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a CowMergeOperation message.\n * @function verify\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n CowMergeOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtent);\n if (error)\n return \"srcExtent.\" + error;\n }\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtent);\n if (error)\n return \"dstExtent.\" + error;\n }\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n if (!$util.isInteger(message.srcOffset))\n return \"srcOffset: integer expected\";\n return null;\n };\n\n /**\n * Creates a CowMergeOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n */\n CowMergeOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.CowMergeOperation)\n return object;\n let message = new $root.chromeos_update_engine.CowMergeOperation();\n switch (object.type) {\n case \"COW_COPY\":\n case 0:\n message.type = 0;\n break;\n case \"COW_XOR\":\n case 1:\n message.type = 1;\n break;\n case \"COW_REPLACE\":\n case 2:\n message.type = 2;\n break;\n }\n if (object.srcExtent != null) {\n if (typeof object.srcExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.srcExtent: object expected\");\n message.srcExtent = $root.chromeos_update_engine.Extent.fromObject(object.srcExtent);\n }\n if (object.dstExtent != null) {\n if (typeof object.dstExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.dstExtent: object expected\");\n message.dstExtent = $root.chromeos_update_engine.Extent.fromObject(object.dstExtent);\n }\n if (object.srcOffset != null)\n message.srcOffset = object.srcOffset >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a CowMergeOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.CowMergeOperation} message CowMergeOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n CowMergeOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"COW_COPY\" : 0;\n object.srcExtent = null;\n object.dstExtent = null;\n object.srcOffset = 0;\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.CowMergeOperation.Type[message.type] : message.type;\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\"))\n object.srcExtent = $root.chromeos_update_engine.Extent.toObject(message.srcExtent, options);\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\"))\n object.dstExtent = $root.chromeos_update_engine.Extent.toObject(message.dstExtent, options);\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n object.srcOffset = message.srcOffset;\n return object;\n };\n\n /**\n * Converts this CowMergeOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n * @returns {Object.} JSON object\n */\n CowMergeOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.CowMergeOperation.Type\n * @enum {number}\n * @property {number} COW_COPY=0 COW_COPY value\n * @property {number} COW_XOR=1 COW_XOR value\n * @property {number} COW_REPLACE=2 COW_REPLACE value\n */\n CowMergeOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"COW_COPY\"] = 0;\n values[valuesById[1] = \"COW_XOR\"] = 1;\n values[valuesById[2] = \"COW_REPLACE\"] = 2;\n return values;\n })();\n\n return CowMergeOperation;\n })();\n\n chromeos_update_engine.PartitionUpdate = (function() {\n\n /**\n * Properties of a PartitionUpdate.\n * @memberof chromeos_update_engine\n * @interface IPartitionUpdate\n * @property {string} partitionName PartitionUpdate partitionName\n * @property {boolean|null} [runPostinstall] PartitionUpdate runPostinstall\n * @property {string|null} [postinstallPath] PartitionUpdate postinstallPath\n * @property {string|null} [filesystemType] PartitionUpdate filesystemType\n * @property {Array.|null} [newPartitionSignature] PartitionUpdate newPartitionSignature\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldPartitionInfo] PartitionUpdate oldPartitionInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newPartitionInfo] PartitionUpdate newPartitionInfo\n * @property {Array.|null} [operations] PartitionUpdate operations\n * @property {boolean|null} [postinstallOptional] PartitionUpdate postinstallOptional\n * @property {chromeos_update_engine.IExtent|null} [hashTreeDataExtent] PartitionUpdate hashTreeDataExtent\n * @property {chromeos_update_engine.IExtent|null} [hashTreeExtent] PartitionUpdate hashTreeExtent\n * @property {string|null} [hashTreeAlgorithm] PartitionUpdate hashTreeAlgorithm\n * @property {Uint8Array|null} [hashTreeSalt] PartitionUpdate hashTreeSalt\n * @property {chromeos_update_engine.IExtent|null} [fecDataExtent] PartitionUpdate fecDataExtent\n * @property {chromeos_update_engine.IExtent|null} [fecExtent] PartitionUpdate fecExtent\n * @property {number|null} [fecRoots] PartitionUpdate fecRoots\n * @property {string|null} [version] PartitionUpdate version\n * @property {Array.|null} [mergeOperations] PartitionUpdate mergeOperations\n * @property {number|Long|null} [estimateCowSize] PartitionUpdate estimateCowSize\n */\n\n /**\n * Constructs a new PartitionUpdate.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionUpdate.\n * @implements IPartitionUpdate\n * @constructor\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n */\n function PartitionUpdate(properties) {\n this.newPartitionSignature = [];\n this.operations = [];\n this.mergeOperations = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionUpdate partitionName.\n * @member {string} partitionName\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.partitionName = \"\";\n\n /**\n * PartitionUpdate runPostinstall.\n * @member {boolean} runPostinstall\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.runPostinstall = false;\n\n /**\n * PartitionUpdate postinstallPath.\n * @member {string} postinstallPath\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallPath = \"\";\n\n /**\n * PartitionUpdate filesystemType.\n * @member {string} filesystemType\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.filesystemType = \"\";\n\n /**\n * PartitionUpdate newPartitionSignature.\n * @member {Array.} newPartitionSignature\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionSignature = $util.emptyArray;\n\n /**\n * PartitionUpdate oldPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.oldPartitionInfo = null;\n\n /**\n * PartitionUpdate newPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionInfo = null;\n\n /**\n * PartitionUpdate operations.\n * @member {Array.} operations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.operations = $util.emptyArray;\n\n /**\n * PartitionUpdate postinstallOptional.\n * @member {boolean} postinstallOptional\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallOptional = false;\n\n /**\n * PartitionUpdate hashTreeDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeDataExtent = null;\n\n /**\n * PartitionUpdate hashTreeExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeExtent = null;\n\n /**\n * PartitionUpdate hashTreeAlgorithm.\n * @member {string} hashTreeAlgorithm\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeAlgorithm = \"\";\n\n /**\n * PartitionUpdate hashTreeSalt.\n * @member {Uint8Array} hashTreeSalt\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeSalt = $util.newBuffer([]);\n\n /**\n * PartitionUpdate fecDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecDataExtent = null;\n\n /**\n * PartitionUpdate fecExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecExtent = null;\n\n /**\n * PartitionUpdate fecRoots.\n * @member {number} fecRoots\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecRoots = 2;\n\n /**\n * PartitionUpdate version.\n * @member {string} version\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.version = \"\";\n\n /**\n * PartitionUpdate mergeOperations.\n * @member {Array.} mergeOperations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.mergeOperations = $util.emptyArray;\n\n /**\n * PartitionUpdate estimateCowSize.\n * @member {number|Long} estimateCowSize\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.estimateCowSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new PartitionUpdate instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate instance\n */\n PartitionUpdate.create = function create(properties) {\n return new PartitionUpdate(properties);\n };\n\n /**\n * Encodes the specified PartitionUpdate message. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.partitionName);\n if (message.runPostinstall != null && Object.hasOwnProperty.call(message, \"runPostinstall\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.runPostinstall);\n if (message.postinstallPath != null && Object.hasOwnProperty.call(message, \"postinstallPath\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.postinstallPath);\n if (message.filesystemType != null && Object.hasOwnProperty.call(message, \"filesystemType\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.filesystemType);\n if (message.newPartitionSignature != null && message.newPartitionSignature.length)\n for (let i = 0; i < message.newPartitionSignature.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.newPartitionSignature[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.oldPartitionInfo != null && Object.hasOwnProperty.call(message, \"oldPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldPartitionInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newPartitionInfo != null && Object.hasOwnProperty.call(message, \"newPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newPartitionInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.operations != null && message.operations.length)\n for (let i = 0; i < message.operations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.operations[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.postinstallOptional != null && Object.hasOwnProperty.call(message, \"postinstallOptional\"))\n writer.uint32(/* id 9, wireType 0 =*/72).bool(message.postinstallOptional);\n if (message.hashTreeDataExtent != null && Object.hasOwnProperty.call(message, \"hashTreeDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeDataExtent, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.hashTreeExtent != null && Object.hasOwnProperty.call(message, \"hashTreeExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeExtent, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.hashTreeAlgorithm != null && Object.hasOwnProperty.call(message, \"hashTreeAlgorithm\"))\n writer.uint32(/* id 12, wireType 2 =*/98).string(message.hashTreeAlgorithm);\n if (message.hashTreeSalt != null && Object.hasOwnProperty.call(message, \"hashTreeSalt\"))\n writer.uint32(/* id 13, wireType 2 =*/106).bytes(message.hashTreeSalt);\n if (message.fecDataExtent != null && Object.hasOwnProperty.call(message, \"fecDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecDataExtent, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.fecExtent != null && Object.hasOwnProperty.call(message, \"fecExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecExtent, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.fecRoots != null && Object.hasOwnProperty.call(message, \"fecRoots\"))\n writer.uint32(/* id 16, wireType 0 =*/128).uint32(message.fecRoots);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 17, wireType 2 =*/138).string(message.version);\n if (message.mergeOperations != null && message.mergeOperations.length)\n for (let i = 0; i < message.mergeOperations.length; ++i)\n $root.chromeos_update_engine.CowMergeOperation.encode(message.mergeOperations[i], writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n if (message.estimateCowSize != null && Object.hasOwnProperty.call(message, \"estimateCowSize\"))\n writer.uint32(/* id 19, wireType 0 =*/152).uint64(message.estimateCowSize);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionUpdate message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionUpdate();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.partitionName = reader.string();\n break;\n case 2:\n message.runPostinstall = reader.bool();\n break;\n case 3:\n message.postinstallPath = reader.string();\n break;\n case 4:\n message.filesystemType = reader.string();\n break;\n case 5:\n if (!(message.newPartitionSignature && message.newPartitionSignature.length))\n message.newPartitionSignature = [];\n message.newPartitionSignature.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n case 6:\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n if (!(message.operations && message.operations.length))\n message.operations = [];\n message.operations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 9:\n message.postinstallOptional = reader.bool();\n break;\n case 10:\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 11:\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 12:\n message.hashTreeAlgorithm = reader.string();\n break;\n case 13:\n message.hashTreeSalt = reader.bytes();\n break;\n case 14:\n message.fecDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 15:\n message.fecExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 16:\n message.fecRoots = reader.uint32();\n break;\n case 17:\n message.version = reader.string();\n break;\n case 18:\n if (!(message.mergeOperations && message.mergeOperations.length))\n message.mergeOperations = [];\n message.mergeOperations.push($root.chromeos_update_engine.CowMergeOperation.decode(reader, reader.uint32()));\n break;\n case 19:\n message.estimateCowSize = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"partitionName\"))\n throw $util.ProtocolError(\"missing required 'partitionName'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionUpdate message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionUpdate.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.partitionName))\n return \"partitionName: string expected\";\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n if (typeof message.runPostinstall !== \"boolean\")\n return \"runPostinstall: boolean expected\";\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n if (!$util.isString(message.postinstallPath))\n return \"postinstallPath: string expected\";\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n if (!$util.isString(message.filesystemType))\n return \"filesystemType: string expected\";\n if (message.newPartitionSignature != null && message.hasOwnProperty(\"newPartitionSignature\")) {\n if (!Array.isArray(message.newPartitionSignature))\n return \"newPartitionSignature: array expected\";\n for (let i = 0; i < message.newPartitionSignature.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.newPartitionSignature[i]);\n if (error)\n return \"newPartitionSignature.\" + error;\n }\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldPartitionInfo);\n if (error)\n return \"oldPartitionInfo.\" + error;\n }\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newPartitionInfo);\n if (error)\n return \"newPartitionInfo.\" + error;\n }\n if (message.operations != null && message.hasOwnProperty(\"operations\")) {\n if (!Array.isArray(message.operations))\n return \"operations: array expected\";\n for (let i = 0; i < message.operations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.operations[i]);\n if (error)\n return \"operations.\" + error;\n }\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n if (typeof message.postinstallOptional !== \"boolean\")\n return \"postinstallOptional: boolean expected\";\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeDataExtent);\n if (error)\n return \"hashTreeDataExtent.\" + error;\n }\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeExtent);\n if (error)\n return \"hashTreeExtent.\" + error;\n }\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n if (!$util.isString(message.hashTreeAlgorithm))\n return \"hashTreeAlgorithm: string expected\";\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n if (!(message.hashTreeSalt && typeof message.hashTreeSalt.length === \"number\" || $util.isString(message.hashTreeSalt)))\n return \"hashTreeSalt: buffer expected\";\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecDataExtent);\n if (error)\n return \"fecDataExtent.\" + error;\n }\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecExtent);\n if (error)\n return \"fecExtent.\" + error;\n }\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n if (!$util.isInteger(message.fecRoots))\n return \"fecRoots: integer expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.mergeOperations != null && message.hasOwnProperty(\"mergeOperations\")) {\n if (!Array.isArray(message.mergeOperations))\n return \"mergeOperations: array expected\";\n for (let i = 0; i < message.mergeOperations.length; ++i) {\n let error = $root.chromeos_update_engine.CowMergeOperation.verify(message.mergeOperations[i]);\n if (error)\n return \"mergeOperations.\" + error;\n }\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (!$util.isInteger(message.estimateCowSize) && !(message.estimateCowSize && $util.isInteger(message.estimateCowSize.low) && $util.isInteger(message.estimateCowSize.high)))\n return \"estimateCowSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a PartitionUpdate message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n */\n PartitionUpdate.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionUpdate)\n return object;\n let message = new $root.chromeos_update_engine.PartitionUpdate();\n if (object.partitionName != null)\n message.partitionName = String(object.partitionName);\n if (object.runPostinstall != null)\n message.runPostinstall = Boolean(object.runPostinstall);\n if (object.postinstallPath != null)\n message.postinstallPath = String(object.postinstallPath);\n if (object.filesystemType != null)\n message.filesystemType = String(object.filesystemType);\n if (object.newPartitionSignature) {\n if (!Array.isArray(object.newPartitionSignature))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: array expected\");\n message.newPartitionSignature = [];\n for (let i = 0; i < object.newPartitionSignature.length; ++i) {\n if (typeof object.newPartitionSignature[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: object expected\");\n message.newPartitionSignature[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.newPartitionSignature[i]);\n }\n }\n if (object.oldPartitionInfo != null) {\n if (typeof object.oldPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.oldPartitionInfo: object expected\");\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldPartitionInfo);\n }\n if (object.newPartitionInfo != null) {\n if (typeof object.newPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionInfo: object expected\");\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newPartitionInfo);\n }\n if (object.operations) {\n if (!Array.isArray(object.operations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: array expected\");\n message.operations = [];\n for (let i = 0; i < object.operations.length; ++i) {\n if (typeof object.operations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: object expected\");\n message.operations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.operations[i]);\n }\n }\n if (object.postinstallOptional != null)\n message.postinstallOptional = Boolean(object.postinstallOptional);\n if (object.hashTreeDataExtent != null) {\n if (typeof object.hashTreeDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeDataExtent: object expected\");\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeDataExtent);\n }\n if (object.hashTreeExtent != null) {\n if (typeof object.hashTreeExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeExtent: object expected\");\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeExtent);\n }\n if (object.hashTreeAlgorithm != null)\n message.hashTreeAlgorithm = String(object.hashTreeAlgorithm);\n if (object.hashTreeSalt != null)\n if (typeof object.hashTreeSalt === \"string\")\n $util.base64.decode(object.hashTreeSalt, message.hashTreeSalt = $util.newBuffer($util.base64.length(object.hashTreeSalt)), 0);\n else if (object.hashTreeSalt.length)\n message.hashTreeSalt = object.hashTreeSalt;\n if (object.fecDataExtent != null) {\n if (typeof object.fecDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecDataExtent: object expected\");\n message.fecDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecDataExtent);\n }\n if (object.fecExtent != null) {\n if (typeof object.fecExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecExtent: object expected\");\n message.fecExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecExtent);\n }\n if (object.fecRoots != null)\n message.fecRoots = object.fecRoots >>> 0;\n if (object.version != null)\n message.version = String(object.version);\n if (object.mergeOperations) {\n if (!Array.isArray(object.mergeOperations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected\");\n message.mergeOperations = [];\n for (let i = 0; i < object.mergeOperations.length; ++i) {\n if (typeof object.mergeOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: object expected\");\n message.mergeOperations[i] = $root.chromeos_update_engine.CowMergeOperation.fromObject(object.mergeOperations[i]);\n }\n }\n if (object.estimateCowSize != null)\n if ($util.Long)\n (message.estimateCowSize = $util.Long.fromValue(object.estimateCowSize)).unsigned = true;\n else if (typeof object.estimateCowSize === \"string\")\n message.estimateCowSize = parseInt(object.estimateCowSize, 10);\n else if (typeof object.estimateCowSize === \"number\")\n message.estimateCowSize = object.estimateCowSize;\n else if (typeof object.estimateCowSize === \"object\")\n message.estimateCowSize = new $util.LongBits(object.estimateCowSize.low >>> 0, object.estimateCowSize.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionUpdate message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.PartitionUpdate} message PartitionUpdate\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionUpdate.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.newPartitionSignature = [];\n object.operations = [];\n object.mergeOperations = [];\n }\n if (options.defaults) {\n object.partitionName = \"\";\n object.runPostinstall = false;\n object.postinstallPath = \"\";\n object.filesystemType = \"\";\n object.oldPartitionInfo = null;\n object.newPartitionInfo = null;\n object.postinstallOptional = false;\n object.hashTreeDataExtent = null;\n object.hashTreeExtent = null;\n object.hashTreeAlgorithm = \"\";\n if (options.bytes === String)\n object.hashTreeSalt = \"\";\n else {\n object.hashTreeSalt = [];\n if (options.bytes !== Array)\n object.hashTreeSalt = $util.newBuffer(object.hashTreeSalt);\n }\n object.fecDataExtent = null;\n object.fecExtent = null;\n object.fecRoots = 2;\n object.version = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.estimateCowSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.estimateCowSize = options.longs === String ? \"0\" : 0;\n }\n if (message.partitionName != null && message.hasOwnProperty(\"partitionName\"))\n object.partitionName = message.partitionName;\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n object.runPostinstall = message.runPostinstall;\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n object.postinstallPath = message.postinstallPath;\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n object.filesystemType = message.filesystemType;\n if (message.newPartitionSignature && message.newPartitionSignature.length) {\n object.newPartitionSignature = [];\n for (let j = 0; j < message.newPartitionSignature.length; ++j)\n object.newPartitionSignature[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.newPartitionSignature[j], options);\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\"))\n object.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldPartitionInfo, options);\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\"))\n object.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newPartitionInfo, options);\n if (message.operations && message.operations.length) {\n object.operations = [];\n for (let j = 0; j < message.operations.length; ++j)\n object.operations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.operations[j], options);\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n object.postinstallOptional = message.postinstallOptional;\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\"))\n object.hashTreeDataExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeDataExtent, options);\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\"))\n object.hashTreeExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeExtent, options);\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n object.hashTreeAlgorithm = message.hashTreeAlgorithm;\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n object.hashTreeSalt = options.bytes === String ? $util.base64.encode(message.hashTreeSalt, 0, message.hashTreeSalt.length) : options.bytes === Array ? Array.prototype.slice.call(message.hashTreeSalt) : message.hashTreeSalt;\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\"))\n object.fecDataExtent = $root.chromeos_update_engine.Extent.toObject(message.fecDataExtent, options);\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\"))\n object.fecExtent = $root.chromeos_update_engine.Extent.toObject(message.fecExtent, options);\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n object.fecRoots = message.fecRoots;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.mergeOperations && message.mergeOperations.length) {\n object.mergeOperations = [];\n for (let j = 0; j < message.mergeOperations.length; ++j)\n object.mergeOperations[j] = $root.chromeos_update_engine.CowMergeOperation.toObject(message.mergeOperations[j], options);\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (typeof message.estimateCowSize === \"number\")\n object.estimateCowSize = options.longs === String ? String(message.estimateCowSize) : message.estimateCowSize;\n else\n object.estimateCowSize = options.longs === String ? $util.Long.prototype.toString.call(message.estimateCowSize) : options.longs === Number ? new $util.LongBits(message.estimateCowSize.low >>> 0, message.estimateCowSize.high >>> 0).toNumber(true) : message.estimateCowSize;\n return object;\n };\n\n /**\n * Converts this PartitionUpdate to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionUpdate.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionUpdate;\n })();\n\n chromeos_update_engine.DynamicPartitionGroup = (function() {\n\n /**\n * Properties of a DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionGroup\n * @property {string} name DynamicPartitionGroup name\n * @property {number|Long|null} [size] DynamicPartitionGroup size\n * @property {Array.|null} [partitionNames] DynamicPartitionGroup partitionNames\n */\n\n /**\n * Constructs a new DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionGroup.\n * @implements IDynamicPartitionGroup\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n */\n function DynamicPartitionGroup(properties) {\n this.partitionNames = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionGroup name.\n * @member {string} name\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.name = \"\";\n\n /**\n * DynamicPartitionGroup size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DynamicPartitionGroup partitionNames.\n * @member {Array.} partitionNames\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.partitionNames = $util.emptyArray;\n\n /**\n * Creates a new DynamicPartitionGroup instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup instance\n */\n DynamicPartitionGroup.create = function create(properties) {\n return new DynamicPartitionGroup(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.size);\n if (message.partitionNames != null && message.partitionNames.length)\n for (let i = 0; i < message.partitionNames.length; ++i)\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.partitionNames[i]);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.name = reader.string();\n break;\n case 2:\n message.size = reader.uint64();\n break;\n case 3:\n if (!(message.partitionNames && message.partitionNames.length))\n message.partitionNames = [];\n message.partitionNames.push(reader.string());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"name\"))\n throw $util.ProtocolError(\"missing required 'name'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionGroup message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionGroup.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.partitionNames != null && message.hasOwnProperty(\"partitionNames\")) {\n if (!Array.isArray(message.partitionNames))\n return \"partitionNames: array expected\";\n for (let i = 0; i < message.partitionNames.length; ++i)\n if (!$util.isString(message.partitionNames[i]))\n return \"partitionNames: string[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a DynamicPartitionGroup message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n */\n DynamicPartitionGroup.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionGroup)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n if (object.name != null)\n message.name = String(object.name);\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.partitionNames) {\n if (!Array.isArray(object.partitionNames))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected\");\n message.partitionNames = [];\n for (let i = 0; i < object.partitionNames.length; ++i)\n message.partitionNames[i] = String(object.partitionNames[i]);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionGroup message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.DynamicPartitionGroup} message DynamicPartitionGroup\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionGroup.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.partitionNames = [];\n if (options.defaults) {\n object.name = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.partitionNames && message.partitionNames.length) {\n object.partitionNames = [];\n for (let j = 0; j < message.partitionNames.length; ++j)\n object.partitionNames[j] = message.partitionNames[j];\n }\n return object;\n };\n\n /**\n * Converts this DynamicPartitionGroup to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionGroup.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionGroup;\n })();\n\n chromeos_update_engine.DynamicPartitionMetadata = (function() {\n\n /**\n * Properties of a DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionMetadata\n * @property {Array.|null} [groups] DynamicPartitionMetadata groups\n * @property {boolean|null} [snapshotEnabled] DynamicPartitionMetadata snapshotEnabled\n * @property {boolean|null} [vabcEnabled] DynamicPartitionMetadata vabcEnabled\n * @property {string|null} [vabcCompressionParam] DynamicPartitionMetadata vabcCompressionParam\n * @property {number|null} [cowVersion] DynamicPartitionMetadata cowVersion\n */\n\n /**\n * Constructs a new DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionMetadata.\n * @implements IDynamicPartitionMetadata\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n */\n function DynamicPartitionMetadata(properties) {\n this.groups = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionMetadata groups.\n * @member {Array.} groups\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.groups = $util.emptyArray;\n\n /**\n * DynamicPartitionMetadata snapshotEnabled.\n * @member {boolean} snapshotEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.snapshotEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcEnabled.\n * @member {boolean} vabcEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcCompressionParam.\n * @member {string} vabcCompressionParam\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcCompressionParam = \"\";\n\n /**\n * DynamicPartitionMetadata cowVersion.\n * @member {number} cowVersion\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.cowVersion = 0;\n\n /**\n * Creates a new DynamicPartitionMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata instance\n */\n DynamicPartitionMetadata.create = function create(properties) {\n return new DynamicPartitionMetadata(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.groups != null && message.groups.length)\n for (let i = 0; i < message.groups.length; ++i)\n $root.chromeos_update_engine.DynamicPartitionGroup.encode(message.groups[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.snapshotEnabled != null && Object.hasOwnProperty.call(message, \"snapshotEnabled\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.snapshotEnabled);\n if (message.vabcEnabled != null && Object.hasOwnProperty.call(message, \"vabcEnabled\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.vabcEnabled);\n if (message.vabcCompressionParam != null && Object.hasOwnProperty.call(message, \"vabcCompressionParam\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.vabcCompressionParam);\n if (message.cowVersion != null && Object.hasOwnProperty.call(message, \"cowVersion\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.cowVersion);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.groups && message.groups.length))\n message.groups = [];\n message.groups.push($root.chromeos_update_engine.DynamicPartitionGroup.decode(reader, reader.uint32()));\n break;\n case 2:\n message.snapshotEnabled = reader.bool();\n break;\n case 3:\n message.vabcEnabled = reader.bool();\n break;\n case 4:\n message.vabcCompressionParam = reader.string();\n break;\n case 5:\n message.cowVersion = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.groups != null && message.hasOwnProperty(\"groups\")) {\n if (!Array.isArray(message.groups))\n return \"groups: array expected\";\n for (let i = 0; i < message.groups.length; ++i) {\n let error = $root.chromeos_update_engine.DynamicPartitionGroup.verify(message.groups[i]);\n if (error)\n return \"groups.\" + error;\n }\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n if (typeof message.snapshotEnabled !== \"boolean\")\n return \"snapshotEnabled: boolean expected\";\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n if (typeof message.vabcEnabled !== \"boolean\")\n return \"vabcEnabled: boolean expected\";\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n if (!$util.isString(message.vabcCompressionParam))\n return \"vabcCompressionParam: string expected\";\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n if (!$util.isInteger(message.cowVersion))\n return \"cowVersion: integer expected\";\n return null;\n };\n\n /**\n * Creates a DynamicPartitionMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n */\n DynamicPartitionMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionMetadata)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n if (object.groups) {\n if (!Array.isArray(object.groups))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: array expected\");\n message.groups = [];\n for (let i = 0; i < object.groups.length; ++i) {\n if (typeof object.groups[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: object expected\");\n message.groups[i] = $root.chromeos_update_engine.DynamicPartitionGroup.fromObject(object.groups[i]);\n }\n }\n if (object.snapshotEnabled != null)\n message.snapshotEnabled = Boolean(object.snapshotEnabled);\n if (object.vabcEnabled != null)\n message.vabcEnabled = Boolean(object.vabcEnabled);\n if (object.vabcCompressionParam != null)\n message.vabcCompressionParam = String(object.vabcCompressionParam);\n if (object.cowVersion != null)\n message.cowVersion = object.cowVersion >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.DynamicPartitionMetadata} message DynamicPartitionMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.groups = [];\n if (options.defaults) {\n object.snapshotEnabled = false;\n object.vabcEnabled = false;\n object.vabcCompressionParam = \"\";\n object.cowVersion = 0;\n }\n if (message.groups && message.groups.length) {\n object.groups = [];\n for (let j = 0; j < message.groups.length; ++j)\n object.groups[j] = $root.chromeos_update_engine.DynamicPartitionGroup.toObject(message.groups[j], options);\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n object.snapshotEnabled = message.snapshotEnabled;\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n object.vabcEnabled = message.vabcEnabled;\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n object.vabcCompressionParam = message.vabcCompressionParam;\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n object.cowVersion = message.cowVersion;\n return object;\n };\n\n /**\n * Converts this DynamicPartitionMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionMetadata;\n })();\n\n chromeos_update_engine.ApexInfo = (function() {\n\n /**\n * Properties of an ApexInfo.\n * @memberof chromeos_update_engine\n * @interface IApexInfo\n * @property {string|null} [packageName] ApexInfo packageName\n * @property {number|Long|null} [version] ApexInfo version\n * @property {boolean|null} [isCompressed] ApexInfo isCompressed\n * @property {number|Long|null} [decompressedSize] ApexInfo decompressedSize\n */\n\n /**\n * Constructs a new ApexInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexInfo.\n * @implements IApexInfo\n * @constructor\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n */\n function ApexInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexInfo packageName.\n * @member {string} packageName\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.packageName = \"\";\n\n /**\n * ApexInfo version.\n * @member {number|Long} version\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * ApexInfo isCompressed.\n * @member {boolean} isCompressed\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.isCompressed = false;\n\n /**\n * ApexInfo decompressedSize.\n * @member {number|Long} decompressedSize\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.decompressedSize = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * Creates a new ApexInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo instance\n */\n ApexInfo.create = function create(properties) {\n return new ApexInfo(properties);\n };\n\n /**\n * Encodes the specified ApexInfo message. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.packageName != null && Object.hasOwnProperty.call(message, \"packageName\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.packageName);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.version);\n if (message.isCompressed != null && Object.hasOwnProperty.call(message, \"isCompressed\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isCompressed);\n if (message.decompressedSize != null && Object.hasOwnProperty.call(message, \"decompressedSize\"))\n writer.uint32(/* id 4, wireType 0 =*/32).int64(message.decompressedSize);\n return writer;\n };\n\n /**\n * Encodes the specified ApexInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.packageName = reader.string();\n break;\n case 2:\n message.version = reader.int64();\n break;\n case 3:\n message.isCompressed = reader.bool();\n break;\n case 4:\n message.decompressedSize = reader.int64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n if (!$util.isString(message.packageName))\n return \"packageName: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high)))\n return \"version: integer|Long expected\";\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n if (typeof message.isCompressed !== \"boolean\")\n return \"isCompressed: boolean expected\";\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (!$util.isInteger(message.decompressedSize) && !(message.decompressedSize && $util.isInteger(message.decompressedSize.low) && $util.isInteger(message.decompressedSize.high)))\n return \"decompressedSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an ApexInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n */\n ApexInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexInfo)\n return object;\n let message = new $root.chromeos_update_engine.ApexInfo();\n if (object.packageName != null)\n message.packageName = String(object.packageName);\n if (object.version != null)\n if ($util.Long)\n (message.version = $util.Long.fromValue(object.version)).unsigned = false;\n else if (typeof object.version === \"string\")\n message.version = parseInt(object.version, 10);\n else if (typeof object.version === \"number\")\n message.version = object.version;\n else if (typeof object.version === \"object\")\n message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber();\n if (object.isCompressed != null)\n message.isCompressed = Boolean(object.isCompressed);\n if (object.decompressedSize != null)\n if ($util.Long)\n (message.decompressedSize = $util.Long.fromValue(object.decompressedSize)).unsigned = false;\n else if (typeof object.decompressedSize === \"string\")\n message.decompressedSize = parseInt(object.decompressedSize, 10);\n else if (typeof object.decompressedSize === \"number\")\n message.decompressedSize = object.decompressedSize;\n else if (typeof object.decompressedSize === \"object\")\n message.decompressedSize = new $util.LongBits(object.decompressedSize.low >>> 0, object.decompressedSize.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from an ApexInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.ApexInfo} message ApexInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.packageName = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.version = options.longs === String ? \"0\" : 0;\n object.isCompressed = false;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.decompressedSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.decompressedSize = options.longs === String ? \"0\" : 0;\n }\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n object.packageName = message.packageName;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (typeof message.version === \"number\")\n object.version = options.longs === String ? String(message.version) : message.version;\n else\n object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version;\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n object.isCompressed = message.isCompressed;\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (typeof message.decompressedSize === \"number\")\n object.decompressedSize = options.longs === String ? String(message.decompressedSize) : message.decompressedSize;\n else\n object.decompressedSize = options.longs === String ? $util.Long.prototype.toString.call(message.decompressedSize) : options.longs === Number ? new $util.LongBits(message.decompressedSize.low >>> 0, message.decompressedSize.high >>> 0).toNumber() : message.decompressedSize;\n return object;\n };\n\n /**\n * Converts this ApexInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ApexInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexInfo;\n })();\n\n chromeos_update_engine.ApexMetadata = (function() {\n\n /**\n * Properties of an ApexMetadata.\n * @memberof chromeos_update_engine\n * @interface IApexMetadata\n * @property {Array.|null} [apexInfo] ApexMetadata apexInfo\n */\n\n /**\n * Constructs a new ApexMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexMetadata.\n * @implements IApexMetadata\n * @constructor\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n */\n function ApexMetadata(properties) {\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexMetadata apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n */\n ApexMetadata.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new ApexMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata instance\n */\n ApexMetadata.create = function create(properties) {\n return new ApexMetadata(properties);\n };\n\n /**\n * Encodes the specified ApexMetadata message. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified ApexMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates an ApexMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n */\n ApexMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexMetadata)\n return object;\n let message = new $root.chromeos_update_engine.ApexMetadata();\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from an ApexMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.ApexMetadata} message ApexMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.apexInfo = [];\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this ApexMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n ApexMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexMetadata;\n })();\n\n chromeos_update_engine.DeltaArchiveManifest = (function() {\n\n /**\n * Properties of a DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @interface IDeltaArchiveManifest\n * @property {number|null} [blockSize] DeltaArchiveManifest blockSize\n * @property {number|Long|null} [signaturesOffset] DeltaArchiveManifest signaturesOffset\n * @property {number|Long|null} [signaturesSize] DeltaArchiveManifest signaturesSize\n * @property {number|null} [minorVersion] DeltaArchiveManifest minorVersion\n * @property {Array.|null} [partitions] DeltaArchiveManifest partitions\n * @property {number|Long|null} [maxTimestamp] DeltaArchiveManifest maxTimestamp\n * @property {chromeos_update_engine.IDynamicPartitionMetadata|null} [dynamicPartitionMetadata] DeltaArchiveManifest dynamicPartitionMetadata\n * @property {boolean|null} [partialUpdate] DeltaArchiveManifest partialUpdate\n * @property {Array.|null} [apexInfo] DeltaArchiveManifest apexInfo\n * @property {string|null} [securityPatchLevel] DeltaArchiveManifest securityPatchLevel\n */\n\n /**\n * Constructs a new DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DeltaArchiveManifest.\n * @implements IDeltaArchiveManifest\n * @constructor\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n */\n function DeltaArchiveManifest(properties) {\n this.partitions = [];\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DeltaArchiveManifest blockSize.\n * @member {number} blockSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.blockSize = 4096;\n\n /**\n * DeltaArchiveManifest signaturesOffset.\n * @member {number|Long} signaturesOffset\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest signaturesSize.\n * @member {number|Long} signaturesSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest minorVersion.\n * @member {number} minorVersion\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.minorVersion = 0;\n\n /**\n * DeltaArchiveManifest partitions.\n * @member {Array.} partitions\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partitions = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest maxTimestamp.\n * @member {number|Long} maxTimestamp\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.maxTimestamp = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * DeltaArchiveManifest dynamicPartitionMetadata.\n * @member {chromeos_update_engine.IDynamicPartitionMetadata|null|undefined} dynamicPartitionMetadata\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.dynamicPartitionMetadata = null;\n\n /**\n * DeltaArchiveManifest partialUpdate.\n * @member {boolean} partialUpdate\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partialUpdate = false;\n\n /**\n * DeltaArchiveManifest apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.apexInfo = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest securityPatchLevel.\n * @member {string} securityPatchLevel\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.securityPatchLevel = \"\";\n\n /**\n * Creates a new DeltaArchiveManifest instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest instance\n */\n DeltaArchiveManifest.create = function create(properties) {\n return new DeltaArchiveManifest(properties);\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.blockSize != null && Object.hasOwnProperty.call(message, \"blockSize\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.blockSize);\n if (message.signaturesOffset != null && Object.hasOwnProperty.call(message, \"signaturesOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.signaturesOffset);\n if (message.signaturesSize != null && Object.hasOwnProperty.call(message, \"signaturesSize\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.signaturesSize);\n if (message.minorVersion != null && Object.hasOwnProperty.call(message, \"minorVersion\"))\n writer.uint32(/* id 12, wireType 0 =*/96).uint32(message.minorVersion);\n if (message.partitions != null && message.partitions.length)\n for (let i = 0; i < message.partitions.length; ++i)\n $root.chromeos_update_engine.PartitionUpdate.encode(message.partitions[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();\n if (message.maxTimestamp != null && Object.hasOwnProperty.call(message, \"maxTimestamp\"))\n writer.uint32(/* id 14, wireType 0 =*/112).int64(message.maxTimestamp);\n if (message.dynamicPartitionMetadata != null && Object.hasOwnProperty.call(message, \"dynamicPartitionMetadata\"))\n $root.chromeos_update_engine.DynamicPartitionMetadata.encode(message.dynamicPartitionMetadata, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.partialUpdate != null && Object.hasOwnProperty.call(message, \"partialUpdate\"))\n writer.uint32(/* id 16, wireType 0 =*/128).bool(message.partialUpdate);\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();\n if (message.securityPatchLevel != null && Object.hasOwnProperty.call(message, \"securityPatchLevel\"))\n writer.uint32(/* id 18, wireType 2 =*/146).string(message.securityPatchLevel);\n return writer;\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message, length delimited. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 3:\n message.blockSize = reader.uint32();\n break;\n case 4:\n message.signaturesOffset = reader.uint64();\n break;\n case 5:\n message.signaturesSize = reader.uint64();\n break;\n case 12:\n message.minorVersion = reader.uint32();\n break;\n case 13:\n if (!(message.partitions && message.partitions.length))\n message.partitions = [];\n message.partitions.push($root.chromeos_update_engine.PartitionUpdate.decode(reader, reader.uint32()));\n break;\n case 14:\n message.maxTimestamp = reader.int64();\n break;\n case 15:\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.decode(reader, reader.uint32());\n break;\n case 16:\n message.partialUpdate = reader.bool();\n break;\n case 17:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n case 18:\n message.securityPatchLevel = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DeltaArchiveManifest message.\n * @function verify\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DeltaArchiveManifest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n if (!$util.isInteger(message.blockSize))\n return \"blockSize: integer expected\";\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (!$util.isInteger(message.signaturesOffset) && !(message.signaturesOffset && $util.isInteger(message.signaturesOffset.low) && $util.isInteger(message.signaturesOffset.high)))\n return \"signaturesOffset: integer|Long expected\";\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (!$util.isInteger(message.signaturesSize) && !(message.signaturesSize && $util.isInteger(message.signaturesSize.low) && $util.isInteger(message.signaturesSize.high)))\n return \"signaturesSize: integer|Long expected\";\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n if (!$util.isInteger(message.minorVersion))\n return \"minorVersion: integer expected\";\n if (message.partitions != null && message.hasOwnProperty(\"partitions\")) {\n if (!Array.isArray(message.partitions))\n return \"partitions: array expected\";\n for (let i = 0; i < message.partitions.length; ++i) {\n let error = $root.chromeos_update_engine.PartitionUpdate.verify(message.partitions[i]);\n if (error)\n return \"partitions.\" + error;\n }\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (!$util.isInteger(message.maxTimestamp) && !(message.maxTimestamp && $util.isInteger(message.maxTimestamp.low) && $util.isInteger(message.maxTimestamp.high)))\n return \"maxTimestamp: integer|Long expected\";\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\")) {\n let error = $root.chromeos_update_engine.DynamicPartitionMetadata.verify(message.dynamicPartitionMetadata);\n if (error)\n return \"dynamicPartitionMetadata.\" + error;\n }\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n if (typeof message.partialUpdate !== \"boolean\")\n return \"partialUpdate: boolean expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n if (!$util.isString(message.securityPatchLevel))\n return \"securityPatchLevel: string expected\";\n return null;\n };\n\n /**\n * Creates a DeltaArchiveManifest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n */\n DeltaArchiveManifest.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DeltaArchiveManifest)\n return object;\n let message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n if (object.blockSize != null)\n message.blockSize = object.blockSize >>> 0;\n if (object.signaturesOffset != null)\n if ($util.Long)\n (message.signaturesOffset = $util.Long.fromValue(object.signaturesOffset)).unsigned = true;\n else if (typeof object.signaturesOffset === \"string\")\n message.signaturesOffset = parseInt(object.signaturesOffset, 10);\n else if (typeof object.signaturesOffset === \"number\")\n message.signaturesOffset = object.signaturesOffset;\n else if (typeof object.signaturesOffset === \"object\")\n message.signaturesOffset = new $util.LongBits(object.signaturesOffset.low >>> 0, object.signaturesOffset.high >>> 0).toNumber(true);\n if (object.signaturesSize != null)\n if ($util.Long)\n (message.signaturesSize = $util.Long.fromValue(object.signaturesSize)).unsigned = true;\n else if (typeof object.signaturesSize === \"string\")\n message.signaturesSize = parseInt(object.signaturesSize, 10);\n else if (typeof object.signaturesSize === \"number\")\n message.signaturesSize = object.signaturesSize;\n else if (typeof object.signaturesSize === \"object\")\n message.signaturesSize = new $util.LongBits(object.signaturesSize.low >>> 0, object.signaturesSize.high >>> 0).toNumber(true);\n if (object.minorVersion != null)\n message.minorVersion = object.minorVersion >>> 0;\n if (object.partitions) {\n if (!Array.isArray(object.partitions))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected\");\n message.partitions = [];\n for (let i = 0; i < object.partitions.length; ++i) {\n if (typeof object.partitions[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: object expected\");\n message.partitions[i] = $root.chromeos_update_engine.PartitionUpdate.fromObject(object.partitions[i]);\n }\n }\n if (object.maxTimestamp != null)\n if ($util.Long)\n (message.maxTimestamp = $util.Long.fromValue(object.maxTimestamp)).unsigned = false;\n else if (typeof object.maxTimestamp === \"string\")\n message.maxTimestamp = parseInt(object.maxTimestamp, 10);\n else if (typeof object.maxTimestamp === \"number\")\n message.maxTimestamp = object.maxTimestamp;\n else if (typeof object.maxTimestamp === \"object\")\n message.maxTimestamp = new $util.LongBits(object.maxTimestamp.low >>> 0, object.maxTimestamp.high >>> 0).toNumber();\n if (object.dynamicPartitionMetadata != null) {\n if (typeof object.dynamicPartitionMetadata !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected\");\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.fromObject(object.dynamicPartitionMetadata);\n }\n if (object.partialUpdate != null)\n message.partialUpdate = Boolean(object.partialUpdate);\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n if (object.securityPatchLevel != null)\n message.securityPatchLevel = String(object.securityPatchLevel);\n return message;\n };\n\n /**\n * Creates a plain object from a DeltaArchiveManifest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.DeltaArchiveManifest} message DeltaArchiveManifest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DeltaArchiveManifest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.partitions = [];\n object.apexInfo = [];\n }\n if (options.defaults) {\n object.blockSize = 4096;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesSize = options.longs === String ? \"0\" : 0;\n object.minorVersion = 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.maxTimestamp = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.maxTimestamp = options.longs === String ? \"0\" : 0;\n object.dynamicPartitionMetadata = null;\n object.partialUpdate = false;\n object.securityPatchLevel = \"\";\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n object.blockSize = message.blockSize;\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (typeof message.signaturesOffset === \"number\")\n object.signaturesOffset = options.longs === String ? String(message.signaturesOffset) : message.signaturesOffset;\n else\n object.signaturesOffset = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesOffset) : options.longs === Number ? new $util.LongBits(message.signaturesOffset.low >>> 0, message.signaturesOffset.high >>> 0).toNumber(true) : message.signaturesOffset;\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (typeof message.signaturesSize === \"number\")\n object.signaturesSize = options.longs === String ? String(message.signaturesSize) : message.signaturesSize;\n else\n object.signaturesSize = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesSize) : options.longs === Number ? new $util.LongBits(message.signaturesSize.low >>> 0, message.signaturesSize.high >>> 0).toNumber(true) : message.signaturesSize;\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n object.minorVersion = message.minorVersion;\n if (message.partitions && message.partitions.length) {\n object.partitions = [];\n for (let j = 0; j < message.partitions.length; ++j)\n object.partitions[j] = $root.chromeos_update_engine.PartitionUpdate.toObject(message.partitions[j], options);\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (typeof message.maxTimestamp === \"number\")\n object.maxTimestamp = options.longs === String ? String(message.maxTimestamp) : message.maxTimestamp;\n else\n object.maxTimestamp = options.longs === String ? $util.Long.prototype.toString.call(message.maxTimestamp) : options.longs === Number ? new $util.LongBits(message.maxTimestamp.low >>> 0, message.maxTimestamp.high >>> 0).toNumber() : message.maxTimestamp;\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\"))\n object.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.toObject(message.dynamicPartitionMetadata, options);\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n object.partialUpdate = message.partialUpdate;\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n object.securityPatchLevel = message.securityPatchLevel;\n return object;\n };\n\n /**\n * Converts this DeltaArchiveManifest to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n * @returns {Object.} JSON object\n */\n DeltaArchiveManifest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DeltaArchiveManifest;\n })();\n\n return chromeos_update_engine;\n})();\n\nexport { $root as default };\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TextWriter, ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { chromeos_update_engine } from './update_metadata_pb.js'\n\n/**\n * Parse the non-A/B OTA package and return it as a DeltaArchiveManifest\n * @param {ZipReader} packedFile\n */\nexport class PayloadNonAB extends chromeos_update_engine.DeltaArchiveManifest {\n nonAB: boolean = true\n Blocksize: number = 4096\n packedFile: ZipReader\n constructor(packedFile: ZipReader) {\n super()\n this.packedFile = packedFile\n }\n\n async init() {\n this.Blocksize = 4096\n this.partialUpdate = false\n this.dynamicPartitionMetadata = new chromeos_update_engine.DynamicPartitionMetadata(\n { snapshotEnabled: false, vabcEnabled: false }\n )\n this.partitions = []\n\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.transfer.list)/g\n const /** Array */ entries = await this.packedFile.getEntries()\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n const match = entry.filename.match(regexName)![0]\n let newPartition: any = new chromeos_update_engine.PartitionUpdate({\n partitionName: match\n })\n newPartition.rawText = await entry.getData!(new TextWriter())\n await this.parseTransferList(newPartition)\n this.partitions.push(newPartition)\n }\n }\n }\n\n async parseTransferList(partition: chromeos_update_engine.PartitionUpdate | any) {\n let lines = (partition as any).rawText.split('\\n')\n // First four line in header: version, total blocks,\n // number of stashed entries, maximum used memory for stash\n if (lines.length < 4) {\n throw 'At least 4 lines in header should be provided.'\n }\n partition.version = lines[0]\n partition.totalBlocks = parseInt(lines[1])\n partition.entryStashed = parseInt(lines[2])\n partition.maxStashed = parseInt(lines[3])\n partition.newPartitionInfo = new chromeos_update_engine.PartitionInfo()\n partition.newPartitionInfo.hash = new Uint8Array()\n partition.newPartitionInfo.size = 'unknown'\n /**\n * The main body have 8 different ops:\n * zero [rangeset] : fill zeros\n * new [rangeset] : fill with new data from \n * erase [rangeset] : mark given blocks as empty\n * move <...>\n * bsdiff <...>\n * imgdiff <...> :\n * Read the source blocks and apply (not for move op) to the target blocks\n * stash : load the given source range to memory\n * free : free the given \n * format:\n * [rangeset]: <# of pairs>, , , ...\n * : a hex number with length of 40\n * <...>: We expect to parse the remainder of the parameter tokens as one of:\n * (loads data from source image only)\n * - <[stash_id:stash_range] ...> (loads data from stashes only)\n * <[stash_id:stash_range] ...>\n * (loads data from both source image and stashes)\n */\n partition.operations = new Array()\n let newDataSize = await this.sizeNewData(partition.partitionName)\n for (const line of lines.slice(4)) {\n let op = new chromeos_update_engine.InstallOperation()\n let elements = line.split(' ')\n op.type = elements[0]\n switch ((op.type as unknown) as string) {\n case 'zero':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'new':\n // unlike an A/B OTA, the payload only exists in the payload.bin,\n // in an non-A/B OTA, the payload exists in both .new.data and .patch.data.\n // The new ops do not have any information about data length.\n // what we do here is: read in the size of .new.data, assume the first new\n // op have the data length of the size of .new.data.\n op.dataLength = newDataSize\n newDataSize = 0\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'erase':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'move':\n op.dstExtents = parseRange([], elements[2])\n break\n case 'bsdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'imgdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'stash':\n break\n case 'free':\n break\n }\n partition.operations.push(op)\n }\n }\n\n /**\n * Return the size of .new.data.*\n * @param {String} partitionName\n * @return {Number}\n */\n async sizeNewData(partitionName: string) {\n const /** Array */ entries = await this.packedFile.getEntries()\n const /** RegExp */ regexName = new RegExp(partitionName + '.new.dat.*')\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n return entry.uncompressedSize\n }\n }\n }\n}\n\n/**\n * Parse the range string and return it as an array of extents\n * @param {extents} Array\n * @param {String} rangeset\n * @return Array\n */\nfunction parseRange(extents: Object[], rangeset: string) {\n const regexRange = new RegExp('[d,]+')\n if (rangeset.match(regexRange)) {\n let elements = rangeset.split(',')\n for (let i = 1; i < elements.length; i = i + 2) {\n let extent = new Object({\n startBlock: parseInt(elements[i]),\n numBlocks: parseInt(elements[i + 1]) - parseInt(elements[i])\n })\n extents.push(extent)\n }\n }\n return extents\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class paypload is used to read in and\n * parse the payload.bin file from a OTA.zip file.\n * Class OpType creates a Map that can resolve the\n * operation type.\n * @package zip.js\n * @package protobufjs\n */\n\nimport {\n BlobReader,\n TextWriter,\n Writer,\n ZipReader,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\n// import '@zip.js/zip.js'\nimport { chromeos_update_engine as update_metadata_pb } from './update_metadata_pb'\nimport { PayloadNonAB } from './payload_nonab'\nimport { ZipFile } from './trim_zip'\n// import { Zip_js } from 'zip.js'\n\nconst /** String */ _MAGIC = 'CrAU'\nconst /** Number */ _VERSION_SIZE = 8\nconst /** Number */ _MANIFEST_LEN_SIZE = 8\nconst /** Number */ _METADATA_SIGNATURE_LEN_SIZE = 4\n\nconst /** Number */ _PAYLOAD_HEADER_SIZE =\n _MAGIC.length +\n _VERSION_SIZE +\n _MANIFEST_LEN_SIZE +\n _METADATA_SIGNATURE_LEN_SIZE\n\nconst /** Number */ _BRILLO_MAJOR_PAYLOAD_VERSION = 2\nexport const /** Array */ MetadataFormat = [\n {\n prefix: 'pre-build',\n key: 'preBuild',\n name: 'Pre-build'\n },\n {\n prefix: 'pre-build-incremental',\n key: 'preBuildVersion',\n name: 'Pre-build version'\n },\n {\n prefix: 'post-build',\n key: 'postBuild',\n name: 'Post-build'\n },\n {\n prefix: 'post-build-incremental',\n key: 'postBuildVersion',\n name: 'Post-build version'\n },\n {\n prefix: 'post-security-patch-level',\n key: 'postSecurityPatchLevel',\n name: 'Post-build SPL'\n },\n {\n prefix: 'post-timestamp',\n key: 'postTimestamp',\n name: 'Post-build timestamp'\n },\n ]\n\nclass StopIteration extends Error {}\n\nclass AbPayloadHeader {\n constructor(\n public magic: string,\n public version: number,\n public manifest_len: number,\n public metadata_signature_len: number\n ) {}\n}\n\n/**\n * Read in an integer from binary bufferArray.\n * @param {Int} size the size of a integer being read in\n * @return {Int} an integer.\n */\nasync function readIntAt(buffer: Blob, position: number, size: number) {\n let /** DataView */ view = new DataView(\n await buffer!.slice(position, position + size).arrayBuffer()\n )\n if (typeof view.getBigUint64 !== 'function') {\n view.getBigUint64 = function(offset) {\n const a = BigInt(view.getUint32(offset))\n const b = BigInt(view.getUint32(offset + 4))\n const bigNumber = a * 4294967296n + b\n return bigNumber\n }\n }\n switch (size) {\n case 2:\n return view.getUint16(0)\n case 4:\n return view.getUint32(0)\n case 8:\n return Number(view.getBigUint64(0))\n default:\n throw 'Cannot read this integer with size ' + size\n }\n}\n\nclass OTAPayloadBlobWriter extends Writer {\n offset: number\n contentType: string\n blob: Blob\n prefixLength: number\n\n header?: AbPayloadHeader\n\n async readHeader(blob: Blob) {\n let cursor = 0\n const readInt = (size: number) => {\n const ret = readIntAt(blob, cursor, size)\n cursor += size\n return ret\n }\n let buffer = await blob.slice(0, _PAYLOAD_HEADER_SIZE).arrayBuffer()\n let /** TextDecoder */ decoder = new TextDecoder()\n let magicBytes = buffer.slice(0, _MAGIC.length)\n const magic = decoder.decode(magicBytes)\n if (magic != _MAGIC) {\n throw new Error(\n `MAGIC is not correct, expected: ${_MAGIC} actual: ${magic}`\n )\n }\n cursor += _MAGIC.length\n const header_version = await readInt(_VERSION_SIZE)\n const manifest_len = await readInt(_MANIFEST_LEN_SIZE)\n if (header_version != _BRILLO_MAJOR_PAYLOAD_VERSION) {\n throw new Error(`Unexpected major version number: ${header_version}`)\n }\n const metadata_signature_len = await readInt(_METADATA_SIGNATURE_LEN_SIZE)\n this.header = new AbPayloadHeader(\n magic,\n header_version,\n manifest_len,\n metadata_signature_len\n )\n }\n /**\n * A zip.Writer that is tailored for OTA payload.bin read-in.\n * Instead of reading in all the contents in payload.bin, this writer will\n * throw an 'StopIteration' error when the header is read in.\n * The header will be stored into the .\n * @param {Payload} payload\n * @param {String} contentType\n */\n constructor(contentType = '') {\n super()\n this.offset = 0\n this.contentType = contentType\n this.blob = new Blob([], { type: contentType })\n this.prefixLength = 0\n }\n\n async writeUint8Array(array: Uint8Array) {\n super.writeUint8Array(array)\n this.blob = new Blob([this.blob, array.buffer], { type: this.contentType })\n this.offset = this.blob.size\n // Once the prefixLength is non-zero, the address of manifest and signature\n // become known and can be read in. Otherwise the header needs to be read\n // in first to determine the prefixLength.\n if (this.offset >= _PAYLOAD_HEADER_SIZE && this.prefixLength == 0) {\n console.log('Parsing header!')\n await this.readHeader(this.blob)\n this.prefixLength =\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n console.log(`Computed metadata length: ${this.prefixLength}`)\n }\n if (this.prefixLength > 0) {\n console.log(`${this.offset}/${this.prefixLength}`)\n if (this.offset >= this.prefixLength) {\n // The prefix has everything we need (header, manifest, signature). Once\n // the offset is beyond the prefix, no need to move on.\n this.blob = this.blob.slice(0, this.prefixLength)\n throw new StopIteration()\n }\n }\n }\n\n getData() {\n return this.blob\n }\n}\n\nexport class Payload {\n zipreader: ZipReader\n buffer: Blob | undefined\n private metadata: any\n manifest: update_metadata_pb.DeltaArchiveManifest | undefined\n metadata_signature!: update_metadata_pb.Signatures\n\n header?: AbPayloadHeader\n\n /**\n * This class parses the metadata of a OTA package.\n * @param {File} file A OTA.zip file read from user's machine.\n */\n constructor(file: File | URL | ZipFile) {\n if (file instanceof File) {\n this.zipreader = new ZipReader(new BlobReader(file))\n } else if (file instanceof URL) {\n this.zipreader = new ZipReader(new HttpReader(file.href))\n } else {\n this.zipreader = file.reader\n }\n }\n\n getMetadataLength(): number {\n return (\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n )\n }\n\n /**\n * Unzip the OTA package, get payload.bin and metadata\n */\n async unzip() {\n let entries = await this.zipreader.getEntries()\n for (let entry of entries) {\n if (entry.filename == 'payload.bin') {\n let writer = new OTAPayloadBlobWriter('')\n try {\n await entry.getData!(writer)\n } catch (e) {\n if (e instanceof StopIteration) {\n // Exception used as a hack to stop reading from zip. NO need to do anything\n // Ideally zip.js would provide an API to partialll read a zip\n // entry, but they don't. So this is what we get\n } else {\n console.log(e)\n throw e\n }\n }\n this.buffer = writer.getData()\n await this.readManifest(this.buffer, writer.header!)\n console.log('AB OTA manifest parsed')\n } else if (entry.filename == 'META-INF/com/android/metadata') {\n this.metadata = await entry.getData!(new TextWriter())\n console.log('OTA Package metadata parsed')\n }\n }\n if (!this.manifest) {\n console.log('Failed to parse AB OTA package, falling back to non-AB')\n try {\n // The temporary variable manifest has to be used here, to prevent the html page\n // being rendered before everything is read in properly\n let manifest = new PayloadNonAB(this.zipreader)\n await manifest.init()\n manifest.nonAB = true\n this.manifest = manifest\n } catch (error) {\n alert('Please select a legit OTA package')\n return\n }\n }\n }\n\n /**\n * Read the header of payload.bin, including the magic, header_version,\n * manifest_len, metadata_signature_len.\n */\n /**\n * Read in the manifest in an OTA.zip file.\n * The structure of the manifest can be found in:\n * aosp/system/update_engine/update_metadata.proto\n */\n async readManifest(buffer: Blob, header: AbPayloadHeader) {\n this.header = header\n let cursor = _PAYLOAD_HEADER_SIZE\n let manifestBlob = await buffer\n .slice(cursor, cursor + header.manifest_len)\n .arrayBuffer()\n cursor += header.manifest_len\n this.manifest = update_metadata_pb.DeltaArchiveManifest.decode(\n new Uint8Array(manifestBlob)\n )\n let signatureBlob = await buffer\n .slice(cursor, cursor + header.metadata_signature_len)\n .arrayBuffer()\n cursor += header.metadata_signature_len\n this.metadata_signature = update_metadata_pb.Signatures.decode(\n new Uint8Array(signatureBlob)\n );\n (this.manifest! as any).nonAB = false\n }\n\n parseMetadata() {\n for (let formatter of MetadataFormat) {\n let regex = new RegExp(formatter.prefix + '.+')\n if (this.metadata.match(regex)) {\n ;(this as any)[formatter.key] = trimEntry(\n this.metadata.match(regex)[0],\n formatter.prefix\n )\n } else {\n ;(this as any)[formatter.key] = ''\n }\n }\n }\n\n async init() {\n await this.unzip()\n this.parseMetadata()\n }\n}\n\nexport class DefaultMap extends Map {\n /** Reload the original get method. Return the original key value if\n * the key does not exist.\n * @param {Any} key\n */\n getWithDefault(key: any) {\n if (!this.has(key)) return key\n return this.get(key)\n }\n}\n\nexport class OpType {\n mapType: DefaultMap\n /**\n * OpType.mapType create a map that could resolve the operation\n * types. The operation types are encoded as numbers in\n * update_metadata.proto and must be decoded before any usage.\n */\n constructor() {\n let types = update_metadata_pb.InstallOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport class MergeOpType {\n mapType: DefaultMap\n /**\n * MergeOpType create a map that could resolve the COW merge operation\n * types. This is very similar to OpType class except that one is for\n * installation operations.\n */\n constructor() {\n let /** Array<{String: Number}>*/ types =\n update_metadata_pb.CowMergeOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport function octToHex(bufferArray: Uint8Array, space = true, maxLine = 16) {\n let hex_table = ''\n for (let i = 0; i < bufferArray.length; i++) {\n const hex /** String **/ = bufferArray[i].toString(16).toUpperCase()\n if (hex.length === 2) {\n hex_table += hex + (space ? ' ' : '')\n } else {\n hex_table += '0' + hex + (space ? ' ' : '')\n }\n if ((i + 1) % maxLine == 0 && space) {\n hex_table += '\\n'\n }\n }\n return hex_table\n}\n\n/**\n * Trim the prefix in an entry. This is required because the lookbehind\n * regular expression is not supported in safari yet.\n * @param {String} entry\n * @param {String} prefix\n * @return String\n */\nfunction trimEntry(entry: string, prefix: string) {\n return entry.slice(prefix.length + 1, entry.length)\n}\n","\n\n\n\n\n\n\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EChartsOption } from 'echarts'\n\nexport class EchartsData {\n statisticData: Map\n trimmedData: Map\n title: string\n unit: string\n maximumEntries: number\n /**\n * Given a set of [key, value] pairs and title, create an object for further\n * usage in Vue-Echarts.\n * @param {Map} statisticData\n * @param {String} title\n * @param {String} unit\n * @param {Number} maximumEntries\n */\n constructor(\n statisticData: Map,\n title: string,\n unit: string,\n maximumEntries = 15\n ) {\n this.statisticData = statisticData\n this.trimmedData = trimMap(statisticData, maximumEntries)\n this.title = title\n this.unit = unit\n this.maximumEntries = maximumEntries\n }\n\n /**\n * Convert the raw data into a string.\n * @return {String} A list of [key, value].\n */\n listData() {\n let /** String */ table = ''\n for (let [key, value] of this.statisticData) {\n table += key + ' : ' + value.toString() + ' Blocks' + '\\n'\n }\n return table\n }\n\n /**\n * Generate necessary parameters (option) for vue-echarts.\n * Format of the parameters can be found here:\n * https://echarts.apache.org/en/option.html\n * @param {String} unit\n * @return {Object} an ECharts option object.\n */\n getEchartsOption(): EChartsOption {\n let /** Object */ option: EChartsOption = {}\n option.title = {\n text: this.title,\n left: 'center'\n }\n option.tooltip = {\n trigger: 'item',\n formatter: '{a}
{b} : {c} ' + this.unit + ' ({d}%)'\n }\n option.legend = {\n orient: 'horizontal',\n left: 'top',\n top: '10%',\n data: Array.from(this.trimmedData.keys())\n }\n option.series = [\n {\n name: this.title,\n type: 'pie',\n radius: '55%',\n center: ['50%', '60%'],\n data: Array.from(this.trimmedData).map((pair: any) => {\n return { value: pair[1], name: pair[0] }\n }),\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)'\n }\n }\n }\n ]\n return option\n }\n}\n\n/**\n * When there are too many entries in the map, the pie chart can be very\n * crowded. This function will return the entries that have high values.\n * Specifically, the top will be stored and the others\n * will be added into an entry called 'other'.\n * @param {Map} map\n * @param {Number} maximumEntries\n * @return {Map}\n */\nfunction trimMap(map: Map, maximumEntries: number) {\n if (map.size <= maximumEntries) return map\n let /** Map */ new_map = new Map()\n for (let i = 0; i < maximumEntries; i++) {\n let /** Number */ curr = 0\n let /** String */ currKey = ''\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n if (value > curr) {\n curr = value\n currKey = key\n }\n }\n }\n new_map.set(currKey, curr)\n }\n let /** Number */ restTotal = 0\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n restTotal += value\n }\n }\n new_map.set('other', restTotal)\n return new_map\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class MapParser will take in a Android build and construct\n * several file name maps (physical address: file name) according to it.\n * The map of each partitions is added by calling MapParser.add(partitionName).\n * You can query the file name being operated by calling\n * MapParser.query(address, datalength).\n */\n\nimport {\n ZipReader,\n BlobReader,\n TextWriter,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\nimport { chromeos_update_engine } from './update_metadata_pb'\n\nexport class MapParser {\n build: ZipReader\n mapFiles: Map\n maps: Map\n /**\n * This class will take in a .zip Android build and construct a file type map\n * @param {File} targetFile\n */\n constructor(targetFile: File | URL) {\n if (targetFile instanceof File) {\n this.build = new ZipReader(new BlobReader(targetFile))\n } else {\n this.build = new ZipReader(new HttpReader(targetFile.href))\n }\n this.mapFiles = new Map()\n this.maps = new Map()\n }\n\n /**\n * Find the .map entries in the .zip build file. Store them as a map with\n * pairs of (partition name: zip.js entry).\n */\n async init() {\n let /** Array */ entries = await this.build.getEntries()\n const /** RegExp*/ regexPath = /IMAGES\\/[a-z_]*\\.map/g\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.map)/g\n entries.forEach(entry => {\n if (entry.filename.match(regexPath)) {\n this.mapFiles.set(entry.filename.match(regexName)![0], entry)\n }\n })\n }\n\n /**\n * According to the .map in the build, build a map for later query.\n * @param {String} partitionName\n * @param {Number} totalLength\n */\n async add(partitionName: string, totalLength: number) {\n let /** Array */ map = []\n const /** RegExp */ regexNumber = /\\d+/g\n const /** Reg */ regexRange = /\\d+\\-\\d+/g\n for (let i = 0; i < totalLength; i++) map[i] = `<${partitionName}>`\n if (this.mapFiles.get(partitionName)) {\n let /** String */ mapText = await this.mapFiles\n .get(partitionName)\n .getData(new TextWriter())\n let /** Array */ fileEntries = mapText.split('\\n')\n // Each line of the .map file in Android build starts with the filename\n // Followed by the block address, either a number or a range, for example:\n // //system/apex/com.android.adbd.apex 54-66 66 66-2663\n for (let entry of fileEntries) {\n let /** Array */ elements = entry.split(' ')\n for (let j = 1; j < elements.length; j++) {\n let /** Number */ left = 0\n let /** Number */ right = 0\n if (elements[j].match(regexRange)) {\n left = parseInt(elements[j].match(/\\d+/g)[0])\n right = parseInt(elements[j].match(/\\d+/g)[1])\n } else {\n left = parseInt(elements[j].match(regexNumber))\n right = parseInt(elements[j].match(regexNumber))\n }\n InsertMap(map, elements[0], left, right)\n }\n }\n this.maps.set(partitionName, map)\n } else {\n this.maps.set(partitionName, map)\n }\n }\n\n /**\n * Return the filename of given address.\n * @param {String} partitionName\n * @param {Array} extents\n * @return {Array}\n */\n query(partitionName: string, extents: Array) {\n let /** Array */ names = []\n let /** Array */ map = this.maps.get(partitionName)\n for (let ext of extents) {\n names.push(queryMap(map, ext.startBlock, ext.startBlock + ext.numBlocks))\n }\n return names\n }\n}\n\n/**\n * Fill in the hashtable from to using .\n * @param {Array} map\n * @param {String} name\n * @param {Number} left\n * @param {Number} right\n */\nfunction InsertMap(\n map: Array,\n name: string,\n left: number,\n right: number\n) {\n for (let i = left; i <= right; i++) {\n map[i] = name\n }\n}\n\n/**\n * Query the hashtable using index
.\n * @param {Array} map\n * @param {Number} left\n * @param {Number} right\n */\nfunction queryMap(map: Array, left: number, right: number) {\n // Assuming the consecutive blocks belong to the same file\n // Only the start block is queried here.\n if (!map[left]) {\n return 'unknown'\n }\n return map[left]\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Offer functions that can be used to parse the partitionUpdate\n * and then do statistics over it. One can use analysePartitions to specify the\n * partitions been analysed and metrics.\n */\n\nimport { OpType, MergeOpType } from './payload'\nimport { EchartsData } from './echarts_data'\nimport { MapParser } from './map_parser'\nimport { chromeos_update_engine } from './update_metadata_pb'\n\n/**\n * Add a to a element associated to . If the element dose not\n * exists than its value will be initialized to zero.\n * @param {Map} map\n * @param {String} key\n * @param {Number} value\n */\nfunction addNumberToMap(map: Map, key: String, value: number) {\n if (!map.get(key)) {\n map.set(key, 0)\n }\n map.set(key, map.get(key)! + value)\n}\n\n/**\n * Return a statistics over the numbers of blocks (in destination) that are\n * being operated by different installation operation (e.g. REPLACE, BSDIFF).\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedBlockStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n operatedBlocks,\n operationType,\n numBlocks(operation.dstExtents)\n )\n }\n }\n return operatedBlocks\n}\n\nexport function mergeOperationStatistics(\n partitions: Array,\n blockSize: number\n) {\n let /** Map */ mergeOperations = new Map()\n let /** MergeOpType */ opType = new MergeOpType()\n let /** Number */ totalBlocks = 0\n for (let partition of partitions) {\n for (let operation of partition.mergeOperations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n mergeOperations,\n operationType,\n operation.dstExtent!.numBlocks\n )\n }\n // The total blocks number should be rounded up\n if (partition.newPartitionInfo == null) {\n throw new Error(\n `Partition ${partition.partitionName} doesn't have new_partition_info field.`\n )\n }\n totalBlocks += Math.ceil(partition.newPartitionInfo.size / blockSize)\n }\n // The COW merge operation is default to be COW_replace and not shown in\n // the manifest info. We have to mannually add that part of operations,\n // by subtracting the total blocks with other blocks.\n mergeOperations.forEach((value, key) => (totalBlocks -= value))\n mergeOperations.set('COW_REPLACE', totalBlocks)\n return mergeOperations\n}\n\n/**\n * Return a statistics over the disk usage of payload.bin, based on the type of\n * installation operations. Only partitions that are being passed in will be\n * included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedPayloadStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(operatedBlocks, operationType, operation.dataLength)\n }\n }\n return operatedBlocks\n}\n/**\n * Return a statistics over the disk usage of each file types in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFileExtensionsStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let filenameStats = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n const fileExtenstionStats = new Map()\n filenameStats.forEach((size, filename) => {\n addNumberToMap(fileExtenstionStats, name2Extension(filename), size)\n })\n return fileExtenstionStats\n}\n\n/**\n * Return a statistics over the disk usage of each file name in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFilenamesStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let /** Map */ operatedFilenames = new Map()\n if (!targetFile) {\n return operatedFilenames\n }\n let buildMap = new MapParser(targetFile)\n await buildMap.init()\n for (let partition of partitions) {\n await buildMap.add(\n partition.partitionName,\n Math.ceil(partition.newPartitionInfo!.size / blockSize)\n )\n for (let operation of partition.operations!) {\n if (!operation.hasOwnProperty('dataLength')) continue\n let operatedFileNames = buildMap.query(\n partition.partitionName,\n operation.dstExtents!\n )\n let extentDataLength = distributeFilenames(\n operatedFileNames,\n operation.dstExtents!,\n operation.dataLength\n )\n extentDataLength!.forEach((value, key) => {\n addNumberToMap(operatedFilenames, key, value)\n })\n }\n }\n return operatedFilenames\n}\n\n/**\n * Analyse the given partitions using the given metrics.\n * @param {String} metrics\n * @param {Array} partitions\n * @return {EchartsData}\n */\nexport async function analysePartitions(\n metrics: String,\n partitions: Array,\n blockSize = 4096,\n targetFile: File | null | URL = null\n) {\n let /** Map */ statisticsData\n let /** Echartsdata */ echartsData\n switch (metrics) {\n case 'blocks':\n statisticsData = operatedBlockStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Operated blocks in target build',\n 'blocks'\n )\n break\n case 'payload':\n statisticsData = operatedPayloadStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Payload disk usage',\n 'bytes'\n )\n break\n case 'COWmerge':\n statisticsData = mergeOperationStatistics(partitions, blockSize)\n echartsData = new EchartsData(\n statisticsData,\n 'COW merge operations',\n 'blocks'\n )\n break\n case 'filenames':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated filenames',\n 'bytes'\n )\n break\n case 'extensions':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFileExtensionsStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated extensions',\n 'bytes'\n )\n break\n }\n if (echartsData) {\n return echartsData\n } else {\n throw 'Please double check if this is a proper AB OTA package.'\n }\n}\n\n/**\n * Calculate the number of blocks being operated\n * @param {Array} exts\n * @return {number}\n */\nexport function numBlocks(\n exts: Array | null | undefined\n) {\n if (!exts) {\n return 0\n }\n const accumulator = (total: number, ext: chromeos_update_engine.IExtent) =>\n total + ext.numBlocks\n return exts.reduce(accumulator, 0)\n}\n\n/**\n * Return a string that indicates the blocks being operated\n * in the manner of (start_block, block_length)\n * @param {Array} exts\n * @return {string}\n */\nexport function displayBlocks(exts: Array) {\n const accumulator = (total: string, ext: chromeos_update_engine.Extent) =>\n total + '(' + ext.startBlock + ',' + ext.numBlocks + ')'\n return exts.reduce(accumulator, '')\n}\n\n/**\n * Return a map with pairs of (file extension, data length used by this\n * extension). The total data length will be distributed by the blocks ratio\n * of each extent.\n * @param {Array} filenames\n * @param {Array} exts\n * @param {Number} length\n * @return {Map}\n */\nexport function distributeFilenames(\n filenames: Array,\n exts: Array,\n length: number\n): Map {\n let totalBlocks = numBlocks(exts)\n let distributedLengths = new Map()\n for (let i = 0; i < filenames.length; i++) {\n addNumberToMap(\n distributedLengths,\n filenames[i],\n Math.round((length * exts[i].numBlocks) / totalBlocks)\n )\n }\n return distributedLengths\n}\n\n/**\n * convert a filename into extension, for example:\n * '//system/apex/com.android.adbd.apex' => 'apex'\n * @param {String} filename\n * @return {String}\n */\nexport function name2Extension(filename: string) {\n let elements = filename.split('.')\n if (elements.length > 1) {\n return elements[elements.length - 1]\n } else if (elements[0] === 'unknown') {\n return 'unknown'\n } else if (filename[0] == '<' && filename.endsWith('>')) {\n return filename\n } else {\n return 'no-extension'\n }\n}\n","\nimport { numBlocks, displayBlocks } from '../services/payload_composition'\nimport { DefaultMap } from '../services/payload'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n operation: {\n type: Object,\n required: true\n },\n mapType: {\n type: DefaultMap,\n required: true\n }\n },\n data() {\n return {\n srcTotalBlocks: 0,\n srcBlocks: '',\n dstTotalBlocks: 0,\n dstBlocks: ''\n }\n },\n mounted() {\n if (this.operation.srcExtents) {\n this.srcTotalBlocks = numBlocks(this.operation.srcExtents)\n this.srcBlocks = displayBlocks(this.operation.srcExtents)\n }\n if (this.operation.dstExtents) {\n this.dstTotalBlocks = numBlocks(this.operation.dstExtents)\n this.dstBlocks = displayBlocks(this.operation.dstExtents)\n }\n }\n})\n","import { render } from \"./OperationDetail.vue?vue&type=template&id=44174082&scoped=true\"\nimport script from \"./OperationDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./OperationDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-44174082\"\n\nexport default script","\nimport { chromeos_update_engine } from '@/services/update_metadata_pb'\nimport { defineComponent } from 'vue'\nimport { OpType, octToHex } from '../services/payload'\nimport OperationDetail from './OperationDetail.vue'\n\nexport default defineComponent({\n components: {\n OperationDetail\n },\n props: {\n partition: {\n type: chromeos_update_engine.PartitionUpdate,\n required: true\n },\n dynamicPartitionList: {\n type: Array,\n required: true\n }\n },\n data() {\n return {\n showOPs: false,\n showInfo: false,\n opType: new OpType()\n }\n },\n methods: {\n toggle(key: string) {\n ;(this as any)[key] = !(this as any)[key]\n },\n octToHex: octToHex\n },\n computed: {\n readableTimestamp() {\n const unixTimestamp = parseInt(this.partition.version)\n if (isNaN(unixTimestamp)) {\n return ''\n }\n // Unix timestamp is in seconds, but js want milliseconds. So *1000\n return new Date(unixTimestamp * 1000).toString()\n },\n isDynamicPartition(): boolean {\n return (\n this.dynamicPartitionList.indexOf(this.partition.partitionName) >= 0\n )\n }\n }\n})\n","import { render } from \"./PartitionDetail.vue?vue&type=template&id=6dba348a&scoped=true\"\nimport script from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PartitionDetail.vue?vue&type=style&index=0&id=6dba348a&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-6dba348a\"\n\nexport default script","\n\n\n\n\n\n\n","import * as zip from '@zip.js/zip.js/dist/zip.js'\nimport { ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { Payload } from './payload'\n\nexport class ZipFile {\n public reader: ZipReader\n\n constructor(private file: File | URL) {\n this.reader = getZipReader(file)\n }\n getFileName() {\n return getFileName(this.file)\n }\n getFileSize() {\n if (this.file instanceof File) {\n return this.file.size\n } else {\n // TODO(zhangkelvin) Support getting file size from URL\n return 0\n }\n }\n}\n\nexport async function trimZip(\n file: ZipReader,\n p: (entry: zip.Entry) => boolean\n): Promise {\n const reader = file\n const writer = new zip.ZipWriter(new zip.BlobWriter('application/zip'))\n const entries = await reader.getEntries()\n for (const entry of entries.filter(entry => !!entry && p(entry))) {\n const blobWriter = new zip.BlobWriter()\n const data = (await entry.getData!(blobWriter)) as Blob\n console.log(`Adding ${entry.filename}, ${data.size}`)\n writer.add(entry.filename, new zip.BlobReader(blobWriter.getData()), {\n level: 0 // no compression\n })\n }\n return writer\n}\n\nfunction getZipReader(file: File | URL) {\n if (file instanceof File) {\n return new zip.ZipReader(new zip.BlobReader(file))\n } else {\n return new zip.ZipReader(new zip.HttpReader(file.href))\n }\n}\n\nexport function getFileName(file: File | URL) {\n if (file instanceof File) {\n return file.name\n } else {\n return file.pathname\n }\n}\n\nexport async function trimTargetFiles(file: File | URL): Promise {\n const writer = await trimZip(getZipReader(file), entry => {\n return entry.filename.startsWith('META/') || entry.filename.endsWith('.map')\n })\n return await writer.close()\n}\n\nexport async function trimOTAPackage(payload: Payload): Promise {\n const writer = await trimZip(payload.zipreader, entry => {\n return entry.filename != 'payload.bin'\n })\n await writer.add(\n 'payload.bin',\n new zip.BlobReader(payload.buffer!.slice(0, payload.getMetadataLength())),\n // Most toolings assume that payload.bin and other entries are not\n // compressed, so use level 0\n {\n level: 0\n }\n )\n const blob: Blob = await writer.close()\n return blob\n}\n\nexport function downloadFile(\n blob: Blob,\n downloadNode: HTMLAnchorElement,\n filename: string\n) {\n const url = window.URL.createObjectURL(blob)\n downloadNode.href = url\n downloadNode.download = filename\n downloadNode.click()\n window.URL.revokeObjectURL(url)\n}\n\nexport function ensureSuffix(str: string, suffix: string) {\n if (str.endsWith(suffix)) {\n return str\n } else {\n return str + suffix\n }\n}\n","\nimport { Payload, MetadataFormat } from '../services/payload'\nimport { ZipFile } from '@/services/trim_zip'\n\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n zipFile: {\n type: ZipFile,\n required: true\n },\n payload: {\n type: Payload,\n required: true\n }\n },\n data() {\n return {\n MetadataFormat\n }\n },\n computed: {\n otaMetadata(): {\n prefix: string\n key: string\n name: string\n }[] {\n return MetadataFormat.filter(formatter =>\n String((this.payload as any)[formatter.key]).length > 0\n );\n },\n totalCOWSize(): number {\n const cowSizes = this.payload?.manifest?.partitions.map(p => p.estimateCowSize || 0);\n if (!cowSizes) {\n return 0;\n }\n return cowSizes.reduce((a, b) => a + b);\n },\n vabcCompressionParam(): string {\n return this.payload?.manifest?.dynamicPartitionMetadata?.vabcCompressionParam || \"\";\n },\n securityPatchLevel(): string {\n const spl = this.payload?.manifest?.securityPatchLevel;\n if (!spl) {\n return \"\";\n }\n return spl;\n },\n totalDynamicPartitionSize(): number {\n const groups = this.payload?.manifest?.dynamicPartitionMetadata?.groups\n if (!groups) {\n return 0\n }\n const dynamicPartitionNamess = new Set(\n groups.flatMap(g => g.partitionNames)\n )\n const dynamicPartitions =\n this.payload.manifest?.partitions.filter(p =>\n dynamicPartitionNamess.has(p.partitionName)\n ) || []\n if (dynamicPartitions.length <= 0) {\n return 0\n }\n return dynamicPartitions\n .map(p => p.newPartitionInfo?.size || 0)\n .reduce((acc, cur) => acc + cur)\n }\n }\n})\n","import { render } from \"./BasicInfo.vue?vue&type=template&id=7df356bf&scoped=true\"\nimport script from \"./BasicInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./BasicInfo.vue?vue&type=script&lang=ts\"\n\nimport \"./BasicInfo.vue?vue&type=style&index=0&id=7df356bf&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-7df356bf\"\n\nexport default script","\nimport PartitionDetail from './PartitionDetail.vue'\nimport BasicInfo from './BasicInfo.vue'\nimport { Payload, octToHex } from '../services/payload'\nimport {\n downloadFile,\n ensureSuffix,\n trimOTAPackage,\n ZipFile\n} from '@/services/trim_zip'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n components: {\n PartitionDetail,\n BasicInfo\n },\n props: {\n zipFile: {\n type: ZipFile,\n default: null\n },\n payload: {\n type: Payload,\n default: null\n }\n },\n methods: {\n octToHex: octToHex,\n async exportOTAPackage() {\n const blob = await trimOTAPackage(this.payload as Payload)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(this.zipFile.getFileName(), '.zip')\n )\n }\n },\n computed: {\n dynamicPartitions(): string[] {\n return (\n this.payload.manifest?.dynamicPartitionMetadata?.groups?.flatMap(\n g => g.partitionNames || []\n ) || []\n )\n }\n }\n})\n","import { render } from \"./PayloadDetail.vue?vue&type=template&id=05db67f2&scoped=true\"\nimport script from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-05db67f2\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n labels: {\n type: Array,\n default: new Array()\n },\n modelValue: {\n type: Map,\n default: new Map()\n }\n },\n data() {\n return {\n selectAll: 1,\n selectAllText: ['Select All', 'Unselect All']\n }\n },\n mounted() {\n // Set the default value to be true once mounted\n for (let key of this.labels) {\n this.modelValue.set(key, true)\n }\n },\n methods: {\n updateSelected(newSelect: string) {\n this.modelValue.set(newSelect, !this.modelValue.get(newSelect))\n this.$emit('update:modelValue', this.modelValue)\n },\n revertAllSelection() {\n this.selectAll = 1 - this.selectAll\n for (let key of this.modelValue.keys()) {\n this.modelValue.set(key, Boolean(this.selectAll))\n }\n }\n }\n})\n","import { render } from \"./PartialCheckbox.vue?vue&type=template&id=533f2336&scoped=true\"\nimport script from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\n\nimport \"./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-533f2336\"\n\nexport default script","\n\n\n\n\n\n\n","import { render } from \"./PieChart.vue?vue&type=template&id=5d1cb486&scoped=true\"\nimport script from \"./PieChart.vue?vue&type=script&lang=js\"\nexport * from \"./PieChart.vue?vue&type=script&lang=js\"\n\nimport \"./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-5d1cb486\"\n\nexport default script","\nimport axios from 'axios'\nimport PartialCheckbox from './PartialCheckbox.vue'\nimport PieChart from './PieChart.vue'\nimport BaseFile from './BaseFile.vue'\nimport { analysePartitions } from '../services/payload_composition'\nimport { chromeos_update_engine as update_metadata_pb } from '../services/update_metadata_pb'\nimport { TooltipComponentPositionCallbackParams } from 'echarts'\nimport { EchartsData } from '@/services/echarts_data'\nimport { defineComponent } from 'vue'\nimport {\n downloadFile,\n ensureSuffix,\n getFileName,\n trimTargetFiles\n} from '@/services/trim_zip'\n\ninterface ComponentState {\n partitionInclude: Map\n echartsData: EchartsData | null\n listData: string\n targetFile: File | URL | null\n}\n\nexport default defineComponent({\n components: {\n PartialCheckbox,\n PieChart,\n BaseFile\n },\n props: {\n manifest: {\n type: update_metadata_pb.DeltaArchiveManifest,\n default: () => []\n },\n demo: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n partitionInclude: new Map(),\n echartsData: null,\n listData: '',\n targetFile: null\n } as ComponentState\n },\n computed: {\n updatePartitions(): string[] {\n return this.manifest.partitions.map(\n (partition: update_metadata_pb.IPartitionUpdate) => {\n return partition.partitionName\n }\n )\n }\n },\n async mounted() {\n if (this.demo) {\n try {\n const download = await axios.get(\n './files/cf_x86_target_file_demo.zip',\n { responseType: 'blob' }\n )\n this.targetFile = new File([download.data], 'target_demo.zip')\n } catch (err) {\n console.log('Please put a proper example target file in /public/files/')\n }\n }\n },\n methods: {\n piechartClick(param: TooltipComponentPositionCallbackParams) {\n console.log(param)\n },\n async updateChart(metrics: string) {\n let partitionSelected = this.manifest.partitions.filter(partition =>\n this.partitionInclude.get(partition.partitionName)\n )\n try {\n this.echartsData = await analysePartitions(\n metrics,\n partitionSelected,\n this.manifest.blockSize,\n this.targetFile\n )\n } catch (err) {\n alert(`Cannot be processed for the following issue: ${err}`)\n }\n },\n selectBuild(file: File | URL) {\n //TODO(lishutong) check the version of target file is same to the OTA target\n this.targetFile = file\n },\n async exportTargetFileMetadata() {\n const blob = await trimTargetFiles(this.targetFile!)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(getFileName(this.targetFile!), '.zip')\n )\n }\n }\n})\n","import { render } from \"./PayloadComposition.vue?vue&type=template&id=44b569bd&scoped=true\"\nimport script from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadComposition.vue?vue&type=style&index=0&id=44b569bd&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-44b569bd\"\n\nexport default script","\nimport BaseFile from '../components/BaseFile.vue'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n BaseFile,\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return ({\n zipFile: null,\n payload: null\n } as unknown) as {\n zipFile: ZipFile\n payload: Payload\n }\n },\n methods: {\n async unpackOTA(file: File | URL) {\n this.zipFile = new ZipFile(file)\n try {\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n alert(`Please check if this is a correct OTA package (.zip). ${err}`)\n console.log(err)\n }\n }\n }\n})\n","import { render } from \"./PackageAnalysis.vue?vue&type=template&id=4cbf2b67\"\nimport script from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nexport * from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\nimport axios from 'axios'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return {\n zipFile: null,\n payload: null\n } as {\n zipFile: ZipFile | null\n payload: Payload | null\n }\n },\n async created() {\n // put cf_x86_demo.zip and cf_x86_target_file_demo into\n // this directory: /public/files\n try {\n const download = await axios.get('./files/cf_x86_demo.zip', {\n responseType: 'blob'\n })\n this.zipFile = new ZipFile(new File([download.data], 'ota_demo.zip'))\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n console.log('Please put a proper example OTA in /public/files/')\n }\n }\n})\n","import { render } from \"./Demo.vue?vue&type=template&id=1e5d071a\"\nimport script from \"./Demo.vue?vue&type=script&lang=ts\"\nexport * from \"./Demo.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n","import { render } from \"./About.vue?vue&type=template&id=67ed0bf6\"\nconst script = {}\nscript.render = render\n\nexport default script","\n\n\n\n","import { render } from \"./NotFound.vue?vue&type=template&id=50c6f348&scoped=true\"\nconst script = {}\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-50c6f348\"\n\nexport default script","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createRouter, createWebHistory } from 'vue-router'\nimport PackageAnalysis from '@/views/PackageAnalysis.vue'\nimport Demo from'@/views/Demo.vue'\nimport About from '@/views/About.vue'\nimport NotFound from '@/views/NotFound.vue'\n\nconst routes = [\n {\n path: '/',\n name: 'Analysis',\n component: PackageAnalysis,\n meta: {\n title: 'Analyse OTA package - from AOSP'\n }\n },\n {\n path: '/demo',\n name: 'Demo',\n component: Demo\n },\n {\n path: '/about',\n name: 'About',\n component: About\n },\n {\n path: '/:catchAll(.*)',\n name: 'Not Found',\n component: NotFound\n }\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes\n})\n\n// This callback runs before every route change, including on page load.\nrouter.beforeEach((to, from, next) => {\n // This goes through the matched routes from last to first, finding the closest route with a title.\n // e.g., if we have `/some/deep/nested/route` and `/some`, `/deep`, and `/nested` have titles,\n // `/nested`'s will be chosen.\n const nearestWithTitle = to.matched.slice().reverse().find(r => r.meta && r.meta.title);\n\n // Find the nearest route element with meta tags.\n const nearestWithMeta = to.matched.slice().reverse().find(r => r.meta && r.meta.metaTags)!;\n\n const previousNearestWithMeta = from.matched.slice().reverse().find(r => r.meta && r.meta.metaTags);\n\n // If a route with a title was found, set the document (page) title to that value.\n if(nearestWithTitle) {\n document.title = nearestWithTitle.meta.title as string;\n } else if(previousNearestWithMeta) {\n document.title = previousNearestWithMeta.meta.title as string;\n }\n\n // Remove any stale meta tags from the document using the key attribute we set below.\n Array.from(document.querySelectorAll('[data-vue-router-controlled]')).map(el => el.parentNode!.removeChild(el));\n\n next();\n});\n\nexport default router\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createStore } from 'vuex'\n\nexport default createStore({\n state: {},\n mutations: {},\n actions: {},\n modules: {}\n})\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createApp } from 'vue'\nimport vuetify from './plugins/vuetify'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nconst app = createApp(App)\napp.use(router)\napp.use(store)\napp.use(vuetify)\n\napp.mount('#app')","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BasicInfo.vue?vue&type=style&index=0&id=7df356bf&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadDetail.vue?vue&type=style&index=0&id=05db67f2&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartitionDetail.vue?vue&type=style&index=0&id=6dba348a&scoped=true&lang=css\""],"sourceRoot":""} \ No newline at end of file diff --git a/analyseOTA/js/app.e2b79c2b.js b/analyseOTA/js/app.e2b79c2b.js new file mode 100644 index 0000000..2cdfa63 --- /dev/null +++ b/analyseOTA/js/app.e2b79c2b.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var r,o,s=t[0],c=t[1],l=t[2],p=0,d=[];p>>3){case 1:r.startBlock=e.uint64();break;case 2:r.numBlocks=e.uint64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(pe["a"])(e)||null===e?"object expected":null==e.startBlock||!e.hasOwnProperty("startBlock")||ge.isInteger(e.startBlock)||e.startBlock&&ge.isInteger(e.startBlock.low)&&ge.isInteger(e.startBlock.high)?null==e.numBlocks||!e.hasOwnProperty("numBlocks")||ge.isInteger(e.numBlocks)||e.numBlocks&&ge.isInteger(e.numBlocks.low)&&ge.isInteger(e.numBlocks.high)?null:"numBlocks: integer|Long expected":"startBlock: integer|Long expected"},e.fromObject=function(e){if(e instanceof be.chromeos_update_engine.Extent)return e;var t=new be.chromeos_update_engine.Extent;return null!=e.startBlock&&(ge.Long?(t.startBlock=ge.Long.fromValue(e.startBlock)).unsigned=!0:"string"===typeof e.startBlock?t.startBlock=parseInt(e.startBlock,10):"number"===typeof e.startBlock?t.startBlock=e.startBlock:"object"===Object(pe["a"])(e.startBlock)&&(t.startBlock=new ge.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0))),null!=e.numBlocks&&(ge.Long?(t.numBlocks=ge.Long.fromValue(e.numBlocks)).unsigned=!0:"string"===typeof e.numBlocks?t.numBlocks=parseInt(e.numBlocks,10):"number"===typeof e.numBlocks?t.numBlocks=e.numBlocks:"object"===Object(pe["a"])(e.numBlocks)&&(t.numBlocks=new ge.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(ge.Long){var r=new ge.Long(0,0,!0);n.startBlock=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.startBlock=t.longs===String?"0":0;if(ge.Long){var a=new ge.Long(0,0,!0);n.numBlocks=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.numBlocks=t.longs===String?"0":0}return null!=e.startBlock&&e.hasOwnProperty("startBlock")&&("number"===typeof e.startBlock?n.startBlock=t.longs===String?String(e.startBlock):e.startBlock:n.startBlock=t.longs===String?ge.Long.prototype.toString.call(e.startBlock):t.longs===Number?new ge.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0):e.startBlock),null!=e.numBlocks&&e.hasOwnProperty("numBlocks")&&("number"===typeof e.numBlocks?n.numBlocks=t.longs===String?String(e.numBlocks):e.numBlocks:n.numBlocks=t.longs===String?ge.Long.prototype.toString.call(e.numBlocks):t.longs===Number?new ge.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0):e.numBlocks),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e}(),e.Signatures=function(){function e(e){if(this.signatures=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.signatures&&r.signatures.length||(r.signatures=[]),r.signatures.push(be.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(null!=e.signatures&&e.hasOwnProperty("signatures")){if(!Array.isArray(e.signatures))return"signatures: array expected";for(var t=0;t>>3){case 1:r.version=e.uint32();break;case 2:r.data=e.bytes();break;case 3:r.unpaddedSignatureSize=e.fixed32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(pe["a"])(e)||null===e?"object expected":null!=e.version&&e.hasOwnProperty("version")&&!ge.isInteger(e.version)?"version: integer expected":null!=e.data&&e.hasOwnProperty("data")&&!(e.data&&"number"===typeof e.data.length||ge.isString(e.data))?"data: buffer expected":null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&!ge.isInteger(e.unpaddedSignatureSize)?"unpaddedSignatureSize: integer expected":null},e.fromObject=function(e){if(e instanceof be.chromeos_update_engine.Signatures.Signature)return e;var t=new be.chromeos_update_engine.Signatures.Signature;return null!=e.version&&(t.version=e.version>>>0),null!=e.data&&("string"===typeof e.data?ge.base64.decode(e.data,t.data=ge.newBuffer(ge.base64.length(e.data)),0):e.data.length&&(t.data=e.data)),null!=e.unpaddedSignatureSize&&(t.unpaddedSignatureSize=e.unpaddedSignatureSize>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.version=0,t.bytes===String?n.data="":(n.data=[],t.bytes!==Array&&(n.data=ge.newBuffer(n.data))),n.unpaddedSignatureSize=0),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.data&&e.hasOwnProperty("data")&&(n.data=t.bytes===String?ge.base64.encode(e.data,0,e.data.length):t.bytes===Array?Array.prototype.slice.call(e.data):e.data),null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&(n.unpaddedSignatureSize=e.unpaddedSignatureSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e}(),e}(),e.PartitionInfo=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.size=e.uint64();break;case 2:r.hash=e.bytes();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(pe["a"])(e)||null===e?"object expected":null==e.size||!e.hasOwnProperty("size")||ge.isInteger(e.size)||e.size&&ge.isInteger(e.size.low)&&ge.isInteger(e.size.high)?null!=e.hash&&e.hasOwnProperty("hash")&&!(e.hash&&"number"===typeof e.hash.length||ge.isString(e.hash))?"hash: buffer expected":null:"size: integer|Long expected"},e.fromObject=function(e){if(e instanceof be.chromeos_update_engine.PartitionInfo)return e;var t=new be.chromeos_update_engine.PartitionInfo;return null!=e.size&&(ge.Long?(t.size=ge.Long.fromValue(e.size)).unsigned=!0:"string"===typeof e.size?t.size=parseInt(e.size,10):"number"===typeof e.size?t.size=e.size:"object"===Object(pe["a"])(e.size)&&(t.size=new ge.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0))),null!=e.hash&&("string"===typeof e.hash?ge.base64.decode(e.hash,t.hash=ge.newBuffer(ge.base64.length(e.hash)),0):e.hash.length&&(t.hash=e.hash)),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(ge.Long){var r=new ge.Long(0,0,!0);n.size=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.size=t.longs===String?"0":0;t.bytes===String?n.hash="":(n.hash=[],t.bytes!==Array&&(n.hash=ge.newBuffer(n.hash)))}return null!=e.size&&e.hasOwnProperty("size")&&("number"===typeof e.size?n.size=t.longs===String?String(e.size):e.size:n.size=t.longs===String?ge.Long.prototype.toString.call(e.size):t.longs===Number?new ge.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0):e.size),null!=e.hash&&e.hasOwnProperty("hash")&&(n.hash=t.bytes===String?ge.base64.encode(e.hash,0,e.hash.length):t.bytes===Array?Array.prototype.slice.call(e.hash):e.hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e}(),e.InstallOperation=function(){function e(e){if(this.srcExtents=[],this.dstExtents=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.dataOffset=e.uint64();break;case 3:r.dataLength=e.uint64();break;case 4:r.srcExtents&&r.srcExtents.length||(r.srcExtents=[]),r.srcExtents.push(be.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 5:r.srcLength=e.uint64();break;case 6:r.dstExtents&&r.dstExtents.length||(r.dstExtents=[]),r.dstExtents.push(be.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 7:r.dstLength=e.uint64();break;case 8:r.dataSha256Hash=e.bytes();break;case 9:r.srcSha256Hash=e.bytes();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("type"))throw ge.ProtocolError("missing required 'type'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 8:case 6:case 7:case 10:case 9:case 11:case 12:case 13:break}if(null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&!ge.isInteger(e.dataOffset)&&!(e.dataOffset&&ge.isInteger(e.dataOffset.low)&&ge.isInteger(e.dataOffset.high)))return"dataOffset: integer|Long expected";if(null!=e.dataLength&&e.hasOwnProperty("dataLength")&&!ge.isInteger(e.dataLength)&&!(e.dataLength&&ge.isInteger(e.dataLength.low)&&ge.isInteger(e.dataLength.high)))return"dataLength: integer|Long expected";if(null!=e.srcExtents&&e.hasOwnProperty("srcExtents")){if(!Array.isArray(e.srcExtents))return"srcExtents: array expected";for(var t=0;t>>0,e.dataOffset.high>>>0).toNumber(!0))),null!=e.dataLength&&(ge.Long?(t.dataLength=ge.Long.fromValue(e.dataLength)).unsigned=!0:"string"===typeof e.dataLength?t.dataLength=parseInt(e.dataLength,10):"number"===typeof e.dataLength?t.dataLength=e.dataLength:"object"===Object(pe["a"])(e.dataLength)&&(t.dataLength=new ge.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0))),e.srcExtents){if(!Array.isArray(e.srcExtents))throw TypeError(".chromeos_update_engine.InstallOperation.srcExtents: array expected");t.srcExtents=[];for(var n=0;n>>0,e.srcLength.high>>>0).toNumber(!0))),e.dstExtents){if(!Array.isArray(e.dstExtents))throw TypeError(".chromeos_update_engine.InstallOperation.dstExtents: array expected");t.dstExtents=[];for(var r=0;r>>0,e.dstLength.high>>>0).toNumber(!0))),null!=e.dataSha256Hash&&("string"===typeof e.dataSha256Hash?ge.base64.decode(e.dataSha256Hash,t.dataSha256Hash=ge.newBuffer(ge.base64.length(e.dataSha256Hash)),0):e.dataSha256Hash.length&&(t.dataSha256Hash=e.dataSha256Hash)),null!=e.srcSha256Hash&&("string"===typeof e.srcSha256Hash?ge.base64.decode(e.srcSha256Hash,t.srcSha256Hash=ge.newBuffer(ge.base64.length(e.srcSha256Hash)),0):e.srcSha256Hash.length&&(t.srcSha256Hash=e.srcSha256Hash)),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.srcExtents=[],n.dstExtents=[]),t.defaults){if(n.type=t.enums===String?"REPLACE":0,ge.Long){var r=new ge.Long(0,0,!0);n.dataOffset=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.dataOffset=t.longs===String?"0":0;if(ge.Long){var a=new ge.Long(0,0,!0);n.dataLength=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.dataLength=t.longs===String?"0":0;if(ge.Long){var i=new ge.Long(0,0,!0);n.srcLength=t.longs===String?i.toString():t.longs===Number?i.toNumber():i}else n.srcLength=t.longs===String?"0":0;if(ge.Long){var o=new ge.Long(0,0,!0);n.dstLength=t.longs===String?o.toString():t.longs===Number?o.toNumber():o}else n.dstLength=t.longs===String?"0":0;t.bytes===String?n.dataSha256Hash="":(n.dataSha256Hash=[],t.bytes!==Array&&(n.dataSha256Hash=ge.newBuffer(n.dataSha256Hash))),t.bytes===String?n.srcSha256Hash="":(n.srcSha256Hash=[],t.bytes!==Array&&(n.srcSha256Hash=ge.newBuffer(n.srcSha256Hash)))}if(null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?be.chromeos_update_engine.InstallOperation.Type[e.type]:e.type),null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&("number"===typeof e.dataOffset?n.dataOffset=t.longs===String?String(e.dataOffset):e.dataOffset:n.dataOffset=t.longs===String?ge.Long.prototype.toString.call(e.dataOffset):t.longs===Number?new ge.LongBits(e.dataOffset.low>>>0,e.dataOffset.high>>>0).toNumber(!0):e.dataOffset),null!=e.dataLength&&e.hasOwnProperty("dataLength")&&("number"===typeof e.dataLength?n.dataLength=t.longs===String?String(e.dataLength):e.dataLength:n.dataLength=t.longs===String?ge.Long.prototype.toString.call(e.dataLength):t.longs===Number?new ge.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0):e.dataLength),e.srcExtents&&e.srcExtents.length){n.srcExtents=[];for(var s=0;s>>0,e.srcLength.high>>>0).toNumber(!0):e.srcLength),e.dstExtents&&e.dstExtents.length){n.dstExtents=[];for(var c=0;c>>0,e.dstLength.high>>>0).toNumber(!0):e.dstLength),null!=e.dataSha256Hash&&e.hasOwnProperty("dataSha256Hash")&&(n.dataSha256Hash=t.bytes===String?ge.base64.encode(e.dataSha256Hash,0,e.dataSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.dataSha256Hash):e.dataSha256Hash),null!=e.srcSha256Hash&&e.hasOwnProperty("srcSha256Hash")&&(n.srcSha256Hash=t.bytes===String?ge.base64.encode(e.srcSha256Hash,0,e.srcSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.srcSha256Hash):e.srcSha256Hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="REPLACE"]=0,t[e[1]="REPLACE_BZ"]=1,t[e[2]="MOVE"]=2,t[e[3]="BSDIFF"]=3,t[e[4]="SOURCE_COPY"]=4,t[e[5]="SOURCE_BSDIFF"]=5,t[e[8]="REPLACE_XZ"]=8,t[e[6]="ZERO"]=6,t[e[7]="DISCARD"]=7,t[e[10]="BROTLI_BSDIFF"]=10,t[e[9]="PUFFDIFF"]=9,t[e[11]="ZUCCHINI"]=11,t[e[12]="LZ4DIFF_BSDIFF"]=12,t[e[13]="LZ4DIFF_PUFFDIFF"]=13,t}(),e}(),e.CowMergeOperation=function(){function e(e){if(e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.type=e.int32();break;case 2:r.srcExtent=be.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 3:r.dstExtent=be.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 4:r.srcOffset=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:break}if(null!=e.srcExtent&&e.hasOwnProperty("srcExtent")){var t=be.chromeos_update_engine.Extent.verify(e.srcExtent);if(t)return"srcExtent."+t}if(null!=e.dstExtent&&e.hasOwnProperty("dstExtent")){var n=be.chromeos_update_engine.Extent.verify(e.dstExtent);if(n)return"dstExtent."+n}return null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&!ge.isInteger(e.srcOffset)?"srcOffset: integer expected":null},e.fromObject=function(e){if(e instanceof be.chromeos_update_engine.CowMergeOperation)return e;var t=new be.chromeos_update_engine.CowMergeOperation;switch(e.type){case"COW_COPY":case 0:t.type=0;break;case"COW_XOR":case 1:t.type=1;break;case"COW_REPLACE":case 2:t.type=2;break}if(null!=e.srcExtent){if("object"!==Object(pe["a"])(e.srcExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.srcExtent: object expected");t.srcExtent=be.chromeos_update_engine.Extent.fromObject(e.srcExtent)}if(null!=e.dstExtent){if("object"!==Object(pe["a"])(e.dstExtent))throw TypeError(".chromeos_update_engine.CowMergeOperation.dstExtent: object expected");t.dstExtent=be.chromeos_update_engine.Extent.fromObject(e.dstExtent)}return null!=e.srcOffset&&(t.srcOffset=e.srcOffset>>>0),t},e.toObject=function(e,t){t||(t={});var n={};return t.defaults&&(n.type=t.enums===String?"COW_COPY":0,n.srcExtent=null,n.dstExtent=null,n.srcOffset=0),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?be.chromeos_update_engine.CowMergeOperation.Type[e.type]:e.type),null!=e.srcExtent&&e.hasOwnProperty("srcExtent")&&(n.srcExtent=be.chromeos_update_engine.Extent.toObject(e.srcExtent,t)),null!=e.dstExtent&&e.hasOwnProperty("dstExtent")&&(n.dstExtent=be.chromeos_update_engine.Extent.toObject(e.dstExtent,t)),null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&(n.srcOffset=e.srcOffset),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e.Type=function(){var e={},t=Object.create(e);return t[e[0]="COW_COPY"]=0,t[e[1]="COW_XOR"]=1,t[e[2]="COW_REPLACE"]=2,t}(),e}(),e.PartitionUpdate=function(){function e(e){if(this.newPartitionSignature=[],this.operations=[],this.mergeOperations=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.partitionName=e.string();break;case 2:r.runPostinstall=e.bool();break;case 3:r.postinstallPath=e.string();break;case 4:r.filesystemType=e.string();break;case 5:r.newPartitionSignature&&r.newPartitionSignature.length||(r.newPartitionSignature=[]),r.newPartitionSignature.push(be.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;case 6:r.oldPartitionInfo=be.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:r.newPartitionInfo=be.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:r.operations&&r.operations.length||(r.operations=[]),r.operations.push(be.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 9:r.postinstallOptional=e.bool();break;case 10:r.hashTreeDataExtent=be.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 11:r.hashTreeExtent=be.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 12:r.hashTreeAlgorithm=e.string();break;case 13:r.hashTreeSalt=e.bytes();break;case 14:r.fecDataExtent=be.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 15:r.fecExtent=be.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 16:r.fecRoots=e.uint32();break;case 17:r.version=e.string();break;case 18:r.mergeOperations&&r.mergeOperations.length||(r.mergeOperations=[]),r.mergeOperations.push(be.chromeos_update_engine.CowMergeOperation.decode(e,e.uint32()));break;case 19:r.estimateCowSize=e.uint64();break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("partitionName"))throw ge.ProtocolError("missing required 'partitionName'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(!ge.isString(e.partitionName))return"partitionName: string expected";if(null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&"boolean"!==typeof e.runPostinstall)return"runPostinstall: boolean expected";if(null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&!ge.isString(e.postinstallPath))return"postinstallPath: string expected";if(null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&!ge.isString(e.filesystemType))return"filesystemType: string expected";if(null!=e.newPartitionSignature&&e.hasOwnProperty("newPartitionSignature")){if(!Array.isArray(e.newPartitionSignature))return"newPartitionSignature: array expected";for(var t=0;t>>0),null!=e.version&&(t.version=String(e.version)),e.mergeOperations){if(!Array.isArray(e.mergeOperations))throw TypeError(".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected");t.mergeOperations=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.newPartitionSignature=[],n.operations=[],n.mergeOperations=[]),t.defaults)if(n.partitionName="",n.runPostinstall=!1,n.postinstallPath="",n.filesystemType="",n.oldPartitionInfo=null,n.newPartitionInfo=null,n.postinstallOptional=!1,n.hashTreeDataExtent=null,n.hashTreeExtent=null,n.hashTreeAlgorithm="",t.bytes===String?n.hashTreeSalt="":(n.hashTreeSalt=[],t.bytes!==Array&&(n.hashTreeSalt=ge.newBuffer(n.hashTreeSalt))),n.fecDataExtent=null,n.fecExtent=null,n.fecRoots=2,n.version="",ge.Long){var r=new ge.Long(0,0,!0);n.estimateCowSize=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.estimateCowSize=t.longs===String?"0":0;if(null!=e.partitionName&&e.hasOwnProperty("partitionName")&&(n.partitionName=e.partitionName),null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&(n.runPostinstall=e.runPostinstall),null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&(n.postinstallPath=e.postinstallPath),null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&(n.filesystemType=e.filesystemType),e.newPartitionSignature&&e.newPartitionSignature.length){n.newPartitionSignature=[];for(var a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0):e.estimateCowSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e}(),e.DynamicPartitionGroup=function(){function e(e){if(this.partitionNames=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.name=e.string();break;case 2:r.size=e.uint64();break;case 3:r.partitionNames&&r.partitionNames.length||(r.partitionNames=[]),r.partitionNames.push(e.string());break;default:e.skipType(7&a);break}}if(!r.hasOwnProperty("name"))throw ge.ProtocolError("missing required 'name'",{instance:r});return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(!ge.isString(e.name))return"name: string expected";if(null!=e.size&&e.hasOwnProperty("size")&&!ge.isInteger(e.size)&&!(e.size&&ge.isInteger(e.size.low)&&ge.isInteger(e.size.high)))return"size: integer|Long expected";if(null!=e.partitionNames&&e.hasOwnProperty("partitionNames")){if(!Array.isArray(e.partitionNames))return"partitionNames: array expected";for(var t=0;t>>0,e.size.high>>>0).toNumber(!0))),e.partitionNames){if(!Array.isArray(e.partitionNames))throw TypeError(".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected");t.partitionNames=[];for(var n=0;n>>0,e.size.high>>>0).toNumber(!0):e.size),e.partitionNames&&e.partitionNames.length){n.partitionNames=[];for(var a=0;a>>3){case 1:r.groups&&r.groups.length||(r.groups=[]),r.groups.push(be.chromeos_update_engine.DynamicPartitionGroup.decode(e,e.uint32()));break;case 2:r.snapshotEnabled=e.bool();break;case 3:r.vabcEnabled=e.bool();break;case 4:r.vabcCompressionParam=e.string();break;case 5:r.cowVersion=e.uint32();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(null!=e.groups&&e.hasOwnProperty("groups")){if(!Array.isArray(e.groups))return"groups: array expected";for(var t=0;t>>0),t},e.toObject=function(e,t){t||(t={});var n={};if((t.arrays||t.defaults)&&(n.groups=[]),t.defaults&&(n.snapshotEnabled=!1,n.vabcEnabled=!1,n.vabcCompressionParam="",n.cowVersion=0),e.groups&&e.groups.length){n.groups=[];for(var r=0;r>>3){case 1:r.packageName=e.string();break;case 2:r.version=e.int64();break;case 3:r.isCompressed=e.bool();break;case 4:r.decompressedSize=e.int64();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==Object(pe["a"])(e)||null===e?"object expected":null!=e.packageName&&e.hasOwnProperty("packageName")&&!ge.isString(e.packageName)?"packageName: string expected":null==e.version||!e.hasOwnProperty("version")||ge.isInteger(e.version)||e.version&&ge.isInteger(e.version.low)&&ge.isInteger(e.version.high)?null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&"boolean"!==typeof e.isCompressed?"isCompressed: boolean expected":null==e.decompressedSize||!e.hasOwnProperty("decompressedSize")||ge.isInteger(e.decompressedSize)||e.decompressedSize&&ge.isInteger(e.decompressedSize.low)&&ge.isInteger(e.decompressedSize.high)?null:"decompressedSize: integer|Long expected":"version: integer|Long expected"},e.fromObject=function(e){if(e instanceof be.chromeos_update_engine.ApexInfo)return e;var t=new be.chromeos_update_engine.ApexInfo;return null!=e.packageName&&(t.packageName=String(e.packageName)),null!=e.version&&(ge.Long?(t.version=ge.Long.fromValue(e.version)).unsigned=!1:"string"===typeof e.version?t.version=parseInt(e.version,10):"number"===typeof e.version?t.version=e.version:"object"===Object(pe["a"])(e.version)&&(t.version=new ge.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber())),null!=e.isCompressed&&(t.isCompressed=Boolean(e.isCompressed)),null!=e.decompressedSize&&(ge.Long?(t.decompressedSize=ge.Long.fromValue(e.decompressedSize)).unsigned=!1:"string"===typeof e.decompressedSize?t.decompressedSize=parseInt(e.decompressedSize,10):"number"===typeof e.decompressedSize?t.decompressedSize=e.decompressedSize:"object"===Object(pe["a"])(e.decompressedSize)&&(t.decompressedSize=new ge.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber())),t},e.toObject=function(e,t){t||(t={});var n={};if(t.defaults){if(n.packageName="",ge.Long){var r=new ge.Long(0,0,!1);n.version=t.longs===String?r.toString():t.longs===Number?r.toNumber():r}else n.version=t.longs===String?"0":0;if(n.isCompressed=!1,ge.Long){var a=new ge.Long(0,0,!1);n.decompressedSize=t.longs===String?a.toString():t.longs===Number?a.toNumber():a}else n.decompressedSize=t.longs===String?"0":0}return null!=e.packageName&&e.hasOwnProperty("packageName")&&(n.packageName=e.packageName),null!=e.version&&e.hasOwnProperty("version")&&("number"===typeof e.version?n.version=t.longs===String?String(e.version):e.version:n.version=t.longs===String?ge.Long.prototype.toString.call(e.version):t.longs===Number?new ge.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber():e.version),null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&(n.isCompressed=e.isCompressed),null!=e.decompressedSize&&e.hasOwnProperty("decompressedSize")&&("number"===typeof e.decompressedSize?n.decompressedSize=t.longs===String?String(e.decompressedSize):e.decompressedSize:n.decompressedSize=t.longs===String?ge.Long.prototype.toString.call(e.decompressedSize):t.longs===Number?new ge.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber():e.decompressedSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,de["util"].toJSONOptions)},e}(),e.ApexMetadata=function(){function e(e){if(this.apexInfo=[],e)for(var t=Object.keys(e),n=0;n>>3){case 1:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(be.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(null!=e.apexInfo&&e.hasOwnProperty("apexInfo")){if(!Array.isArray(e.apexInfo))return"apexInfo: array expected";for(var t=0;t>>3){case 3:r.blockSize=e.uint32();break;case 4:r.signaturesOffset=e.uint64();break;case 5:r.signaturesSize=e.uint64();break;case 12:r.minorVersion=e.uint32();break;case 13:r.partitions&&r.partitions.length||(r.partitions=[]),r.partitions.push(be.chromeos_update_engine.PartitionUpdate.decode(e,e.uint32()));break;case 14:r.maxTimestamp=e.int64();break;case 15:r.dynamicPartitionMetadata=be.chromeos_update_engine.DynamicPartitionMetadata.decode(e,e.uint32());break;case 16:r.partialUpdate=e.bool();break;case 17:r.apexInfo&&r.apexInfo.length||(r.apexInfo=[]),r.apexInfo.push(be.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;case 18:r.securityPatchLevel=e.string();break;default:e.skipType(7&a);break}}return r},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==Object(pe["a"])(e)||null===e)return"object expected";if(null!=e.blockSize&&e.hasOwnProperty("blockSize")&&!ge.isInteger(e.blockSize))return"blockSize: integer expected";if(null!=e.signaturesOffset&&e.hasOwnProperty("signaturesOffset")&&!ge.isInteger(e.signaturesOffset)&&!(e.signaturesOffset&&ge.isInteger(e.signaturesOffset.low)&&ge.isInteger(e.signaturesOffset.high)))return"signaturesOffset: integer|Long expected";if(null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&!ge.isInteger(e.signaturesSize)&&!(e.signaturesSize&&ge.isInteger(e.signaturesSize.low)&&ge.isInteger(e.signaturesSize.high)))return"signaturesSize: integer|Long expected";if(null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&!ge.isInteger(e.minorVersion))return"minorVersion: integer expected";if(null!=e.partitions&&e.hasOwnProperty("partitions")){if(!Array.isArray(e.partitions))return"partitions: array expected";for(var t=0;t>>0),null!=e.signaturesOffset&&(ge.Long?(t.signaturesOffset=ge.Long.fromValue(e.signaturesOffset)).unsigned=!0:"string"===typeof e.signaturesOffset?t.signaturesOffset=parseInt(e.signaturesOffset,10):"number"===typeof e.signaturesOffset?t.signaturesOffset=e.signaturesOffset:"object"===Object(pe["a"])(e.signaturesOffset)&&(t.signaturesOffset=new ge.LongBits(e.signaturesOffset.low>>>0,e.signaturesOffset.high>>>0).toNumber(!0))),null!=e.signaturesSize&&(ge.Long?(t.signaturesSize=ge.Long.fromValue(e.signaturesSize)).unsigned=!0:"string"===typeof e.signaturesSize?t.signaturesSize=parseInt(e.signaturesSize,10):"number"===typeof e.signaturesSize?t.signaturesSize=e.signaturesSize:"object"===Object(pe["a"])(e.signaturesSize)&&(t.signaturesSize=new ge.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0))),null!=e.minorVersion&&(t.minorVersion=e.minorVersion>>>0),e.partitions){if(!Array.isArray(e.partitions))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected");t.partitions=[];for(var n=0;n>>0,e.maxTimestamp.high>>>0).toNumber())),null!=e.dynamicPartitionMetadata){if("object"!==Object(pe["a"])(e.dynamicPartitionMetadata))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected");t.dynamicPartitionMetadata=be.chromeos_update_engine.DynamicPartitionMetadata.fromObject(e.dynamicPartitionMetadata)}if(null!=e.partialUpdate&&(t.partialUpdate=Boolean(e.partialUpdate)),e.apexInfo){if(!Array.isArray(e.apexInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected");t.apexInfo=[];for(var r=0;r>>0,e.signaturesOffset.high>>>0).toNumber(!0):e.signaturesOffset),null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&("number"===typeof e.signaturesSize?n.signaturesSize=t.longs===String?String(e.signaturesSize):e.signaturesSize:n.signaturesSize=t.longs===String?ge.Long.prototype.toString.call(e.signaturesSize):t.longs===Number?new ge.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0):e.signaturesSize),null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&(n.minorVersion=e.minorVersion),e.partitions&&e.partitions.length){n.partitions=[];for(var o=0;o>>0,e.maxTimestamp.high>>>0).toNumber():e.maxTimestamp),null!=e.dynamicPartitionMetadata&&e.hasOwnProperty("dynamicPartitionMetadata")&&(n.dynamicPartitionMetadata=be.chromeos_update_engine.DynamicPartitionMetadata.toObject(e.dynamicPartitionMetadata,t)),null!=e.partialUpdate&&e.hasOwnProperty("partialUpdate")&&(n.partialUpdate=e.partialUpdate),e.apexInfo&&e.apexInfo.length){n.apexInfo=[];for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:"";return Object(we["a"])(this,n),e=t.call(this),e.offset=0,e.contentType=r,e.blob=new Blob([],{type:r}),e.prefixLength=0,e}return Object(ve["a"])(n,[{key:"readHeader",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r,a,i,o,s,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return n=0,r=function(e){var r=Fe(t,n,e);return n+=e,r},e.next=4,t.slice(0,Te).arrayBuffer();case 4:if(a=e.sent,i=new TextDecoder,o=a.slice(0,Le.length),s=i.decode(o),s==Le){e.next=10;break}throw new Error("MAGIC is not correct, expected: ".concat(Le," actual: ").concat(s));case 10:return n+=Le.length,e.next=13,r(Ie);case 13:return c=e.sent,e.next=16,r(ze);case 16:if(l=e.sent,c==Be){e.next=19;break}throw new Error("Unexpected major version number: ".concat(c));case 19:return e.next=21,r(Ae);case 21:u=e.sent,this.header=new De(s,c,l,u);case 23:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"writeUint8Array",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(Object(ye["a"])(Object(je["a"])(n.prototype),"writeUint8Array",this).call(this,t),this.blob=new Blob([this.blob,t.buffer],{type:this.contentType}),this.offset=this.blob.size,!(this.offset>=Te&&0==this.prefixLength)){e.next=9;break}return console.log("Parsing header!"),e.next=7,this.readHeader(this.blob);case 7:this.prefixLength=Te+this.header.manifest_len+this.header.metadata_signature_len,console.log("Computed metadata length: ".concat(this.prefixLength));case 9:if(!(this.prefixLength>0)){e.next=14;break}if(console.log("".concat(this.offset,"/").concat(this.prefixLength)),!(this.offset>=this.prefixLength)){e.next=14;break}throw this.blob=this.blob.slice(0,this.prefixLength),new Ce;case 14:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getData",value:function(){return this.blob}}]),n}(Pe["Writer"]),He=function(){function e(t){Object(we["a"])(this,e),t instanceof File?this.zipreader=new Pe["ZipReader"](new Pe["BlobReader"](t)):t instanceof URL?this.zipreader=new Pe["ZipReader"](new Pe["HttpReader"](t.href)):this.zipreader=t.reader,this.payload_properties=[]}return Object(ve["a"])(e,[{key:"getMetadataLength",value:function(){return Te+this.header.manifest_len+this.header.metadata_signature_len}},{key:"unzip",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a,i,o,s;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.zipreader.getEntries();case 2:t=e.sent,n=Object(Oe["a"])(t),e.prev=4,n.s();case 6:if((r=n.n()).done){e.next=44;break}if(a=r.value,"payload.bin"!=a.filename){e.next=28;break}return i=new Me(""),e.prev=10,e.next=13,a.getData(i);case 13:e.next=22;break;case 15:if(e.prev=15,e.t0=e["catch"](10),!(e.t0 instanceof Ce)){e.next=20;break}e.next=22;break;case 20:throw console.log(e.t0),e.t0;case 22:return this.buffer=i.getData(),e.next=25,this.readManifest(this.buffer,i.header);case 25:console.log("AB OTA manifest parsed"),e.next=42;break;case 28:if("META-INF/com/android/metadata"!=a.filename){e.next=35;break}return e.next=31,a.getData(new Pe["TextWriter"]);case 31:this.metadata=e.sent,console.log("OTA Package metadata parsed"),e.next=42;break;case 35:if("payload_properties.txt"!=a.filename){e.next=42;break}return e.next=38,a.getData(new Pe["TextWriter"]);case 38:o=e.sent,this.payload_properties=o.split("\n"),console.log("OTA payload_properties.txt parsed"),console.log(this.getPayloadHash());case 42:e.next=6;break;case 44:e.next=49;break;case 46:e.prev=46,e.t1=e["catch"](4),n.e(e.t1);case 49:return e.prev=49,n.f(),e.finish(49);case 52:if(this.manifest){e.next=66;break}return console.log("Failed to parse AB OTA package, falling back to non-AB"),e.prev=54,s=new _e(this.zipreader),e.next=58,s.init();case 58:s.nonAB=!0,this.manifest=s,e.next=66;break;case 62:return e.prev=62,e.t2=e["catch"](54),alert("Please select a legit OTA package"),e.abrupt("return");case 66:case"end":return e.stop()}}),e,this,[[4,46,49,52],[10,15],[54,62]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"getPayloadHash",value:function(){var e,t="FILE_HASH=",n=Object(Oe["a"])(this.payload_properties);try{for(n.s();!(e=n.n()).done;){var r=e.value;if(r.startsWith(t))return Xe(r.substring(t.length))}}catch(a){n.e(a)}finally{n.f()}return""}},{key:"readManifest",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.header=n,r=Te,e.next=4,t.slice(r,r+n.manifest_len).arrayBuffer();case 4:return a=e.sent,r+=n.manifest_len,this.manifest=me.DeltaArchiveManifest.decode(new Uint8Array(a)),e.next=9,t.slice(r,r+n.metadata_signature_len).arrayBuffer();case 9:i=e.sent,r+=n.metadata_signature_len,this.metadata_signature=me.Signatures.decode(new Uint8Array(i)),this.manifest.nonAB=!1;case 13:case"end":return e.stop()}}),e,this)})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"parseMetadata",value:function(){var e,t=Object(Oe["a"])(Ne);try{for(t.s();!(e=t.n()).done;){var n=e.value,r=new RegExp(n.prefix+".+");this.metadata&&this.metadata.match(r)?this[n.key]=Je(this.metadata.match(r)[0],n.prefix):this[n.key]=""}}catch(a){t.e(a)}finally{t.f()}}},{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.unzip();case 2:this.parseMetadata();case 3:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}]),e}(),Ue=function(e){Object(xe["a"])(n,e);var t=Object(ke["a"])(n);function n(){return Object(we["a"])(this,n),t.apply(this,arguments)}return Object(ve["a"])(n,[{key:"getWithDefault",value:function(e){return this.has(e)?this.get(e):e}}]),n}(Object(Se["a"])(Map)),Ve=Object(ve["a"])((function e(){Object(we["a"])(this,e);var t=me.InstallOperation.Type;this.mapType=new Ue;for(var n=0,r=Object.keys(t);n1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:16,r="",a=0;a3&&void 0!==arguments[3]?arguments[3]:15;Object(we["a"])(this,e),this.statisticData=t,this.trimmedData=ct(t,a),this.title=n,this.unit=r,this.maximumEntries=a}return Object(ve["a"])(e,[{key:"listData",value:function(){var e,t="",n=Object(Oe["a"])(this.statisticData);try{for(n.s();!(e=n.n()).done;){var r=Object(ot["a"])(e.value,2),a=r[0],i=r[1];t+=a+" : "+i.toString()+" Blocks\n"}}catch(o){n.e(o)}finally{n.f()}return t}},{key:"getEchartsOption",value:function(){var e={};return e.title={text:this.title,left:"center"},e.tooltip={trigger:"item",formatter:"{a}
{b} : {c} "+this.unit+" ({d}%)"},e.legend={orient:"horizontal",left:"top",top:"10%",data:Array.from(this.trimmedData.keys())},e.series=[{name:this.title,type:"pie",radius:"55%",center:["50%","60%"],data:Array.from(this.trimmedData).map((function(e){return{value:e[1],name:e[0]}})),emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],e}}]),e}();function ct(e,t){if(e.size<=t)return e;for(var n=new Map,r=0;ri&&(i=u,o=l)}}catch(m){s.e(m)}finally{s.f()}n.set(o,i)}var p,d=0,f=Object(Oe["a"])(e);try{for(f.s();!(p=f.n()).done;){var h=Object(ot["a"])(p.value,2),g=h[0],b=h[1];n.get(g)||(d+=b)}}catch(m){f.e(m)}finally{f.f()}return n.set("other",d),n}var lt=function(){function e(t){Object(we["a"])(this,e),t instanceof File?this.build=new Pe["ZipReader"](new Pe["BlobReader"](t)):this.build=new Pe["ZipReader"](new Pe["HttpReader"](t.href)),this.mapFiles=new Map,this.maps=new Map}return Object(ve["a"])(e,[{key:"init",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(){var t,n,r,a=this;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.build.getEntries();case 2:t=e.sent,n=/IMAGES\/[a-z_]*\.map/g,r=/[\w_]+(?=\.map)/g,t.forEach((function(e){e.filename.match(n)&&a.mapFiles.set(e.filename.match(r)[0],e)}));case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"add",value:function(){var e=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,c,l,u,p,d,f,h,g;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:for(r=[],a=/\d+/g,i=/\d+\-\d+/g,o=0;o");if(!this.mapFiles.get(t)){e.next=14;break}return e.next=7,this.mapFiles.get(t).getData(new Pe["TextWriter"]);case 7:s=e.sent,c=s.split("\n"),l=Object(Oe["a"])(c);try{for(l.s();!(u=l.n()).done;)for(p=u.value,d=p.split(" "),f=1;f2&&void 0!==s[2]?s[2]:4096,a=s.length>3&&void 0!==s[3]?s[3]:null,e.t0=t,e.next="blocks"===e.t0?5:"payload"===e.t0?8:"COWmerge"===e.t0?11:"filenames"===e.t0?14:"extensions"===e.t0?21:"partitions"===e.t0?28:31;break;case 5:return i=ft(n),o=new st(i,"Operated blocks in target build","blocks"),e.abrupt("break",31);case 8:return i=mt(n),o=new st(i,"Payload disk usage","bytes"),e.abrupt("break",31);case 11:return i=bt(n,r),o=new st(i,"COW merge operations","blocks"),e.abrupt("break",31);case 14:if(null!=a){e.next=16;break}throw new Error("Target file is required for filenames analysis");case 16:return e.next=18,jt(n,r,a);case 18:return i=e.sent,o=new st(i,"Size of operated filenames","bytes"),e.abrupt("break",31);case 21:if(null!=a){e.next=23;break}throw new Error("Target file is required for filenames analysis");case 23:return e.next=25,Ot(n,r,a);case 25:return i=e.sent,o=new st(i,"Size of operated extensions","bytes"),e.abrupt("break",31);case 28:return i=gt(n),o=new st(i,"Partition payload size","bytes"),e.abrupt("break",31);case 31:if(!o){e.next=35;break}return e.abrupt("return",o);case 35:throw"Please double check if this is a proper AB OTA package.";case 36:case"end":return e.stop()}}),e)}))),xt.apply(this,arguments)}function kt(e){if(!e)return 0;var t=function(e,t){return e+t.numBlocks};return e.reduce(t,0)}function St(e){var t=function(e,t){return e+"("+t.startBlock+","+t.numBlocks+")"};return e.reduce(t,"")}function Pt(e,t,n){for(var r=kt(t),a=new Map,i=0;i1?t[t.length-1]:"unknown"===t[0]?"unknown":"<"==e[0]&&e.endsWith(">")?e:"no-extension"}var Et=Object(r["m"])({props:{operation:{type:Object,required:!0},mapType:{type:Ue,required:!0}},data:function(){return{srcTotalBlocks:0,srcBlocks:"",dstTotalBlocks:0,dstBlocks:""}},mounted:function(){this.operation.srcExtents&&(this.srcTotalBlocks=kt(this.operation.srcExtents),this.srcBlocks=St(this.operation.srcExtents)),this.operation.dstExtents&&(this.dstTotalBlocks=kt(this.operation.dstExtents),this.dstBlocks=St(this.operation.dstExtents))}});n("8edb");Et.render=it,Et.__scopeId="data-v-44174082";var Lt=Et,It=Object(r["m"])({components:{OperationDetail:Lt},props:{partition:{type:me.PartitionUpdate,required:!0},dynamicPartitionList:{type:Array,required:!0}},data:function(){return{showOPs:!1,showInfo:!1,opType:new Ve}},methods:{toggle:function(e){this[e]=!this[e]},octToHex:Ze},computed:{readableTimestamp:function(){var e=parseInt(this.partition.version);return isNaN(e)?"":new Date(1e3*e).toString()},isDynamicPartition:function(){return this.dynamicPartitionList.indexOf(this.partition.partitionName)>=0},isFECEnabled:function(){var e;return(null===(e=this.partition.fecExtent)||void 0===e?void 0:e.numBlocks)>0},isHashtreeEnabled:function(){var e;return(null===(e=this.partition.hashTreeExtent)||void 0===e?void 0:e.numBlocks)>0}}});n("c622");It.render=ue,It.__scopeId="data-v-21e569e9";var zt=It,At=(n("498a"),Object(r["Z"])("data-v-78cae893"));Object(r["D"])("data-v-78cae893");var Tt=Object(r["l"])("h3",null,"Basic infos",-1),Bt={class:"align"},Nt=Object(r["l"])("strong",null," File name ",-1),Ct=Object(r["l"])("strong",null," File size ",-1),Dt={class:"align"},Ft={class:"wrap"},Rt={key:2},Mt={class:"align"},Ht=Object(r["l"])("strong",null," Incremental ",-1),Ut={key:0},Vt={key:1},Wt=Object(r["l"])("strong",null," Partial ",-1),Zt={key:0},Jt={key:1},Xt=Object(r["l"])("strong",null," A/B update ",-1),qt={key:0},Gt={key:1},$t={key:0},Yt=Object(r["l"])("strong",null," VAB ",-1),Kt={key:0},Qt={key:1},en={key:1},tn=Object(r["l"])("strong",null," VABC ",-1),nn={key:0},rn={key:1},an=Object(r["l"])("strong",null," Wipes Data ",-1),on={key:0},sn={key:1},cn={key:2},ln=Object(r["l"])("strong",null," Total Dynamic Partition Size ",-1),un={key:3},pn=Object(r["l"])("strong",null," Total VABC COW Size ",-1),dn={key:4},fn=Object(r["l"])("strong",null," VABC Compression Param ",-1),hn={key:5},gn=Object(r["l"])("strong",null," Security Patch Level ",-1);Object(r["B"])();var bn=At((function(e,t,n,a,i,o){return Object(r["A"])(),Object(r["i"])(r["a"],null,[Tt,e.zipFile?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:0},e.$attrs),[Object(r["l"])("ul",Bt,[Object(r["l"])("li",null,[Nt,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileName()),1)]),Object(r["l"])("li",null,[Ct,Object(r["k"])(" "+Object(r["N"])(e.zipFile.getFileSize())+" Bytes",1)])])],16)):Object(r["j"])("",!0),e.payload&&e.payload.metadata?(Object(r["A"])(),Object(r["i"])("div",Object(r["r"])({key:1},e.$attrs),[Object(r["l"])("ul",Dt,[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.otaMetadata,(function(t){return Object(r["A"])(),Object(r["i"])("li",{key:t.name},[Object(r["l"])("strong",null,Object(r["N"])(t.name.trim()+" "),1),Object(r["l"])("p",Ft,Object(r["N"])(String(e.payload[t.key]).trim()),1)])})),128))])],16)):Object(r["j"])("",!0),e.payload&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])("div",Rt,[Object(r["l"])("ul",Mt,[Object(r["l"])("li",null,[Ht,e.payload.preBuild?(Object(r["A"])(),Object(r["i"])("span",Ut," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Vt," ❌ "))]),Object(r["l"])("li",null,[Wt,e.payload.manifest.partialUpdate?(Object(r["A"])(),Object(r["i"])("span",Zt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Jt," ❌ "))]),Object(r["l"])("li",null,[Xt,e.payload.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",Gt," ❌ ")):(Object(r["A"])(),Object(r["i"])("span",qt," ✅ "))]),e.payload.manifest.dynamicPartitionMetadata?(Object(r["A"])(),Object(r["i"])("li",$t,[Yt,e.payload.manifest.dynamicPartitionMetadata.snapshotEnabled?(Object(r["A"])(),Object(r["i"])("span",Kt," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",Qt," ❌ "))])):Object(r["j"])("",!0),e.payload.manifest.dynamicPartitionMetadata?(Object(r["A"])(),Object(r["i"])("li",en,[tn,e.payload.manifest.dynamicPartitionMetadata.vabcEnabled?(Object(r["A"])(),Object(r["i"])("span",nn," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",rn," ❌ "))])):Object(r["j"])("",!0),Object(r["l"])("li",null,[an,e.isDataWipePackage?(Object(r["A"])(),Object(r["i"])("span",on," ✅ ")):(Object(r["A"])(),Object(r["i"])("span",sn," ❌ "))]),e.totalDynamicPartitionSize?(Object(r["A"])(),Object(r["i"])("li",cn,[ln,Object(r["k"])(" "+Object(r["N"])(e.totalDynamicPartitionSize),1)])):Object(r["j"])("",!0),e.totalCOWSize?(Object(r["A"])(),Object(r["i"])("li",un,[pn,Object(r["k"])(" "+Object(r["N"])(e.totalCOWSize),1)])):Object(r["j"])("",!0),e.vabcCompressionParam?(Object(r["A"])(),Object(r["i"])("li",dn,[fn,Object(r["k"])(" "+Object(r["N"])(e.vabcCompressionParam),1)])):Object(r["j"])("",!0),e.securityPatchLevel?(Object(r["A"])(),Object(r["i"])("li",hn,[gn,Object(r["k"])(" "+Object(r["N"])(e.securityPatchLevel),1)])):Object(r["j"])("",!0)])])):Object(r["j"])("",!0)],64)})),mn=(n("caad"),n("2532"),n("4de4"),n("6062"),function(){function e(t){Object(we["a"])(this,e),this.file=t,this.reader=jn(t)}return Object(ve["a"])(e,[{key:"getFileName",value:function(){return vn(this.file)}},{key:"getFileSize",value:function(){return this.file instanceof File?this.file.size:0}}]),e}());function On(e,t){return yn.apply(this,arguments)}function yn(){return yn=Object(g["a"])(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return r=t,a=new Pe["ZipWriter"](new Pe["BlobWriter"]("application/zip")),e.next=4,r.getEntries();case 4:i=e.sent,o=Object(Oe["a"])(i.filter((function(e){return!!e&&n(e)}))),e.prev=6,o.s();case 8:if((s=o.n()).done){e.next=18;break}return c=s.value,l=new Pe["BlobWriter"],e.next=13,c.getData(l);case 13:u=e.sent,console.log("Adding ".concat(c.filename,", ").concat(u.size)),a.add(c.filename,new Pe["BlobReader"](l.getData()),{level:0});case 16:e.next=8;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e["catch"](6),o.e(e.t0);case 23:return e.prev=23,o.f(),e.finish(23);case 26:return e.abrupt("return",a);case 27:case"end":return e.stop()}}),e,null,[[6,20,23,26]])}))),yn.apply(this,arguments)}function jn(e){return e instanceof File?new Pe["ZipReader"](new Pe["BlobReader"](e)):new Pe["ZipReader"](new Pe["HttpReader"](e.href))}function vn(e){return e instanceof File?e.name:e.pathname}function wn(e){return xn.apply(this,arguments)}function xn(){return xn=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,On(jn(t),(function(e){return e.filename.startsWith("META/")||e.filename.endsWith(".map")||e.filename.endsWith(".prop")||"prop.default"==e.filename}));case 2:return n=e.sent,e.next=5,n.close();case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e)}))),xn.apply(this,arguments)}function kn(e){return Sn.apply(this,arguments)}function Sn(){return Sn=Object(g["a"])(regeneratorRuntime.mark((function e(t){var n,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,On(t.zipreader,(function(e){return"payload.bin"!=e.filename}));case 2:return n=e.sent,e.next=5,n.add("payload.bin",new Pe["BlobReader"](t.buffer.slice(0,t.getMetadataLength())),{level:0});case 5:return e.next=7,n.close();case 7:return r=e.sent,e.abrupt("return",r);case 9:case"end":return e.stop()}}),e)}))),Sn.apply(this,arguments)}function Pn(e,t,n){var r=window.URL.createObjectURL(e);t.href=r,t.download=n,t.click(),window.URL.revokeObjectURL(r)}function _n(e,t){return e.endsWith(t)?e:e+t}var En=Object(r["m"])({props:{zipFile:{type:mn,required:!0},payload:{type:He,required:!0}},data:function(){return{MetadataFormat:Ne}},computed:{isDataWipePackage:function(){return this.payload.payload_properties.includes("POWERWASH=1")},otaMetadata:function(){var e=this;return Ne.filter((function(t){return String(e.payload[t.key]).length>0}))},totalCOWSize:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.partitions.map((function(e){return e.estimateCowSize||0}));return n?n.reduce((function(e,t){return e+t})):0},vabcCompressionParam:function(){var e,t,n;return(null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.vabcCompressionParam)||""},securityPatchLevel:function(){var e,t,n=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t?void 0:t.securityPatchLevel;return n||""},totalDynamicPartitionSize:function(){var e,t,n,r,a=null===(e=this.payload)||void 0===e||null===(t=e.manifest)||void 0===t||null===(n=t.dynamicPartitionMetadata)||void 0===n?void 0:n.groups;if(!a)return 0;var i=new Set(a.flatMap((function(e){return e.partitionNames}))),o=(null===(r=this.payload.manifest)||void 0===r?void 0:r.partitions.filter((function(e){return i.has(e.partitionName)})))||[];return o.length<=0?0:o.map((function(e){var t;return(null===(t=e.newPartitionInfo)||void 0===t?void 0:t.size)||0})).reduce((function(e,t){return e+t}))}}});n("9175");En.render=bn,En.__scopeId="data-v-78cae893";var Ln=En,In=Object(r["m"])({components:{PartitionDetail:zt,BasicInfo:Ln},props:{zipFile:{type:mn,default:null},payload:{type:He,default:null}},methods:{octToHex:Ze,exportOTAPackage:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,kn(e.payload);case 2:n=t.sent,r=e.$refs["download"],Pn(n,r,"trimmed_"+_n(e.zipFile.getFileName(),".zip"));case 5:case"end":return t.stop()}}),t)})))()}},computed:{dynamicPartitions:function(){var e,t,n;return(null===(e=this.payload.manifest)||void 0===e||null===(t=e.dynamicPartitionMetadata)||void 0===t||null===(n=t.groups)||void 0===n?void 0:n.flatMap((function(e){return e.partitionNames||[]})))||[]},payloadHash:function(){var e,t=null===(e=this.payload)||void 0===e?void 0:e.getPayloadHash();return t?Ze(t,!1):""}}});n("2948");In.render=N,In.__scopeId="data-v-5dd4ca12";var zn=In,An=Object(r["Z"])("data-v-4d98493f");Object(r["D"])("data-v-4d98493f");var Tn=Object(r["k"])("Export Target File Metadata"),Bn={ref:"download"},Nn={key:1},Cn=Object(r["k"])(" Analyse Installed Blocks (in target build) "),Dn=Object(r["k"])(" Analyse Payload Composition "),Fn=Object(r["k"])(" Analyse Partition Payload Composition "),Rn=Object(r["k"])(" Analyse COW Merge Operations "),Mn={key:0,class:"tooltiptext"},Hn=Object(r["k"])(" Analyse Filenames "),Un=Object(r["k"])(" Analyse File Extensions ");Object(r["B"])();var Vn=An((function(e,t,n,a,i,o){var s=Object(r["I"])("v-btn"),c=Object(r["I"])("PartialCheckbox"),l=Object(r["I"])("PieChart"),u=Object(r["I"])("v-divider"),p=Object(r["I"])("v-col"),d=Object(r["I"])("v-row"),f=Object(r["I"])("BaseFile");return Object(r["A"])(),Object(r["i"])(r["a"],null,[e.targetFile?(Object(r["A"])(),Object(r["i"])(s,{key:0,block:"",class:"md-6",onClick:e.exportTargetFileMetadata},{default:An((function(){return[Tn]})),_:1},8,["onClick"])):Object(r["j"])("",!0),Object(r["l"])("a",Bn,null,512),Object(r["l"])(c,{modelValue:e.partitionInclude,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.partitionInclude=t}),labels:e.updatePartitions},null,8,["modelValue","labels"]),e.echartsData?(Object(r["A"])(),Object(r["i"])("div",Nn,[Object(r["l"])(l,{echartsData:e.echartsData,onClick:e.piechartClick},null,8,["echartsData","onClick"])])):Object(r["j"])("",!0),Object(r["l"])(u),Object(r["l"])(d,null,{default:An((function(){return[Object(r["l"])(p,{cols:"12",md:"4"},{default:An((function(){return[Object(r["l"])(s,{block:"",onClick:t[2]||(t[2]=function(t){return e.updateChart("blocks")})},{default:An((function(){return[Cn]})),_:1})]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:An((function(){return[Object(r["l"])(s,{block:"",onClick:t[3]||(t[3]=function(t){return e.updateChart("payload")})},{default:An((function(){return[Dn]})),_:1})]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:An((function(){return[Object(r["l"])(s,{block:"",onClick:t[4]||(t[4]=function(t){return e.updateChart("partitions")})},{default:An((function(){return[Fn]})),_:1})]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:An((function(){return[Object(r["l"])(p,{cols:"12",md:"4",class:"tooltip"},{default:An((function(){return[Object(r["l"])(s,{disabled:e.manifest.nonAB||!e.manifest.dynamicPartitionMetadata||!e.manifest.dynamicPartitionMetadata.vabcEnabled,title:"Only available for VABC update",block:"",onClick:t[5]||(t[5]=function(t){return e.updateChart("COWmerge")})},{default:An((function(){return[Rn]})),_:1},8,["disabled"]),e.manifest.nonAB?(Object(r["A"])(),Object(r["i"])("span",Mn," This function is only supported in A/B OTA ")):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:An((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[6]||(t[6]=function(t){return e.updateChart("filenames")})},{default:An((function(){return[Hn]})),_:1},8,["disabled"])]})),_:1}),Object(r["l"])(p,{cols:"12",md:"4"},{default:An((function(){return[Object(r["l"])(s,{block:"",disabled:!e.targetFile,onClick:t[7]||(t[7]=function(t){return e.updateChart("extensions")})},{default:An((function(){return[Un]})),_:1},8,["disabled"])]})),_:1})]})),_:1}),Object(r["l"])(d,null,{default:An((function(){return[Object(r["l"])(p,{cols:"12",md:"6"}),Object(r["l"])(p,{cols:"12",md:"6"},{default:An((function(){return[e.demo?Object(r["j"])("",!0):(Object(r["A"])(),Object(r["i"])(f,{key:0,label:"Drag and drop or Select The target Android build",onFileSelect:e.selectBuild},null,8,["onFileSelect"]))]})),_:1})]})),_:1})],64)})),Wn=n("bc3a"),Zn=n.n(Wn),Jn=Object(r["Z"])("data-v-533f2336");Object(r["D"])("data-v-533f2336");var Xn={key:0};Object(r["B"])();var qn=Jn((function(e,t,n,a,i,o){var s=Object(r["I"])("v-btn"),c=Object(r["I"])("v-col"),l=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(r["a"],null,[Object(r["l"])(s,{block:"",type:"button",class:"my-5",onClick:e.revertAllSelection},{default:Jn((function(){return[Object(r["k"])(Object(r["N"])(e.selectAllText[e.selectAll]),1)]})),_:1},8,["onClick"]),Object(r["l"])(l,{class:"mb-5"},{default:Jn((function(){return[(Object(r["A"])(!0),Object(r["i"])(r["a"],null,Object(r["H"])(e.labels,(function(n){return Object(r["A"])(),Object(r["i"])(c,{key:n,cols:"12",md:"4"},{default:Jn((function(){return[Object(r["l"])("input",{type:"checkbox",value:n,checked:e.modelValue.get(n),onChange:t[1]||(t[1]=function(t){return e.updateSelected(t.target.value)})},null,40,["value","checked"]),n?(Object(r["A"])(),Object(r["i"])("label",Xn,Object(r["N"])(n),1)):Object(r["j"])("",!0)]})),_:2},1024)})),128))]})),_:1})],64)})),Gn=Object(r["m"])({props:{labels:{type:Array,default:new Array},modelValue:{type:Map,default:new Map}},data:function(){return{selectAll:1,selectAllText:["Select All","Unselect All"]}},mounted:function(){var e,t=Object(Oe["a"])(this.labels);try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,!0)}}catch(r){t.e(r)}finally{t.f()}},methods:{updateSelected:function(e){this.modelValue.set(e,!this.modelValue.get(e)),this.$emit("update:modelValue",this.modelValue)},revertAllSelection:function(){this.selectAll=1-this.selectAll;var e,t=Object(Oe["a"])(this.modelValue.keys());try{for(t.s();!(e=t.n()).done;){var n=e.value;this.modelValue.set(n,Boolean(this.selectAll))}}catch(r){t.e(r)}finally{t.f()}}}});n("a75a");Gn.render=qn,Gn.__scopeId="data-v-533f2336";var $n=Gn,Yn=n("2909"),Kn="undefined"===typeof arguments?void 0:arguments,Qn=Object(r["Z"])("data-v-5d1cb486"),er=Qn((function(e,t,n,a,i,o){var s=Object(r["I"])("v-chart");return Object(r["A"])(),Object(r["i"])(s,{class:"chart",option:o.getEchartsOption,onClick:t[1]||(t[1]=function(t){return e.$emit.apply(e,["click"].concat(Object(Yn["a"])(Kn)))})},null,8,["option"])})),tr=n("ade3"),nr=n("22b4"),rr=n("f95e"),ar=n("49bb"),ir=n("9394"),or=n("2da7"),sr=n("ff32"),cr=n("5c7f");Object(nr["a"])([rr["a"],ar["a"],ir["a"],or["a"],sr["a"]]);var lr={components:{VChart:cr["b"]},provide:Object(tr["a"])({},cr["a"],"dark"),props:{echartsData:{type:st,required:!0}},computed:{getEchartsOption:function(){return this.echartsData.getEchartsOption()}}};n("47e0");lr.render=er,lr.__scopeId="data-v-5d1cb486";var ur=lr,pr=Object(r["m"])({components:{PartialCheckbox:$n,PieChart:ur,BaseFile:x},props:{manifest:{type:me.DeltaArchiveManifest,default:function(){return[]}},demo:{type:Boolean,default:!1}},data:function(){return{partitionInclude:new Map,echartsData:null,listData:"",targetFile:null}},computed:{updatePartitions:function(){return this.manifest.partitions.map((function(e){return e.partitionName}))}},mounted:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(!e.demo){t.next=11;break}return t.prev=1,t.next=4,Zn.a.get("./files/cf_x86_target_file_demo.zip",{responseType:"blob"});case 4:n=t.sent,e.targetFile=new File([n.data],"target_demo.zip"),t.next=11;break;case 8:t.prev=8,t.t0=t["catch"](1),console.log("Please put a proper example target file in /public/files/");case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))()},methods:{piechartClick:function(e){console.log(e)},updateChart:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return r=t.manifest.partitions.filter((function(e){return t.partitionInclude.get(e.partitionName)})),n.prev=1,n.next=4,wt(e,r,t.manifest.blockSize,t.targetFile);case 4:t.echartsData=n.sent,n.next=10;break;case 7:n.prev=7,n.t0=n["catch"](1),alert("Cannot be processed for the following issue: ".concat(n.t0));case 10:case"end":return n.stop()}}),n,null,[[1,7]])})))()},selectBuild:function(e){this.targetFile=e},exportTargetFileMetadata:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,wn(e.targetFile);case 2:n=t.sent,r=e.$refs["download"],Pn(n,r,"trimmed_"+_n(vn(e.targetFile),".zip"));case 5:case"end":return t.stop()}}),t)})))()}}});n("18ff");pr.render=Vn,pr.__scopeId="data-v-4d98493f";var dr=pr,fr=Object(r["m"])({components:{BaseFile:x,PayloadDetail:zn,PayloadComposition:dr},data:function(){return{zipFile:null,payload:null}},methods:{unpackOTA:function(e){var t=this;return Object(g["a"])(regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return t.zipFile=new mn(e),n.prev=1,r=new He(t.zipFile),n.next=5,r.init();case 5:t.payload=r,n.next=12;break;case 8:n.prev=8,n.t0=n["catch"](1),alert("Please check if this is a correct OTA package (.zip). ".concat(n.t0)),console.log(n.t0);case 12:case"end":return n.stop()}}),n,null,[[1,8]])})))()}}});fr.render=h;var hr=fr;function gr(e,t,n,a,i,o){var s=Object(r["I"])("PayloadDetail"),c=Object(r["I"])("v-col"),l=Object(r["I"])("v-divider"),u=Object(r["I"])("PayloadComposition"),p=Object(r["I"])("v-row");return Object(r["A"])(),Object(r["i"])(p,null,{default:Object(r["X"])((function(){return[Object(r["l"])(c,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload?(Object(r["A"])(),Object(r["i"])(s,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):Object(r["j"])("",!0)]})),_:1}),Object(r["l"])(l,{vertical:""}),Object(r["l"])(c,{cols:"12",md:"6"},{default:Object(r["X"])((function(){return[e.zipFile&&e.payload.manifest?(Object(r["A"])(),Object(r["i"])(u,{key:0,manifest:e.payload.manifest,demo:!0},null,8,["manifest"])):Object(r["j"])("",!0)]})),_:1})]})),_:1})}var br=Object(r["m"])({components:{PayloadDetail:zn,PayloadComposition:dr},data:function(){return{zipFile:null,payload:null}},created:function(){var e=this;return Object(g["a"])(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,Zn.a.get("./files/cf_x86_demo.zip",{responseType:"blob"});case 3:return n=t.sent,e.zipFile=new mn(new File([n.data],"ota_demo.zip")),e.payload=new He(e.zipFile),t.next=8,e.payload.init();case 8:t.next=13;break;case 10:t.prev=10,t.t0=t["catch"](0),console.log("Please put a proper example OTA in /public/files/");case 13:case"end":return t.stop()}}),t,null,[[0,10]])})))()}});br.render=gr;var mr=br,Or={class:"about"},yr=Object(r["l"])("p",null,"A web based tool to inspect Android OTA packages.",-1);function jr(e,t){return Object(r["A"])(),Object(r["i"])("div",Or,[yr])}const vr={};vr.render=jr;var wr=vr,xr=Object(r["Z"])("data-v-50c6f348");Object(r["D"])("data-v-50c6f348");var kr=Object(r["l"])("h1",null,"Not Found!",-1),Sr=Object(r["l"])("p",null,[Object(r["l"])("a",{href:"/"},"Go home?")],-1);Object(r["B"])();var Pr=xr((function(e,t){var n=Object(r["I"])("center");return Object(r["A"])(),Object(r["i"])(n,null,{default:xr((function(){return[kr,Sr]})),_:1})}));n("8e71");const _r={};_r.render=Pr,_r.__scopeId="data-v-50c6f348";var Er=_r,Lr=[{path:"/",name:"Analysis",component:hr,meta:{title:"Analyse OTA package - from AOSP"}},{path:"/demo",name:"Demo",component:mr},{path:"/about",name:"About",component:wr},{path:"/:catchAll(.*)",name:"Not Found",component:Er}],Ir=Object(d["a"])({history:Object(d["b"])("/analyseOTA/"),routes:Lr});Ir.beforeEach((function(e,t,n){var r=e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.title})),a=(e.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})),t.matched.slice().reverse().find((function(e){return e.meta&&e.meta.metaTags})));r?document.title=r.meta.title:a&&(document.title=a.meta.title),Array.from(document.querySelectorAll("[data-vue-router-controlled]")).map((function(e){return e.parentNode.removeChild(e)})),n()}));var zr=Ir,Ar=n("5502"),Tr=Object(Ar["a"])({state:{},mutations:{},actions:{},modules:{}}),Br=Object(r["h"])(p);Br.use(zr),Br.use(Tr),Br.use(s),Br.mount("#app")},d978:function(e,t,n){}}); +//# sourceMappingURL=app.e2b79c2b.js.map \ No newline at end of file diff --git a/analyseOTA/js/app.e2b79c2b.js.map b/analyseOTA/js/app.e2b79c2b.js.map new file mode 100644 index 0000000..ea6d98d --- /dev/null +++ b/analyseOTA/js/app.e2b79c2b.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/PayloadComposition.vue?7153","webpack:///./src/components/PayloadDetail.vue?8f9f","webpack:///./src/App.vue?1825","webpack:///./src/components/PieChart.vue?3f25","webpack:///./src/components/BaseFile.vue?5b74","webpack:///./src/views/NotFound.vue?18b8","webpack:///./src/components/OperationDetail.vue?7823","webpack:///./src/components/BasicInfo.vue?97f5","webpack:///./src/components/PartialCheckbox.vue?cce7","webpack:///./src/components/PartitionDetail.vue?e22f","webpack:///./src/plugins/vuetify.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?6697","webpack:///./src/views/PackageAnalysis.vue","webpack:///./src/components/BaseFile.vue","webpack:///./src/components/BaseFile.vue?5af0","webpack:///./src/components/BaseFile.vue?408d","webpack:///./src/components/PayloadDetail.vue","webpack:///./src/components/PartitionDetail.vue","webpack:///./src/services/update_metadata_pb.js","webpack:///./src/services/payload_nonab.ts","webpack:///./src/services/payload.ts","webpack:///./src/components/OperationDetail.vue","webpack:///./src/services/echarts_data.ts","webpack:///./src/services/map_parser.ts","webpack:///./src/services/payload_composition.ts","webpack:///./src/components/OperationDetail.vue?0239","webpack:///./src/components/OperationDetail.vue?19cd","webpack:///./src/components/PartitionDetail.vue?7d27","webpack:///./src/components/PartitionDetail.vue?b40d","webpack:///./src/components/BasicInfo.vue","webpack:///./src/services/trim_zip.ts","webpack:///./src/components/BasicInfo.vue?bb39","webpack:///./src/components/BasicInfo.vue?e053","webpack:///./src/components/PayloadDetail.vue?cdd8","webpack:///./src/components/PayloadDetail.vue?a20c","webpack:///./src/components/PayloadComposition.vue","webpack:///./src/components/PartialCheckbox.vue","webpack:///./src/components/PartialCheckbox.vue?fbe3","webpack:///./src/components/PartialCheckbox.vue?59db","webpack:///./src/components/PieChart.vue","webpack:///./src/components/PieChart.vue?1278","webpack:///./src/components/PayloadComposition.vue?3e04","webpack:///./src/components/PayloadComposition.vue?d59c","webpack:///./src/views/PackageAnalysis.vue?3fdf","webpack:///./src/views/PackageAnalysis.vue?2d24","webpack:///./src/views/Demo.vue","webpack:///./src/views/Demo.vue?9616","webpack:///./src/views/Demo.vue?e633","webpack:///./src/views/About.vue","webpack:///./src/views/About.vue?aa81","webpack:///./src/views/NotFound.vue","webpack:///./src/views/NotFound.vue?2812","webpack:///./src/router/index.ts","webpack:///./src/store/index.ts","webpack:///./src/main.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","components","directives","theme","defaultTheme","rounded","color","links","link","to","class","fluid","render","style","cols","md","label","unpackOTA","zipFile","payload","vertical","manifest","dragover","dragleave","drop","fileName","ref","type","accept","handleFileChange","placeholder","url","urlKeyup","props","String","default","emits","computed","parsedURL","URL","this","methods","event","currentTarget","target","files","selectedFile","$emit","preventDefault","classList","contains","add","remove","dataTransfer","console","log","error","__scopeId","exportOTAPackage","partitions","partition","partitionName","elevation","hover","shaped","dynamicPartitionList","dynamicPartitions","nonAB","payloadHash","metadata_signature","octToHex","signatures","oldPartitionInfo","isDynamicPartition","isFECEnabled","isHashtreeEnabled","estimateCowSize","postinstallPath","toggle","showInfo","size","hash","newPartitionInfo","version","readableTimestamp","showOPs","operations","operation","dataSha256Hash","mapType","opType","$Reader","$protobuf","$Writer","$util","$root","chromeos_update_engine","Extent","properties","keys","startBlock","Long","fromBits","numBlocks","encode","message","writer","uint32","uint64","encodeDelimited","ldelim","decode","reader","end","undefined","len","pos","tag","skipType","decodeDelimited","verify","isInteger","low","high","fromObject","fromValue","unsigned","parseInt","LongBits","toNumber","toObject","options","defaults","long","longs","toString","Number","toJSON","constructor","toJSONOptions","Signatures","emptyArray","Signature","fork","Array","isArray","TypeError","arrays","newBuffer","unpaddedSignatureSize","bytes","fixed32","isString","base64","PartitionInfo","InstallOperation","srcExtents","dstExtents","dataOffset","dataLength","srcLength","dstLength","srcSha256Hash","int32","ProtocolError","instance","enums","Type","valuesById","values","CowMergeOperation","srcExtent","dstExtent","srcOffset","PartitionUpdate","newPartitionSignature","mergeOperations","runPostinstall","filesystemType","postinstallOptional","hashTreeDataExtent","hashTreeExtent","hashTreeAlgorithm","hashTreeSalt","fecDataExtent","fecExtent","fecRoots","string","bool","Boolean","DynamicPartitionGroup","partitionNames","DynamicPartitionMetadata","groups","snapshotEnabled","vabcEnabled","vabcCompressionParam","cowVersion","ApexInfo","packageName","isCompressed","decompressedSize","int64","ApexMetadata","apexInfo","DeltaArchiveManifest","blockSize","signaturesOffset","signaturesSize","minorVersion","maxTimestamp","dynamicPartitionMetadata","partialUpdate","securityPatchLevel","packedFile","Blocksize","regexName","getEntries","entries","entry","filename","match","newPartition","getData","rawText","parseTransferList","lines","split","totalBlocks","entryStashed","maxStashed","Uint8Array","sizeNewData","newDataSize","line","op","elements","reduce","parseRange","RegExp","uncompressedSize","extents","rangeset","regexRange","extent","_MAGIC","_VERSION_SIZE","_MANIFEST_LEN_SIZE","_METADATA_SIGNATURE_LEN_SIZE","_PAYLOAD_HEADER_SIZE","_BRILLO_MAJOR_PAYLOAD_VERSION","MetadataFormat","prefix","Error","magic","manifest_len","metadata_signature_len","readIntAt","buffer","position","DataView","arrayBuffer","view","getBigUint64","offset","a","BigInt","getUint32","b","bigNumber","getUint16","contentType","blob","Blob","prefixLength","cursor","readInt","ret","decoder","TextDecoder","magicBytes","header_version","header","array","readHeader","file","File","zipreader","href","payload_properties","readManifest","metadata","getPayloadHash","init","alert","file_hash_prefix","startsWith","base64ToBytes","substring","manifestBlob","signatureBlob","formatter","regex","trimEntry","unzip","parseMetadata","has","Map","types","set","bufferArray","space","maxLine","hex_table","hex","toUpperCase","binString","atob","from","codePointAt","getWithDefault","srcTotalBlocks","srcBlocks","dstTotalBlocks","dstBlocks","statisticData","title","unit","maximumEntries","trimmedData","trimMap","table","option","text","left","tooltip","trigger","legend","orient","top","series","radius","center","map","pair","emphasis","itemStyle","shadowBlur","shadowOffsetX","shadowColor","new_map","curr","currKey","restTotal","targetFile","build","mapFiles","maps","regexPath","forEach","totalLength","regexNumber","mapText","fileEntries","right","InsertMap","names","ext","queryMap","addNumberToMap","operatedBlockStatistics","operatedBlocks","operationType","partitionPayloadSize","partitionPayloadSizeStatistics","partitionStats","mergeOperationStatistics","Math","ceil","operatedPayloadStatistics","operatedFileExtensionsStatistics","operatedFilenamesStatistics","filenameStats","fileExtenstionStats","name2Extension","operatedFilenames","buildMap","operatedFileNames","query","extentDataLength","distributeFilenames","analysePartitions","metrics","statisticsData","echartsData","exts","accumulator","total","displayBlocks","filenames","distributedLengths","round","endsWith","required","mounted","OperationDetail","unixTimestamp","isNaN","Date","indexOf","$attrs","getFileName","getFileSize","otaMetadata","trim","preBuild","isDataWipePackage","totalDynamicPartitionSize","totalCOWSize","getZipReader","trimZip","zip","filter","blobWriter","level","pathname","trimTargetFiles","close","trimOTAPackage","getMetadataLength","downloadFile","downloadNode","createObjectURL","download","click","revokeObjectURL","ensureSuffix","str","suffix","includes","cowSizes","spl","dynamicPartitionNamess","Set","flatMap","g","acc","cur","PartitionDetail","BasicInfo","$refs","block","exportTargetFileMetadata","partitionInclude","labels","updatePartitions","piechartClick","updateChart","disabled","demo","selectBuild","revertAllSelection","selectAllText","selectAll","checked","modelValue","updateSelected","$event","newSelect","getEchartsOption","VChart","provide","PartialCheckbox","PieChart","BaseFile","listData","responseType","param","partitionSelected","PayloadDetail","PayloadComposition","created","script","routes","path","component","PackageAnalysis","meta","Demo","About","NotFound","router","history","beforeEach","next","nearestWithTitle","matched","reverse","find","previousNearestWithMeta","metaTags","document","querySelectorAll","el","parentNode","removeChild","state","mutations","actions","app","App","use","store","vuetify","mount"],"mappings":"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","file":"js/app.e2b79c2b.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/analyseOTA/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadComposition.vue?vue&type=style&index=0&id=4d98493f&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadDetail.vue?vue&type=style&index=0&id=5dd4ca12&scoped=true&lang=css\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BasicInfo.vue?vue&type=style&index=0&id=78cae893&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartitionDetail.vue?vue&type=style&index=0&id=21e569e9&scoped=true&lang=css\"","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport 'vuetify/lib/styles/main.sass'\nimport { createVuetify } from 'vuetify'\nimport * as components from 'vuetify/lib/components'\nimport * as directives from 'vuetify/lib/directives'\n\nexport default createVuetify({\n components,\n directives,\n theme: {\n defaultTheme: 'dark'\n }\n})\n","\n\n\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=ee415730\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n label: {\n type: String,\n default: ''\n }\n },\n emits: {\n 'file-select': null\n },\n data() {\n return {\n fileName: '',\n url: ''\n }\n },\n computed: {\n parsedURL(): URL | null {\n try {\n return new URL(this.url)\n } catch {\n return null\n }\n }\n },\n\n methods: {\n handleFileChange(event: any) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (target.files == null || target.files.length < 1) {\n return\n }\n const selectedFile = target.files![0]\n this.$emit('file-select', selectedFile)\n // If user selects a file, clear the URL component\n this.url = ''\n this.fileName = target.files![0].name\n },\n dragover(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!target.classList.contains('file-hover')) {\n target.classList.add('file-hover')\n }\n },\n dragleave(event: DragEvent) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n target.classList.remove('file-hover')\n },\n drop(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!event.dataTransfer || event.dataTransfer.files.length == 0) {\n return\n }\n target.files = event.dataTransfer.files\n this.handleFileChange(event)\n target.classList.remove('file-hover')\n },\n urlKeyup(event: KeyboardEvent) {\n console.log(this.url)\n if (event.key == 'Enter') {\n const target = event.target as HTMLInputElement\n if (this.parsedURL == null) {\n console.error(`${target.value} is an invalid URL`)\n return\n }\n this.$emit('file-select', this.parsedURL)\n }\n }\n }\n})\n","import { render } from \"./BaseFile.vue?vue&type=template&id=0630c5ec&scoped=true\"\nimport script from \"./BaseFile.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseFile.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-0630c5ec\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\nimport * as $protobuf from \"protobufjs/minimal\";\n\n// Common aliases\nconst $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nconst $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\nexport const chromeos_update_engine = $root.chromeos_update_engine = (() => {\n\n /**\n * Namespace chromeos_update_engine.\n * @exports chromeos_update_engine\n * @namespace\n */\n const chromeos_update_engine = {};\n\n chromeos_update_engine.Extent = (function() {\n\n /**\n * Properties of an Extent.\n * @memberof chromeos_update_engine\n * @interface IExtent\n * @property {number|Long|null} [startBlock] Extent startBlock\n * @property {number|Long|null} [numBlocks] Extent numBlocks\n */\n\n /**\n * Constructs a new Extent.\n * @memberof chromeos_update_engine\n * @classdesc Represents an Extent.\n * @implements IExtent\n * @constructor\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n */\n function Extent(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Extent startBlock.\n * @member {number|Long} startBlock\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.startBlock = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Extent numBlocks.\n * @member {number|Long} numBlocks\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.numBlocks = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new Extent instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n * @returns {chromeos_update_engine.Extent} Extent instance\n */\n Extent.create = function create(properties) {\n return new Extent(properties);\n };\n\n /**\n * Encodes the specified Extent message. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startBlock != null && Object.hasOwnProperty.call(message, \"startBlock\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.startBlock);\n if (message.numBlocks != null && Object.hasOwnProperty.call(message, \"numBlocks\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.numBlocks);\n return writer;\n };\n\n /**\n * Encodes the specified Extent message, length delimited. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Extent();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.startBlock = reader.uint64();\n break;\n case 2:\n message.numBlocks = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an Extent message.\n * @function verify\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Extent.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (!$util.isInteger(message.startBlock) && !(message.startBlock && $util.isInteger(message.startBlock.low) && $util.isInteger(message.startBlock.high)))\n return \"startBlock: integer|Long expected\";\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (!$util.isInteger(message.numBlocks) && !(message.numBlocks && $util.isInteger(message.numBlocks.low) && $util.isInteger(message.numBlocks.high)))\n return \"numBlocks: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an Extent message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Extent} Extent\n */\n Extent.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Extent)\n return object;\n let message = new $root.chromeos_update_engine.Extent();\n if (object.startBlock != null)\n if ($util.Long)\n (message.startBlock = $util.Long.fromValue(object.startBlock)).unsigned = true;\n else if (typeof object.startBlock === \"string\")\n message.startBlock = parseInt(object.startBlock, 10);\n else if (typeof object.startBlock === \"number\")\n message.startBlock = object.startBlock;\n else if (typeof object.startBlock === \"object\")\n message.startBlock = new $util.LongBits(object.startBlock.low >>> 0, object.startBlock.high >>> 0).toNumber(true);\n if (object.numBlocks != null)\n if ($util.Long)\n (message.numBlocks = $util.Long.fromValue(object.numBlocks)).unsigned = true;\n else if (typeof object.numBlocks === \"string\")\n message.numBlocks = parseInt(object.numBlocks, 10);\n else if (typeof object.numBlocks === \"number\")\n message.numBlocks = object.numBlocks;\n else if (typeof object.numBlocks === \"object\")\n message.numBlocks = new $util.LongBits(object.numBlocks.low >>> 0, object.numBlocks.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from an Extent message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.Extent} message Extent\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Extent.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.startBlock = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.startBlock = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.numBlocks = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.numBlocks = options.longs === String ? \"0\" : 0;\n }\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (typeof message.startBlock === \"number\")\n object.startBlock = options.longs === String ? String(message.startBlock) : message.startBlock;\n else\n object.startBlock = options.longs === String ? $util.Long.prototype.toString.call(message.startBlock) : options.longs === Number ? new $util.LongBits(message.startBlock.low >>> 0, message.startBlock.high >>> 0).toNumber(true) : message.startBlock;\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (typeof message.numBlocks === \"number\")\n object.numBlocks = options.longs === String ? String(message.numBlocks) : message.numBlocks;\n else\n object.numBlocks = options.longs === String ? $util.Long.prototype.toString.call(message.numBlocks) : options.longs === Number ? new $util.LongBits(message.numBlocks.low >>> 0, message.numBlocks.high >>> 0).toNumber(true) : message.numBlocks;\n return object;\n };\n\n /**\n * Converts this Extent to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Extent\n * @instance\n * @returns {Object.} JSON object\n */\n Extent.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Extent;\n })();\n\n chromeos_update_engine.Signatures = (function() {\n\n /**\n * Properties of a Signatures.\n * @memberof chromeos_update_engine\n * @interface ISignatures\n * @property {Array.|null} [signatures] Signatures signatures\n */\n\n /**\n * Constructs a new Signatures.\n * @memberof chromeos_update_engine\n * @classdesc Represents a Signatures.\n * @implements ISignatures\n * @constructor\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n */\n function Signatures(properties) {\n this.signatures = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signatures signatures.\n * @member {Array.} signatures\n * @memberof chromeos_update_engine.Signatures\n * @instance\n */\n Signatures.prototype.signatures = $util.emptyArray;\n\n /**\n * Creates a new Signatures instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures} Signatures instance\n */\n Signatures.create = function create(properties) {\n return new Signatures(properties);\n };\n\n /**\n * Encodes the specified Signatures message. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.signatures != null && message.signatures.length)\n for (let i = 0; i < message.signatures.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.signatures[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Signatures message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.signatures && message.signatures.length))\n message.signatures = [];\n message.signatures.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signatures message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signatures.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.signatures != null && message.hasOwnProperty(\"signatures\")) {\n if (!Array.isArray(message.signatures))\n return \"signatures: array expected\";\n for (let i = 0; i < message.signatures.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.signatures[i]);\n if (error)\n return \"signatures.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a Signatures message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures} Signatures\n */\n Signatures.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures)\n return object;\n let message = new $root.chromeos_update_engine.Signatures();\n if (object.signatures) {\n if (!Array.isArray(object.signatures))\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: array expected\");\n message.signatures = [];\n for (let i = 0; i < object.signatures.length; ++i) {\n if (typeof object.signatures[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: object expected\");\n message.signatures[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.signatures[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Signatures message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.Signatures} message Signatures\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signatures.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.signatures = [];\n if (message.signatures && message.signatures.length) {\n object.signatures = [];\n for (let j = 0; j < message.signatures.length; ++j)\n object.signatures[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.signatures[j], options);\n }\n return object;\n };\n\n /**\n * Converts this Signatures to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures\n * @instance\n * @returns {Object.} JSON object\n */\n Signatures.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n Signatures.Signature = (function() {\n\n /**\n * Properties of a Signature.\n * @memberof chromeos_update_engine.Signatures\n * @interface ISignature\n * @property {number|null} [version] Signature version\n * @property {Uint8Array|null} [data] Signature data\n * @property {number|null} [unpaddedSignatureSize] Signature unpaddedSignatureSize\n */\n\n /**\n * Constructs a new Signature.\n * @memberof chromeos_update_engine.Signatures\n * @classdesc Represents a Signature.\n * @implements ISignature\n * @constructor\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n */\n function Signature(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signature version.\n * @member {number} version\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.version = 0;\n\n /**\n * Signature data.\n * @member {Uint8Array} data\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.data = $util.newBuffer([]);\n\n /**\n * Signature unpaddedSignatureSize.\n * @member {number} unpaddedSignatureSize\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.unpaddedSignatureSize = 0;\n\n /**\n * Creates a new Signature instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures.Signature} Signature instance\n */\n Signature.create = function create(properties) {\n return new Signature(properties);\n };\n\n /**\n * Encodes the specified Signature message. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.version);\n if (message.data != null && Object.hasOwnProperty.call(message, \"data\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.data);\n if (message.unpaddedSignatureSize != null && Object.hasOwnProperty.call(message, \"unpaddedSignatureSize\"))\n writer.uint32(/* id 3, wireType 5 =*/29).fixed32(message.unpaddedSignatureSize);\n return writer;\n };\n\n /**\n * Encodes the specified Signature message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures.Signature();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.version = reader.uint32();\n break;\n case 2:\n message.data = reader.bytes();\n break;\n case 3:\n message.unpaddedSignatureSize = reader.fixed32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signature message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signature.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version))\n return \"version: integer expected\";\n if (message.data != null && message.hasOwnProperty(\"data\"))\n if (!(message.data && typeof message.data.length === \"number\" || $util.isString(message.data)))\n return \"data: buffer expected\";\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n if (!$util.isInteger(message.unpaddedSignatureSize))\n return \"unpaddedSignatureSize: integer expected\";\n return null;\n };\n\n /**\n * Creates a Signature message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n */\n Signature.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures.Signature)\n return object;\n let message = new $root.chromeos_update_engine.Signatures.Signature();\n if (object.version != null)\n message.version = object.version >>> 0;\n if (object.data != null)\n if (typeof object.data === \"string\")\n $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);\n else if (object.data.length)\n message.data = object.data;\n if (object.unpaddedSignatureSize != null)\n message.unpaddedSignatureSize = object.unpaddedSignatureSize >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a Signature message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.Signature} message Signature\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signature.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.version = 0;\n if (options.bytes === String)\n object.data = \"\";\n else {\n object.data = [];\n if (options.bytes !== Array)\n object.data = $util.newBuffer(object.data);\n }\n object.unpaddedSignatureSize = 0;\n }\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.data != null && message.hasOwnProperty(\"data\"))\n object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n object.unpaddedSignatureSize = message.unpaddedSignatureSize;\n return object;\n };\n\n /**\n * Converts this Signature to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n * @returns {Object.} JSON object\n */\n Signature.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Signature;\n })();\n\n return Signatures;\n })();\n\n chromeos_update_engine.PartitionInfo = (function() {\n\n /**\n * Properties of a PartitionInfo.\n * @memberof chromeos_update_engine\n * @interface IPartitionInfo\n * @property {number|Long|null} [size] PartitionInfo size\n * @property {Uint8Array|null} [hash] PartitionInfo hash\n */\n\n /**\n * Constructs a new PartitionInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionInfo.\n * @implements IPartitionInfo\n * @constructor\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n */\n function PartitionInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionInfo size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * PartitionInfo hash.\n * @member {Uint8Array} hash\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.hash = $util.newBuffer([]);\n\n /**\n * Creates a new PartitionInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo instance\n */\n PartitionInfo.create = function create(properties) {\n return new PartitionInfo(properties);\n };\n\n /**\n * Encodes the specified PartitionInfo message. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.size);\n if (message.hash != null && Object.hasOwnProperty.call(message, \"hash\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.hash);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.size = reader.uint64();\n break;\n case 2:\n message.hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionInfo message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n if (!(message.hash && typeof message.hash.length === \"number\" || $util.isString(message.hash)))\n return \"hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates a PartitionInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n */\n PartitionInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionInfo)\n return object;\n let message = new $root.chromeos_update_engine.PartitionInfo();\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.hash != null)\n if (typeof object.hash === \"string\")\n $util.base64.decode(object.hash, message.hash = $util.newBuffer($util.base64.length(object.hash)), 0);\n else if (object.hash.length)\n message.hash = object.hash;\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.PartitionInfo} message PartitionInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.hash = \"\";\n else {\n object.hash = [];\n if (options.bytes !== Array)\n object.hash = $util.newBuffer(object.hash);\n }\n }\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n object.hash = options.bytes === String ? $util.base64.encode(message.hash, 0, message.hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.hash) : message.hash;\n return object;\n };\n\n /**\n * Converts this PartitionInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionInfo;\n })();\n\n chromeos_update_engine.InstallOperation = (function() {\n\n /**\n * Properties of an InstallOperation.\n * @memberof chromeos_update_engine\n * @interface IInstallOperation\n * @property {chromeos_update_engine.InstallOperation.Type} type InstallOperation type\n * @property {number|Long|null} [dataOffset] InstallOperation dataOffset\n * @property {number|Long|null} [dataLength] InstallOperation dataLength\n * @property {Array.|null} [srcExtents] InstallOperation srcExtents\n * @property {number|Long|null} [srcLength] InstallOperation srcLength\n * @property {Array.|null} [dstExtents] InstallOperation dstExtents\n * @property {number|Long|null} [dstLength] InstallOperation dstLength\n * @property {Uint8Array|null} [dataSha256Hash] InstallOperation dataSha256Hash\n * @property {Uint8Array|null} [srcSha256Hash] InstallOperation srcSha256Hash\n */\n\n /**\n * Constructs a new InstallOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents an InstallOperation.\n * @implements IInstallOperation\n * @constructor\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n */\n function InstallOperation(properties) {\n this.srcExtents = [];\n this.dstExtents = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * InstallOperation type.\n * @member {chromeos_update_engine.InstallOperation.Type} type\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.type = 0;\n\n /**\n * InstallOperation dataOffset.\n * @member {number|Long} dataOffset\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataLength.\n * @member {number|Long} dataLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation srcExtents.\n * @member {Array.} srcExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcExtents = $util.emptyArray;\n\n /**\n * InstallOperation srcLength.\n * @member {number|Long} srcLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dstExtents.\n * @member {Array.} dstExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstExtents = $util.emptyArray;\n\n /**\n * InstallOperation dstLength.\n * @member {number|Long} dstLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataSha256Hash.\n * @member {Uint8Array} dataSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataSha256Hash = $util.newBuffer([]);\n\n /**\n * InstallOperation srcSha256Hash.\n * @member {Uint8Array} srcSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcSha256Hash = $util.newBuffer([]);\n\n /**\n * Creates a new InstallOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation instance\n */\n InstallOperation.create = function create(properties) {\n return new InstallOperation(properties);\n };\n\n /**\n * Encodes the specified InstallOperation message. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.dataOffset != null && Object.hasOwnProperty.call(message, \"dataOffset\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.dataOffset);\n if (message.dataLength != null && Object.hasOwnProperty.call(message, \"dataLength\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.dataLength);\n if (message.srcExtents != null && message.srcExtents.length)\n for (let i = 0; i < message.srcExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.srcExtents[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.srcLength != null && Object.hasOwnProperty.call(message, \"srcLength\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.srcLength);\n if (message.dstExtents != null && message.dstExtents.length)\n for (let i = 0; i < message.dstExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.dstExtents[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.dstLength != null && Object.hasOwnProperty.call(message, \"dstLength\"))\n writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.dstLength);\n if (message.dataSha256Hash != null && Object.hasOwnProperty.call(message, \"dataSha256Hash\"))\n writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.dataSha256Hash);\n if (message.srcSha256Hash != null && Object.hasOwnProperty.call(message, \"srcSha256Hash\"))\n writer.uint32(/* id 9, wireType 2 =*/74).bytes(message.srcSha256Hash);\n return writer;\n };\n\n /**\n * Encodes the specified InstallOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.InstallOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.dataOffset = reader.uint64();\n break;\n case 3:\n message.dataLength = reader.uint64();\n break;\n case 4:\n if (!(message.srcExtents && message.srcExtents.length))\n message.srcExtents = [];\n message.srcExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 5:\n message.srcLength = reader.uint64();\n break;\n case 6:\n if (!(message.dstExtents && message.dstExtents.length))\n message.dstExtents = [];\n message.dstExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 7:\n message.dstLength = reader.uint64();\n break;\n case 8:\n message.dataSha256Hash = reader.bytes();\n break;\n case 9:\n message.srcSha256Hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"type\"))\n throw $util.ProtocolError(\"missing required 'type'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an InstallOperation message.\n * @function verify\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n InstallOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 8:\n case 6:\n case 7:\n case 10:\n case 9:\n case 11:\n case 12:\n case 13:\n break;\n }\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (!$util.isInteger(message.dataOffset) && !(message.dataOffset && $util.isInteger(message.dataOffset.low) && $util.isInteger(message.dataOffset.high)))\n return \"dataOffset: integer|Long expected\";\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (!$util.isInteger(message.dataLength) && !(message.dataLength && $util.isInteger(message.dataLength.low) && $util.isInteger(message.dataLength.high)))\n return \"dataLength: integer|Long expected\";\n if (message.srcExtents != null && message.hasOwnProperty(\"srcExtents\")) {\n if (!Array.isArray(message.srcExtents))\n return \"srcExtents: array expected\";\n for (let i = 0; i < message.srcExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtents[i]);\n if (error)\n return \"srcExtents.\" + error;\n }\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (!$util.isInteger(message.srcLength) && !(message.srcLength && $util.isInteger(message.srcLength.low) && $util.isInteger(message.srcLength.high)))\n return \"srcLength: integer|Long expected\";\n if (message.dstExtents != null && message.hasOwnProperty(\"dstExtents\")) {\n if (!Array.isArray(message.dstExtents))\n return \"dstExtents: array expected\";\n for (let i = 0; i < message.dstExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtents[i]);\n if (error)\n return \"dstExtents.\" + error;\n }\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (!$util.isInteger(message.dstLength) && !(message.dstLength && $util.isInteger(message.dstLength.low) && $util.isInteger(message.dstLength.high)))\n return \"dstLength: integer|Long expected\";\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n if (!(message.dataSha256Hash && typeof message.dataSha256Hash.length === \"number\" || $util.isString(message.dataSha256Hash)))\n return \"dataSha256Hash: buffer expected\";\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n if (!(message.srcSha256Hash && typeof message.srcSha256Hash.length === \"number\" || $util.isString(message.srcSha256Hash)))\n return \"srcSha256Hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates an InstallOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n */\n InstallOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.InstallOperation)\n return object;\n let message = new $root.chromeos_update_engine.InstallOperation();\n switch (object.type) {\n case \"REPLACE\":\n case 0:\n message.type = 0;\n break;\n case \"REPLACE_BZ\":\n case 1:\n message.type = 1;\n break;\n case \"MOVE\":\n case 2:\n message.type = 2;\n break;\n case \"BSDIFF\":\n case 3:\n message.type = 3;\n break;\n case \"SOURCE_COPY\":\n case 4:\n message.type = 4;\n break;\n case \"SOURCE_BSDIFF\":\n case 5:\n message.type = 5;\n break;\n case \"REPLACE_XZ\":\n case 8:\n message.type = 8;\n break;\n case \"ZERO\":\n case 6:\n message.type = 6;\n break;\n case \"DISCARD\":\n case 7:\n message.type = 7;\n break;\n case \"BROTLI_BSDIFF\":\n case 10:\n message.type = 10;\n break;\n case \"PUFFDIFF\":\n case 9:\n message.type = 9;\n break;\n case \"ZUCCHINI\":\n case 11:\n message.type = 11;\n break;\n case \"LZ4DIFF_BSDIFF\":\n case 12:\n message.type = 12;\n break;\n case \"LZ4DIFF_PUFFDIFF\":\n case 13:\n message.type = 13;\n break;\n }\n if (object.dataOffset != null)\n if ($util.Long)\n (message.dataOffset = $util.Long.fromValue(object.dataOffset)).unsigned = true;\n else if (typeof object.dataOffset === \"string\")\n message.dataOffset = parseInt(object.dataOffset, 10);\n else if (typeof object.dataOffset === \"number\")\n message.dataOffset = object.dataOffset;\n else if (typeof object.dataOffset === \"object\")\n message.dataOffset = new $util.LongBits(object.dataOffset.low >>> 0, object.dataOffset.high >>> 0).toNumber(true);\n if (object.dataLength != null)\n if ($util.Long)\n (message.dataLength = $util.Long.fromValue(object.dataLength)).unsigned = true;\n else if (typeof object.dataLength === \"string\")\n message.dataLength = parseInt(object.dataLength, 10);\n else if (typeof object.dataLength === \"number\")\n message.dataLength = object.dataLength;\n else if (typeof object.dataLength === \"object\")\n message.dataLength = new $util.LongBits(object.dataLength.low >>> 0, object.dataLength.high >>> 0).toNumber(true);\n if (object.srcExtents) {\n if (!Array.isArray(object.srcExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: array expected\");\n message.srcExtents = [];\n for (let i = 0; i < object.srcExtents.length; ++i) {\n if (typeof object.srcExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: object expected\");\n message.srcExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.srcExtents[i]);\n }\n }\n if (object.srcLength != null)\n if ($util.Long)\n (message.srcLength = $util.Long.fromValue(object.srcLength)).unsigned = true;\n else if (typeof object.srcLength === \"string\")\n message.srcLength = parseInt(object.srcLength, 10);\n else if (typeof object.srcLength === \"number\")\n message.srcLength = object.srcLength;\n else if (typeof object.srcLength === \"object\")\n message.srcLength = new $util.LongBits(object.srcLength.low >>> 0, object.srcLength.high >>> 0).toNumber(true);\n if (object.dstExtents) {\n if (!Array.isArray(object.dstExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: array expected\");\n message.dstExtents = [];\n for (let i = 0; i < object.dstExtents.length; ++i) {\n if (typeof object.dstExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: object expected\");\n message.dstExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.dstExtents[i]);\n }\n }\n if (object.dstLength != null)\n if ($util.Long)\n (message.dstLength = $util.Long.fromValue(object.dstLength)).unsigned = true;\n else if (typeof object.dstLength === \"string\")\n message.dstLength = parseInt(object.dstLength, 10);\n else if (typeof object.dstLength === \"number\")\n message.dstLength = object.dstLength;\n else if (typeof object.dstLength === \"object\")\n message.dstLength = new $util.LongBits(object.dstLength.low >>> 0, object.dstLength.high >>> 0).toNumber(true);\n if (object.dataSha256Hash != null)\n if (typeof object.dataSha256Hash === \"string\")\n $util.base64.decode(object.dataSha256Hash, message.dataSha256Hash = $util.newBuffer($util.base64.length(object.dataSha256Hash)), 0);\n else if (object.dataSha256Hash.length)\n message.dataSha256Hash = object.dataSha256Hash;\n if (object.srcSha256Hash != null)\n if (typeof object.srcSha256Hash === \"string\")\n $util.base64.decode(object.srcSha256Hash, message.srcSha256Hash = $util.newBuffer($util.base64.length(object.srcSha256Hash)), 0);\n else if (object.srcSha256Hash.length)\n message.srcSha256Hash = object.srcSha256Hash;\n return message;\n };\n\n /**\n * Creates a plain object from an InstallOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.InstallOperation} message InstallOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n InstallOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.srcExtents = [];\n object.dstExtents = [];\n }\n if (options.defaults) {\n object.type = options.enums === String ? \"REPLACE\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.srcLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.srcLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dstLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dstLength = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.dataSha256Hash = \"\";\n else {\n object.dataSha256Hash = [];\n if (options.bytes !== Array)\n object.dataSha256Hash = $util.newBuffer(object.dataSha256Hash);\n }\n if (options.bytes === String)\n object.srcSha256Hash = \"\";\n else {\n object.srcSha256Hash = [];\n if (options.bytes !== Array)\n object.srcSha256Hash = $util.newBuffer(object.srcSha256Hash);\n }\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.InstallOperation.Type[message.type] : message.type;\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (typeof message.dataOffset === \"number\")\n object.dataOffset = options.longs === String ? String(message.dataOffset) : message.dataOffset;\n else\n object.dataOffset = options.longs === String ? $util.Long.prototype.toString.call(message.dataOffset) : options.longs === Number ? new $util.LongBits(message.dataOffset.low >>> 0, message.dataOffset.high >>> 0).toNumber(true) : message.dataOffset;\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (typeof message.dataLength === \"number\")\n object.dataLength = options.longs === String ? String(message.dataLength) : message.dataLength;\n else\n object.dataLength = options.longs === String ? $util.Long.prototype.toString.call(message.dataLength) : options.longs === Number ? new $util.LongBits(message.dataLength.low >>> 0, message.dataLength.high >>> 0).toNumber(true) : message.dataLength;\n if (message.srcExtents && message.srcExtents.length) {\n object.srcExtents = [];\n for (let j = 0; j < message.srcExtents.length; ++j)\n object.srcExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.srcExtents[j], options);\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (typeof message.srcLength === \"number\")\n object.srcLength = options.longs === String ? String(message.srcLength) : message.srcLength;\n else\n object.srcLength = options.longs === String ? $util.Long.prototype.toString.call(message.srcLength) : options.longs === Number ? new $util.LongBits(message.srcLength.low >>> 0, message.srcLength.high >>> 0).toNumber(true) : message.srcLength;\n if (message.dstExtents && message.dstExtents.length) {\n object.dstExtents = [];\n for (let j = 0; j < message.dstExtents.length; ++j)\n object.dstExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.dstExtents[j], options);\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (typeof message.dstLength === \"number\")\n object.dstLength = options.longs === String ? String(message.dstLength) : message.dstLength;\n else\n object.dstLength = options.longs === String ? $util.Long.prototype.toString.call(message.dstLength) : options.longs === Number ? new $util.LongBits(message.dstLength.low >>> 0, message.dstLength.high >>> 0).toNumber(true) : message.dstLength;\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n object.dataSha256Hash = options.bytes === String ? $util.base64.encode(message.dataSha256Hash, 0, message.dataSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.dataSha256Hash) : message.dataSha256Hash;\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n object.srcSha256Hash = options.bytes === String ? $util.base64.encode(message.srcSha256Hash, 0, message.srcSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.srcSha256Hash) : message.srcSha256Hash;\n return object;\n };\n\n /**\n * Converts this InstallOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n * @returns {Object.} JSON object\n */\n InstallOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.InstallOperation.Type\n * @enum {number}\n * @property {number} REPLACE=0 REPLACE value\n * @property {number} REPLACE_BZ=1 REPLACE_BZ value\n * @property {number} MOVE=2 MOVE value\n * @property {number} BSDIFF=3 BSDIFF value\n * @property {number} SOURCE_COPY=4 SOURCE_COPY value\n * @property {number} SOURCE_BSDIFF=5 SOURCE_BSDIFF value\n * @property {number} REPLACE_XZ=8 REPLACE_XZ value\n * @property {number} ZERO=6 ZERO value\n * @property {number} DISCARD=7 DISCARD value\n * @property {number} BROTLI_BSDIFF=10 BROTLI_BSDIFF value\n * @property {number} PUFFDIFF=9 PUFFDIFF value\n * @property {number} ZUCCHINI=11 ZUCCHINI value\n * @property {number} LZ4DIFF_BSDIFF=12 LZ4DIFF_BSDIFF value\n * @property {number} LZ4DIFF_PUFFDIFF=13 LZ4DIFF_PUFFDIFF value\n */\n InstallOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"REPLACE\"] = 0;\n values[valuesById[1] = \"REPLACE_BZ\"] = 1;\n values[valuesById[2] = \"MOVE\"] = 2;\n values[valuesById[3] = \"BSDIFF\"] = 3;\n values[valuesById[4] = \"SOURCE_COPY\"] = 4;\n values[valuesById[5] = \"SOURCE_BSDIFF\"] = 5;\n values[valuesById[8] = \"REPLACE_XZ\"] = 8;\n values[valuesById[6] = \"ZERO\"] = 6;\n values[valuesById[7] = \"DISCARD\"] = 7;\n values[valuesById[10] = \"BROTLI_BSDIFF\"] = 10;\n values[valuesById[9] = \"PUFFDIFF\"] = 9;\n values[valuesById[11] = \"ZUCCHINI\"] = 11;\n values[valuesById[12] = \"LZ4DIFF_BSDIFF\"] = 12;\n values[valuesById[13] = \"LZ4DIFF_PUFFDIFF\"] = 13;\n return values;\n })();\n\n return InstallOperation;\n })();\n\n chromeos_update_engine.CowMergeOperation = (function() {\n\n /**\n * Properties of a CowMergeOperation.\n * @memberof chromeos_update_engine\n * @interface ICowMergeOperation\n * @property {chromeos_update_engine.CowMergeOperation.Type|null} [type] CowMergeOperation type\n * @property {chromeos_update_engine.IExtent|null} [srcExtent] CowMergeOperation srcExtent\n * @property {chromeos_update_engine.IExtent|null} [dstExtent] CowMergeOperation dstExtent\n * @property {number|null} [srcOffset] CowMergeOperation srcOffset\n */\n\n /**\n * Constructs a new CowMergeOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents a CowMergeOperation.\n * @implements ICowMergeOperation\n * @constructor\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n */\n function CowMergeOperation(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * CowMergeOperation type.\n * @member {chromeos_update_engine.CowMergeOperation.Type} type\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.type = 0;\n\n /**\n * CowMergeOperation srcExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} srcExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcExtent = null;\n\n /**\n * CowMergeOperation dstExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} dstExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.dstExtent = null;\n\n /**\n * CowMergeOperation srcOffset.\n * @member {number} srcOffset\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcOffset = 0;\n\n /**\n * Creates a new CowMergeOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation instance\n */\n CowMergeOperation.create = function create(properties) {\n return new CowMergeOperation(properties);\n };\n\n /**\n * Encodes the specified CowMergeOperation message. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.srcExtent != null && Object.hasOwnProperty.call(message, \"srcExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.srcExtent, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.dstExtent != null && Object.hasOwnProperty.call(message, \"dstExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.dstExtent, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.srcOffset != null && Object.hasOwnProperty.call(message, \"srcOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.srcOffset);\n return writer;\n };\n\n /**\n * Encodes the specified CowMergeOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.CowMergeOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.srcExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 3:\n message.dstExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 4:\n message.srcOffset = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a CowMergeOperation message.\n * @function verify\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n CowMergeOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtent);\n if (error)\n return \"srcExtent.\" + error;\n }\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtent);\n if (error)\n return \"dstExtent.\" + error;\n }\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n if (!$util.isInteger(message.srcOffset))\n return \"srcOffset: integer expected\";\n return null;\n };\n\n /**\n * Creates a CowMergeOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n */\n CowMergeOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.CowMergeOperation)\n return object;\n let message = new $root.chromeos_update_engine.CowMergeOperation();\n switch (object.type) {\n case \"COW_COPY\":\n case 0:\n message.type = 0;\n break;\n case \"COW_XOR\":\n case 1:\n message.type = 1;\n break;\n case \"COW_REPLACE\":\n case 2:\n message.type = 2;\n break;\n }\n if (object.srcExtent != null) {\n if (typeof object.srcExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.srcExtent: object expected\");\n message.srcExtent = $root.chromeos_update_engine.Extent.fromObject(object.srcExtent);\n }\n if (object.dstExtent != null) {\n if (typeof object.dstExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.dstExtent: object expected\");\n message.dstExtent = $root.chromeos_update_engine.Extent.fromObject(object.dstExtent);\n }\n if (object.srcOffset != null)\n message.srcOffset = object.srcOffset >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a CowMergeOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.CowMergeOperation} message CowMergeOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n CowMergeOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"COW_COPY\" : 0;\n object.srcExtent = null;\n object.dstExtent = null;\n object.srcOffset = 0;\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.CowMergeOperation.Type[message.type] : message.type;\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\"))\n object.srcExtent = $root.chromeos_update_engine.Extent.toObject(message.srcExtent, options);\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\"))\n object.dstExtent = $root.chromeos_update_engine.Extent.toObject(message.dstExtent, options);\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n object.srcOffset = message.srcOffset;\n return object;\n };\n\n /**\n * Converts this CowMergeOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n * @returns {Object.} JSON object\n */\n CowMergeOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.CowMergeOperation.Type\n * @enum {number}\n * @property {number} COW_COPY=0 COW_COPY value\n * @property {number} COW_XOR=1 COW_XOR value\n * @property {number} COW_REPLACE=2 COW_REPLACE value\n */\n CowMergeOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"COW_COPY\"] = 0;\n values[valuesById[1] = \"COW_XOR\"] = 1;\n values[valuesById[2] = \"COW_REPLACE\"] = 2;\n return values;\n })();\n\n return CowMergeOperation;\n })();\n\n chromeos_update_engine.PartitionUpdate = (function() {\n\n /**\n * Properties of a PartitionUpdate.\n * @memberof chromeos_update_engine\n * @interface IPartitionUpdate\n * @property {string} partitionName PartitionUpdate partitionName\n * @property {boolean|null} [runPostinstall] PartitionUpdate runPostinstall\n * @property {string|null} [postinstallPath] PartitionUpdate postinstallPath\n * @property {string|null} [filesystemType] PartitionUpdate filesystemType\n * @property {Array.|null} [newPartitionSignature] PartitionUpdate newPartitionSignature\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldPartitionInfo] PartitionUpdate oldPartitionInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newPartitionInfo] PartitionUpdate newPartitionInfo\n * @property {Array.|null} [operations] PartitionUpdate operations\n * @property {boolean|null} [postinstallOptional] PartitionUpdate postinstallOptional\n * @property {chromeos_update_engine.IExtent|null} [hashTreeDataExtent] PartitionUpdate hashTreeDataExtent\n * @property {chromeos_update_engine.IExtent|null} [hashTreeExtent] PartitionUpdate hashTreeExtent\n * @property {string|null} [hashTreeAlgorithm] PartitionUpdate hashTreeAlgorithm\n * @property {Uint8Array|null} [hashTreeSalt] PartitionUpdate hashTreeSalt\n * @property {chromeos_update_engine.IExtent|null} [fecDataExtent] PartitionUpdate fecDataExtent\n * @property {chromeos_update_engine.IExtent|null} [fecExtent] PartitionUpdate fecExtent\n * @property {number|null} [fecRoots] PartitionUpdate fecRoots\n * @property {string|null} [version] PartitionUpdate version\n * @property {Array.|null} [mergeOperations] PartitionUpdate mergeOperations\n * @property {number|Long|null} [estimateCowSize] PartitionUpdate estimateCowSize\n */\n\n /**\n * Constructs a new PartitionUpdate.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionUpdate.\n * @implements IPartitionUpdate\n * @constructor\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n */\n function PartitionUpdate(properties) {\n this.newPartitionSignature = [];\n this.operations = [];\n this.mergeOperations = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionUpdate partitionName.\n * @member {string} partitionName\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.partitionName = \"\";\n\n /**\n * PartitionUpdate runPostinstall.\n * @member {boolean} runPostinstall\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.runPostinstall = false;\n\n /**\n * PartitionUpdate postinstallPath.\n * @member {string} postinstallPath\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallPath = \"\";\n\n /**\n * PartitionUpdate filesystemType.\n * @member {string} filesystemType\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.filesystemType = \"\";\n\n /**\n * PartitionUpdate newPartitionSignature.\n * @member {Array.} newPartitionSignature\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionSignature = $util.emptyArray;\n\n /**\n * PartitionUpdate oldPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.oldPartitionInfo = null;\n\n /**\n * PartitionUpdate newPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionInfo = null;\n\n /**\n * PartitionUpdate operations.\n * @member {Array.} operations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.operations = $util.emptyArray;\n\n /**\n * PartitionUpdate postinstallOptional.\n * @member {boolean} postinstallOptional\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallOptional = false;\n\n /**\n * PartitionUpdate hashTreeDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeDataExtent = null;\n\n /**\n * PartitionUpdate hashTreeExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeExtent = null;\n\n /**\n * PartitionUpdate hashTreeAlgorithm.\n * @member {string} hashTreeAlgorithm\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeAlgorithm = \"\";\n\n /**\n * PartitionUpdate hashTreeSalt.\n * @member {Uint8Array} hashTreeSalt\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeSalt = $util.newBuffer([]);\n\n /**\n * PartitionUpdate fecDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecDataExtent = null;\n\n /**\n * PartitionUpdate fecExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecExtent = null;\n\n /**\n * PartitionUpdate fecRoots.\n * @member {number} fecRoots\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecRoots = 2;\n\n /**\n * PartitionUpdate version.\n * @member {string} version\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.version = \"\";\n\n /**\n * PartitionUpdate mergeOperations.\n * @member {Array.} mergeOperations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.mergeOperations = $util.emptyArray;\n\n /**\n * PartitionUpdate estimateCowSize.\n * @member {number|Long} estimateCowSize\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.estimateCowSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new PartitionUpdate instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate instance\n */\n PartitionUpdate.create = function create(properties) {\n return new PartitionUpdate(properties);\n };\n\n /**\n * Encodes the specified PartitionUpdate message. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.partitionName);\n if (message.runPostinstall != null && Object.hasOwnProperty.call(message, \"runPostinstall\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.runPostinstall);\n if (message.postinstallPath != null && Object.hasOwnProperty.call(message, \"postinstallPath\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.postinstallPath);\n if (message.filesystemType != null && Object.hasOwnProperty.call(message, \"filesystemType\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.filesystemType);\n if (message.newPartitionSignature != null && message.newPartitionSignature.length)\n for (let i = 0; i < message.newPartitionSignature.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.newPartitionSignature[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.oldPartitionInfo != null && Object.hasOwnProperty.call(message, \"oldPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldPartitionInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newPartitionInfo != null && Object.hasOwnProperty.call(message, \"newPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newPartitionInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.operations != null && message.operations.length)\n for (let i = 0; i < message.operations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.operations[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.postinstallOptional != null && Object.hasOwnProperty.call(message, \"postinstallOptional\"))\n writer.uint32(/* id 9, wireType 0 =*/72).bool(message.postinstallOptional);\n if (message.hashTreeDataExtent != null && Object.hasOwnProperty.call(message, \"hashTreeDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeDataExtent, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.hashTreeExtent != null && Object.hasOwnProperty.call(message, \"hashTreeExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeExtent, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.hashTreeAlgorithm != null && Object.hasOwnProperty.call(message, \"hashTreeAlgorithm\"))\n writer.uint32(/* id 12, wireType 2 =*/98).string(message.hashTreeAlgorithm);\n if (message.hashTreeSalt != null && Object.hasOwnProperty.call(message, \"hashTreeSalt\"))\n writer.uint32(/* id 13, wireType 2 =*/106).bytes(message.hashTreeSalt);\n if (message.fecDataExtent != null && Object.hasOwnProperty.call(message, \"fecDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecDataExtent, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.fecExtent != null && Object.hasOwnProperty.call(message, \"fecExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecExtent, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.fecRoots != null && Object.hasOwnProperty.call(message, \"fecRoots\"))\n writer.uint32(/* id 16, wireType 0 =*/128).uint32(message.fecRoots);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 17, wireType 2 =*/138).string(message.version);\n if (message.mergeOperations != null && message.mergeOperations.length)\n for (let i = 0; i < message.mergeOperations.length; ++i)\n $root.chromeos_update_engine.CowMergeOperation.encode(message.mergeOperations[i], writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n if (message.estimateCowSize != null && Object.hasOwnProperty.call(message, \"estimateCowSize\"))\n writer.uint32(/* id 19, wireType 0 =*/152).uint64(message.estimateCowSize);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionUpdate message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionUpdate();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.partitionName = reader.string();\n break;\n case 2:\n message.runPostinstall = reader.bool();\n break;\n case 3:\n message.postinstallPath = reader.string();\n break;\n case 4:\n message.filesystemType = reader.string();\n break;\n case 5:\n if (!(message.newPartitionSignature && message.newPartitionSignature.length))\n message.newPartitionSignature = [];\n message.newPartitionSignature.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n case 6:\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n if (!(message.operations && message.operations.length))\n message.operations = [];\n message.operations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 9:\n message.postinstallOptional = reader.bool();\n break;\n case 10:\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 11:\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 12:\n message.hashTreeAlgorithm = reader.string();\n break;\n case 13:\n message.hashTreeSalt = reader.bytes();\n break;\n case 14:\n message.fecDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 15:\n message.fecExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 16:\n message.fecRoots = reader.uint32();\n break;\n case 17:\n message.version = reader.string();\n break;\n case 18:\n if (!(message.mergeOperations && message.mergeOperations.length))\n message.mergeOperations = [];\n message.mergeOperations.push($root.chromeos_update_engine.CowMergeOperation.decode(reader, reader.uint32()));\n break;\n case 19:\n message.estimateCowSize = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"partitionName\"))\n throw $util.ProtocolError(\"missing required 'partitionName'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionUpdate message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionUpdate.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.partitionName))\n return \"partitionName: string expected\";\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n if (typeof message.runPostinstall !== \"boolean\")\n return \"runPostinstall: boolean expected\";\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n if (!$util.isString(message.postinstallPath))\n return \"postinstallPath: string expected\";\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n if (!$util.isString(message.filesystemType))\n return \"filesystemType: string expected\";\n if (message.newPartitionSignature != null && message.hasOwnProperty(\"newPartitionSignature\")) {\n if (!Array.isArray(message.newPartitionSignature))\n return \"newPartitionSignature: array expected\";\n for (let i = 0; i < message.newPartitionSignature.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.newPartitionSignature[i]);\n if (error)\n return \"newPartitionSignature.\" + error;\n }\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldPartitionInfo);\n if (error)\n return \"oldPartitionInfo.\" + error;\n }\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newPartitionInfo);\n if (error)\n return \"newPartitionInfo.\" + error;\n }\n if (message.operations != null && message.hasOwnProperty(\"operations\")) {\n if (!Array.isArray(message.operations))\n return \"operations: array expected\";\n for (let i = 0; i < message.operations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.operations[i]);\n if (error)\n return \"operations.\" + error;\n }\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n if (typeof message.postinstallOptional !== \"boolean\")\n return \"postinstallOptional: boolean expected\";\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeDataExtent);\n if (error)\n return \"hashTreeDataExtent.\" + error;\n }\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeExtent);\n if (error)\n return \"hashTreeExtent.\" + error;\n }\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n if (!$util.isString(message.hashTreeAlgorithm))\n return \"hashTreeAlgorithm: string expected\";\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n if (!(message.hashTreeSalt && typeof message.hashTreeSalt.length === \"number\" || $util.isString(message.hashTreeSalt)))\n return \"hashTreeSalt: buffer expected\";\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecDataExtent);\n if (error)\n return \"fecDataExtent.\" + error;\n }\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecExtent);\n if (error)\n return \"fecExtent.\" + error;\n }\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n if (!$util.isInteger(message.fecRoots))\n return \"fecRoots: integer expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.mergeOperations != null && message.hasOwnProperty(\"mergeOperations\")) {\n if (!Array.isArray(message.mergeOperations))\n return \"mergeOperations: array expected\";\n for (let i = 0; i < message.mergeOperations.length; ++i) {\n let error = $root.chromeos_update_engine.CowMergeOperation.verify(message.mergeOperations[i]);\n if (error)\n return \"mergeOperations.\" + error;\n }\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (!$util.isInteger(message.estimateCowSize) && !(message.estimateCowSize && $util.isInteger(message.estimateCowSize.low) && $util.isInteger(message.estimateCowSize.high)))\n return \"estimateCowSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a PartitionUpdate message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n */\n PartitionUpdate.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionUpdate)\n return object;\n let message = new $root.chromeos_update_engine.PartitionUpdate();\n if (object.partitionName != null)\n message.partitionName = String(object.partitionName);\n if (object.runPostinstall != null)\n message.runPostinstall = Boolean(object.runPostinstall);\n if (object.postinstallPath != null)\n message.postinstallPath = String(object.postinstallPath);\n if (object.filesystemType != null)\n message.filesystemType = String(object.filesystemType);\n if (object.newPartitionSignature) {\n if (!Array.isArray(object.newPartitionSignature))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: array expected\");\n message.newPartitionSignature = [];\n for (let i = 0; i < object.newPartitionSignature.length; ++i) {\n if (typeof object.newPartitionSignature[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: object expected\");\n message.newPartitionSignature[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.newPartitionSignature[i]);\n }\n }\n if (object.oldPartitionInfo != null) {\n if (typeof object.oldPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.oldPartitionInfo: object expected\");\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldPartitionInfo);\n }\n if (object.newPartitionInfo != null) {\n if (typeof object.newPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionInfo: object expected\");\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newPartitionInfo);\n }\n if (object.operations) {\n if (!Array.isArray(object.operations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: array expected\");\n message.operations = [];\n for (let i = 0; i < object.operations.length; ++i) {\n if (typeof object.operations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: object expected\");\n message.operations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.operations[i]);\n }\n }\n if (object.postinstallOptional != null)\n message.postinstallOptional = Boolean(object.postinstallOptional);\n if (object.hashTreeDataExtent != null) {\n if (typeof object.hashTreeDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeDataExtent: object expected\");\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeDataExtent);\n }\n if (object.hashTreeExtent != null) {\n if (typeof object.hashTreeExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeExtent: object expected\");\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeExtent);\n }\n if (object.hashTreeAlgorithm != null)\n message.hashTreeAlgorithm = String(object.hashTreeAlgorithm);\n if (object.hashTreeSalt != null)\n if (typeof object.hashTreeSalt === \"string\")\n $util.base64.decode(object.hashTreeSalt, message.hashTreeSalt = $util.newBuffer($util.base64.length(object.hashTreeSalt)), 0);\n else if (object.hashTreeSalt.length)\n message.hashTreeSalt = object.hashTreeSalt;\n if (object.fecDataExtent != null) {\n if (typeof object.fecDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecDataExtent: object expected\");\n message.fecDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecDataExtent);\n }\n if (object.fecExtent != null) {\n if (typeof object.fecExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecExtent: object expected\");\n message.fecExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecExtent);\n }\n if (object.fecRoots != null)\n message.fecRoots = object.fecRoots >>> 0;\n if (object.version != null)\n message.version = String(object.version);\n if (object.mergeOperations) {\n if (!Array.isArray(object.mergeOperations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected\");\n message.mergeOperations = [];\n for (let i = 0; i < object.mergeOperations.length; ++i) {\n if (typeof object.mergeOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: object expected\");\n message.mergeOperations[i] = $root.chromeos_update_engine.CowMergeOperation.fromObject(object.mergeOperations[i]);\n }\n }\n if (object.estimateCowSize != null)\n if ($util.Long)\n (message.estimateCowSize = $util.Long.fromValue(object.estimateCowSize)).unsigned = true;\n else if (typeof object.estimateCowSize === \"string\")\n message.estimateCowSize = parseInt(object.estimateCowSize, 10);\n else if (typeof object.estimateCowSize === \"number\")\n message.estimateCowSize = object.estimateCowSize;\n else if (typeof object.estimateCowSize === \"object\")\n message.estimateCowSize = new $util.LongBits(object.estimateCowSize.low >>> 0, object.estimateCowSize.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionUpdate message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.PartitionUpdate} message PartitionUpdate\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionUpdate.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.newPartitionSignature = [];\n object.operations = [];\n object.mergeOperations = [];\n }\n if (options.defaults) {\n object.partitionName = \"\";\n object.runPostinstall = false;\n object.postinstallPath = \"\";\n object.filesystemType = \"\";\n object.oldPartitionInfo = null;\n object.newPartitionInfo = null;\n object.postinstallOptional = false;\n object.hashTreeDataExtent = null;\n object.hashTreeExtent = null;\n object.hashTreeAlgorithm = \"\";\n if (options.bytes === String)\n object.hashTreeSalt = \"\";\n else {\n object.hashTreeSalt = [];\n if (options.bytes !== Array)\n object.hashTreeSalt = $util.newBuffer(object.hashTreeSalt);\n }\n object.fecDataExtent = null;\n object.fecExtent = null;\n object.fecRoots = 2;\n object.version = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.estimateCowSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.estimateCowSize = options.longs === String ? \"0\" : 0;\n }\n if (message.partitionName != null && message.hasOwnProperty(\"partitionName\"))\n object.partitionName = message.partitionName;\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n object.runPostinstall = message.runPostinstall;\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n object.postinstallPath = message.postinstallPath;\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n object.filesystemType = message.filesystemType;\n if (message.newPartitionSignature && message.newPartitionSignature.length) {\n object.newPartitionSignature = [];\n for (let j = 0; j < message.newPartitionSignature.length; ++j)\n object.newPartitionSignature[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.newPartitionSignature[j], options);\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\"))\n object.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldPartitionInfo, options);\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\"))\n object.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newPartitionInfo, options);\n if (message.operations && message.operations.length) {\n object.operations = [];\n for (let j = 0; j < message.operations.length; ++j)\n object.operations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.operations[j], options);\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n object.postinstallOptional = message.postinstallOptional;\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\"))\n object.hashTreeDataExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeDataExtent, options);\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\"))\n object.hashTreeExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeExtent, options);\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n object.hashTreeAlgorithm = message.hashTreeAlgorithm;\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n object.hashTreeSalt = options.bytes === String ? $util.base64.encode(message.hashTreeSalt, 0, message.hashTreeSalt.length) : options.bytes === Array ? Array.prototype.slice.call(message.hashTreeSalt) : message.hashTreeSalt;\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\"))\n object.fecDataExtent = $root.chromeos_update_engine.Extent.toObject(message.fecDataExtent, options);\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\"))\n object.fecExtent = $root.chromeos_update_engine.Extent.toObject(message.fecExtent, options);\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n object.fecRoots = message.fecRoots;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.mergeOperations && message.mergeOperations.length) {\n object.mergeOperations = [];\n for (let j = 0; j < message.mergeOperations.length; ++j)\n object.mergeOperations[j] = $root.chromeos_update_engine.CowMergeOperation.toObject(message.mergeOperations[j], options);\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (typeof message.estimateCowSize === \"number\")\n object.estimateCowSize = options.longs === String ? String(message.estimateCowSize) : message.estimateCowSize;\n else\n object.estimateCowSize = options.longs === String ? $util.Long.prototype.toString.call(message.estimateCowSize) : options.longs === Number ? new $util.LongBits(message.estimateCowSize.low >>> 0, message.estimateCowSize.high >>> 0).toNumber(true) : message.estimateCowSize;\n return object;\n };\n\n /**\n * Converts this PartitionUpdate to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionUpdate.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionUpdate;\n })();\n\n chromeos_update_engine.DynamicPartitionGroup = (function() {\n\n /**\n * Properties of a DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionGroup\n * @property {string} name DynamicPartitionGroup name\n * @property {number|Long|null} [size] DynamicPartitionGroup size\n * @property {Array.|null} [partitionNames] DynamicPartitionGroup partitionNames\n */\n\n /**\n * Constructs a new DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionGroup.\n * @implements IDynamicPartitionGroup\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n */\n function DynamicPartitionGroup(properties) {\n this.partitionNames = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionGroup name.\n * @member {string} name\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.name = \"\";\n\n /**\n * DynamicPartitionGroup size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DynamicPartitionGroup partitionNames.\n * @member {Array.} partitionNames\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.partitionNames = $util.emptyArray;\n\n /**\n * Creates a new DynamicPartitionGroup instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup instance\n */\n DynamicPartitionGroup.create = function create(properties) {\n return new DynamicPartitionGroup(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.size);\n if (message.partitionNames != null && message.partitionNames.length)\n for (let i = 0; i < message.partitionNames.length; ++i)\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.partitionNames[i]);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.name = reader.string();\n break;\n case 2:\n message.size = reader.uint64();\n break;\n case 3:\n if (!(message.partitionNames && message.partitionNames.length))\n message.partitionNames = [];\n message.partitionNames.push(reader.string());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"name\"))\n throw $util.ProtocolError(\"missing required 'name'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionGroup message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionGroup.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.partitionNames != null && message.hasOwnProperty(\"partitionNames\")) {\n if (!Array.isArray(message.partitionNames))\n return \"partitionNames: array expected\";\n for (let i = 0; i < message.partitionNames.length; ++i)\n if (!$util.isString(message.partitionNames[i]))\n return \"partitionNames: string[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a DynamicPartitionGroup message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n */\n DynamicPartitionGroup.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionGroup)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n if (object.name != null)\n message.name = String(object.name);\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.partitionNames) {\n if (!Array.isArray(object.partitionNames))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected\");\n message.partitionNames = [];\n for (let i = 0; i < object.partitionNames.length; ++i)\n message.partitionNames[i] = String(object.partitionNames[i]);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionGroup message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.DynamicPartitionGroup} message DynamicPartitionGroup\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionGroup.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.partitionNames = [];\n if (options.defaults) {\n object.name = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.partitionNames && message.partitionNames.length) {\n object.partitionNames = [];\n for (let j = 0; j < message.partitionNames.length; ++j)\n object.partitionNames[j] = message.partitionNames[j];\n }\n return object;\n };\n\n /**\n * Converts this DynamicPartitionGroup to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionGroup.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionGroup;\n })();\n\n chromeos_update_engine.DynamicPartitionMetadata = (function() {\n\n /**\n * Properties of a DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionMetadata\n * @property {Array.|null} [groups] DynamicPartitionMetadata groups\n * @property {boolean|null} [snapshotEnabled] DynamicPartitionMetadata snapshotEnabled\n * @property {boolean|null} [vabcEnabled] DynamicPartitionMetadata vabcEnabled\n * @property {string|null} [vabcCompressionParam] DynamicPartitionMetadata vabcCompressionParam\n * @property {number|null} [cowVersion] DynamicPartitionMetadata cowVersion\n */\n\n /**\n * Constructs a new DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionMetadata.\n * @implements IDynamicPartitionMetadata\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n */\n function DynamicPartitionMetadata(properties) {\n this.groups = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionMetadata groups.\n * @member {Array.} groups\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.groups = $util.emptyArray;\n\n /**\n * DynamicPartitionMetadata snapshotEnabled.\n * @member {boolean} snapshotEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.snapshotEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcEnabled.\n * @member {boolean} vabcEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcCompressionParam.\n * @member {string} vabcCompressionParam\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcCompressionParam = \"\";\n\n /**\n * DynamicPartitionMetadata cowVersion.\n * @member {number} cowVersion\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.cowVersion = 0;\n\n /**\n * Creates a new DynamicPartitionMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata instance\n */\n DynamicPartitionMetadata.create = function create(properties) {\n return new DynamicPartitionMetadata(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.groups != null && message.groups.length)\n for (let i = 0; i < message.groups.length; ++i)\n $root.chromeos_update_engine.DynamicPartitionGroup.encode(message.groups[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.snapshotEnabled != null && Object.hasOwnProperty.call(message, \"snapshotEnabled\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.snapshotEnabled);\n if (message.vabcEnabled != null && Object.hasOwnProperty.call(message, \"vabcEnabled\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.vabcEnabled);\n if (message.vabcCompressionParam != null && Object.hasOwnProperty.call(message, \"vabcCompressionParam\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.vabcCompressionParam);\n if (message.cowVersion != null && Object.hasOwnProperty.call(message, \"cowVersion\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.cowVersion);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.groups && message.groups.length))\n message.groups = [];\n message.groups.push($root.chromeos_update_engine.DynamicPartitionGroup.decode(reader, reader.uint32()));\n break;\n case 2:\n message.snapshotEnabled = reader.bool();\n break;\n case 3:\n message.vabcEnabled = reader.bool();\n break;\n case 4:\n message.vabcCompressionParam = reader.string();\n break;\n case 5:\n message.cowVersion = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.groups != null && message.hasOwnProperty(\"groups\")) {\n if (!Array.isArray(message.groups))\n return \"groups: array expected\";\n for (let i = 0; i < message.groups.length; ++i) {\n let error = $root.chromeos_update_engine.DynamicPartitionGroup.verify(message.groups[i]);\n if (error)\n return \"groups.\" + error;\n }\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n if (typeof message.snapshotEnabled !== \"boolean\")\n return \"snapshotEnabled: boolean expected\";\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n if (typeof message.vabcEnabled !== \"boolean\")\n return \"vabcEnabled: boolean expected\";\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n if (!$util.isString(message.vabcCompressionParam))\n return \"vabcCompressionParam: string expected\";\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n if (!$util.isInteger(message.cowVersion))\n return \"cowVersion: integer expected\";\n return null;\n };\n\n /**\n * Creates a DynamicPartitionMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n */\n DynamicPartitionMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionMetadata)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n if (object.groups) {\n if (!Array.isArray(object.groups))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: array expected\");\n message.groups = [];\n for (let i = 0; i < object.groups.length; ++i) {\n if (typeof object.groups[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: object expected\");\n message.groups[i] = $root.chromeos_update_engine.DynamicPartitionGroup.fromObject(object.groups[i]);\n }\n }\n if (object.snapshotEnabled != null)\n message.snapshotEnabled = Boolean(object.snapshotEnabled);\n if (object.vabcEnabled != null)\n message.vabcEnabled = Boolean(object.vabcEnabled);\n if (object.vabcCompressionParam != null)\n message.vabcCompressionParam = String(object.vabcCompressionParam);\n if (object.cowVersion != null)\n message.cowVersion = object.cowVersion >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.DynamicPartitionMetadata} message DynamicPartitionMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.groups = [];\n if (options.defaults) {\n object.snapshotEnabled = false;\n object.vabcEnabled = false;\n object.vabcCompressionParam = \"\";\n object.cowVersion = 0;\n }\n if (message.groups && message.groups.length) {\n object.groups = [];\n for (let j = 0; j < message.groups.length; ++j)\n object.groups[j] = $root.chromeos_update_engine.DynamicPartitionGroup.toObject(message.groups[j], options);\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n object.snapshotEnabled = message.snapshotEnabled;\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n object.vabcEnabled = message.vabcEnabled;\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n object.vabcCompressionParam = message.vabcCompressionParam;\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n object.cowVersion = message.cowVersion;\n return object;\n };\n\n /**\n * Converts this DynamicPartitionMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionMetadata;\n })();\n\n chromeos_update_engine.ApexInfo = (function() {\n\n /**\n * Properties of an ApexInfo.\n * @memberof chromeos_update_engine\n * @interface IApexInfo\n * @property {string|null} [packageName] ApexInfo packageName\n * @property {number|Long|null} [version] ApexInfo version\n * @property {boolean|null} [isCompressed] ApexInfo isCompressed\n * @property {number|Long|null} [decompressedSize] ApexInfo decompressedSize\n */\n\n /**\n * Constructs a new ApexInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexInfo.\n * @implements IApexInfo\n * @constructor\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n */\n function ApexInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexInfo packageName.\n * @member {string} packageName\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.packageName = \"\";\n\n /**\n * ApexInfo version.\n * @member {number|Long} version\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * ApexInfo isCompressed.\n * @member {boolean} isCompressed\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.isCompressed = false;\n\n /**\n * ApexInfo decompressedSize.\n * @member {number|Long} decompressedSize\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.decompressedSize = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * Creates a new ApexInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo instance\n */\n ApexInfo.create = function create(properties) {\n return new ApexInfo(properties);\n };\n\n /**\n * Encodes the specified ApexInfo message. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.packageName != null && Object.hasOwnProperty.call(message, \"packageName\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.packageName);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.version);\n if (message.isCompressed != null && Object.hasOwnProperty.call(message, \"isCompressed\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isCompressed);\n if (message.decompressedSize != null && Object.hasOwnProperty.call(message, \"decompressedSize\"))\n writer.uint32(/* id 4, wireType 0 =*/32).int64(message.decompressedSize);\n return writer;\n };\n\n /**\n * Encodes the specified ApexInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.packageName = reader.string();\n break;\n case 2:\n message.version = reader.int64();\n break;\n case 3:\n message.isCompressed = reader.bool();\n break;\n case 4:\n message.decompressedSize = reader.int64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n if (!$util.isString(message.packageName))\n return \"packageName: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high)))\n return \"version: integer|Long expected\";\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n if (typeof message.isCompressed !== \"boolean\")\n return \"isCompressed: boolean expected\";\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (!$util.isInteger(message.decompressedSize) && !(message.decompressedSize && $util.isInteger(message.decompressedSize.low) && $util.isInteger(message.decompressedSize.high)))\n return \"decompressedSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an ApexInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n */\n ApexInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexInfo)\n return object;\n let message = new $root.chromeos_update_engine.ApexInfo();\n if (object.packageName != null)\n message.packageName = String(object.packageName);\n if (object.version != null)\n if ($util.Long)\n (message.version = $util.Long.fromValue(object.version)).unsigned = false;\n else if (typeof object.version === \"string\")\n message.version = parseInt(object.version, 10);\n else if (typeof object.version === \"number\")\n message.version = object.version;\n else if (typeof object.version === \"object\")\n message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber();\n if (object.isCompressed != null)\n message.isCompressed = Boolean(object.isCompressed);\n if (object.decompressedSize != null)\n if ($util.Long)\n (message.decompressedSize = $util.Long.fromValue(object.decompressedSize)).unsigned = false;\n else if (typeof object.decompressedSize === \"string\")\n message.decompressedSize = parseInt(object.decompressedSize, 10);\n else if (typeof object.decompressedSize === \"number\")\n message.decompressedSize = object.decompressedSize;\n else if (typeof object.decompressedSize === \"object\")\n message.decompressedSize = new $util.LongBits(object.decompressedSize.low >>> 0, object.decompressedSize.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from an ApexInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.ApexInfo} message ApexInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.packageName = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.version = options.longs === String ? \"0\" : 0;\n object.isCompressed = false;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.decompressedSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.decompressedSize = options.longs === String ? \"0\" : 0;\n }\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n object.packageName = message.packageName;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (typeof message.version === \"number\")\n object.version = options.longs === String ? String(message.version) : message.version;\n else\n object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version;\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n object.isCompressed = message.isCompressed;\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (typeof message.decompressedSize === \"number\")\n object.decompressedSize = options.longs === String ? String(message.decompressedSize) : message.decompressedSize;\n else\n object.decompressedSize = options.longs === String ? $util.Long.prototype.toString.call(message.decompressedSize) : options.longs === Number ? new $util.LongBits(message.decompressedSize.low >>> 0, message.decompressedSize.high >>> 0).toNumber() : message.decompressedSize;\n return object;\n };\n\n /**\n * Converts this ApexInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ApexInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexInfo;\n })();\n\n chromeos_update_engine.ApexMetadata = (function() {\n\n /**\n * Properties of an ApexMetadata.\n * @memberof chromeos_update_engine\n * @interface IApexMetadata\n * @property {Array.|null} [apexInfo] ApexMetadata apexInfo\n */\n\n /**\n * Constructs a new ApexMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexMetadata.\n * @implements IApexMetadata\n * @constructor\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n */\n function ApexMetadata(properties) {\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexMetadata apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n */\n ApexMetadata.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new ApexMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata instance\n */\n ApexMetadata.create = function create(properties) {\n return new ApexMetadata(properties);\n };\n\n /**\n * Encodes the specified ApexMetadata message. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified ApexMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates an ApexMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n */\n ApexMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexMetadata)\n return object;\n let message = new $root.chromeos_update_engine.ApexMetadata();\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from an ApexMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.ApexMetadata} message ApexMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.apexInfo = [];\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this ApexMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n ApexMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexMetadata;\n })();\n\n chromeos_update_engine.DeltaArchiveManifest = (function() {\n\n /**\n * Properties of a DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @interface IDeltaArchiveManifest\n * @property {number|null} [blockSize] DeltaArchiveManifest blockSize\n * @property {number|Long|null} [signaturesOffset] DeltaArchiveManifest signaturesOffset\n * @property {number|Long|null} [signaturesSize] DeltaArchiveManifest signaturesSize\n * @property {number|null} [minorVersion] DeltaArchiveManifest minorVersion\n * @property {Array.|null} [partitions] DeltaArchiveManifest partitions\n * @property {number|Long|null} [maxTimestamp] DeltaArchiveManifest maxTimestamp\n * @property {chromeos_update_engine.IDynamicPartitionMetadata|null} [dynamicPartitionMetadata] DeltaArchiveManifest dynamicPartitionMetadata\n * @property {boolean|null} [partialUpdate] DeltaArchiveManifest partialUpdate\n * @property {Array.|null} [apexInfo] DeltaArchiveManifest apexInfo\n * @property {string|null} [securityPatchLevel] DeltaArchiveManifest securityPatchLevel\n */\n\n /**\n * Constructs a new DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DeltaArchiveManifest.\n * @implements IDeltaArchiveManifest\n * @constructor\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n */\n function DeltaArchiveManifest(properties) {\n this.partitions = [];\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DeltaArchiveManifest blockSize.\n * @member {number} blockSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.blockSize = 4096;\n\n /**\n * DeltaArchiveManifest signaturesOffset.\n * @member {number|Long} signaturesOffset\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest signaturesSize.\n * @member {number|Long} signaturesSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest minorVersion.\n * @member {number} minorVersion\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.minorVersion = 0;\n\n /**\n * DeltaArchiveManifest partitions.\n * @member {Array.} partitions\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partitions = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest maxTimestamp.\n * @member {number|Long} maxTimestamp\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.maxTimestamp = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * DeltaArchiveManifest dynamicPartitionMetadata.\n * @member {chromeos_update_engine.IDynamicPartitionMetadata|null|undefined} dynamicPartitionMetadata\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.dynamicPartitionMetadata = null;\n\n /**\n * DeltaArchiveManifest partialUpdate.\n * @member {boolean} partialUpdate\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partialUpdate = false;\n\n /**\n * DeltaArchiveManifest apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.apexInfo = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest securityPatchLevel.\n * @member {string} securityPatchLevel\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.securityPatchLevel = \"\";\n\n /**\n * Creates a new DeltaArchiveManifest instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest instance\n */\n DeltaArchiveManifest.create = function create(properties) {\n return new DeltaArchiveManifest(properties);\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.blockSize != null && Object.hasOwnProperty.call(message, \"blockSize\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.blockSize);\n if (message.signaturesOffset != null && Object.hasOwnProperty.call(message, \"signaturesOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.signaturesOffset);\n if (message.signaturesSize != null && Object.hasOwnProperty.call(message, \"signaturesSize\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.signaturesSize);\n if (message.minorVersion != null && Object.hasOwnProperty.call(message, \"minorVersion\"))\n writer.uint32(/* id 12, wireType 0 =*/96).uint32(message.minorVersion);\n if (message.partitions != null && message.partitions.length)\n for (let i = 0; i < message.partitions.length; ++i)\n $root.chromeos_update_engine.PartitionUpdate.encode(message.partitions[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();\n if (message.maxTimestamp != null && Object.hasOwnProperty.call(message, \"maxTimestamp\"))\n writer.uint32(/* id 14, wireType 0 =*/112).int64(message.maxTimestamp);\n if (message.dynamicPartitionMetadata != null && Object.hasOwnProperty.call(message, \"dynamicPartitionMetadata\"))\n $root.chromeos_update_engine.DynamicPartitionMetadata.encode(message.dynamicPartitionMetadata, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.partialUpdate != null && Object.hasOwnProperty.call(message, \"partialUpdate\"))\n writer.uint32(/* id 16, wireType 0 =*/128).bool(message.partialUpdate);\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();\n if (message.securityPatchLevel != null && Object.hasOwnProperty.call(message, \"securityPatchLevel\"))\n writer.uint32(/* id 18, wireType 2 =*/146).string(message.securityPatchLevel);\n return writer;\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message, length delimited. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 3:\n message.blockSize = reader.uint32();\n break;\n case 4:\n message.signaturesOffset = reader.uint64();\n break;\n case 5:\n message.signaturesSize = reader.uint64();\n break;\n case 12:\n message.minorVersion = reader.uint32();\n break;\n case 13:\n if (!(message.partitions && message.partitions.length))\n message.partitions = [];\n message.partitions.push($root.chromeos_update_engine.PartitionUpdate.decode(reader, reader.uint32()));\n break;\n case 14:\n message.maxTimestamp = reader.int64();\n break;\n case 15:\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.decode(reader, reader.uint32());\n break;\n case 16:\n message.partialUpdate = reader.bool();\n break;\n case 17:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n case 18:\n message.securityPatchLevel = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DeltaArchiveManifest message.\n * @function verify\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DeltaArchiveManifest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n if (!$util.isInteger(message.blockSize))\n return \"blockSize: integer expected\";\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (!$util.isInteger(message.signaturesOffset) && !(message.signaturesOffset && $util.isInteger(message.signaturesOffset.low) && $util.isInteger(message.signaturesOffset.high)))\n return \"signaturesOffset: integer|Long expected\";\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (!$util.isInteger(message.signaturesSize) && !(message.signaturesSize && $util.isInteger(message.signaturesSize.low) && $util.isInteger(message.signaturesSize.high)))\n return \"signaturesSize: integer|Long expected\";\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n if (!$util.isInteger(message.minorVersion))\n return \"minorVersion: integer expected\";\n if (message.partitions != null && message.hasOwnProperty(\"partitions\")) {\n if (!Array.isArray(message.partitions))\n return \"partitions: array expected\";\n for (let i = 0; i < message.partitions.length; ++i) {\n let error = $root.chromeos_update_engine.PartitionUpdate.verify(message.partitions[i]);\n if (error)\n return \"partitions.\" + error;\n }\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (!$util.isInteger(message.maxTimestamp) && !(message.maxTimestamp && $util.isInteger(message.maxTimestamp.low) && $util.isInteger(message.maxTimestamp.high)))\n return \"maxTimestamp: integer|Long expected\";\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\")) {\n let error = $root.chromeos_update_engine.DynamicPartitionMetadata.verify(message.dynamicPartitionMetadata);\n if (error)\n return \"dynamicPartitionMetadata.\" + error;\n }\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n if (typeof message.partialUpdate !== \"boolean\")\n return \"partialUpdate: boolean expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n if (!$util.isString(message.securityPatchLevel))\n return \"securityPatchLevel: string expected\";\n return null;\n };\n\n /**\n * Creates a DeltaArchiveManifest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n */\n DeltaArchiveManifest.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DeltaArchiveManifest)\n return object;\n let message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n if (object.blockSize != null)\n message.blockSize = object.blockSize >>> 0;\n if (object.signaturesOffset != null)\n if ($util.Long)\n (message.signaturesOffset = $util.Long.fromValue(object.signaturesOffset)).unsigned = true;\n else if (typeof object.signaturesOffset === \"string\")\n message.signaturesOffset = parseInt(object.signaturesOffset, 10);\n else if (typeof object.signaturesOffset === \"number\")\n message.signaturesOffset = object.signaturesOffset;\n else if (typeof object.signaturesOffset === \"object\")\n message.signaturesOffset = new $util.LongBits(object.signaturesOffset.low >>> 0, object.signaturesOffset.high >>> 0).toNumber(true);\n if (object.signaturesSize != null)\n if ($util.Long)\n (message.signaturesSize = $util.Long.fromValue(object.signaturesSize)).unsigned = true;\n else if (typeof object.signaturesSize === \"string\")\n message.signaturesSize = parseInt(object.signaturesSize, 10);\n else if (typeof object.signaturesSize === \"number\")\n message.signaturesSize = object.signaturesSize;\n else if (typeof object.signaturesSize === \"object\")\n message.signaturesSize = new $util.LongBits(object.signaturesSize.low >>> 0, object.signaturesSize.high >>> 0).toNumber(true);\n if (object.minorVersion != null)\n message.minorVersion = object.minorVersion >>> 0;\n if (object.partitions) {\n if (!Array.isArray(object.partitions))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected\");\n message.partitions = [];\n for (let i = 0; i < object.partitions.length; ++i) {\n if (typeof object.partitions[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: object expected\");\n message.partitions[i] = $root.chromeos_update_engine.PartitionUpdate.fromObject(object.partitions[i]);\n }\n }\n if (object.maxTimestamp != null)\n if ($util.Long)\n (message.maxTimestamp = $util.Long.fromValue(object.maxTimestamp)).unsigned = false;\n else if (typeof object.maxTimestamp === \"string\")\n message.maxTimestamp = parseInt(object.maxTimestamp, 10);\n else if (typeof object.maxTimestamp === \"number\")\n message.maxTimestamp = object.maxTimestamp;\n else if (typeof object.maxTimestamp === \"object\")\n message.maxTimestamp = new $util.LongBits(object.maxTimestamp.low >>> 0, object.maxTimestamp.high >>> 0).toNumber();\n if (object.dynamicPartitionMetadata != null) {\n if (typeof object.dynamicPartitionMetadata !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected\");\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.fromObject(object.dynamicPartitionMetadata);\n }\n if (object.partialUpdate != null)\n message.partialUpdate = Boolean(object.partialUpdate);\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n if (object.securityPatchLevel != null)\n message.securityPatchLevel = String(object.securityPatchLevel);\n return message;\n };\n\n /**\n * Creates a plain object from a DeltaArchiveManifest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.DeltaArchiveManifest} message DeltaArchiveManifest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DeltaArchiveManifest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.partitions = [];\n object.apexInfo = [];\n }\n if (options.defaults) {\n object.blockSize = 4096;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesSize = options.longs === String ? \"0\" : 0;\n object.minorVersion = 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.maxTimestamp = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.maxTimestamp = options.longs === String ? \"0\" : 0;\n object.dynamicPartitionMetadata = null;\n object.partialUpdate = false;\n object.securityPatchLevel = \"\";\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n object.blockSize = message.blockSize;\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (typeof message.signaturesOffset === \"number\")\n object.signaturesOffset = options.longs === String ? String(message.signaturesOffset) : message.signaturesOffset;\n else\n object.signaturesOffset = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesOffset) : options.longs === Number ? new $util.LongBits(message.signaturesOffset.low >>> 0, message.signaturesOffset.high >>> 0).toNumber(true) : message.signaturesOffset;\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (typeof message.signaturesSize === \"number\")\n object.signaturesSize = options.longs === String ? String(message.signaturesSize) : message.signaturesSize;\n else\n object.signaturesSize = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesSize) : options.longs === Number ? new $util.LongBits(message.signaturesSize.low >>> 0, message.signaturesSize.high >>> 0).toNumber(true) : message.signaturesSize;\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n object.minorVersion = message.minorVersion;\n if (message.partitions && message.partitions.length) {\n object.partitions = [];\n for (let j = 0; j < message.partitions.length; ++j)\n object.partitions[j] = $root.chromeos_update_engine.PartitionUpdate.toObject(message.partitions[j], options);\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (typeof message.maxTimestamp === \"number\")\n object.maxTimestamp = options.longs === String ? String(message.maxTimestamp) : message.maxTimestamp;\n else\n object.maxTimestamp = options.longs === String ? $util.Long.prototype.toString.call(message.maxTimestamp) : options.longs === Number ? new $util.LongBits(message.maxTimestamp.low >>> 0, message.maxTimestamp.high >>> 0).toNumber() : message.maxTimestamp;\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\"))\n object.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.toObject(message.dynamicPartitionMetadata, options);\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n object.partialUpdate = message.partialUpdate;\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n object.securityPatchLevel = message.securityPatchLevel;\n return object;\n };\n\n /**\n * Converts this DeltaArchiveManifest to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n * @returns {Object.} JSON object\n */\n DeltaArchiveManifest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DeltaArchiveManifest;\n })();\n\n return chromeos_update_engine;\n})();\n\nexport { $root as default };\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TextWriter, ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { chromeos_update_engine } from './update_metadata_pb.js'\n\n/**\n * Parse the non-A/B OTA package and return it as a DeltaArchiveManifest\n * @param {ZipReader} packedFile\n */\nexport class PayloadNonAB extends chromeos_update_engine.DeltaArchiveManifest {\n nonAB: boolean = true\n Blocksize: number = 4096\n packedFile: ZipReader\n constructor(packedFile: ZipReader) {\n super()\n this.packedFile = packedFile\n }\n\n async init() {\n this.Blocksize = 4096\n this.partialUpdate = false\n this.dynamicPartitionMetadata = new chromeos_update_engine.DynamicPartitionMetadata(\n { snapshotEnabled: false, vabcEnabled: false }\n )\n this.partitions = []\n\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.transfer.list)/g\n const /** Array */ entries = await this.packedFile.getEntries()\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n const match = entry.filename.match(regexName)![0]\n let newPartition: any = new chromeos_update_engine.PartitionUpdate({\n partitionName: match\n })\n newPartition.rawText = await entry.getData!(new TextWriter())\n await this.parseTransferList(newPartition)\n this.partitions.push(newPartition)\n }\n }\n }\n\n async parseTransferList(partition: chromeos_update_engine.PartitionUpdate | any) {\n let lines = (partition as any).rawText.split('\\n')\n // First four line in header: version, total blocks,\n // number of stashed entries, maximum used memory for stash\n if (lines.length < 4) {\n throw 'At least 4 lines in header should be provided.'\n }\n partition.version = lines[0]\n partition.totalBlocks = parseInt(lines[1])\n partition.entryStashed = parseInt(lines[2])\n partition.maxStashed = parseInt(lines[3])\n partition.newPartitionInfo = new chromeos_update_engine.PartitionInfo()\n partition.newPartitionInfo.hash = new Uint8Array()\n partition.newPartitionInfo.size = 'unknown'\n /**\n * The main body have 8 different ops:\n * zero [rangeset] : fill zeros\n * new [rangeset] : fill with new data from \n * erase [rangeset] : mark given blocks as empty\n * move <...>\n * bsdiff <...>\n * imgdiff <...> :\n * Read the source blocks and apply (not for move op) to the target blocks\n * stash : load the given source range to memory\n * free : free the given \n * format:\n * [rangeset]: <# of pairs>, , , ...\n * : a hex number with length of 40\n * <...>: We expect to parse the remainder of the parameter tokens as one of:\n * (loads data from source image only)\n * - <[stash_id:stash_range] ...> (loads data from stashes only)\n * <[stash_id:stash_range] ...>\n * (loads data from both source image and stashes)\n */\n partition.operations = new Array()\n let newDataSize = await this.sizeNewData(partition.partitionName)\n for (const line of lines.slice(4)) {\n let op = new chromeos_update_engine.InstallOperation()\n let elements = line.split(' ')\n op.type = elements[0]\n switch ((op.type as unknown) as string) {\n case 'zero':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'new':\n // unlike an A/B OTA, the payload only exists in the payload.bin,\n // in an non-A/B OTA, the payload exists in both .new.data and .patch.data.\n // The new ops do not have any information about data length.\n // what we do here is: read in the size of .new.data, assume the first new\n // op have the data length of the size of .new.data.\n op.dataLength = newDataSize\n newDataSize = 0\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'erase':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'move':\n op.dstExtents = parseRange([], elements[2])\n break\n case 'bsdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'imgdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'stash':\n break\n case 'free':\n break\n }\n partition.operations.push(op)\n }\n }\n\n /**\n * Return the size of .new.data.*\n * @param {String} partitionName\n * @return {Number}\n */\n async sizeNewData(partitionName: string) {\n const /** Array */ entries = await this.packedFile.getEntries()\n const /** RegExp */ regexName = new RegExp(partitionName + '.new.dat.*')\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n return entry.uncompressedSize\n }\n }\n }\n}\n\n/**\n * Parse the range string and return it as an array of extents\n * @param {extents} Array\n * @param {String} rangeset\n * @return Array\n */\nfunction parseRange(extents: Object[], rangeset: string) {\n const regexRange = new RegExp('[d,]+')\n if (rangeset.match(regexRange)) {\n let elements = rangeset.split(',')\n for (let i = 1; i < elements.length; i = i + 2) {\n let extent = new Object({\n startBlock: parseInt(elements[i]),\n numBlocks: parseInt(elements[i + 1]) - parseInt(elements[i])\n })\n extents.push(extent)\n }\n }\n return extents\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class paypload is used to read in and\n * parse the payload.bin file from a OTA.zip file.\n * Class OpType creates a Map that can resolve the\n * operation type.\n * @package zip.js\n * @package protobufjs\n */\n\nimport {\n BlobReader,\n TextWriter,\n Writer,\n ZipReader,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\n// import '@zip.js/zip.js'\nimport { chromeos_update_engine as update_metadata_pb } from './update_metadata_pb'\nimport { PayloadNonAB } from './payload_nonab'\nimport { ZipFile } from './trim_zip'\n// import { Zip_js } from 'zip.js'\n\nconst /** String */ _MAGIC = 'CrAU'\nconst /** Number */ _VERSION_SIZE = 8\nconst /** Number */ _MANIFEST_LEN_SIZE = 8\nconst /** Number */ _METADATA_SIGNATURE_LEN_SIZE = 4\n\nconst /** Number */ _PAYLOAD_HEADER_SIZE =\n _MAGIC.length +\n _VERSION_SIZE +\n _MANIFEST_LEN_SIZE +\n _METADATA_SIGNATURE_LEN_SIZE\n\nconst /** Number */ _BRILLO_MAJOR_PAYLOAD_VERSION = 2\nexport const /** Array */ MetadataFormat = [\n {\n prefix: 'pre-build',\n key: 'preBuild',\n name: 'Pre-build'\n },\n {\n prefix: 'pre-build-incremental',\n key: 'preBuildVersion',\n name: 'Pre-build version'\n },\n {\n prefix: 'post-build',\n key: 'postBuild',\n name: 'Post-build'\n },\n {\n prefix: 'post-build-incremental',\n key: 'postBuildVersion',\n name: 'Post-build version'\n },\n {\n prefix: 'post-security-patch-level',\n key: 'postSecurityPatchLevel',\n name: 'Post-build SPL'\n },\n {\n prefix: 'post-timestamp',\n key: 'postTimestamp',\n name: 'Post-build timestamp'\n },\n ]\n\nclass StopIteration extends Error {}\n\nclass AbPayloadHeader {\n constructor(\n public magic: string,\n public version: number,\n public manifest_len: number,\n public metadata_signature_len: number\n ) {}\n}\n\n/**\n * Read in an integer from binary bufferArray.\n * @param {Int} size the size of a integer being read in\n * @return {Int} an integer.\n */\nasync function readIntAt(buffer: Blob, position: number, size: number) {\n let /** DataView */ view = new DataView(\n await buffer!.slice(position, position + size).arrayBuffer()\n )\n if (typeof view.getBigUint64 !== 'function') {\n view.getBigUint64 = function(offset) {\n const a = BigInt(view.getUint32(offset))\n const b = BigInt(view.getUint32(offset + 4))\n const bigNumber = a * 4294967296n + b\n return bigNumber\n }\n }\n switch (size) {\n case 2:\n return view.getUint16(0)\n case 4:\n return view.getUint32(0)\n case 8:\n return Number(view.getBigUint64(0))\n default:\n throw 'Cannot read this integer with size ' + size\n }\n}\n\nclass OTAPayloadBlobWriter extends Writer {\n offset: number\n contentType: string\n blob: Blob\n prefixLength: number\n\n header?: AbPayloadHeader\n\n async readHeader(blob: Blob) {\n let cursor = 0\n const readInt = (size: number) => {\n const ret = readIntAt(blob, cursor, size)\n cursor += size\n return ret\n }\n let buffer = await blob.slice(0, _PAYLOAD_HEADER_SIZE).arrayBuffer()\n let /** TextDecoder */ decoder = new TextDecoder()\n let magicBytes = buffer.slice(0, _MAGIC.length)\n const magic = decoder.decode(magicBytes)\n if (magic != _MAGIC) {\n throw new Error(\n `MAGIC is not correct, expected: ${_MAGIC} actual: ${magic}`\n )\n }\n cursor += _MAGIC.length\n const header_version = await readInt(_VERSION_SIZE)\n const manifest_len = await readInt(_MANIFEST_LEN_SIZE)\n if (header_version != _BRILLO_MAJOR_PAYLOAD_VERSION) {\n throw new Error(`Unexpected major version number: ${header_version}`)\n }\n const metadata_signature_len = await readInt(_METADATA_SIGNATURE_LEN_SIZE)\n this.header = new AbPayloadHeader(\n magic,\n header_version,\n manifest_len,\n metadata_signature_len\n )\n }\n /**\n * A zip.Writer that is tailored for OTA payload.bin read-in.\n * Instead of reading in all the contents in payload.bin, this writer will\n * throw an 'StopIteration' error when the header is read in.\n * The header will be stored into the .\n * @param {Payload} payload\n * @param {String} contentType\n */\n constructor(contentType = '') {\n super()\n this.offset = 0\n this.contentType = contentType\n this.blob = new Blob([], { type: contentType })\n this.prefixLength = 0\n }\n\n async writeUint8Array(array: Uint8Array) {\n super.writeUint8Array(array)\n this.blob = new Blob([this.blob, array.buffer], { type: this.contentType })\n this.offset = this.blob.size\n // Once the prefixLength is non-zero, the address of manifest and signature\n // become known and can be read in. Otherwise the header needs to be read\n // in first to determine the prefixLength.\n if (this.offset >= _PAYLOAD_HEADER_SIZE && this.prefixLength == 0) {\n console.log('Parsing header!')\n await this.readHeader(this.blob)\n this.prefixLength =\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n console.log(`Computed metadata length: ${this.prefixLength}`)\n }\n if (this.prefixLength > 0) {\n console.log(`${this.offset}/${this.prefixLength}`)\n if (this.offset >= this.prefixLength) {\n // The prefix has everything we need (header, manifest, signature). Once\n // the offset is beyond the prefix, no need to move on.\n this.blob = this.blob.slice(0, this.prefixLength)\n throw new StopIteration()\n }\n }\n }\n\n getData() {\n return this.blob\n }\n}\n\nexport class Payload {\n zipreader: ZipReader\n buffer: Blob | undefined\n private metadata: any\n payload_properties!: string[]\n manifest: update_metadata_pb.DeltaArchiveManifest | undefined\n metadata_signature!: update_metadata_pb.Signatures\n\n header?: AbPayloadHeader\n\n /**\n * This class parses the metadata of a OTA package.\n * @param {File} file A OTA.zip file read from user's machine.\n */\n constructor(file: File | URL | ZipFile) {\n if (file instanceof File) {\n this.zipreader = new ZipReader(new BlobReader(file))\n } else if (file instanceof URL) {\n this.zipreader = new ZipReader(new HttpReader(file.href))\n } else {\n this.zipreader = file.reader\n }\n this.payload_properties = []\n }\n\n getMetadataLength(): number {\n return (\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n )\n }\n\n /**\n * Unzip the OTA package, get payload.bin and metadata\n */\n async unzip() {\n let entries = await this.zipreader.getEntries()\n for (let entry of entries) {\n if (entry.filename == 'payload.bin') {\n let writer = new OTAPayloadBlobWriter('')\n try {\n await entry.getData!(writer)\n } catch (e) {\n if (e instanceof StopIteration) {\n // Exception used as a hack to stop reading from zip. NO need to do anything\n // Ideally zip.js would provide an API to partialll read a zip\n // entry, but they don't. So this is what we get\n } else {\n console.log(e)\n throw e\n }\n }\n this.buffer = writer.getData()\n await this.readManifest(this.buffer, writer.header!)\n console.log('AB OTA manifest parsed')\n } else if (entry.filename == 'META-INF/com/android/metadata') {\n this.metadata = await entry.getData!(new TextWriter())\n console.log('OTA Package metadata parsed')\n } else if (entry.filename == \"payload_properties.txt\") {\n let payload_properties: string = await entry.getData!(new TextWriter());\n this.payload_properties = payload_properties.split(\"\\n\");\n console.log('OTA payload_properties.txt parsed');\n console.log(this.getPayloadHash());\n }\n }\n if (!this.manifest) {\n console.log('Failed to parse AB OTA package, falling back to non-AB')\n try {\n // The temporary variable manifest has to be used here, to prevent the html page\n // being rendered before everything is read in properly\n let manifest = new PayloadNonAB(this.zipreader)\n await manifest.init()\n manifest.nonAB = true\n this.manifest = manifest\n } catch (error) {\n alert('Please select a legit OTA package')\n return\n }\n }\n }\n\n getPayloadHash() {\n const file_hash_prefix = \"FILE_HASH=\";\n for(let line of this.payload_properties) {\n if (line.startsWith(file_hash_prefix)) {\n return base64ToBytes(line.substring(file_hash_prefix.length));\n }\n }\n return \"\"\n }\n\n /**\n * Read the header of payload.bin, including the magic, header_version,\n * manifest_len, metadata_signature_len.\n */\n /**\n * Read in the manifest in an OTA.zip file.\n * The structure of the manifest can be found in:\n * aosp/system/update_engine/update_metadata.proto\n */\n async readManifest(buffer: Blob, header: AbPayloadHeader) {\n this.header = header\n let cursor = _PAYLOAD_HEADER_SIZE\n let manifestBlob = await buffer\n .slice(cursor, cursor + header.manifest_len)\n .arrayBuffer()\n cursor += header.manifest_len\n this.manifest = update_metadata_pb.DeltaArchiveManifest.decode(\n new Uint8Array(manifestBlob)\n )\n let signatureBlob = await buffer\n .slice(cursor, cursor + header.metadata_signature_len)\n .arrayBuffer()\n cursor += header.metadata_signature_len\n this.metadata_signature = update_metadata_pb.Signatures.decode(\n new Uint8Array(signatureBlob)\n );\n (this.manifest! as any).nonAB = false\n }\n\n parseMetadata() {\n for (let formatter of MetadataFormat) {\n let regex = new RegExp(formatter.prefix + '.+')\n if (this.metadata && this.metadata.match(regex)) {\n (this as any)[formatter.key] = trimEntry(\n this.metadata.match(regex)[0],\n formatter.prefix\n )\n } else {\n (this as any)[formatter.key] = ''\n }\n }\n }\n\n async init() {\n await this.unzip()\n this.parseMetadata()\n }\n}\n\nexport class DefaultMap extends Map {\n /** Reload the original get method. Return the original key value if\n * the key does not exist.\n * @param {Any} key\n */\n getWithDefault(key: any) {\n if (!this.has(key)) return key\n return this.get(key)\n }\n}\n\nexport class OpType {\n mapType: DefaultMap\n /**\n * OpType.mapType create a map that could resolve the operation\n * types. The operation types are encoded as numbers in\n * update_metadata.proto and must be decoded before any usage.\n */\n constructor() {\n let types = update_metadata_pb.InstallOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport class MergeOpType {\n mapType: DefaultMap\n /**\n * MergeOpType create a map that could resolve the COW merge operation\n * types. This is very similar to OpType class except that one is for\n * installation operations.\n */\n constructor() {\n let /** Array<{String: Number}>*/ types =\n update_metadata_pb.CowMergeOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport function octToHex(bufferArray: Uint8Array, space = true, maxLine = 16) {\n let hex_table = ''\n for (let i = 0; i < bufferArray.length; i++) {\n const hex /** String **/ = bufferArray[i].toString(16).toUpperCase()\n if (hex.length === 2) {\n hex_table += hex + (space ? ' ' : '')\n } else {\n hex_table += '0' + hex + (space ? ' ' : '')\n }\n if ((i + 1) % maxLine == 0 && space) {\n hex_table += '\\n'\n }\n }\n return hex_table\n}\n\n/**\n * Trim the prefix in an entry. This is required because the lookbehind\n * regular expression is not supported in safari yet.\n * @param {String} entry\n * @param {String} prefix\n * @return String\n */\nfunction trimEntry(entry: string, prefix: string) {\n return entry.slice(prefix.length + 1, entry.length)\n}\n\nfunction base64ToBytes(base64: string) {\n const binString = atob(base64);\n return Uint8Array.from(binString, (m) => m.codePointAt(0)!);\n}\n","\n\n\n\n\n\n\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EChartsOption } from 'echarts'\n\nexport class EchartsData {\n statisticData: Map\n trimmedData: Map\n title: string\n unit: string\n maximumEntries: number\n /**\n * Given a set of [key, value] pairs and title, create an object for further\n * usage in Vue-Echarts.\n * @param {Map} statisticData\n * @param {String} title\n * @param {String} unit\n * @param {Number} maximumEntries\n */\n constructor(\n statisticData: Map,\n title: string,\n unit: string,\n maximumEntries = 15\n ) {\n this.statisticData = statisticData\n this.trimmedData = trimMap(statisticData, maximumEntries)\n this.title = title\n this.unit = unit\n this.maximumEntries = maximumEntries\n }\n\n /**\n * Convert the raw data into a string.\n * @return {String} A list of [key, value].\n */\n listData() {\n let /** String */ table = ''\n for (let [key, value] of this.statisticData) {\n table += key + ' : ' + value.toString() + ' Blocks' + '\\n'\n }\n return table\n }\n\n /**\n * Generate necessary parameters (option) for vue-echarts.\n * Format of the parameters can be found here:\n * https://echarts.apache.org/en/option.html\n * @param {String} unit\n * @return {Object} an ECharts option object.\n */\n getEchartsOption(): EChartsOption {\n let /** Object */ option: EChartsOption = {}\n option.title = {\n text: this.title,\n left: 'center'\n }\n option.tooltip = {\n trigger: 'item',\n formatter: '{a}
{b} : {c} ' + this.unit + ' ({d}%)'\n }\n option.legend = {\n orient: 'horizontal',\n left: 'top',\n top: '10%',\n data: Array.from(this.trimmedData.keys())\n }\n option.series = [\n {\n name: this.title,\n type: 'pie',\n radius: '55%',\n center: ['50%', '60%'],\n data: Array.from(this.trimmedData).map((pair: any) => {\n return { value: pair[1], name: pair[0] }\n }),\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)'\n }\n }\n }\n ]\n return option\n }\n}\n\n/**\n * When there are too many entries in the map, the pie chart can be very\n * crowded. This function will return the entries that have high values.\n * Specifically, the top will be stored and the others\n * will be added into an entry called 'other'.\n * @param {Map} map\n * @param {Number} maximumEntries\n * @return {Map}\n */\nfunction trimMap(map: Map, maximumEntries: number) {\n if (map.size <= maximumEntries) return map\n let /** Map */ new_map = new Map()\n for (let i = 0; i < maximumEntries; i++) {\n let /** Number */ curr = 0\n let /** String */ currKey = ''\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n if (value > curr) {\n curr = value\n currKey = key\n }\n }\n }\n new_map.set(currKey, curr)\n }\n let /** Number */ restTotal = 0\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n restTotal += value\n }\n }\n new_map.set('other', restTotal)\n return new_map\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class MapParser will take in a Android build and construct\n * several file name maps (physical address: file name) according to it.\n * The map of each partitions is added by calling MapParser.add(partitionName).\n * You can query the file name being operated by calling\n * MapParser.query(address, datalength).\n */\n\nimport {\n ZipReader,\n BlobReader,\n TextWriter,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\nimport { chromeos_update_engine } from './update_metadata_pb'\n\nexport class MapParser {\n build: ZipReader\n mapFiles: Map\n maps: Map\n /**\n * This class will take in a .zip Android build and construct a file type map\n * @param {File} targetFile\n */\n constructor(targetFile: File | URL) {\n if (targetFile instanceof File) {\n this.build = new ZipReader(new BlobReader(targetFile))\n } else {\n this.build = new ZipReader(new HttpReader(targetFile.href))\n }\n this.mapFiles = new Map()\n this.maps = new Map()\n }\n\n /**\n * Find the .map entries in the .zip build file. Store them as a map with\n * pairs of (partition name: zip.js entry).\n */\n async init() {\n let /** Array */ entries = await this.build.getEntries()\n const /** RegExp*/ regexPath = /IMAGES\\/[a-z_]*\\.map/g\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.map)/g\n entries.forEach(entry => {\n if (entry.filename.match(regexPath)) {\n this.mapFiles.set(entry.filename.match(regexName)![0], entry)\n }\n })\n }\n\n /**\n * According to the .map in the build, build a map for later query.\n * @param {String} partitionName\n * @param {Number} totalLength\n */\n async add(partitionName: string, totalLength: number) {\n let /** Array */ map = []\n const /** RegExp */ regexNumber = /\\d+/g\n const /** Reg */ regexRange = /\\d+\\-\\d+/g\n for (let i = 0; i < totalLength; i++) map[i] = `<${partitionName}>`\n if (this.mapFiles.get(partitionName)) {\n let /** String */ mapText = await this.mapFiles\n .get(partitionName)\n .getData(new TextWriter())\n let /** Array */ fileEntries = mapText.split('\\n')\n // Each line of the .map file in Android build starts with the filename\n // Followed by the block address, either a number or a range, for example:\n // //system/apex/com.android.adbd.apex 54-66 66 66-2663\n for (let entry of fileEntries) {\n let /** Array */ elements = entry.split(' ')\n for (let j = 1; j < elements.length; j++) {\n let /** Number */ left = 0\n let /** Number */ right = 0\n if (elements[j].match(regexRange)) {\n left = parseInt(elements[j].match(/\\d+/g)[0])\n right = parseInt(elements[j].match(/\\d+/g)[1])\n } else {\n left = parseInt(elements[j].match(regexNumber))\n right = parseInt(elements[j].match(regexNumber))\n }\n InsertMap(map, elements[0], left, right)\n }\n }\n this.maps.set(partitionName, map)\n } else {\n this.maps.set(partitionName, map)\n }\n }\n\n /**\n * Return the filename of given address.\n * @param {String} partitionName\n * @param {Array} extents\n * @return {Array}\n */\n query(partitionName: string, extents: Array) {\n let /** Array */ names = []\n let /** Array */ map = this.maps.get(partitionName)\n for (let ext of extents) {\n names.push(queryMap(map, ext.startBlock, ext.startBlock + ext.numBlocks))\n }\n return names\n }\n}\n\n/**\n * Fill in the hashtable from to using .\n * @param {Array} map\n * @param {String} name\n * @param {Number} left\n * @param {Number} right\n */\nfunction InsertMap(\n map: Array,\n name: string,\n left: number,\n right: number\n) {\n for (let i = left; i <= right; i++) {\n map[i] = name\n }\n}\n\n/**\n * Query the hashtable using index
.\n * @param {Array} map\n * @param {Number} left\n * @param {Number} right\n */\nfunction queryMap(map: Array, left: number, right: number) {\n // Assuming the consecutive blocks belong to the same file\n // Only the start block is queried here.\n if (!map[left]) {\n return 'unknown'\n }\n return map[left]\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Offer functions that can be used to parse the partitionUpdate\n * and then do statistics over it. One can use analysePartitions to specify the\n * partitions been analysed and metrics.\n */\n\nimport { OpType, MergeOpType } from './payload'\nimport { EchartsData } from './echarts_data'\nimport { MapParser } from './map_parser'\nimport { chromeos_update_engine } from './update_metadata_pb'\n\n/**\n * Add a to a element associated to . If the element dose not\n * exists than its value will be initialized to zero.\n * @param {Map} map\n * @param {String} key\n * @param {Number} value\n */\nfunction addNumberToMap(map: Map, key: String, value: number) {\n if (!map.get(key)) {\n map.set(key, 0)\n }\n map.set(key, map.get(key)! + value)\n}\n\n/**\n * Return a statistics over the numbers of blocks (in destination) that are\n * being operated by different installation operation (e.g. REPLACE, BSDIFF).\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedBlockStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n operatedBlocks,\n operationType,\n numBlocks(operation.dstExtents)\n )\n }\n }\n return operatedBlocks\n}\n\nfunction partitionPayloadSize(\n partition: chromeos_update_engine.IPartitionUpdate\n) {\n if (!partition.operations) {\n return 0\n }\n let size = 0\n for (let op of partition.operations!) {\n size += op.dataLength\n }\n return size\n}\n\nexport function partitionPayloadSizeStatistics(\n partitions: Array\n) {\n let partitionStats = new Map()\n for (let partition of partitions) {\n addNumberToMap(\n partitionStats,\n partition.partitionName,\n partitionPayloadSize(partition)\n )\n }\n return partitionStats\n}\n\nexport function mergeOperationStatistics(\n partitions: Array,\n blockSize: number\n) {\n let /** Map */ mergeOperations = new Map()\n let /** MergeOpType */ opType = new MergeOpType()\n let /** Number */ totalBlocks = 0\n for (let partition of partitions) {\n for (let operation of partition.mergeOperations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n mergeOperations,\n operationType,\n operation.dstExtent!.numBlocks\n )\n }\n // The total blocks number should be rounded up\n if (partition.newPartitionInfo == null) {\n throw new Error(\n `Partition ${partition.partitionName} doesn't have new_partition_info field.`\n )\n }\n totalBlocks += Math.ceil(partition.newPartitionInfo.size / blockSize)\n }\n // The COW merge operation is default to be COW_replace and not shown in\n // the manifest info. We have to mannually add that part of operations,\n // by subtracting the total blocks with other blocks.\n mergeOperations.forEach((value, key) => (totalBlocks -= value))\n mergeOperations.set('COW_REPLACE', totalBlocks)\n return mergeOperations\n}\n\n/**\n * Return a statistics over the disk usage of payload.bin, based on the type of\n * installation operations. Only partitions that are being passed in will be\n * included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedPayloadStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(operatedBlocks, operationType, operation.dataLength)\n }\n }\n return operatedBlocks\n}\n/**\n * Return a statistics over the disk usage of each file types in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFileExtensionsStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let filenameStats = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n const fileExtenstionStats = new Map()\n filenameStats.forEach((size, filename) => {\n addNumberToMap(fileExtenstionStats, name2Extension(filename), size)\n })\n return fileExtenstionStats\n}\n\n/**\n * Return a statistics over the disk usage of each file name in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFilenamesStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let /** Map */ operatedFilenames = new Map()\n if (!targetFile) {\n return operatedFilenames\n }\n let buildMap = new MapParser(targetFile)\n await buildMap.init()\n for (let partition of partitions) {\n await buildMap.add(\n partition.partitionName,\n Math.ceil(partition.newPartitionInfo!.size / blockSize)\n )\n for (let operation of partition.operations!) {\n if (!operation.hasOwnProperty('dataLength')) continue\n let operatedFileNames = buildMap.query(\n partition.partitionName,\n operation.dstExtents!\n )\n let extentDataLength = distributeFilenames(\n operatedFileNames,\n operation.dstExtents!,\n operation.dataLength\n )\n extentDataLength!.forEach((value, key) => {\n addNumberToMap(operatedFilenames, key, value)\n })\n }\n }\n return operatedFilenames\n}\n\n/**\n * Analyse the given partitions using the given metrics.\n * @param {String} metrics\n * @param {Array} partitions\n * @return {EchartsData}\n */\nexport async function analysePartitions(\n metrics: String,\n partitions: Array,\n blockSize = 4096,\n targetFile: File | null | URL = null\n) {\n let /** Map */ statisticsData\n let /** Echartsdata */ echartsData\n switch (metrics) {\n case 'blocks':\n statisticsData = operatedBlockStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Operated blocks in target build',\n 'blocks'\n )\n break\n case 'payload':\n statisticsData = operatedPayloadStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Payload disk usage',\n 'bytes'\n )\n break\n case 'COWmerge':\n statisticsData = mergeOperationStatistics(partitions, blockSize)\n echartsData = new EchartsData(\n statisticsData,\n 'COW merge operations',\n 'blocks'\n )\n break\n case 'filenames':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated filenames',\n 'bytes'\n )\n break\n case 'extensions':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFileExtensionsStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated extensions',\n 'bytes'\n )\n break\n case 'partitions':\n statisticsData = partitionPayloadSizeStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Partition payload size',\n 'bytes'\n )\n break\n }\n if (echartsData) {\n return echartsData\n } else {\n throw 'Please double check if this is a proper AB OTA package.'\n }\n}\n\n/**\n * Calculate the number of blocks being operated\n * @param {Array} exts\n * @return {number}\n */\nexport function numBlocks(\n exts: Array | null | undefined\n) {\n if (!exts) {\n return 0\n }\n const accumulator = (total: number, ext: chromeos_update_engine.IExtent) =>\n total + ext.numBlocks\n return exts.reduce(accumulator, 0)\n}\n\n/**\n * Return a string that indicates the blocks being operated\n * in the manner of (start_block, block_length)\n * @param {Array} exts\n * @return {string}\n */\nexport function displayBlocks(exts: Array) {\n const accumulator = (total: string, ext: chromeos_update_engine.Extent) =>\n total + '(' + ext.startBlock + ',' + ext.numBlocks + ')'\n return exts.reduce(accumulator, '')\n}\n\n/**\n * Return a map with pairs of (file extension, data length used by this\n * extension). The total data length will be distributed by the blocks ratio\n * of each extent.\n * @param {Array} filenames\n * @param {Array} exts\n * @param {Number} length\n * @return {Map}\n */\nexport function distributeFilenames(\n filenames: Array,\n exts: Array,\n length: number\n): Map {\n let totalBlocks = numBlocks(exts)\n let distributedLengths = new Map()\n for (let i = 0; i < filenames.length; i++) {\n addNumberToMap(\n distributedLengths,\n filenames[i],\n Math.round((length * exts[i].numBlocks) / totalBlocks)\n )\n }\n return distributedLengths\n}\n\n/**\n * convert a filename into extension, for example:\n * '//system/apex/com.android.adbd.apex' => 'apex'\n * @param {String} filename\n * @return {String}\n */\nexport function name2Extension(filename: string) {\n let elements = filename.split('.')\n if (elements.length > 1) {\n return elements[elements.length - 1]\n } else if (elements[0] === 'unknown') {\n return 'unknown'\n } else if (filename[0] == '<' && filename.endsWith('>')) {\n return filename\n } else {\n return 'no-extension'\n }\n}\n","\nimport { numBlocks, displayBlocks } from '../services/payload_composition'\nimport { DefaultMap } from '../services/payload'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n operation: {\n type: Object,\n required: true\n },\n mapType: {\n type: DefaultMap,\n required: true\n }\n },\n data() {\n return {\n srcTotalBlocks: 0,\n srcBlocks: '',\n dstTotalBlocks: 0,\n dstBlocks: ''\n }\n },\n mounted() {\n if (this.operation.srcExtents) {\n this.srcTotalBlocks = numBlocks(this.operation.srcExtents)\n this.srcBlocks = displayBlocks(this.operation.srcExtents)\n }\n if (this.operation.dstExtents) {\n this.dstTotalBlocks = numBlocks(this.operation.dstExtents)\n this.dstBlocks = displayBlocks(this.operation.dstExtents)\n }\n }\n})\n","import { render } from \"./OperationDetail.vue?vue&type=template&id=44174082&scoped=true\"\nimport script from \"./OperationDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./OperationDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-44174082\"\n\nexport default script","\nimport { chromeos_update_engine } from '@/services/update_metadata_pb'\nimport { defineComponent } from 'vue'\nimport { OpType, octToHex } from '../services/payload'\nimport OperationDetail from './OperationDetail.vue'\n\nexport default defineComponent({\n components: {\n OperationDetail\n },\n props: {\n partition: {\n type: chromeos_update_engine.PartitionUpdate,\n required: true\n },\n dynamicPartitionList: {\n type: Array,\n required: true\n }\n },\n data() {\n return {\n showOPs: false,\n showInfo: false,\n opType: new OpType()\n }\n },\n methods: {\n toggle(key: string) {\n ;(this as any)[key] = !(this as any)[key]\n },\n octToHex: octToHex\n },\n computed: {\n readableTimestamp() {\n const unixTimestamp = parseInt(this.partition.version)\n if (isNaN(unixTimestamp)) {\n return ''\n }\n // Unix timestamp is in seconds, but js want milliseconds. So *1000\n return new Date(unixTimestamp * 1000).toString()\n },\n isDynamicPartition(): boolean {\n return (\n this.dynamicPartitionList.indexOf(this.partition.partitionName) >= 0\n )\n },\n isFECEnabled(): boolean {\n return (\n this.partition.fecExtent?.numBlocks > 0\n )\n },\n isHashtreeEnabled(): boolean {\n return (\n this.partition.hashTreeExtent?.numBlocks > 0\n )\n }\n }\n})\n","import { render } from \"./PartitionDetail.vue?vue&type=template&id=21e569e9&scoped=true\"\nimport script from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PartitionDetail.vue?vue&type=style&index=0&id=21e569e9&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-21e569e9\"\n\nexport default script","\n\n\n\n\n\n\n","import * as zip from '@zip.js/zip.js/dist/zip.js'\nimport { ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { Payload } from './payload'\n\nexport class ZipFile {\n public reader: ZipReader\n\n constructor(private file: File | URL) {\n this.reader = getZipReader(file)\n }\n getFileName() {\n return getFileName(this.file)\n }\n getFileSize() {\n if (this.file instanceof File) {\n return this.file.size\n } else {\n // TODO(zhangkelvin) Support getting file size from URL\n return 0\n }\n }\n}\n\nexport async function trimZip(\n file: ZipReader,\n p: (entry: zip.Entry) => boolean\n): Promise {\n const reader = file\n const writer = new zip.ZipWriter(new zip.BlobWriter('application/zip'))\n const entries = await reader.getEntries()\n for (const entry of entries.filter(entry => !!entry && p(entry))) {\n const blobWriter = new zip.BlobWriter()\n const data = (await entry.getData!(blobWriter)) as Blob\n console.log(`Adding ${entry.filename}, ${data.size}`)\n writer.add(entry.filename, new zip.BlobReader(blobWriter.getData()), {\n level: 0 // no compression\n })\n }\n return writer\n}\n\nfunction getZipReader(file: File | URL) {\n if (file instanceof File) {\n return new zip.ZipReader(new zip.BlobReader(file))\n } else {\n return new zip.ZipReader(new zip.HttpReader(file.href))\n }\n}\n\nexport function getFileName(file: File | URL) {\n if (file instanceof File) {\n return file.name\n } else {\n return file.pathname\n }\n}\n\nexport async function trimTargetFiles(file: File | URL): Promise {\n const writer = await trimZip(getZipReader(file), entry => {\n return entry.filename.startsWith('META/') || entry.filename.endsWith('.map') || entry.filename.endsWith(\".prop\") || entry.filename == \"prop.default\"\n })\n return await writer.close()\n}\n\nexport async function trimOTAPackage(payload: Payload): Promise {\n const writer = await trimZip(payload.zipreader, entry => {\n return entry.filename != 'payload.bin'\n })\n await writer.add(\n 'payload.bin',\n new zip.BlobReader(payload.buffer!.slice(0, payload.getMetadataLength())),\n // Most toolings assume that payload.bin and other entries are not\n // compressed, so use level 0\n {\n level: 0\n }\n )\n const blob: Blob = await writer.close()\n return blob\n}\n\nexport function downloadFile(\n blob: Blob,\n downloadNode: HTMLAnchorElement,\n filename: string\n) {\n const url = window.URL.createObjectURL(blob)\n downloadNode.href = url\n downloadNode.download = filename\n downloadNode.click()\n window.URL.revokeObjectURL(url)\n}\n\nexport function ensureSuffix(str: string, suffix: string) {\n if (str.endsWith(suffix)) {\n return str\n } else {\n return str + suffix\n }\n}\n","\nimport { Payload, MetadataFormat } from '../services/payload'\nimport { ZipFile } from '@/services/trim_zip'\n\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n zipFile: {\n type: ZipFile,\n required: true\n },\n payload: {\n type: Payload,\n required: true\n }\n },\n data() {\n return {\n MetadataFormat\n }\n },\n computed: {\n isDataWipePackage(): boolean {\n return this.payload.payload_properties.includes(\"POWERWASH=1\");\n },\n otaMetadata(): {\n prefix: string\n key: string\n name: string\n }[] {\n return MetadataFormat.filter(formatter =>\n String((this.payload as any)[formatter.key]).length > 0\n );\n },\n totalCOWSize(): number {\n const cowSizes = this.payload?.manifest?.partitions.map(p => p.estimateCowSize || 0);\n if (!cowSizes) {\n return 0;\n }\n return cowSizes.reduce((a, b) => a + b);\n },\n vabcCompressionParam(): string {\n return this.payload?.manifest?.dynamicPartitionMetadata?.vabcCompressionParam || \"\";\n },\n securityPatchLevel(): string {\n const spl = this.payload?.manifest?.securityPatchLevel;\n if (!spl) {\n return \"\";\n }\n return spl;\n },\n totalDynamicPartitionSize(): number {\n const groups = this.payload?.manifest?.dynamicPartitionMetadata?.groups\n if (!groups) {\n return 0\n }\n const dynamicPartitionNamess = new Set(\n groups.flatMap(g => g.partitionNames)\n )\n const dynamicPartitions =\n this.payload.manifest?.partitions.filter(p =>\n dynamicPartitionNamess.has(p.partitionName)\n ) || []\n if (dynamicPartitions.length <= 0) {\n return 0\n }\n return dynamicPartitions\n .map(p => p.newPartitionInfo?.size || 0)\n .reduce((acc, cur) => acc + cur)\n }\n }\n})\n","import { render } from \"./BasicInfo.vue?vue&type=template&id=78cae893&scoped=true\"\nimport script from \"./BasicInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./BasicInfo.vue?vue&type=script&lang=ts\"\n\nimport \"./BasicInfo.vue?vue&type=style&index=0&id=78cae893&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-78cae893\"\n\nexport default script","\nimport PartitionDetail from './PartitionDetail.vue'\nimport BasicInfo from './BasicInfo.vue'\nimport { Payload, octToHex } from '../services/payload'\nimport {\n downloadFile,\n ensureSuffix,\n trimOTAPackage,\n ZipFile\n} from '@/services/trim_zip'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n components: {\n PartitionDetail,\n BasicInfo\n },\n props: {\n zipFile: {\n type: ZipFile,\n default: null\n },\n payload: {\n type: Payload,\n default: null\n }\n },\n methods: {\n octToHex: octToHex,\n async exportOTAPackage() {\n const blob = await trimOTAPackage(this.payload as Payload)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(this.zipFile.getFileName(), '.zip')\n )\n }\n },\n computed: {\n dynamicPartitions(): string[] {\n return (\n this.payload.manifest?.dynamicPartitionMetadata?.groups?.flatMap(\n g => g.partitionNames || []\n ) || []\n )\n },\n payloadHash(): string {\n const hash = this.payload?.getPayloadHash();\n if (!hash) {\n return \"\";\n }\n return octToHex(hash, false);\n },\n }\n})\n","import { render } from \"./PayloadDetail.vue?vue&type=template&id=5dd4ca12&scoped=true\"\nimport script from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadDetail.vue?vue&type=style&index=0&id=5dd4ca12&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-5dd4ca12\"\n\nexport default script","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n labels: {\n type: Array,\n default: new Array()\n },\n modelValue: {\n type: Map,\n default: new Map()\n }\n },\n data() {\n return {\n selectAll: 1,\n selectAllText: ['Select All', 'Unselect All']\n }\n },\n mounted() {\n // Set the default value to be true once mounted\n for (let key of this.labels) {\n this.modelValue.set(key, true)\n }\n },\n methods: {\n updateSelected(newSelect: string) {\n this.modelValue.set(newSelect, !this.modelValue.get(newSelect))\n this.$emit('update:modelValue', this.modelValue)\n },\n revertAllSelection() {\n this.selectAll = 1 - this.selectAll\n for (let key of this.modelValue.keys()) {\n this.modelValue.set(key, Boolean(this.selectAll))\n }\n }\n }\n})\n","import { render } from \"./PartialCheckbox.vue?vue&type=template&id=533f2336&scoped=true\"\nimport script from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\n\nimport \"./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-533f2336\"\n\nexport default script","\n\n\n\n\n\n\n","import { render } from \"./PieChart.vue?vue&type=template&id=5d1cb486&scoped=true\"\nimport script from \"./PieChart.vue?vue&type=script&lang=js\"\nexport * from \"./PieChart.vue?vue&type=script&lang=js\"\n\nimport \"./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-5d1cb486\"\n\nexport default script","\nimport axios from 'axios'\nimport PartialCheckbox from './PartialCheckbox.vue'\nimport PieChart from './PieChart.vue'\nimport BaseFile from './BaseFile.vue'\nimport { analysePartitions } from '../services/payload_composition'\nimport { chromeos_update_engine as update_metadata_pb } from '../services/update_metadata_pb'\nimport { TooltipComponentPositionCallbackParams } from 'echarts'\nimport { EchartsData } from '@/services/echarts_data'\nimport { defineComponent } from 'vue'\nimport {\n downloadFile,\n ensureSuffix,\n getFileName,\n trimTargetFiles\n} from '@/services/trim_zip'\n\ninterface ComponentState {\n partitionInclude: Map\n echartsData: EchartsData | null\n listData: string\n targetFile: File | URL | null\n}\n\nexport default defineComponent({\n components: {\n PartialCheckbox,\n PieChart,\n BaseFile\n },\n props: {\n manifest: {\n type: update_metadata_pb.DeltaArchiveManifest,\n default: () => []\n },\n demo: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n partitionInclude: new Map(),\n echartsData: null,\n listData: '',\n targetFile: null\n } as ComponentState\n },\n computed: {\n updatePartitions(): string[] {\n return this.manifest.partitions.map(\n (partition: update_metadata_pb.IPartitionUpdate) => {\n return partition.partitionName\n }\n )\n }\n },\n async mounted() {\n if (this.demo) {\n try {\n const download = await axios.get(\n './files/cf_x86_target_file_demo.zip',\n { responseType: 'blob' }\n )\n this.targetFile = new File([download.data], 'target_demo.zip')\n } catch (err) {\n console.log('Please put a proper example target file in /public/files/')\n }\n }\n },\n methods: {\n piechartClick(param: TooltipComponentPositionCallbackParams) {\n console.log(param)\n },\n async updateChart(metrics: string) {\n let partitionSelected = this.manifest.partitions.filter(partition =>\n this.partitionInclude.get(partition.partitionName)\n )\n try {\n this.echartsData = await analysePartitions(\n metrics,\n partitionSelected,\n this.manifest.blockSize,\n this.targetFile\n )\n } catch (err) {\n alert(`Cannot be processed for the following issue: ${err}`)\n }\n },\n selectBuild(file: File | URL) {\n //TODO(lishutong) check the version of target file is same to the OTA target\n this.targetFile = file\n },\n async exportTargetFileMetadata() {\n const blob = await trimTargetFiles(this.targetFile!)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(getFileName(this.targetFile!), '.zip')\n )\n }\n }\n})\n","import { render } from \"./PayloadComposition.vue?vue&type=template&id=4d98493f&scoped=true\"\nimport script from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadComposition.vue?vue&type=style&index=0&id=4d98493f&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-4d98493f\"\n\nexport default script","\nimport BaseFile from '../components/BaseFile.vue'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n BaseFile,\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return ({\n zipFile: null,\n payload: null\n } as unknown) as {\n zipFile: ZipFile\n payload: Payload\n }\n },\n methods: {\n async unpackOTA(file: File | URL) {\n this.zipFile = new ZipFile(file)\n try {\n const payload = new Payload(this.zipFile as ZipFile);\n await payload.init();\n this.payload = payload;\n } catch (err) {\n alert(`Please check if this is a correct OTA package (.zip). ${err}`)\n console.log(err)\n }\n }\n }\n})\n","import { render } from \"./PackageAnalysis.vue?vue&type=template&id=7bb77d0c\"\nimport script from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nexport * from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n\n\n","\nimport axios from 'axios'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return {\n zipFile: null,\n payload: null\n } as {\n zipFile: ZipFile | null\n payload: Payload | null\n }\n },\n async created() {\n // put cf_x86_demo.zip and cf_x86_target_file_demo into\n // this directory: /public/files\n try {\n const download = await axios.get('./files/cf_x86_demo.zip', {\n responseType: 'blob'\n })\n this.zipFile = new ZipFile(new File([download.data], 'ota_demo.zip'))\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n console.log('Please put a proper example OTA in /public/files/')\n }\n }\n})\n","import { render } from \"./Demo.vue?vue&type=template&id=1e5d071a\"\nimport script from \"./Demo.vue?vue&type=script&lang=ts\"\nexport * from \"./Demo.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\n\n\n","import { render } from \"./About.vue?vue&type=template&id=67ed0bf6\"\nconst script = {}\nscript.render = render\n\nexport default script","\n\n\n\n","import { render } from \"./NotFound.vue?vue&type=template&id=50c6f348&scoped=true\"\nconst script = {}\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"\nscript.render = render\nscript.__scopeId = \"data-v-50c6f348\"\n\nexport default script","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createRouter, createWebHistory } from 'vue-router'\nimport PackageAnalysis from '@/views/PackageAnalysis.vue'\nimport Demo from'@/views/Demo.vue'\nimport About from '@/views/About.vue'\nimport NotFound from '@/views/NotFound.vue'\n\nconst routes = [\n {\n path: '/',\n name: 'Analysis',\n component: PackageAnalysis,\n meta: {\n title: 'Analyse OTA package - from AOSP'\n }\n },\n {\n path: '/demo',\n name: 'Demo',\n component: Demo\n },\n {\n path: '/about',\n name: 'About',\n component: About\n },\n {\n path: '/:catchAll(.*)',\n name: 'Not Found',\n component: NotFound\n }\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes\n})\n\n// This callback runs before every route change, including on page load.\nrouter.beforeEach((to, from, next) => {\n // This goes through the matched routes from last to first, finding the closest route with a title.\n // e.g., if we have `/some/deep/nested/route` and `/some`, `/deep`, and `/nested` have titles,\n // `/nested`'s will be chosen.\n const nearestWithTitle = to.matched.slice().reverse().find(r => r.meta && r.meta.title);\n\n // Find the nearest route element with meta tags.\n const nearestWithMeta = to.matched.slice().reverse().find(r => r.meta && r.meta.metaTags)!;\n\n const previousNearestWithMeta = from.matched.slice().reverse().find(r => r.meta && r.meta.metaTags);\n\n // If a route with a title was found, set the document (page) title to that value.\n if(nearestWithTitle) {\n document.title = nearestWithTitle.meta.title as string;\n } else if(previousNearestWithMeta) {\n document.title = previousNearestWithMeta.meta.title as string;\n }\n\n // Remove any stale meta tags from the document using the key attribute we set below.\n Array.from(document.querySelectorAll('[data-vue-router-controlled]')).map(el => el.parentNode!.removeChild(el));\n\n next();\n});\n\nexport default router\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createStore } from 'vuex'\n\nexport default createStore({\n state: {},\n mutations: {},\n actions: {},\n modules: {}\n})\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createApp } from 'vue'\nimport vuetify from './plugins/vuetify'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nconst app = createApp(App)\napp.use(router)\napp.use(store)\napp.use(vuetify)\n\napp.mount('#app')"],"sourceRoot":""} \ No newline at end of file diff --git a/analyseOTA/js/app.f0315855.js b/analyseOTA/js/app.f0315855.js new file mode 100644 index 0000000..1af53c9 --- /dev/null +++ b/analyseOTA/js/app.f0315855.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var a,i,s=t[0],l=t[1],c=t[2],u=0,d=[];u[Object(a["n"])(p,{rounded:"",color:"primary"},{default:Object(a["bb"])(()=>[Object(a["n"])(s,null,{default:Object(a["bb"])(()=>[Object(a["m"])(" OTA Analyzer ")]),_:1}),Object(a["n"])(l),(Object(a["E"])(!0),Object(a["k"])(a["a"],null,Object(a["L"])(o.links,e=>(Object(a["E"])(),Object(a["i"])(c,{key:e+"-header-link",to:{name:e},class:"ml-5",color:"primary"},{default:Object(a["bb"])(()=>[Object(a["m"])(Object(a["R"])(e),1)]),_:2},1032,["to"]))),128))]),_:1}),Object(a["n"])(h,null,{default:Object(a["bb"])(()=>[Object(a["n"])(d,{fluid:""},{default:Object(a["bb"])(()=>[Object(a["n"])(u)]),_:1})]),_:1})]),_:1})}var c={data(){return{links:["Analysis","Demo","About"]}}},p=(n("2b50"),n("6b0d")),u=n.n(p);const d=u()(c,[["render",l]]);var h=d,f=n("6c02");function g(e,t,n,r,o,i){const s=Object(a["M"])("v-alert"),l=Object(a["M"])("v-row"),c=Object(a["M"])("BaseFile"),p=Object(a["M"])("PayloadDetail"),u=Object(a["M"])("v-col"),d=Object(a["M"])("v-divider"),h=Object(a["M"])("PayloadComposition");return Object(a["E"])(),Object(a["k"])(a["a"],null,[Object(a["n"])(l,null,{default:Object(a["bb"])(()=>[Object(a["n"])(s,{style:{color:"yellow"}},{default:Object(a["bb"])(()=>[Object(a["m"])(" Your files will not be uploaded anywhere. All analysis are done in the frontend using Javascript. ")]),_:1})]),_:1}),Object(a["n"])(l,null,{default:Object(a["bb"])(()=>[Object(a["n"])(u,{cols:"12",md:"6"},{default:Object(a["bb"])(()=>[Object(a["n"])(c,{label:"Please drag and drop an OTA package or Select one",onFileSelect:e.unpackOTA},null,8,["onFileSelect"]),e.zipFile&&e.payload?(Object(a["E"])(),Object(a["i"])(p,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):Object(a["j"])("",!0)]),_:1}),Object(a["n"])(d,{vertical:""}),Object(a["n"])(u,{cols:"12",md:"6"},{default:Object(a["bb"])(()=>[e.zipFile&&e.payload&&e.payload.manifest?(Object(a["E"])(),Object(a["i"])(h,{key:0,manifest:e.payload.manifest},null,8,["manifest"])):Object(a["j"])("",!0)]),_:1})]),_:1})],64)}const b={class:"file-select ma-5"},m={key:0},O={key:1},y={key:2};function j(e,t,n,r,o,i){return Object(a["E"])(),Object(a["k"])(a["a"],null,[Object(a["l"])("label",b,[Object(a["l"])("div",{class:"select-button",onDragover:t[0]||(t[0]=(...t)=>e.dragover&&e.dragover(...t)),onDragleave:t[1]||(t[1]=(...t)=>e.dragleave&&e.dragleave(...t)),onDrop:t[2]||(t[2]=(...t)=>e.drop&&e.drop(...t))},[e.label?(Object(a["E"])(),Object(a["k"])("span",m,Object(a["R"])(e.fileName?"":e.label),1)):(Object(a["E"])(),Object(a["k"])("span",O,"Select File")),e.fileName?(Object(a["E"])(),Object(a["k"])("div",y,"File selected: "+Object(a["R"])(e.fileName),1)):Object(a["j"])("",!0)],32),Object(a["l"])("input",{ref:"file",type:"file",accept:".zip",onChange:t[3]||(t[3]=(...t)=>e.handleFileChange&&e.handleFileChange(...t))},null,544)]),Object(a["cb"])(Object(a["l"])("input",{class:Object(a["v"])(["url-input",{"url-invalid":!e.parsedURL&&""!=e.url,"url-valid":e.parsedURL||""==e.url}]),ref:"url_input",type:"url",placeholder:"type a URL","onUpdate:modelValue":t[4]||(t[4]=t=>e.url=t),onKeyup:t[5]||(t[5]=(...t)=>e.urlKeyup&&e.urlKeyup(...t))},null,34),[[a["W"],e.url]])],64)}var w=Object(a["o"])({props:{label:{type:String,default:""}},emits:{"file-select":null},data(){return{fileName:"",url:""}},computed:{parsedURL(){try{return new URL(this.url)}catch{return null}}},methods:{handleFileChange(e){if(!e.currentTarget)return;let t=e.currentTarget;if(null==t.files||t.files.length<1)return;const n=t.files[0];this.$emit("file-select",n),this.url="",this.fileName=t.files[0].name},dragover(e){if(e.preventDefault(),!e.currentTarget)return;let t=e.currentTarget;t.classList.contains("file-hover")||t.classList.add("file-hover")},dragleave(e){if(!e.currentTarget)return;let t=e.currentTarget;t.classList.remove("file-hover")},drop(e){if(e.preventDefault(),!e.currentTarget)return;let t=e.currentTarget;e.dataTransfer&&0!=e.dataTransfer.files.length&&(t.files=e.dataTransfer.files,this.handleFileChange(e),t.classList.remove("file-hover"))},urlKeyup(e){if(console.log(this.url),"Enter"==e.key){const t=e.target;if(null==this.parsedURL)return void console.error(t.value+" is an invalid URL");this.$emit("file-select",this.parsedURL)}}}});n("4a41");const S=u()(w,[["render",j],["__scopeId","data-v-0630c5ec"]]);var x=S;const P=e=>(Object(a["H"])("data-v-5dd4ca12"),e=e(),Object(a["F"])(),e),k={ref:"download"},_={key:1},E=P(()=>Object(a["l"])("h3",null,"Partition List",-1)),v={key:1},L=P(()=>Object(a["l"])("h3",null,"Payload SHA256 Hash",-1)),z={style:{"text-align":"center",display:"block"}},I={key:2,class:"signature"},T=P(()=>Object(a["l"])("h3",null,"Metadata Signature",-1)),B={style:{"white-space":"pre-wrap"}};function C(e,t,n,r,o,i){const s=Object(a["M"])("v-btn"),l=Object(a["M"])("BasicInfo"),c=Object(a["M"])("v-divider"),p=Object(a["M"])("PartitionDetail"),u=Object(a["M"])("v-card"),d=Object(a["M"])("v-col"),h=Object(a["M"])("v-row");return Object(a["E"])(),Object(a["k"])(a["a"],null,[e.zipFile&&e.payload?(Object(a["E"])(),Object(a["i"])(s,{key:0,class:"download-btn",onClick:e.exportOTAPackage},{default:Object(a["bb"])(()=>[Object(a["m"])("Export Metadata")]),_:1},8,["onClick"])):Object(a["j"])("",!0),Object(a["l"])("a",k,null,512),Object(a["n"])(l,{zipFile:e.zipFile,payload:e.payload,class:"mb-5"},null,8,["zipFile","payload"]),Object(a["n"])(c),e.payload?(Object(a["E"])(),Object(a["k"])("div",_,[E,e.payload.manifest?(Object(a["E"])(),Object(a["i"])(h,{key:0,class:"mb-5"},{default:Object(a["bb"])(()=>[(Object(a["E"])(!0),Object(a["k"])(a["a"],null,Object(a["L"])(e.payload.manifest.partitions,t=>(Object(a["E"])(),Object(a["i"])(d,{key:t.partitionName,cols:"12",md:"4"},{default:Object(a["bb"])(()=>[Object(a["n"])(u,{elevation:"5",hover:"",shaped:"",class:"partial-info"},{default:Object(a["bb"])(()=>[Object(a["n"])(p,{partition:t,dynamicPartitionList:e.dynamicPartitions},null,8,["partition","dynamicPartitionList"])]),_:2},1024)]),_:2},1024))),128))]),_:1})):Object(a["j"])("",!0),Object(a["n"])(c),!e.payload.manifest.nonAB&&e.payloadHash?(Object(a["E"])(),Object(a["k"])("div",v,[L,Object(a["l"])("span",z,Object(a["R"])(e.payloadHash),1)])):Object(a["j"])("",!0),Object(a["n"])(c),e.payload.metadata_signature&&!e.payload.manifest.nonAB?(Object(a["E"])(),Object(a["k"])("div",I,[T,Object(a["l"])("span",B,Object(a["R"])(e.octToHex(e.payload.metadata_signature.signatures[0].data)),1)])):Object(a["j"])("",!0)])):Object(a["j"])("",!0)],64)}const A=e=>(Object(a["H"])("data-v-21e569e9"),e=e(),Object(a["F"])(),e),N={key:0},F=A(()=>Object(a["l"])("pre",null,"Dynamic: ✅",-1)),M=[F],D={key:1},R=A(()=>Object(a["l"])("pre",null,"FEC: ✅",-1)),H=[R],V={key:2},U=A(()=>Object(a["l"])("pre",null,"Hashtree: ✅",-1)),W=[U],J={key:3},Z=A(()=>Object(a["l"])("strong",null," Estimate COW Size: ",-1)),$={key:4},q=A(()=>Object(a["l"])("strong",null," Postinstall Script: ",-1)),G={class:"toggle"},Y={key:0},X={key:0},K=A(()=>Object(a["l"])("strong",null," Old Partition Size: ",-1)),Q={key:1},ee=A(()=>Object(a["l"])("strong",null," Old Partition Hash: ",-1)),te={class:"hex"},ne=A(()=>Object(a["l"])("strong",null," New Partition Size: ",-1)),ae={key:2},re=A(()=>Object(a["l"])("strong",null," New Partition Hash: ",-1)),oe={class:"hex"},ie={key:3},se=A(()=>Object(a["l"])("strong",null," Version: ",-1)),le={key:4},ce=A(()=>Object(a["l"])("strong",null," Version: ",-1)),pe={class:"toggle"},ue={key:0};function de(e,t,n,r,o,i){const s=Object(a["M"])("OperationDetail");return Object(a["E"])(),Object(a["k"])(a["a"],null,[Object(a["l"])("h4",{class:Object(a["v"])({"new-partition":!e.partition.oldPartitionInfo})},Object(a["R"])(e.partition.partitionName),3),e.isDynamicPartition?(Object(a["E"])(),Object(a["k"])("p",N,M)):Object(a["j"])("",!0),e.isFECEnabled?(Object(a["E"])(),Object(a["k"])("p",D,H)):Object(a["j"])("",!0),e.isHashtreeEnabled?(Object(a["E"])(),Object(a["k"])("p",V,W)):Object(a["j"])("",!0),e.partition.estimateCowSize?(Object(a["E"])(),Object(a["k"])("p",J,[Z,Object(a["m"])(" "+Object(a["R"])(e.partition.estimateCowSize)+" Bytes ",1)])):Object(a["j"])("",!0),e.partition.postinstallPath?(Object(a["E"])(),Object(a["k"])("p",$,[q,Object(a["m"])(" "+Object(a["R"])(e.partition.postinstallPath),1)])):Object(a["j"])("",!0),Object(a["l"])("div",G,[Object(a["l"])("h4",{onClick:t[0]||(t[0]=t=>e.toggle("showInfo")),class:Object(a["v"])({active:e.showInfo,inactive:!e.showInfo})}," Partition Infos ",2),e.showInfo?(Object(a["E"])(),Object(a["k"])("ul",Y,[e.partition.oldPartitionInfo?(Object(a["E"])(),Object(a["k"])("li",X,[K,Object(a["m"])(" "+Object(a["R"])(e.partition.oldPartitionInfo.size)+" Bytes ",1)])):Object(a["j"])("",!0),e.partition.oldPartitionInfo?(Object(a["E"])(),Object(a["k"])("li",Q,[ee,Object(a["l"])("div",te,Object(a["R"])(e.octToHex(e.partition.oldPartitionInfo.hash,!1,16)),1)])):Object(a["j"])("",!0),Object(a["l"])("li",null,[ne,Object(a["m"])(" "+Object(a["R"])(e.partition.newPartitionInfo.size)+" Bytes ",1)]),e.partition.newPartitionInfo.hash?(Object(a["E"])(),Object(a["k"])("li",ae,[re,Object(a["l"])("div",oe,Object(a["R"])(e.octToHex(e.partition.newPartitionInfo.hash,!1,16)),1)])):Object(a["j"])("",!0),e.partition.version?(Object(a["E"])(),Object(a["k"])("li",ie,[se,Object(a["m"])(" "+Object(a["R"])(e.partition.version),1)])):Object(a["j"])("",!0),e.readableTimestamp?(Object(a["E"])(),Object(a["k"])("li",le,[ce,Object(a["m"])(" "+Object(a["R"])(e.readableTimestamp),1)])):Object(a["j"])("",!0)])):Object(a["j"])("",!0)]),Object(a["l"])("div",pe,[Object(a["l"])("h4",{onClick:t[1]||(t[1]=t=>e.toggle("showOPs")),class:Object(a["v"])({active:e.showOPs,inactive:!e.showOPs})}," Total Operations: "+Object(a["R"])(e.partition.operations.length),3),e.showOPs?(Object(a["E"])(),Object(a["k"])("ul",ue,[(Object(a["E"])(!0),Object(a["k"])(a["a"],null,Object(a["L"])(e.partition.operations,t=>(Object(a["E"])(),Object(a["k"])("li",{key:t.dataSha256Hash},[Object(a["n"])(s,{operation:t,mapType:e.opType.mapType},null,8,["operation","mapType"])]))),128))])):Object(a["j"])("",!0)])],64)}var he=n("543b");const fe=he["Reader"],ge=he["Writer"],be=he["util"],me=he["roots"]["default"]||(he["roots"]["default"]={}),Oe=me.chromeos_update_engine=(()=>{const e={};return e.Extent=function(){function e(e){if(e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.startBlock=e.uint64();break;case 2:a.numBlocks=e.uint64();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==typeof e||null===e?"object expected":null==e.startBlock||!e.hasOwnProperty("startBlock")||be.isInteger(e.startBlock)||e.startBlock&&be.isInteger(e.startBlock.low)&&be.isInteger(e.startBlock.high)?null==e.numBlocks||!e.hasOwnProperty("numBlocks")||be.isInteger(e.numBlocks)||e.numBlocks&&be.isInteger(e.numBlocks.low)&&be.isInteger(e.numBlocks.high)?null:"numBlocks: integer|Long expected":"startBlock: integer|Long expected"},e.fromObject=function(e){if(e instanceof me.chromeos_update_engine.Extent)return e;let t=new me.chromeos_update_engine.Extent;return null!=e.startBlock&&(be.Long?(t.startBlock=be.Long.fromValue(e.startBlock)).unsigned=!0:"string"===typeof e.startBlock?t.startBlock=parseInt(e.startBlock,10):"number"===typeof e.startBlock?t.startBlock=e.startBlock:"object"===typeof e.startBlock&&(t.startBlock=new be.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0))),null!=e.numBlocks&&(be.Long?(t.numBlocks=be.Long.fromValue(e.numBlocks)).unsigned=!0:"string"===typeof e.numBlocks?t.numBlocks=parseInt(e.numBlocks,10):"number"===typeof e.numBlocks?t.numBlocks=e.numBlocks:"object"===typeof e.numBlocks&&(t.numBlocks=new be.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});let n={};if(t.defaults){if(be.Long){let e=new be.Long(0,0,!0);n.startBlock=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.startBlock=t.longs===String?"0":0;if(be.Long){let e=new be.Long(0,0,!0);n.numBlocks=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.numBlocks=t.longs===String?"0":0}return null!=e.startBlock&&e.hasOwnProperty("startBlock")&&("number"===typeof e.startBlock?n.startBlock=t.longs===String?String(e.startBlock):e.startBlock:n.startBlock=t.longs===String?be.Long.prototype.toString.call(e.startBlock):t.longs===Number?new be.LongBits(e.startBlock.low>>>0,e.startBlock.high>>>0).toNumber(!0):e.startBlock),null!=e.numBlocks&&e.hasOwnProperty("numBlocks")&&("number"===typeof e.numBlocks?n.numBlocks=t.longs===String?String(e.numBlocks):e.numBlocks:n.numBlocks=t.longs===String?be.Long.prototype.toString.call(e.numBlocks):t.longs===Number?new be.LongBits(e.numBlocks.low>>>0,e.numBlocks.high>>>0).toNumber(!0):e.numBlocks),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,he["util"].toJSONOptions)},e}(),e.Signatures=function(){function e(e){if(this.signatures=[],e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.signatures&&a.signatures.length||(a.signatures=[]),a.signatures.push(me.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(null!=e.signatures&&e.hasOwnProperty("signatures")){if(!Array.isArray(e.signatures))return"signatures: array expected";for(let t=0;t>>3){case 1:a.version=e.uint32();break;case 2:a.data=e.bytes();break;case 3:a.unpaddedSignatureSize=e.fixed32();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==typeof e||null===e?"object expected":null!=e.version&&e.hasOwnProperty("version")&&!be.isInteger(e.version)?"version: integer expected":null!=e.data&&e.hasOwnProperty("data")&&!(e.data&&"number"===typeof e.data.length||be.isString(e.data))?"data: buffer expected":null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&!be.isInteger(e.unpaddedSignatureSize)?"unpaddedSignatureSize: integer expected":null},e.fromObject=function(e){if(e instanceof me.chromeos_update_engine.Signatures.Signature)return e;let t=new me.chromeos_update_engine.Signatures.Signature;return null!=e.version&&(t.version=e.version>>>0),null!=e.data&&("string"===typeof e.data?be.base64.decode(e.data,t.data=be.newBuffer(be.base64.length(e.data)),0):e.data.length&&(t.data=e.data)),null!=e.unpaddedSignatureSize&&(t.unpaddedSignatureSize=e.unpaddedSignatureSize>>>0),t},e.toObject=function(e,t){t||(t={});let n={};return t.defaults&&(n.version=0,t.bytes===String?n.data="":(n.data=[],t.bytes!==Array&&(n.data=be.newBuffer(n.data))),n.unpaddedSignatureSize=0),null!=e.version&&e.hasOwnProperty("version")&&(n.version=e.version),null!=e.data&&e.hasOwnProperty("data")&&(n.data=t.bytes===String?be.base64.encode(e.data,0,e.data.length):t.bytes===Array?Array.prototype.slice.call(e.data):e.data),null!=e.unpaddedSignatureSize&&e.hasOwnProperty("unpaddedSignatureSize")&&(n.unpaddedSignatureSize=e.unpaddedSignatureSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,he["util"].toJSONOptions)},e}(),e}(),e.PartitionInfo=function(){function e(e){if(e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.size=e.uint64();break;case 2:a.hash=e.bytes();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==typeof e||null===e?"object expected":null==e.size||!e.hasOwnProperty("size")||be.isInteger(e.size)||e.size&&be.isInteger(e.size.low)&&be.isInteger(e.size.high)?null!=e.hash&&e.hasOwnProperty("hash")&&!(e.hash&&"number"===typeof e.hash.length||be.isString(e.hash))?"hash: buffer expected":null:"size: integer|Long expected"},e.fromObject=function(e){if(e instanceof me.chromeos_update_engine.PartitionInfo)return e;let t=new me.chromeos_update_engine.PartitionInfo;return null!=e.size&&(be.Long?(t.size=be.Long.fromValue(e.size)).unsigned=!0:"string"===typeof e.size?t.size=parseInt(e.size,10):"number"===typeof e.size?t.size=e.size:"object"===typeof e.size&&(t.size=new be.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0))),null!=e.hash&&("string"===typeof e.hash?be.base64.decode(e.hash,t.hash=be.newBuffer(be.base64.length(e.hash)),0):e.hash.length&&(t.hash=e.hash)),t},e.toObject=function(e,t){t||(t={});let n={};if(t.defaults){if(be.Long){let e=new be.Long(0,0,!0);n.size=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.size=t.longs===String?"0":0;t.bytes===String?n.hash="":(n.hash=[],t.bytes!==Array&&(n.hash=be.newBuffer(n.hash)))}return null!=e.size&&e.hasOwnProperty("size")&&("number"===typeof e.size?n.size=t.longs===String?String(e.size):e.size:n.size=t.longs===String?be.Long.prototype.toString.call(e.size):t.longs===Number?new be.LongBits(e.size.low>>>0,e.size.high>>>0).toNumber(!0):e.size),null!=e.hash&&e.hasOwnProperty("hash")&&(n.hash=t.bytes===String?be.base64.encode(e.hash,0,e.hash.length):t.bytes===Array?Array.prototype.slice.call(e.hash):e.hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,he["util"].toJSONOptions)},e}(),e.InstallOperation=function(){function e(e){if(this.srcExtents=[],this.dstExtents=[],e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.type=e.int32();break;case 2:a.dataOffset=e.uint64();break;case 3:a.dataLength=e.uint64();break;case 4:a.srcExtents&&a.srcExtents.length||(a.srcExtents=[]),a.srcExtents.push(me.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 5:a.srcLength=e.uint64();break;case 6:a.dstExtents&&a.dstExtents.length||(a.dstExtents=[]),a.dstExtents.push(me.chromeos_update_engine.Extent.decode(e,e.uint32()));break;case 7:a.dstLength=e.uint64();break;case 8:a.dataSha256Hash=e.bytes();break;case 9:a.srcSha256Hash=e.bytes();break;default:e.skipType(7&t);break}}if(!a.hasOwnProperty("type"))throw be.ProtocolError("missing required 'type'",{instance:a});return a},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 8:case 6:case 7:case 10:case 9:case 11:case 12:case 13:break}if(null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&!be.isInteger(e.dataOffset)&&!(e.dataOffset&&be.isInteger(e.dataOffset.low)&&be.isInteger(e.dataOffset.high)))return"dataOffset: integer|Long expected";if(null!=e.dataLength&&e.hasOwnProperty("dataLength")&&!be.isInteger(e.dataLength)&&!(e.dataLength&&be.isInteger(e.dataLength.low)&&be.isInteger(e.dataLength.high)))return"dataLength: integer|Long expected";if(null!=e.srcExtents&&e.hasOwnProperty("srcExtents")){if(!Array.isArray(e.srcExtents))return"srcExtents: array expected";for(let t=0;t>>0,e.dataOffset.high>>>0).toNumber(!0))),null!=e.dataLength&&(be.Long?(t.dataLength=be.Long.fromValue(e.dataLength)).unsigned=!0:"string"===typeof e.dataLength?t.dataLength=parseInt(e.dataLength,10):"number"===typeof e.dataLength?t.dataLength=e.dataLength:"object"===typeof e.dataLength&&(t.dataLength=new be.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0))),e.srcExtents){if(!Array.isArray(e.srcExtents))throw TypeError(".chromeos_update_engine.InstallOperation.srcExtents: array expected");t.srcExtents=[];for(let n=0;n>>0,e.srcLength.high>>>0).toNumber(!0))),e.dstExtents){if(!Array.isArray(e.dstExtents))throw TypeError(".chromeos_update_engine.InstallOperation.dstExtents: array expected");t.dstExtents=[];for(let n=0;n>>0,e.dstLength.high>>>0).toNumber(!0))),null!=e.dataSha256Hash&&("string"===typeof e.dataSha256Hash?be.base64.decode(e.dataSha256Hash,t.dataSha256Hash=be.newBuffer(be.base64.length(e.dataSha256Hash)),0):e.dataSha256Hash.length&&(t.dataSha256Hash=e.dataSha256Hash)),null!=e.srcSha256Hash&&("string"===typeof e.srcSha256Hash?be.base64.decode(e.srcSha256Hash,t.srcSha256Hash=be.newBuffer(be.base64.length(e.srcSha256Hash)),0):e.srcSha256Hash.length&&(t.srcSha256Hash=e.srcSha256Hash)),t},e.toObject=function(e,t){t||(t={});let n={};if((t.arrays||t.defaults)&&(n.srcExtents=[],n.dstExtents=[]),t.defaults){if(n.type=t.enums===String?"REPLACE":0,be.Long){let e=new be.Long(0,0,!0);n.dataOffset=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.dataOffset=t.longs===String?"0":0;if(be.Long){let e=new be.Long(0,0,!0);n.dataLength=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.dataLength=t.longs===String?"0":0;if(be.Long){let e=new be.Long(0,0,!0);n.srcLength=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.srcLength=t.longs===String?"0":0;if(be.Long){let e=new be.Long(0,0,!0);n.dstLength=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.dstLength=t.longs===String?"0":0;t.bytes===String?n.dataSha256Hash="":(n.dataSha256Hash=[],t.bytes!==Array&&(n.dataSha256Hash=be.newBuffer(n.dataSha256Hash))),t.bytes===String?n.srcSha256Hash="":(n.srcSha256Hash=[],t.bytes!==Array&&(n.srcSha256Hash=be.newBuffer(n.srcSha256Hash)))}if(null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?me.chromeos_update_engine.InstallOperation.Type[e.type]:e.type),null!=e.dataOffset&&e.hasOwnProperty("dataOffset")&&("number"===typeof e.dataOffset?n.dataOffset=t.longs===String?String(e.dataOffset):e.dataOffset:n.dataOffset=t.longs===String?be.Long.prototype.toString.call(e.dataOffset):t.longs===Number?new be.LongBits(e.dataOffset.low>>>0,e.dataOffset.high>>>0).toNumber(!0):e.dataOffset),null!=e.dataLength&&e.hasOwnProperty("dataLength")&&("number"===typeof e.dataLength?n.dataLength=t.longs===String?String(e.dataLength):e.dataLength:n.dataLength=t.longs===String?be.Long.prototype.toString.call(e.dataLength):t.longs===Number?new be.LongBits(e.dataLength.low>>>0,e.dataLength.high>>>0).toNumber(!0):e.dataLength),e.srcExtents&&e.srcExtents.length){n.srcExtents=[];for(let a=0;a>>0,e.srcLength.high>>>0).toNumber(!0):e.srcLength),e.dstExtents&&e.dstExtents.length){n.dstExtents=[];for(let a=0;a>>0,e.dstLength.high>>>0).toNumber(!0):e.dstLength),null!=e.dataSha256Hash&&e.hasOwnProperty("dataSha256Hash")&&(n.dataSha256Hash=t.bytes===String?be.base64.encode(e.dataSha256Hash,0,e.dataSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.dataSha256Hash):e.dataSha256Hash),null!=e.srcSha256Hash&&e.hasOwnProperty("srcSha256Hash")&&(n.srcSha256Hash=t.bytes===String?be.base64.encode(e.srcSha256Hash,0,e.srcSha256Hash.length):t.bytes===Array?Array.prototype.slice.call(e.srcSha256Hash):e.srcSha256Hash),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,he["util"].toJSONOptions)},e.Type=function(){const e={},t=Object.create(e);return t[e[0]="REPLACE"]=0,t[e[1]="REPLACE_BZ"]=1,t[e[2]="MOVE"]=2,t[e[3]="BSDIFF"]=3,t[e[4]="SOURCE_COPY"]=4,t[e[5]="SOURCE_BSDIFF"]=5,t[e[8]="REPLACE_XZ"]=8,t[e[6]="ZERO"]=6,t[e[7]="DISCARD"]=7,t[e[10]="BROTLI_BSDIFF"]=10,t[e[9]="PUFFDIFF"]=9,t[e[11]="ZUCCHINI"]=11,t[e[12]="LZ4DIFF_BSDIFF"]=12,t[e[13]="LZ4DIFF_PUFFDIFF"]=13,t}(),e}(),e.CowMergeOperation=function(){function e(e){if(e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.type=e.int32();break;case 2:a.srcExtent=me.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 3:a.dstExtent=me.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 4:a.srcOffset=e.uint32();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(null!=e.type&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:case 2:break}if(null!=e.srcExtent&&e.hasOwnProperty("srcExtent")){let t=me.chromeos_update_engine.Extent.verify(e.srcExtent);if(t)return"srcExtent."+t}if(null!=e.dstExtent&&e.hasOwnProperty("dstExtent")){let t=me.chromeos_update_engine.Extent.verify(e.dstExtent);if(t)return"dstExtent."+t}return null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&!be.isInteger(e.srcOffset)?"srcOffset: integer expected":null},e.fromObject=function(e){if(e instanceof me.chromeos_update_engine.CowMergeOperation)return e;let t=new me.chromeos_update_engine.CowMergeOperation;switch(e.type){case"COW_COPY":case 0:t.type=0;break;case"COW_XOR":case 1:t.type=1;break;case"COW_REPLACE":case 2:t.type=2;break}if(null!=e.srcExtent){if("object"!==typeof e.srcExtent)throw TypeError(".chromeos_update_engine.CowMergeOperation.srcExtent: object expected");t.srcExtent=me.chromeos_update_engine.Extent.fromObject(e.srcExtent)}if(null!=e.dstExtent){if("object"!==typeof e.dstExtent)throw TypeError(".chromeos_update_engine.CowMergeOperation.dstExtent: object expected");t.dstExtent=me.chromeos_update_engine.Extent.fromObject(e.dstExtent)}return null!=e.srcOffset&&(t.srcOffset=e.srcOffset>>>0),t},e.toObject=function(e,t){t||(t={});let n={};return t.defaults&&(n.type=t.enums===String?"COW_COPY":0,n.srcExtent=null,n.dstExtent=null,n.srcOffset=0),null!=e.type&&e.hasOwnProperty("type")&&(n.type=t.enums===String?me.chromeos_update_engine.CowMergeOperation.Type[e.type]:e.type),null!=e.srcExtent&&e.hasOwnProperty("srcExtent")&&(n.srcExtent=me.chromeos_update_engine.Extent.toObject(e.srcExtent,t)),null!=e.dstExtent&&e.hasOwnProperty("dstExtent")&&(n.dstExtent=me.chromeos_update_engine.Extent.toObject(e.dstExtent,t)),null!=e.srcOffset&&e.hasOwnProperty("srcOffset")&&(n.srcOffset=e.srcOffset),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,he["util"].toJSONOptions)},e.Type=function(){const e={},t=Object.create(e);return t[e[0]="COW_COPY"]=0,t[e[1]="COW_XOR"]=1,t[e[2]="COW_REPLACE"]=2,t}(),e}(),e.PartitionUpdate=function(){function e(e){if(this.newPartitionSignature=[],this.operations=[],this.mergeOperations=[],e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.partitionName=e.string();break;case 2:a.runPostinstall=e.bool();break;case 3:a.postinstallPath=e.string();break;case 4:a.filesystemType=e.string();break;case 5:a.newPartitionSignature&&a.newPartitionSignature.length||(a.newPartitionSignature=[]),a.newPartitionSignature.push(me.chromeos_update_engine.Signatures.Signature.decode(e,e.uint32()));break;case 6:a.oldPartitionInfo=me.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 7:a.newPartitionInfo=me.chromeos_update_engine.PartitionInfo.decode(e,e.uint32());break;case 8:a.operations&&a.operations.length||(a.operations=[]),a.operations.push(me.chromeos_update_engine.InstallOperation.decode(e,e.uint32()));break;case 9:a.postinstallOptional=e.bool();break;case 10:a.hashTreeDataExtent=me.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 11:a.hashTreeExtent=me.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 12:a.hashTreeAlgorithm=e.string();break;case 13:a.hashTreeSalt=e.bytes();break;case 14:a.fecDataExtent=me.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 15:a.fecExtent=me.chromeos_update_engine.Extent.decode(e,e.uint32());break;case 16:a.fecRoots=e.uint32();break;case 17:a.version=e.string();break;case 18:a.mergeOperations&&a.mergeOperations.length||(a.mergeOperations=[]),a.mergeOperations.push(me.chromeos_update_engine.CowMergeOperation.decode(e,e.uint32()));break;case 19:a.estimateCowSize=e.uint64();break;case 20:a.estimateOpCountMax=e.uint64();break;default:e.skipType(7&t);break}}if(!a.hasOwnProperty("partitionName"))throw be.ProtocolError("missing required 'partitionName'",{instance:a});return a},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(!be.isString(e.partitionName))return"partitionName: string expected";if(null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&"boolean"!==typeof e.runPostinstall)return"runPostinstall: boolean expected";if(null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&!be.isString(e.postinstallPath))return"postinstallPath: string expected";if(null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&!be.isString(e.filesystemType))return"filesystemType: string expected";if(null!=e.newPartitionSignature&&e.hasOwnProperty("newPartitionSignature")){if(!Array.isArray(e.newPartitionSignature))return"newPartitionSignature: array expected";for(let t=0;t>>0),null!=e.version&&(t.version=String(e.version)),e.mergeOperations){if(!Array.isArray(e.mergeOperations))throw TypeError(".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected");t.mergeOperations=[];for(let n=0;n>>0,e.estimateCowSize.high>>>0).toNumber(!0))),null!=e.estimateOpCountMax&&(be.Long?(t.estimateOpCountMax=be.Long.fromValue(e.estimateOpCountMax)).unsigned=!0:"string"===typeof e.estimateOpCountMax?t.estimateOpCountMax=parseInt(e.estimateOpCountMax,10):"number"===typeof e.estimateOpCountMax?t.estimateOpCountMax=e.estimateOpCountMax:"object"===typeof e.estimateOpCountMax&&(t.estimateOpCountMax=new be.LongBits(e.estimateOpCountMax.low>>>0,e.estimateOpCountMax.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});let n={};if((t.arrays||t.defaults)&&(n.newPartitionSignature=[],n.operations=[],n.mergeOperations=[]),t.defaults){if(n.partitionName="",n.runPostinstall=!1,n.postinstallPath="",n.filesystemType="",n.oldPartitionInfo=null,n.newPartitionInfo=null,n.postinstallOptional=!1,n.hashTreeDataExtent=null,n.hashTreeExtent=null,n.hashTreeAlgorithm="",t.bytes===String?n.hashTreeSalt="":(n.hashTreeSalt=[],t.bytes!==Array&&(n.hashTreeSalt=be.newBuffer(n.hashTreeSalt))),n.fecDataExtent=null,n.fecExtent=null,n.fecRoots=2,n.version="",be.Long){let e=new be.Long(0,0,!0);n.estimateCowSize=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.estimateCowSize=t.longs===String?"0":0;if(be.Long){let e=new be.Long(0,0,!0);n.estimateOpCountMax=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.estimateOpCountMax=t.longs===String?"0":0}if(null!=e.partitionName&&e.hasOwnProperty("partitionName")&&(n.partitionName=e.partitionName),null!=e.runPostinstall&&e.hasOwnProperty("runPostinstall")&&(n.runPostinstall=e.runPostinstall),null!=e.postinstallPath&&e.hasOwnProperty("postinstallPath")&&(n.postinstallPath=e.postinstallPath),null!=e.filesystemType&&e.hasOwnProperty("filesystemType")&&(n.filesystemType=e.filesystemType),e.newPartitionSignature&&e.newPartitionSignature.length){n.newPartitionSignature=[];for(let a=0;a>>0,e.estimateCowSize.high>>>0).toNumber(!0):e.estimateCowSize),null!=e.estimateOpCountMax&&e.hasOwnProperty("estimateOpCountMax")&&("number"===typeof e.estimateOpCountMax?n.estimateOpCountMax=t.longs===String?String(e.estimateOpCountMax):e.estimateOpCountMax:n.estimateOpCountMax=t.longs===String?be.Long.prototype.toString.call(e.estimateOpCountMax):t.longs===Number?new be.LongBits(e.estimateOpCountMax.low>>>0,e.estimateOpCountMax.high>>>0).toNumber(!0):e.estimateOpCountMax),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,he["util"].toJSONOptions)},e}(),e.DynamicPartitionGroup=function(){function e(e){if(this.partitionNames=[],e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.name=e.string();break;case 2:a.size=e.uint64();break;case 3:a.partitionNames&&a.partitionNames.length||(a.partitionNames=[]),a.partitionNames.push(e.string());break;default:e.skipType(7&t);break}}if(!a.hasOwnProperty("name"))throw be.ProtocolError("missing required 'name'",{instance:a});return a},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(!be.isString(e.name))return"name: string expected";if(null!=e.size&&e.hasOwnProperty("size")&&!be.isInteger(e.size)&&!(e.size&&be.isInteger(e.size.low)&&be.isInteger(e.size.high)))return"size: integer|Long expected";if(null!=e.partitionNames&&e.hasOwnProperty("partitionNames")){if(!Array.isArray(e.partitionNames))return"partitionNames: array expected";for(let t=0;t>>0,e.size.high>>>0).toNumber(!0))),e.partitionNames){if(!Array.isArray(e.partitionNames))throw TypeError(".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected");t.partitionNames=[];for(let n=0;n>>0,e.size.high>>>0).toNumber(!0):e.size),e.partitionNames&&e.partitionNames.length){n.partitionNames=[];for(let t=0;t>>3){case 1:a.threaded=e.bool();break;case 2:a.batchWrites=e.bool();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==typeof e||null===e?"object expected":null!=e.threaded&&e.hasOwnProperty("threaded")&&"boolean"!==typeof e.threaded?"threaded: boolean expected":null!=e.batchWrites&&e.hasOwnProperty("batchWrites")&&"boolean"!==typeof e.batchWrites?"batchWrites: boolean expected":null},e.fromObject=function(e){if(e instanceof me.chromeos_update_engine.VABCFeatureSet)return e;let t=new me.chromeos_update_engine.VABCFeatureSet;return null!=e.threaded&&(t.threaded=Boolean(e.threaded)),null!=e.batchWrites&&(t.batchWrites=Boolean(e.batchWrites)),t},e.toObject=function(e,t){t||(t={});let n={};return t.defaults&&(n.threaded=!1,n.batchWrites=!1),null!=e.threaded&&e.hasOwnProperty("threaded")&&(n.threaded=e.threaded),null!=e.batchWrites&&e.hasOwnProperty("batchWrites")&&(n.batchWrites=e.batchWrites),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,he["util"].toJSONOptions)},e}(),e.DynamicPartitionMetadata=function(){function e(e){if(this.groups=[],e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.groups&&a.groups.length||(a.groups=[]),a.groups.push(me.chromeos_update_engine.DynamicPartitionGroup.decode(e,e.uint32()));break;case 2:a.snapshotEnabled=e.bool();break;case 3:a.vabcEnabled=e.bool();break;case 4:a.vabcCompressionParam=e.string();break;case 5:a.cowVersion=e.uint32();break;case 6:a.vabcFeatureSet=me.chromeos_update_engine.VABCFeatureSet.decode(e,e.uint32());break;case 7:a.compressionFactor=e.uint64();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(null!=e.groups&&e.hasOwnProperty("groups")){if(!Array.isArray(e.groups))return"groups: array expected";for(let t=0;t>>0),null!=e.vabcFeatureSet){if("object"!==typeof e.vabcFeatureSet)throw TypeError(".chromeos_update_engine.DynamicPartitionMetadata.vabcFeatureSet: object expected");t.vabcFeatureSet=me.chromeos_update_engine.VABCFeatureSet.fromObject(e.vabcFeatureSet)}return null!=e.compressionFactor&&(be.Long?(t.compressionFactor=be.Long.fromValue(e.compressionFactor)).unsigned=!0:"string"===typeof e.compressionFactor?t.compressionFactor=parseInt(e.compressionFactor,10):"number"===typeof e.compressionFactor?t.compressionFactor=e.compressionFactor:"object"===typeof e.compressionFactor&&(t.compressionFactor=new be.LongBits(e.compressionFactor.low>>>0,e.compressionFactor.high>>>0).toNumber(!0))),t},e.toObject=function(e,t){t||(t={});let n={};if((t.arrays||t.defaults)&&(n.groups=[]),t.defaults)if(n.snapshotEnabled=!1,n.vabcEnabled=!1,n.vabcCompressionParam="",n.cowVersion=0,n.vabcFeatureSet=null,be.Long){let e=new be.Long(0,0,!0);n.compressionFactor=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.compressionFactor=t.longs===String?"0":0;if(e.groups&&e.groups.length){n.groups=[];for(let a=0;a>>0,e.compressionFactor.high>>>0).toNumber(!0):e.compressionFactor),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,he["util"].toJSONOptions)},e}(),e.ApexInfo=function(){function e(e){if(e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.packageName=e.string();break;case 2:a.version=e.int64();break;case 3:a.isCompressed=e.bool();break;case 4:a.decompressedSize=e.int64();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){return"object"!==typeof e||null===e?"object expected":null!=e.packageName&&e.hasOwnProperty("packageName")&&!be.isString(e.packageName)?"packageName: string expected":null==e.version||!e.hasOwnProperty("version")||be.isInteger(e.version)||e.version&&be.isInteger(e.version.low)&&be.isInteger(e.version.high)?null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&"boolean"!==typeof e.isCompressed?"isCompressed: boolean expected":null==e.decompressedSize||!e.hasOwnProperty("decompressedSize")||be.isInteger(e.decompressedSize)||e.decompressedSize&&be.isInteger(e.decompressedSize.low)&&be.isInteger(e.decompressedSize.high)?null:"decompressedSize: integer|Long expected":"version: integer|Long expected"},e.fromObject=function(e){if(e instanceof me.chromeos_update_engine.ApexInfo)return e;let t=new me.chromeos_update_engine.ApexInfo;return null!=e.packageName&&(t.packageName=String(e.packageName)),null!=e.version&&(be.Long?(t.version=be.Long.fromValue(e.version)).unsigned=!1:"string"===typeof e.version?t.version=parseInt(e.version,10):"number"===typeof e.version?t.version=e.version:"object"===typeof e.version&&(t.version=new be.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber())),null!=e.isCompressed&&(t.isCompressed=Boolean(e.isCompressed)),null!=e.decompressedSize&&(be.Long?(t.decompressedSize=be.Long.fromValue(e.decompressedSize)).unsigned=!1:"string"===typeof e.decompressedSize?t.decompressedSize=parseInt(e.decompressedSize,10):"number"===typeof e.decompressedSize?t.decompressedSize=e.decompressedSize:"object"===typeof e.decompressedSize&&(t.decompressedSize=new be.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber())),t},e.toObject=function(e,t){t||(t={});let n={};if(t.defaults){if(n.packageName="",be.Long){let e=new be.Long(0,0,!1);n.version=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.version=t.longs===String?"0":0;if(n.isCompressed=!1,be.Long){let e=new be.Long(0,0,!1);n.decompressedSize=t.longs===String?e.toString():t.longs===Number?e.toNumber():e}else n.decompressedSize=t.longs===String?"0":0}return null!=e.packageName&&e.hasOwnProperty("packageName")&&(n.packageName=e.packageName),null!=e.version&&e.hasOwnProperty("version")&&("number"===typeof e.version?n.version=t.longs===String?String(e.version):e.version:n.version=t.longs===String?be.Long.prototype.toString.call(e.version):t.longs===Number?new be.LongBits(e.version.low>>>0,e.version.high>>>0).toNumber():e.version),null!=e.isCompressed&&e.hasOwnProperty("isCompressed")&&(n.isCompressed=e.isCompressed),null!=e.decompressedSize&&e.hasOwnProperty("decompressedSize")&&("number"===typeof e.decompressedSize?n.decompressedSize=t.longs===String?String(e.decompressedSize):e.decompressedSize:n.decompressedSize=t.longs===String?be.Long.prototype.toString.call(e.decompressedSize):t.longs===Number?new be.LongBits(e.decompressedSize.low>>>0,e.decompressedSize.high>>>0).toNumber():e.decompressedSize),n},e.prototype.toJSON=function(){return this.constructor.toObject(this,he["util"].toJSONOptions)},e}(),e.ApexMetadata=function(){function e(e){if(this.apexInfo=[],e)for(let t=Object.keys(e),n=0;n>>3){case 1:a.apexInfo&&a.apexInfo.length||(a.apexInfo=[]),a.apexInfo.push(me.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(null!=e.apexInfo&&e.hasOwnProperty("apexInfo")){if(!Array.isArray(e.apexInfo))return"apexInfo: array expected";for(let t=0;t>>3){case 3:a.blockSize=e.uint32();break;case 4:a.signaturesOffset=e.uint64();break;case 5:a.signaturesSize=e.uint64();break;case 12:a.minorVersion=e.uint32();break;case 13:a.partitions&&a.partitions.length||(a.partitions=[]),a.partitions.push(me.chromeos_update_engine.PartitionUpdate.decode(e,e.uint32()));break;case 14:a.maxTimestamp=e.int64();break;case 15:a.dynamicPartitionMetadata=me.chromeos_update_engine.DynamicPartitionMetadata.decode(e,e.uint32());break;case 16:a.partialUpdate=e.bool();break;case 17:a.apexInfo&&a.apexInfo.length||(a.apexInfo=[]),a.apexInfo.push(me.chromeos_update_engine.ApexInfo.decode(e,e.uint32()));break;case 18:a.securityPatchLevel=e.string();break;default:e.skipType(7&t);break}}return a},e.decodeDelimited=function(e){return e instanceof fe||(e=new fe(e)),this.decode(e,e.uint32())},e.verify=function(e){if("object"!==typeof e||null===e)return"object expected";if(null!=e.blockSize&&e.hasOwnProperty("blockSize")&&!be.isInteger(e.blockSize))return"blockSize: integer expected";if(null!=e.signaturesOffset&&e.hasOwnProperty("signaturesOffset")&&!be.isInteger(e.signaturesOffset)&&!(e.signaturesOffset&&be.isInteger(e.signaturesOffset.low)&&be.isInteger(e.signaturesOffset.high)))return"signaturesOffset: integer|Long expected";if(null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&!be.isInteger(e.signaturesSize)&&!(e.signaturesSize&&be.isInteger(e.signaturesSize.low)&&be.isInteger(e.signaturesSize.high)))return"signaturesSize: integer|Long expected";if(null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&!be.isInteger(e.minorVersion))return"minorVersion: integer expected";if(null!=e.partitions&&e.hasOwnProperty("partitions")){if(!Array.isArray(e.partitions))return"partitions: array expected";for(let t=0;t>>0),null!=e.signaturesOffset&&(be.Long?(t.signaturesOffset=be.Long.fromValue(e.signaturesOffset)).unsigned=!0:"string"===typeof e.signaturesOffset?t.signaturesOffset=parseInt(e.signaturesOffset,10):"number"===typeof e.signaturesOffset?t.signaturesOffset=e.signaturesOffset:"object"===typeof e.signaturesOffset&&(t.signaturesOffset=new be.LongBits(e.signaturesOffset.low>>>0,e.signaturesOffset.high>>>0).toNumber(!0))),null!=e.signaturesSize&&(be.Long?(t.signaturesSize=be.Long.fromValue(e.signaturesSize)).unsigned=!0:"string"===typeof e.signaturesSize?t.signaturesSize=parseInt(e.signaturesSize,10):"number"===typeof e.signaturesSize?t.signaturesSize=e.signaturesSize:"object"===typeof e.signaturesSize&&(t.signaturesSize=new be.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0))),null!=e.minorVersion&&(t.minorVersion=e.minorVersion>>>0),e.partitions){if(!Array.isArray(e.partitions))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected");t.partitions=[];for(let n=0;n>>0,e.maxTimestamp.high>>>0).toNumber())),null!=e.dynamicPartitionMetadata){if("object"!==typeof e.dynamicPartitionMetadata)throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected");t.dynamicPartitionMetadata=me.chromeos_update_engine.DynamicPartitionMetadata.fromObject(e.dynamicPartitionMetadata)}if(null!=e.partialUpdate&&(t.partialUpdate=Boolean(e.partialUpdate)),e.apexInfo){if(!Array.isArray(e.apexInfo))throw TypeError(".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected");t.apexInfo=[];for(let n=0;n>>0,e.signaturesOffset.high>>>0).toNumber(!0):e.signaturesOffset),null!=e.signaturesSize&&e.hasOwnProperty("signaturesSize")&&("number"===typeof e.signaturesSize?n.signaturesSize=t.longs===String?String(e.signaturesSize):e.signaturesSize:n.signaturesSize=t.longs===String?be.Long.prototype.toString.call(e.signaturesSize):t.longs===Number?new be.LongBits(e.signaturesSize.low>>>0,e.signaturesSize.high>>>0).toNumber(!0):e.signaturesSize),null!=e.minorVersion&&e.hasOwnProperty("minorVersion")&&(n.minorVersion=e.minorVersion),e.partitions&&e.partitions.length){n.partitions=[];for(let a=0;a>>0,e.maxTimestamp.high>>>0).toNumber():e.maxTimestamp),null!=e.dynamicPartitionMetadata&&e.hasOwnProperty("dynamicPartitionMetadata")&&(n.dynamicPartitionMetadata=me.chromeos_update_engine.DynamicPartitionMetadata.toObject(e.dynamicPartitionMetadata,t)),null!=e.partialUpdate&&e.hasOwnProperty("partialUpdate")&&(n.partialUpdate=e.partialUpdate),e.apexInfo&&e.apexInfo.length){n.apexInfo=[];for(let a=0;a{const a=Ie(e,t,n);return t+=n,a};let a=await e.slice(0,_e).arrayBuffer(),r=new TextDecoder,o=a.slice(0,Se.length);const i=r.decode(o);if(i!=Se)throw new Error(`MAGIC is not correct, expected: ${Se} actual: ${i}`);t+=Se.length;const s=await n(xe),l=await n(Pe);if(s!=Ee)throw new Error("Unexpected major version number: "+s);const c=await n(ke);this.header=new ze(i,s,l,c)}async writeUint8Array(e){if(super.writeUint8Array(e),this.blob=new Blob([this.blob,e.buffer],{type:this.contentType}),this.offset=this.blob.size,this.offset>=_e&&0==this.prefixLength&&(console.log("Parsing header!"),await this.readHeader(this.blob),this.prefixLength=_e+this.header.manifest_len+this.header.metadata_signature_len,console.log("Computed metadata length: "+this.prefixLength)),this.prefixLength>0&&(console.log(`${this.offset}/${this.prefixLength}`),this.offset>=this.prefixLength))throw this.blob=this.blob.slice(0,this.prefixLength),new Le}getData(){return this.blob}}class Be{constructor(e){e instanceof File?this.zipreader=new ye["ZipReader"](new ye["BlobReader"](e)):e instanceof URL?this.zipreader=new ye["ZipReader"](new ye["HttpReader"](e.href)):this.zipreader=e.reader,this.payload_properties=[]}getMetadataLength(){return _e+this.header.manifest_len+this.header.metadata_signature_len}async unzip(){let e=await this.zipreader.getEntries();for(let a of e)if("payload.bin"==a.filename){let e=new Te("");try{await a.getData(e)}catch(t){if(!(t instanceof Le))throw console.log(t),t}this.buffer=e.getData(),await this.readManifest(this.buffer,e.header),console.log("AB OTA manifest parsed")}else if("META-INF/com/android/metadata"==a.filename)this.metadata=await a.getData(new ye["TextWriter"]),console.log("OTA Package metadata parsed");else if("payload_properties.txt"==a.filename){let e=await a.getData(new ye["TextWriter"]);this.payload_properties=e.split("\n"),console.log("OTA payload_properties.txt parsed"),console.log(this.getPayloadHash())}if(!this.manifest){console.log("Failed to parse AB OTA package, falling back to non-AB");try{let e=new je(this.zipreader);await e.init(),e.nonAB=!0,this.manifest=e}catch(n){return void alert("Please select a legit OTA package")}}}getPayloadHash(){const e="FILE_HASH=";for(let t of this.payload_properties)if(t.startsWith(e))return De(t.substring(e.length));return""}async readManifest(e,t){this.header=t;let n=_e,a=await e.slice(n,n+t.manifest_len).arrayBuffer();n+=t.manifest_len,this.manifest=Oe.DeltaArchiveManifest.decode(new Uint8Array(a));let r=await e.slice(n,n+t.metadata_signature_len).arrayBuffer();n+=t.metadata_signature_len,this.metadata_signature=Oe.Signatures.decode(new Uint8Array(r)),this.manifest.nonAB=!1}parseMetadata(){for(let e of ve){let t=new RegExp(e.prefix+".+");this.metadata&&this.metadata.match(t)?this[e.key]=Me(this.metadata.match(t)[0],e.prefix):this[e.key]=""}}async init(){await this.unzip(),this.parseMetadata()}}class Ce extends Map{getWithDefault(e){return this.has(e)?this.get(e):e}}class Ae{constructor(){let e=Oe.InstallOperation.Type;this.mapType=new Ce;for(let t of Object.keys(e))this.mapType.set(e[t],t)}}class Ne{constructor(){let e=Oe.CowMergeOperation.Type;this.mapType=new Ce;for(let t of Object.keys(e))this.mapType.set(e[t],t)}}function Fe(e,t=!0,n=16){let a="";for(let r=0;re.codePointAt(0))}const Re=e=>(Object(a["H"])("data-v-44174082"),e=e(),Object(a["F"])(),e),He={key:0},Ve=Re(()=>Object(a["l"])("strong",null," Data offset: ",-1)),Ue={key:1},We=Re(()=>Object(a["l"])("strong",null," Data length: ",-1)),Je={key:2},Ze=Re(()=>Object(a["l"])("strong",null," Source: ",-1)),$e=Re(()=>Object(a["l"])("br",null,null,-1)),qe={key:3},Ge=Re(()=>Object(a["l"])("strong",null," Destination: ",-1)),Ye=Re(()=>Object(a["l"])("br",null,null,-1));function Xe(e,t,n,r,o,i){const s=Object(a["M"])("v-divider");return Object(a["E"])(),Object(a["k"])(a["a"],null,[Object(a["l"])("ul",null,[Object(a["l"])("h5",null,Object(a["R"])(e.mapType.getWithDefault(e.operation.type)),1),e.operation.hasOwnProperty("dataOffset")?(Object(a["E"])(),Object(a["k"])("li",He,[Ve,Object(a["m"])(" "+Object(a["R"])(e.operation.dataOffset),1)])):Object(a["j"])("",!0),e.operation.hasOwnProperty("dataLength")?(Object(a["E"])(),Object(a["k"])("li",Ue,[We,Object(a["m"])(" "+Object(a["R"])(e.operation.dataLength),1)])):Object(a["j"])("",!0),e.operation.hasOwnProperty("srcExtents")?(Object(a["E"])(),Object(a["k"])("li",Je,[Ze,Object(a["m"])(" "+Object(a["R"])(e.operation.srcExtents.length)+" extents ("+Object(a["R"])(e.srcTotalBlocks)+" blocks) ",1),$e,Object(a["m"])(" "+Object(a["R"])(e.srcBlocks),1)])):Object(a["j"])("",!0),e.operation.hasOwnProperty("dstExtents")?(Object(a["E"])(),Object(a["k"])("li",qe,[Ge,Object(a["m"])(" "+Object(a["R"])(e.operation.dstExtents.length)+" extents ("+Object(a["R"])(e.dstTotalBlocks)+" blocks) ",1),Ye,Object(a["m"])(" "+Object(a["R"])(e.dstBlocks),1)])):Object(a["j"])("",!0)]),Object(a["n"])(s)],64)}class Ke{constructor(e,t,n,a=15){this.statisticData=e,this.trimmedData=Qe(e,a),this.title=t,this.unit=n,this.maximumEntries=a}listData(){let e="";for(let[t,n]of this.statisticData)e+=t+" : "+n.toString()+" Blocks\n";return e}getEchartsOption(){let e={};return e.title={text:this.title,left:"center"},e.tooltip={trigger:"item",formatter:"{a}
{b} : {c} "+this.unit+" ({d}%)"},e.legend={orient:"horizontal",left:"top",top:"10%",data:Array.from(this.trimmedData.keys())},e.series=[{name:this.title,type:"pie",radius:"55%",center:["50%","60%"],data:Array.from(this.trimmedData).map(e=>({value:e[1],name:e[0]})),emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],e}}function Qe(e,t){if(e.size<=t)return e;let n=new Map;for(let r=0;rt&&(t=o,a=r);n.set(a,t)}let a=0;for(let[r,o]of e)n.get(r)||(a+=o);return n.set("other",a),n}class et{constructor(e){e instanceof File?this.build=new ye["ZipReader"](new ye["BlobReader"](e)):this.build=new ye["ZipReader"](new ye["HttpReader"](e.href)),this.mapFiles=new Map,this.maps=new Map}async init(){let e=await this.build.getEntries();const t=/IMAGES\/[a-z_]*\.map/g,n=/[\w_]+(?=\.map)/g;e.forEach(e=>{e.filename.match(t)&&this.mapFiles.set(e.filename.match(n)[0],e)})}async add(e,t){let n=[];const a=/\d+/g,r=/\d+\-\d+/g;for(let o=0;o`;if(this.mapFiles.get(e)){let t=await this.mapFiles.get(e).getData(new ye["TextWriter"]),o=t.split("\n");for(let e of o){let t=e.split(" ");for(let e=1;er-=e),n.set("COW_REPLACE",r),n}function lt(e){let t=new Map,n=new Ae;for(let a of e)for(let e of a.operations){let a=n.mapType.getWithDefault(e.type);at(t,a,e.dataLength)}return t}async function ct(e,t,n){let a=await pt(e,t,n);const r=new Map;return a.forEach((e,t)=>{at(r,gt(t),e)}),r}async function pt(e,t,n){let a=new Map;if(!n)return a;let r=new et(n);await r.init();for(let o of e){await r.add(o.partitionName,Math.ceil(o.newPartitionInfo.size/t));for(let e of o.operations){if(!e.hasOwnProperty("dataLength"))continue;let t=r.query(o.partitionName,e.dstExtents),n=ft(t,e.dstExtents,e.dataLength);n.forEach((e,t)=>{at(a,t,e)})}}return a}async function ut(e,t,n=4096,a=null){let r,o;switch(e){case"blocks":r=rt(t),o=new Ke(r,"Operated blocks in target build","blocks");break;case"payload":r=lt(t),o=new Ke(r,"Payload disk usage","bytes");break;case"COWmerge":r=st(t,n),o=new Ke(r,"COW merge operations","blocks");break;case"filenames":if(null==a)throw new Error("Target file is required for filenames analysis");r=await pt(t,n,a),o=new Ke(r,"Size of operated filenames","bytes");break;case"extensions":if(null==a)throw new Error("Target file is required for filenames analysis");r=await ct(t,n,a),o=new Ke(r,"Size of operated extensions","bytes");break;case"partitions":r=it(t),o=new Ke(r,"Partition payload size","bytes");break}if(o)return o;throw"Please double check if this is a proper AB OTA package."}function dt(e){if(!e)return 0;const t=(e,t)=>e+t.numBlocks;return e.reduce(t,0)}function ht(e){const t=(e,t)=>e+"("+t.startBlock+","+t.numBlocks+")";return e.reduce(t,"")}function ft(e,t,n){let a=dt(t),r=new Map;for(let o=0;o1?t[t.length-1]:"unknown"===t[0]?"unknown":"<"==e[0]&&e.endsWith(">")?e:"no-extension"}var bt=Object(a["o"])({props:{operation:{type:Object,required:!0},mapType:{type:Ce,required:!0}},data(){return{srcTotalBlocks:0,srcBlocks:"",dstTotalBlocks:0,dstBlocks:""}},mounted(){this.operation.srcExtents&&(this.srcTotalBlocks=dt(this.operation.srcExtents),this.srcBlocks=ht(this.operation.srcExtents)),this.operation.dstExtents&&(this.dstTotalBlocks=dt(this.operation.dstExtents),this.dstBlocks=ht(this.operation.dstExtents))}});n("8edb");const mt=u()(bt,[["render",Xe],["__scopeId","data-v-44174082"]]);var Ot=mt,yt=Object(a["o"])({components:{OperationDetail:Ot},props:{partition:{type:Oe.PartitionUpdate,required:!0},dynamicPartitionList:{type:Array,required:!0}},data(){return{showOPs:!1,showInfo:!1,opType:new Ae}},methods:{toggle(e){this[e]=!this[e]},octToHex:Fe},computed:{readableTimestamp(){const e=parseInt(this.partition.version);return isNaN(e)?"":new Date(1e3*e).toString()},isDynamicPartition(){return this.dynamicPartitionList.indexOf(this.partition.partitionName)>=0},isFECEnabled(){var e;return(null===(e=this.partition.fecExtent)||void 0===e?void 0:e.numBlocks)>0},isHashtreeEnabled(){var e;return(null===(e=this.partition.hashTreeExtent)||void 0===e?void 0:e.numBlocks)>0}}});n("c622");const jt=u()(yt,[["render",de],["__scopeId","data-v-21e569e9"]]);var wt=jt;const St=e=>(Object(a["H"])("data-v-149f2bbc"),e=e(),Object(a["F"])(),e),xt=St(()=>Object(a["l"])("h3",null,"Basic infos",-1)),Pt={class:"align"},kt=St(()=>Object(a["l"])("strong",null," File name ",-1)),_t=St(()=>Object(a["l"])("strong",null," File size ",-1)),Et={class:"align"},vt={class:"wrap"},Lt={key:2},zt={class:"align"},It=St(()=>Object(a["l"])("strong",null," Incremental ",-1)),Tt={key:0},Bt={key:1},Ct=St(()=>Object(a["l"])("strong",null," Partial ",-1)),At={key:0},Nt={key:1},Ft=St(()=>Object(a["l"])("strong",null," A/B update ",-1)),Mt={key:0},Dt={key:1},Rt={key:0},Ht=St(()=>Object(a["l"])("strong",null," VAB ",-1)),Vt={key:0},Ut={key:1},Wt={key:1},Jt=St(()=>Object(a["l"])("strong",null," VABC ",-1)),Zt={key:0},$t={key:1},qt=St(()=>Object(a["l"])("strong",null," Wipes Data ",-1)),Gt={key:0},Yt={key:1},Xt={key:2},Kt=St(()=>Object(a["l"])("strong",null," Total Dynamic Partition Size ",-1)),Qt={key:3},en=St(()=>Object(a["l"])("strong",null," Total VABC COW Size ",-1)),tn={key:4},nn=St(()=>Object(a["l"])("strong",null," VABC Compression Algorithm ",-1)),an={key:5},rn=St(()=>Object(a["l"])("strong",null," Compression Factor ",-1)),on={key:6},sn=St(()=>Object(a["l"])("strong",null," Cow Version ",-1)),ln={key:7},cn=St(()=>Object(a["l"])("strong",null," Security Patch Level ",-1));function pn(e,t,n,r,o,i){return Object(a["E"])(),Object(a["k"])(a["a"],null,[xt,e.zipFile?(Object(a["E"])(),Object(a["k"])("div",Object(a["w"])(Object(a["t"])({key:0},e.$attrs)),[Object(a["l"])("ul",Pt,[Object(a["l"])("li",null,[kt,Object(a["m"])(" "+Object(a["R"])(e.zipFile.getFileName()),1)]),Object(a["l"])("li",null,[_t,Object(a["m"])(" "+Object(a["R"])(e.zipFile.getFileSize())+" Bytes",1)])])],16)):Object(a["j"])("",!0),e.payload&&e.payload.metadata?(Object(a["E"])(),Object(a["k"])("div",Object(a["w"])(Object(a["t"])({key:1},e.$attrs)),[Object(a["l"])("ul",Et,[(Object(a["E"])(!0),Object(a["k"])(a["a"],null,Object(a["L"])(e.otaMetadata,t=>(Object(a["E"])(),Object(a["k"])("li",{key:t.name},[Object(a["l"])("strong",null,Object(a["R"])(t.name.trim()+" "),1),Object(a["l"])("p",vt,Object(a["R"])(String(e.payload[t.key]).trim()),1)]))),128))])],16)):Object(a["j"])("",!0),e.payload&&e.payload.manifest?(Object(a["E"])(),Object(a["k"])("div",Lt,[Object(a["l"])("ul",zt,[Object(a["l"])("li",null,[It,e.payload.preBuild?(Object(a["E"])(),Object(a["k"])("span",Tt," ✅ ")):(Object(a["E"])(),Object(a["k"])("span",Bt," ❌ "))]),Object(a["l"])("li",null,[Ct,e.payload.manifest.partialUpdate?(Object(a["E"])(),Object(a["k"])("span",At," ✅ ")):(Object(a["E"])(),Object(a["k"])("span",Nt," ❌ "))]),Object(a["l"])("li",null,[Ft,e.payload.manifest.nonAB?(Object(a["E"])(),Object(a["k"])("span",Dt," ❌ ")):(Object(a["E"])(),Object(a["k"])("span",Mt," ✅ "))]),e.payload.manifest.dynamicPartitionMetadata?(Object(a["E"])(),Object(a["k"])("li",Rt,[Ht,e.payload.manifest.dynamicPartitionMetadata.snapshotEnabled?(Object(a["E"])(),Object(a["k"])("span",Vt," ✅ ")):(Object(a["E"])(),Object(a["k"])("span",Ut," ❌ "))])):Object(a["j"])("",!0),e.payload.manifest.dynamicPartitionMetadata?(Object(a["E"])(),Object(a["k"])("li",Wt,[Jt,e.payload.manifest.dynamicPartitionMetadata.vabcEnabled?(Object(a["E"])(),Object(a["k"])("span",Zt," ✅ ")):(Object(a["E"])(),Object(a["k"])("span",$t," ❌ "))])):Object(a["j"])("",!0),Object(a["l"])("li",null,[qt,e.isDataWipePackage?(Object(a["E"])(),Object(a["k"])("span",Gt," ✅ ")):(Object(a["E"])(),Object(a["k"])("span",Yt," ❌ "))]),e.totalDynamicPartitionSize?(Object(a["E"])(),Object(a["k"])("li",Xt,[Kt,Object(a["m"])(" "+Object(a["R"])(e.totalDynamicPartitionSize),1)])):Object(a["j"])("",!0),e.totalCOWSize?(Object(a["E"])(),Object(a["k"])("li",Qt,[en,Object(a["m"])(" "+Object(a["R"])(e.totalCOWSize),1)])):Object(a["j"])("",!0),e.vabcCompressionParam?(Object(a["E"])(),Object(a["k"])("li",tn,[nn,Object(a["m"])(" "+Object(a["R"])(e.vabcCompressionParam),1)])):Object(a["j"])("",!0),e.compressionFactor?(Object(a["E"])(),Object(a["k"])("li",an,[rn,Object(a["m"])(" "+Object(a["R"])(e.compressionFactor),1)])):Object(a["j"])("",!0),e.cowVersion?(Object(a["E"])(),Object(a["k"])("li",on,[sn,Object(a["m"])(" "+Object(a["R"])(e.cowVersion),1)])):Object(a["j"])("",!0),e.securityPatchLevel?(Object(a["E"])(),Object(a["k"])("li",ln,[cn,Object(a["m"])(" "+Object(a["R"])(e.securityPatchLevel),1)])):Object(a["j"])("",!0)])])):Object(a["j"])("",!0)],64)}class un{constructor(e){this.file=e,this.reader=hn(e)}getFileName(){return fn(this.file)}getFileSize(){return this.file instanceof File?this.file.size:0}}async function dn(e,t){const n=e,a=new ye["ZipWriter"](new ye["BlobWriter"]("application/zip")),r=await n.getEntries();for(const o of r.filter(e=>!!e&&t(e))){const e=new ye["BlobWriter"],t=await o.getData(e);console.log(`Adding ${o.filename}, ${t.size}`),a.add(o.filename,new ye["BlobReader"](e.getData()),{level:0})}return a}function hn(e){return e instanceof File?new ye["ZipReader"](new ye["BlobReader"](e)):new ye["ZipReader"](new ye["HttpReader"](e.href))}function fn(e){return e instanceof File?e.name:e.pathname}async function gn(e){const t=await dn(hn(e),e=>e.filename.startsWith("META/")||e.filename.endsWith(".map")||e.filename.endsWith(".prop")||"prop.default"==e.filename);return await t.close()}async function bn(e){const t=await dn(e.zipreader,e=>"payload.bin"!=e.filename);await t.add("payload.bin",new ye["BlobReader"](e.buffer.slice(0,e.getMetadataLength())),{level:0});const n=await t.close();return n}function mn(e,t,n){const a=window.URL.createObjectURL(e);t.href=a,t.download=n,t.click(),window.URL.revokeObjectURL(a)}function On(e,t){return e.endsWith(t)?e:e+t}var yn=Object(a["o"])({props:{zipFile:{type:un,required:!0},payload:{type:Be,required:!0}},data(){return{MetadataFormat:ve}},computed:{isDataWipePackage(){return this.payload.payload_properties.includes("POWERWASH=1")},otaMetadata(){return ve.filter(e=>String(this.payload[e.key]).length>0)},totalCOWSize(){var e;const t=null===(e=this.payload)||void 0===e||null===(e=e.manifest)||void 0===e?void 0:e.partitions.map(e=>e.estimateCowSize||0);return t?t.reduce((e,t)=>e+t):0},vabcCompressionParam(){var e;return(null===(e=this.payload)||void 0===e||null===(e=e.manifest)||void 0===e||null===(e=e.dynamicPartitionMetadata)||void 0===e?void 0:e.vabcCompressionParam)||""},compressionFactor(){var e;return(null===(e=this.payload)||void 0===e||null===(e=e.manifest)||void 0===e||null===(e=e.dynamicPartitionMetadata)||void 0===e?void 0:e.compressionFactor)||0},cowVersion(){var e;return(null===(e=this.payload)||void 0===e||null===(e=e.manifest)||void 0===e||null===(e=e.dynamicPartitionMetadata)||void 0===e?void 0:e.cowVersion)||0},securityPatchLevel(){var e;const t=null===(e=this.payload)||void 0===e||null===(e=e.manifest)||void 0===e?void 0:e.securityPatchLevel;return t||""},totalDynamicPartitionSize(){var e,t;const n=null===(e=this.payload)||void 0===e||null===(e=e.manifest)||void 0===e||null===(e=e.dynamicPartitionMetadata)||void 0===e?void 0:e.groups;if(!n)return 0;const a=new Set(n.flatMap(e=>e.partitionNames)),r=(null===(t=this.payload.manifest)||void 0===t?void 0:t.partitions.filter(e=>a.has(e.partitionName)))||[];return r.length<=0?0:r.map(e=>{var t;return(null===(t=e.newPartitionInfo)||void 0===t?void 0:t.size)||0}).reduce((e,t)=>e+t)}}});n("5622");const jn=u()(yn,[["render",pn],["__scopeId","data-v-149f2bbc"]]);var wn=jn,Sn=Object(a["o"])({components:{PartitionDetail:wt,BasicInfo:wn},props:{zipFile:{type:un,default:null},payload:{type:Be,default:null}},methods:{octToHex:Fe,async exportOTAPackage(){const e=await bn(this.payload),t=this.$refs["download"];mn(e,t,"trimmed_"+On(this.zipFile.getFileName(),".zip"))}},computed:{dynamicPartitions(){var e;return(null===(e=this.payload.manifest)||void 0===e||null===(e=e.dynamicPartitionMetadata)||void 0===e||null===(e=e.groups)||void 0===e?void 0:e.flatMap(e=>e.partitionNames||[]))||[]},payloadHash(){var e;const t=null===(e=this.payload)||void 0===e?void 0:e.getPayloadHash();return t?Fe(t,!1):""}}});n("2948");const xn=u()(Sn,[["render",C],["__scopeId","data-v-5dd4ca12"]]);var Pn=xn;const kn={ref:"download"},_n={key:1},En={key:0,class:"tooltiptext"};function vn(e,t,n,r,o,i){const s=Object(a["M"])("v-btn"),l=Object(a["M"])("PartialCheckbox"),c=Object(a["M"])("PieChart"),p=Object(a["M"])("v-divider"),u=Object(a["M"])("v-col"),d=Object(a["M"])("v-row"),h=Object(a["M"])("BaseFile");return Object(a["E"])(),Object(a["k"])(a["a"],null,[e.targetFile?(Object(a["E"])(),Object(a["i"])(s,{key:0,block:"",class:"md-6",onClick:e.exportTargetFileMetadata},{default:Object(a["bb"])(()=>[Object(a["m"])("Export Target File Metadata")]),_:1},8,["onClick"])):Object(a["j"])("",!0),Object(a["l"])("a",kn,null,512),Object(a["n"])(l,{modelValue:e.partitionInclude,"onUpdate:modelValue":t[0]||(t[0]=t=>e.partitionInclude=t),labels:e.updatePartitions},null,8,["modelValue","labels"]),e.echartsData?(Object(a["E"])(),Object(a["k"])("div",_n,[Object(a["n"])(c,{echartsData:e.echartsData,onClick:e.piechartClick},null,8,["echartsData","onClick"])])):Object(a["j"])("",!0),Object(a["n"])(p),Object(a["n"])(d,null,{default:Object(a["bb"])(()=>[Object(a["n"])(u,{cols:"12",md:"4"},{default:Object(a["bb"])(()=>[Object(a["n"])(s,{block:"",onClick:t[1]||(t[1]=t=>e.updateChart("blocks"))},{default:Object(a["bb"])(()=>[Object(a["m"])(" Analyse Installed Blocks (in target build) ")]),_:1})]),_:1}),Object(a["n"])(u,{cols:"12",md:"4"},{default:Object(a["bb"])(()=>[Object(a["n"])(s,{block:"",onClick:t[2]||(t[2]=t=>e.updateChart("payload"))},{default:Object(a["bb"])(()=>[Object(a["m"])(" Analyse Payload Composition ")]),_:1})]),_:1}),Object(a["n"])(u,{cols:"12",md:"4"},{default:Object(a["bb"])(()=>[Object(a["n"])(s,{block:"",onClick:t[3]||(t[3]=t=>e.updateChart("partitions"))},{default:Object(a["bb"])(()=>[Object(a["m"])(" Analyse Partition Payload Composition ")]),_:1})]),_:1})]),_:1}),Object(a["n"])(d,null,{default:Object(a["bb"])(()=>[Object(a["n"])(u,{cols:"12",md:"4",class:"tooltip"},{default:Object(a["bb"])(()=>[Object(a["n"])(s,{disabled:e.manifest.nonAB||!e.manifest.dynamicPartitionMetadata||!e.manifest.dynamicPartitionMetadata.vabcEnabled,title:"Only available for VABC update",block:"",onClick:t[4]||(t[4]=t=>e.updateChart("COWmerge"))},{default:Object(a["bb"])(()=>[Object(a["m"])(" Analyse COW Merge Operations ")]),_:1},8,["disabled"]),e.manifest.nonAB?(Object(a["E"])(),Object(a["k"])("span",En," This function is only supported in A/B OTA ")):Object(a["j"])("",!0)]),_:1}),Object(a["n"])(u,{cols:"12",md:"4"},{default:Object(a["bb"])(()=>[Object(a["n"])(s,{block:"",disabled:!e.targetFile,onClick:t[5]||(t[5]=t=>e.updateChart("filenames"))},{default:Object(a["bb"])(()=>[Object(a["m"])(" Analyse Filenames ")]),_:1},8,["disabled"])]),_:1}),Object(a["n"])(u,{cols:"12",md:"4"},{default:Object(a["bb"])(()=>[Object(a["n"])(s,{block:"",disabled:!e.targetFile,onClick:t[6]||(t[6]=t=>e.updateChart("extensions"))},{default:Object(a["bb"])(()=>[Object(a["m"])(" Analyse File Extensions ")]),_:1},8,["disabled"])]),_:1})]),_:1}),Object(a["n"])(d,null,{default:Object(a["bb"])(()=>[Object(a["n"])(u,{cols:"12",md:"6"}),Object(a["n"])(u,{cols:"12",md:"6"},{default:Object(a["bb"])(()=>[e.demo?Object(a["j"])("",!0):(Object(a["E"])(),Object(a["i"])(h,{key:0,label:"Drag and drop or Select The target Android build",onFileSelect:e.selectBuild},null,8,["onFileSelect"]))]),_:1})]),_:1})],64)}var Ln=n("bc3a"),zn=n.n(Ln);const In=["value","checked"],Tn={key:0};function Bn(e,t,n,r,o,i){const s=Object(a["M"])("v-btn"),l=Object(a["M"])("v-col"),c=Object(a["M"])("v-row");return Object(a["E"])(),Object(a["k"])(a["a"],null,[Object(a["n"])(s,{block:"",type:"button",class:"my-5",onClick:e.revertAllSelection},{default:Object(a["bb"])(()=>[Object(a["m"])(Object(a["R"])(e.selectAllText[e.selectAll]),1)]),_:1},8,["onClick"]),Object(a["n"])(c,{class:"mb-5"},{default:Object(a["bb"])(()=>[(Object(a["E"])(!0),Object(a["k"])(a["a"],null,Object(a["L"])(e.labels,n=>(Object(a["E"])(),Object(a["i"])(l,{key:n,cols:"12",md:"4"},{default:Object(a["bb"])(()=>[Object(a["l"])("input",{type:"checkbox",value:n,checked:e.modelValue.get(n),onChange:t[0]||(t[0]=t=>e.updateSelected(t.target.value))},null,40,In),n?(Object(a["E"])(),Object(a["k"])("label",Tn,Object(a["R"])(n),1)):Object(a["j"])("",!0)]),_:2},1024))),128))]),_:1})],64)}var Cn=Object(a["o"])({props:{labels:{type:Array,default:new Array},modelValue:{type:Map,default:new Map}},data(){return{selectAll:1,selectAllText:["Select All","Unselect All"]}},mounted(){for(let e of this.labels)this.modelValue.set(e,!0)},methods:{updateSelected(e){this.modelValue.set(e,!this.modelValue.get(e)),this.$emit("update:modelValue",this.modelValue)},revertAllSelection(){this.selectAll=1-this.selectAll;for(let e of this.modelValue.keys())this.modelValue.set(e,Boolean(this.selectAll))}}});n("a75a");const An=u()(Cn,[["render",Bn],["__scopeId","data-v-533f2336"]]);var Nn=An;function Fn(e,t,n,r,o,i){const s=Object(a["M"])("v-chart");return Object(a["E"])(),Object(a["i"])(s,{class:"chart",option:i.getEchartsOption,onClick:t[0]||(t[0]=t=>e.$emit("click",...arguments))},null,8,["option"])}var Mn=n("22b4"),Dn=n("f95e"),Rn=n("49bb"),Hn=n("9394"),Vn=n("2da7"),Un=n("ff32"),Wn=n("5c7f");Object(Mn["a"])([Dn["a"],Rn["a"],Hn["a"],Vn["a"],Un["a"]]);var Jn={components:{VChart:Wn["b"]},provide:{[Wn["a"]]:"dark"},props:{echartsData:{type:Ke,required:!0}},computed:{getEchartsOption(){return this.echartsData.getEchartsOption()}}};n("47e0");const Zn=u()(Jn,[["render",Fn],["__scopeId","data-v-5d1cb486"]]);var $n=Zn,qn=Object(a["o"])({components:{PartialCheckbox:Nn,PieChart:$n,BaseFile:x},props:{manifest:{type:Oe.DeltaArchiveManifest,default:()=>[]},demo:{type:Boolean,default:!1}},data(){return{partitionInclude:new Map,echartsData:null,listData:"",targetFile:null}},computed:{updatePartitions(){return this.manifest.partitions.map(e=>e.partitionName)}},async mounted(){if(this.demo)try{const e=await zn.a.get("./files/cf_x86_target_file_demo.zip",{responseType:"blob"});this.targetFile=new File([e.data],"target_demo.zip")}catch(e){console.log("Please put a proper example target file in /public/files/")}},methods:{piechartClick(e){console.log(e)},async updateChart(e){let t=this.manifest.partitions.filter(e=>this.partitionInclude.get(e.partitionName));try{this.echartsData=await ut(e,t,this.manifest.blockSize,this.targetFile)}catch(n){alert("Cannot be processed for the following issue: "+n)}},selectBuild(e){this.targetFile=e},async exportTargetFileMetadata(){const e=await gn(this.targetFile),t=this.$refs["download"];mn(e,t,"trimmed_"+On(fn(this.targetFile),".zip"))}}});n("800d");const Gn=u()(qn,[["render",vn],["__scopeId","data-v-20303229"]]);var Yn=Gn,Xn=Object(a["o"])({components:{BaseFile:x,PayloadDetail:Pn,PayloadComposition:Yn},data(){return{zipFile:null,payload:null}},methods:{async unpackOTA(e){this.zipFile=new un(e);try{const e=new Be(this.zipFile);await e.init(),this.payload=e}catch(t){alert("Please check if this is a correct OTA package (.zip). "+t),console.log(t)}}}});const Kn=u()(Xn,[["render",g]]);var Qn=Kn;function ea(e,t,n,r,o,i){const s=Object(a["M"])("PayloadDetail"),l=Object(a["M"])("v-col"),c=Object(a["M"])("v-divider"),p=Object(a["M"])("PayloadComposition"),u=Object(a["M"])("v-row");return Object(a["E"])(),Object(a["i"])(u,null,{default:Object(a["bb"])(()=>[Object(a["n"])(l,{cols:"12",md:"6"},{default:Object(a["bb"])(()=>[e.zipFile&&e.payload?(Object(a["E"])(),Object(a["i"])(s,{key:0,zipFile:e.zipFile,payload:e.payload},null,8,["zipFile","payload"])):Object(a["j"])("",!0)]),_:1}),Object(a["n"])(c,{vertical:""}),Object(a["n"])(l,{cols:"12",md:"6"},{default:Object(a["bb"])(()=>[e.zipFile&&e.payload.manifest?(Object(a["E"])(),Object(a["i"])(p,{key:0,manifest:e.payload.manifest,demo:!0},null,8,["manifest"])):Object(a["j"])("",!0)]),_:1})]),_:1})}var ta=Object(a["o"])({components:{PayloadDetail:Pn,PayloadComposition:Yn},data(){return{zipFile:null,payload:null}},async created(){try{const e=await zn.a.get("./files/cf_x86_demo.zip",{responseType:"blob"});this.zipFile=new un(new File([e.data],"ota_demo.zip")),this.payload=new Be(this.zipFile),await this.payload.init()}catch(e){console.log("Please put a proper example OTA in /public/files/")}}});const na=u()(ta,[["render",ea]]);var aa=na;const ra={class:"about"},oa=Object(a["l"])("p",null,"A web based tool to inspect Android OTA packages.",-1),ia=[oa];function sa(e,t){return Object(a["E"])(),Object(a["k"])("div",ra,ia)}const la={},ca=u()(la,[["render",sa]]);var pa=ca;const ua=e=>(Object(a["H"])("data-v-50c6f348"),e=e(),Object(a["F"])(),e),da=ua(()=>Object(a["l"])("h1",null,"Not Found!",-1)),ha=ua(()=>Object(a["l"])("p",null,[Object(a["l"])("a",{href:"/"},"Go home?")],-1));function fa(e,t){const n=Object(a["M"])("center");return Object(a["E"])(),Object(a["i"])(n,null,{default:Object(a["bb"])(()=>[da,ha]),_:1})}n("8e71");const ga={},ba=u()(ga,[["render",fa],["__scopeId","data-v-50c6f348"]]);var ma=ba;const Oa=[{path:"/",name:"Analysis",component:Qn,meta:{title:"Analyse OTA package - from AOSP"}},{path:"/demo",name:"Demo",component:aa},{path:"/about",name:"About",component:pa},{path:"/:catchAll(.*)",name:"Not Found",component:ma}],ya=Object(f["a"])({history:Object(f["b"])("/analyseOTA/"),routes:Oa});ya.beforeEach((e,t,n)=>{const a=e.matched.slice().reverse().find(e=>e.meta&&e.meta.title),r=(e.matched.slice().reverse().find(e=>e.meta&&e.meta.metaTags),t.matched.slice().reverse().find(e=>e.meta&&e.meta.metaTags));a?document.title=a.meta.title:r&&(document.title=r.meta.title),Array.from(document.querySelectorAll("[data-vue-router-controlled]")).map(e=>e.parentNode.removeChild(e)),n()});var ja=ya,wa=n("5502"),Sa=Object(wa["a"])({state:{},mutations:{},actions:{},modules:{}});const xa=Object(a["h"])(h);xa.use(ja),xa.use(Sa),xa.use(s),xa.mount("#app")},d978:function(e,t,n){},ef4e:function(e,t,n){}}); +//# sourceMappingURL=app.f0315855.js.map \ No newline at end of file diff --git a/analyseOTA/js/app.f0315855.js.map b/analyseOTA/js/app.f0315855.js.map new file mode 100644 index 0000000..dfc9dbb --- /dev/null +++ b/analyseOTA/js/app.f0315855.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/PayloadDetail.vue?8f9f","webpack:///./src/App.vue?1825","webpack:///./src/components/PieChart.vue?3f25","webpack:///./src/components/BaseFile.vue?5b74","webpack:///./src/components/BasicInfo.vue?dddc","webpack:///./src/components/PayloadComposition.vue?783b","webpack:///./src/views/NotFound.vue?18b8","webpack:///./src/components/OperationDetail.vue?7823","webpack:///./src/components/PartialCheckbox.vue?cce7","webpack:///./src/components/PartitionDetail.vue?e22f","webpack:///./src/plugins/vuetify.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?6697","webpack:///./src/views/PackageAnalysis.vue?544f","webpack:///./src/components/BaseFile.vue?ef02","webpack:///./src/components/BaseFile.vue?5af0","webpack:///./src/components/BaseFile.vue","webpack:///./src/components/PayloadDetail.vue?e725","webpack:///./src/components/PartitionDetail.vue?07df","webpack:///./src/services/update_metadata_pb.js","webpack:///./src/services/payload_nonab.ts","webpack:///./src/services/payload.ts","webpack:///./src/components/OperationDetail.vue?d49d","webpack:///./src/services/echarts_data.ts","webpack:///./src/services/map_parser.ts","webpack:///./src/services/payload_composition.ts","webpack:///./src/components/OperationDetail.vue?0239","webpack:///./src/components/OperationDetail.vue","webpack:///./src/components/PartitionDetail.vue?7d27","webpack:///./src/components/PartitionDetail.vue","webpack:///./src/components/BasicInfo.vue?bd8b","webpack:///./src/services/trim_zip.ts","webpack:///./src/components/BasicInfo.vue?bb39","webpack:///./src/components/BasicInfo.vue","webpack:///./src/components/PayloadDetail.vue?cdd8","webpack:///./src/components/PayloadDetail.vue","webpack:///./src/components/PayloadComposition.vue?ebbb","webpack:///./src/components/PartialCheckbox.vue?5e29","webpack:///./src/components/PartialCheckbox.vue?fbe3","webpack:///./src/components/PartialCheckbox.vue","webpack:///./src/components/PieChart.vue","webpack:///./src/components/PieChart.vue?1278","webpack:///./src/components/PayloadComposition.vue?3e04","webpack:///./src/components/PayloadComposition.vue","webpack:///./src/views/PackageAnalysis.vue?3fdf","webpack:///./src/views/PackageAnalysis.vue","webpack:///./src/views/Demo.vue?fab4","webpack:///./src/views/Demo.vue?9616","webpack:///./src/views/Demo.vue","webpack:///./src/views/About.vue","webpack:///./src/views/About.vue?aa81","webpack:///./src/views/NotFound.vue","webpack:///./src/views/NotFound.vue?2812","webpack:///./src/router/index.ts","webpack:///./src/store/index.ts","webpack:///./src/main.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","components","directives","theme","defaultTheme","rounded","color","links","link","to","class","fluid","__exports__","render","_ctx","_cache","$props","$setup","$data","$options","_component_v_alert","_component_v_row","_component_BaseFile","_component_PayloadDetail","_component_v_col","_component_v_divider","_component_PayloadComposition","default","style","_","cols","md","label","onFileSelect","unpackOTA","zipFile","payload","vertical","manifest","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","onDragover","args","dragover","onDragleave","dragleave","onDrop","drop","fileName","ref","type","accept","onChange","handleFileChange","parsedURL","url","placeholder","$event","onKeyup","urlKeyup","props","String","emits","computed","URL","this","methods","event","currentTarget","target","files","selectedFile","$emit","preventDefault","classList","contains","add","remove","dataTransfer","console","log","error","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_component_v_btn","_component_BasicInfo","_component_PartitionDetail","_component_v_card","onClick","exportOTAPackage","partitions","partition","partitionName","elevation","hover","shaped","dynamicPartitionList","dynamicPartitions","nonAB","payloadHash","metadata_signature","octToHex","signatures","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_component_OperationDetail","oldPartitionInfo","isDynamicPartition","isFECEnabled","isHashtreeEnabled","estimateCowSize","postinstallPath","toggle","active","showInfo","inactive","size","hash","newPartitionInfo","version","readableTimestamp","showOPs","operations","operation","dataSha256Hash","mapType","opType","$Reader","$protobuf","$Writer","$util","$root","chromeos_update_engine","Extent","properties","keys","startBlock","Long","fromBits","numBlocks","encode","message","writer","uint32","uint64","encodeDelimited","ldelim","decode","reader","end","undefined","len","pos","tag","skipType","decodeDelimited","verify","isInteger","low","high","fromObject","fromValue","unsigned","parseInt","LongBits","toNumber","toObject","options","defaults","long","longs","toString","Number","toJSON","constructor","toJSONOptions","Signatures","emptyArray","Signature","fork","Array","isArray","TypeError","arrays","newBuffer","unpaddedSignatureSize","bytes","fixed32","isString","base64","PartitionInfo","InstallOperation","srcExtents","dstExtents","dataOffset","dataLength","srcLength","dstLength","srcSha256Hash","int32","ProtocolError","instance","enums","Type","valuesById","values","CowMergeOperation","srcExtent","dstExtent","srcOffset","PartitionUpdate","newPartitionSignature","mergeOperations","runPostinstall","filesystemType","postinstallOptional","hashTreeDataExtent","hashTreeExtent","hashTreeAlgorithm","hashTreeSalt","fecDataExtent","fecExtent","fecRoots","estimateOpCountMax","string","bool","Boolean","DynamicPartitionGroup","partitionNames","VABCFeatureSet","threaded","batchWrites","DynamicPartitionMetadata","groups","snapshotEnabled","vabcEnabled","vabcCompressionParam","cowVersion","vabcFeatureSet","compressionFactor","ApexInfo","packageName","isCompressed","decompressedSize","int64","ApexMetadata","apexInfo","DeltaArchiveManifest","blockSize","signaturesOffset","signaturesSize","minorVersion","maxTimestamp","dynamicPartitionMetadata","partialUpdate","securityPatchLevel","packedFile","super","Blocksize","regexName","entries","getEntries","entry","filename","match","newPartition","rawText","getData","parseTransferList","lines","split","totalBlocks","entryStashed","maxStashed","Uint8Array","newDataSize","sizeNewData","line","op","elements","reduce","parseRange","RegExp","uncompressedSize","extents","rangeset","regexRange","extent","_MAGIC","_VERSION_SIZE","_MANIFEST_LEN_SIZE","_METADATA_SIGNATURE_LEN_SIZE","_PAYLOAD_HEADER_SIZE","_BRILLO_MAJOR_PAYLOAD_VERSION","MetadataFormat","prefix","StopIteration","Error","AbPayloadHeader","magic","manifest_len","metadata_signature_len","async","readIntAt","buffer","position","view","DataView","arrayBuffer","getBigUint64","offset","a","BigInt","getUint32","b","bigNumber","getUint16","contentType","blob","Blob","prefixLength","cursor","readInt","ret","decoder","TextDecoder","magicBytes","header_version","header","array","writeUint8Array","readHeader","file","File","zipreader","href","payload_properties","e","readManifest","metadata","getPayloadHash","init","alert","file_hash_prefix","startsWith","base64ToBytes","substring","manifestBlob","signatureBlob","formatter","regex","trimEntry","unzip","parseMetadata","DefaultMap","Map","has","types","set","bufferArray","space","maxLine","hex_table","hex","toUpperCase","binString","atob","from","codePointAt","getWithDefault","srcTotalBlocks","srcBlocks","dstTotalBlocks","dstBlocks","EchartsData","statisticData","title","unit","maximumEntries","trimmedData","trimMap","table","option","text","left","tooltip","trigger","legend","orient","top","series","radius","center","map","pair","emphasis","itemStyle","shadowBlur","shadowOffsetX","shadowColor","new_map","curr","currKey","restTotal","targetFile","build","mapFiles","maps","regexPath","forEach","totalLength","regexNumber","mapText","fileEntries","right","InsertMap","names","ext","queryMap","addNumberToMap","operatedBlockStatistics","operatedBlocks","operationType","partitionPayloadSize","partitionPayloadSizeStatistics","partitionStats","mergeOperationStatistics","Math","ceil","operatedPayloadStatistics","operatedFileExtensionsStatistics","filenameStats","operatedFilenamesStatistics","fileExtenstionStats","name2Extension","operatedFilenames","buildMap","operatedFileNames","query","extentDataLength","distributeFilenames","analysePartitions","metrics","statisticsData","echartsData","exts","accumulator","total","displayBlocks","filenames","distributedLengths","round","endsWith","required","OperationDetail","unixTimestamp","isNaN","Date","indexOf","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","$attrs","getFileName","getFileSize","otaMetadata","trim","preBuild","isDataWipePackage","totalDynamicPartitionSize","totalCOWSize","ZipFile","getZipReader","trimZip","zip","filter","blobWriter","level","pathname","trimTargetFiles","close","trimOTAPackage","getMetadataLength","downloadFile","downloadNode","createObjectURL","download","click","revokeObjectURL","ensureSuffix","str","suffix","includes","cowSizes","spl","dynamicPartitionNamess","Set","flatMap","g","acc","cur","PartitionDetail","BasicInfo","$refs","_component_PartialCheckbox","_component_PieChart","block","exportTargetFileMetadata","modelValue","partitionInclude","labels","updatePartitions","piechartClick","updateChart","disabled","demo","selectBuild","revertAllSelection","selectAllText","selectAll","checked","updateSelected","newSelect","getEchartsOption","arguments","VChart","provide","PartialCheckbox","PieChart","BaseFile","listData","responseType","err","param","partitionSelected","PayloadDetail","PayloadComposition","script","routes","path","component","PackageAnalysis","meta","Demo","About","NotFound","router","history","beforeEach","next","nearestWithTitle","matched","reverse","find","previousNearestWithMeta","metaTags","document","querySelectorAll","el","parentNode","removeChild","state","mutations","actions","app","App","use","store","vuetify","mount"],"mappings":"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","file":"js/app.f0315855.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/analyseOTA/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadDetail.vue?vue&type=style&index=0&id=5dd4ca12&scoped=true&lang=css\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./BasicInfo.vue?vue&type=style&index=0&id=149f2bbc&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PayloadComposition.vue?vue&type=style&index=0&id=20303229&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PartitionDetail.vue?vue&type=style&index=0&id=21e569e9&scoped=true&lang=css\"","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport 'vuetify/lib/styles/main.sass'\nimport { createVuetify } from 'vuetify'\nimport * as components from 'vuetify/lib/components'\nimport * as directives from 'vuetify/lib/directives'\n\nexport default createVuetify({\n components,\n directives,\n theme: {\n defaultTheme: 'dark'\n }\n})\n","\n\n\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=ee415730\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=ee415730&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_alert = _resolveComponent(\"v-alert\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n const _component_BaseFile = _resolveComponent(\"BaseFile\")!\n const _component_PayloadDetail = _resolveComponent(\"PayloadDetail\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n const _component_PayloadComposition = _resolveComponent(\"PayloadComposition\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_alert, { style: {\"color\":\"yellow\"} }, {\n default: _withCtx(() => [\n _createTextVNode(\" Your files will not be uploaded anywhere. All analysis are done in the frontend using Javascript. \")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_BaseFile, {\n label: \"Please drag and drop an OTA package or Select one\",\n onFileSelect: _ctx.unpackOTA\n }, null, 8, [\"onFileSelect\"]),\n (_ctx.zipFile && _ctx.payload)\n ? (_openBlock(), _createBlock(_component_PayloadDetail, {\n key: 0,\n zipFile: _ctx.zipFile,\n payload: _ctx.payload\n }, null, 8, [\"zipFile\", \"payload\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_component_v_divider, { vertical: \"\" }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n (_ctx.zipFile && _ctx.payload && _ctx.payload.manifest)\n ? (_openBlock(), _createBlock(_component_PayloadComposition, {\n key: 0,\n manifest: _ctx.payload.manifest\n }, null, 8, [\"manifest\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ], 64))\n}","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, vModelText as _vModelText, normalizeClass as _normalizeClass, withDirectives as _withDirectives, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = (n: any) => (_pushScopeId(\"data-v-0630c5ec\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"file-select ma-5\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = { key: 2 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"label\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"select-button\",\n onDragover: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.dragover && _ctx.dragover(...args))),\n onDragleave: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.dragleave && _ctx.dragleave(...args))),\n onDrop: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.drop && _ctx.drop(...args)))\n }, [\n (_ctx.label)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_2, _toDisplayString(!_ctx.fileName ? _ctx.label : ''), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_3, \"Select File\")),\n (_ctx.fileName)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, \"File selected: \" + _toDisplayString(_ctx.fileName), 1))\n : _createCommentVNode(\"\", true)\n ], 32),\n _createElementVNode(\"input\", {\n ref: \"file\",\n type: \"file\",\n accept: \".zip\",\n onChange: _cache[3] || (_cache[3] = \n//@ts-ignore\n(...args) => (_ctx.handleFileChange && _ctx.handleFileChange(...args)))\n }, null, 544)\n ]),\n _withDirectives(_createElementVNode(\"input\", {\n class: _normalizeClass([\"url-input\", {\n 'url-invalid': !_ctx.parsedURL && _ctx.url != '',\n 'url-valid': _ctx.parsedURL || _ctx.url == ''\n }]),\n ref: \"url_input\",\n type: \"url\",\n placeholder: \"type a URL\",\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.url) = $event)),\n onKeyup: _cache[5] || (_cache[5] = \n//@ts-ignore\n(...args) => (_ctx.urlKeyup && _ctx.urlKeyup(...args)))\n }, null, 34), [\n [_vModelText, _ctx.url]\n ])\n ], 64))\n}","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n label: {\n type: String,\n default: ''\n }\n },\n emits: {\n 'file-select': null\n },\n data() {\n return {\n fileName: '',\n url: ''\n }\n },\n computed: {\n parsedURL(): URL | null {\n try {\n return new URL(this.url)\n } catch {\n return null\n }\n }\n },\n\n methods: {\n handleFileChange(event: any) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (target.files == null || target.files.length < 1) {\n return\n }\n const selectedFile = target.files![0]\n this.$emit('file-select', selectedFile)\n // If user selects a file, clear the URL component\n this.url = ''\n this.fileName = target.files![0].name\n },\n dragover(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!target.classList.contains('file-hover')) {\n target.classList.add('file-hover')\n }\n },\n dragleave(event: DragEvent) {\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n target.classList.remove('file-hover')\n },\n drop(event: DragEvent) {\n event.preventDefault()\n if (!event.currentTarget) {\n return\n }\n let target = event.currentTarget! as HTMLInputElement\n if (!event.dataTransfer || event.dataTransfer.files.length == 0) {\n return\n }\n target.files = event.dataTransfer.files\n this.handleFileChange(event)\n target.classList.remove('file-hover')\n },\n urlKeyup(event: KeyboardEvent) {\n console.log(this.url)\n if (event.key == 'Enter') {\n const target = event.target as HTMLInputElement\n if (this.parsedURL == null) {\n console.error(`${target.value} is an invalid URL`)\n return\n }\n this.$emit('file-select', this.parsedURL)\n }\n }\n }\n})\n","import { render } from \"./BaseFile.vue?vue&type=template&id=0630c5ec&scoped=true&ts=true\"\nimport script from \"./BaseFile.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseFile.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseFile.vue?vue&type=style&index=0&id=0630c5ec&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0630c5ec\"]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = (n: any) => (_pushScopeId(\"data-v-5dd4ca12\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { ref: \"download\" }\nconst _hoisted_2 = { key: 1 }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h3\", null, \"Partition List\", -1))\nconst _hoisted_4 = { key: 1 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h3\", null, \"Payload SHA256 Hash\", -1))\nconst _hoisted_6 = { style: {\"text-align\":\"center\",\"display\":\"block\"} }\nconst _hoisted_7 = {\n key: 2,\n class: \"signature\"\n}\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h3\", null, \"Metadata Signature\", -1))\nconst _hoisted_9 = { style: {\"white-space\":\"pre-wrap\"} }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_btn = _resolveComponent(\"v-btn\")!\n const _component_BasicInfo = _resolveComponent(\"BasicInfo\")!\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n const _component_PartitionDetail = _resolveComponent(\"PartitionDetail\")!\n const _component_v_card = _resolveComponent(\"v-card\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (_ctx.zipFile && _ctx.payload)\n ? (_openBlock(), _createBlock(_component_v_btn, {\n key: 0,\n class: \"download-btn\",\n onClick: _ctx.exportOTAPackage\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"Export Metadata\")\n ]),\n _: 1\n }, 8, [\"onClick\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"a\", _hoisted_1, null, 512),\n _createVNode(_component_BasicInfo, {\n zipFile: _ctx.zipFile,\n payload: _ctx.payload,\n class: \"mb-5\"\n }, null, 8, [\"zipFile\", \"payload\"]),\n _createVNode(_component_v_divider),\n (_ctx.payload)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _hoisted_3,\n (_ctx.payload.manifest)\n ? (_openBlock(), _createBlock(_component_v_row, {\n key: 0,\n class: \"mb-5\"\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.payload.manifest.partitions, (partition) => {\n return (_openBlock(), _createBlock(_component_v_col, {\n key: partition.partitionName,\n cols: \"12\",\n md: \"4\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_card, {\n elevation: \"5\",\n hover: \"\",\n shaped: \"\",\n class: \"partial-info\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_PartitionDetail, {\n partition: partition,\n dynamicPartitionList: _ctx.dynamicPartitions\n }, null, 8, [\"partition\", \"dynamicPartitionList\"])\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1024))\n }), 128))\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_v_divider),\n (!_ctx.payload.manifest.nonAB && _ctx.payloadHash)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_ctx.payloadHash), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_v_divider),\n (_ctx.payload.metadata_signature && !_ctx.payload.manifest.nonAB)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _hoisted_8,\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.octToHex(_ctx.payload.metadata_signature.signatures[0].data)), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = (n: any) => (_pushScopeId(\"data-v-21e569e9\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"pre\", null, \"Dynamic: ✅\", -1))\nconst _hoisted_3 = [\n _hoisted_2\n]\nconst _hoisted_4 = { key: 1 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"pre\", null, \"FEC: ✅\", -1))\nconst _hoisted_6 = [\n _hoisted_5\n]\nconst _hoisted_7 = { key: 2 }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"pre\", null, \"Hashtree: ✅\", -1))\nconst _hoisted_9 = [\n _hoisted_8\n]\nconst _hoisted_10 = { key: 3 }\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Estimate COW Size: \", -1))\nconst _hoisted_12 = { key: 4 }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Postinstall Script: \", -1))\nconst _hoisted_14 = { class: \"toggle\" }\nconst _hoisted_15 = { key: 0 }\nconst _hoisted_16 = { key: 0 }\nconst _hoisted_17 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Old Partition Size: \", -1))\nconst _hoisted_18 = { key: 1 }\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Old Partition Hash: \", -1))\nconst _hoisted_20 = { class: \"hex\" }\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" New Partition Size: \", -1))\nconst _hoisted_22 = { key: 2 }\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" New Partition Hash: \", -1))\nconst _hoisted_24 = { class: \"hex\" }\nconst _hoisted_25 = { key: 3 }\nconst _hoisted_26 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Version: \", -1))\nconst _hoisted_27 = { key: 4 }\nconst _hoisted_28 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Version: \", -1))\nconst _hoisted_29 = { class: \"toggle\" }\nconst _hoisted_30 = { key: 0 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_OperationDetail = _resolveComponent(\"OperationDetail\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"h4\", {\n class: _normalizeClass({ 'new-partition': !_ctx.partition.oldPartitionInfo })\n }, _toDisplayString(_ctx.partition.partitionName), 3),\n (_ctx.isDynamicPartition)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_1, _hoisted_3))\n : _createCommentVNode(\"\", true),\n (_ctx.isFECEnabled)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_4, _hoisted_6))\n : _createCommentVNode(\"\", true),\n (_ctx.isHashtreeEnabled)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_7, _hoisted_9))\n : _createCommentVNode(\"\", true),\n (_ctx.partition.estimateCowSize)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_10, [\n _hoisted_11,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.estimateCowSize) + \" Bytes \", 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.partition.postinstallPath)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_12, [\n _hoisted_13,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.postinstallPath), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"h4\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.toggle('showInfo'))),\n class: _normalizeClass({ active: _ctx.showInfo, inactive: !_ctx.showInfo })\n }, \" Partition Infos \", 2),\n (_ctx.showInfo)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_15, [\n (_ctx.partition.oldPartitionInfo)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_16, [\n _hoisted_17,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.oldPartitionInfo.size) + \" Bytes \", 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.partition.oldPartitionInfo)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_18, [\n _hoisted_19,\n _createElementVNode(\"div\", _hoisted_20, _toDisplayString(_ctx.octToHex(_ctx.partition.oldPartitionInfo.hash, false, 16)), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"li\", null, [\n _hoisted_21,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.newPartitionInfo.size) + \" Bytes \", 1)\n ]),\n (_ctx.partition.newPartitionInfo.hash)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_22, [\n _hoisted_23,\n _createElementVNode(\"div\", _hoisted_24, _toDisplayString(_ctx.octToHex(_ctx.partition.newPartitionInfo.hash, false, 16)), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.partition.version)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_25, [\n _hoisted_26,\n _createTextVNode(\" \" + _toDisplayString(_ctx.partition.version), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.readableTimestamp)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_27, [\n _hoisted_28,\n _createTextVNode(\" \" + _toDisplayString(_ctx.readableTimestamp), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_29, [\n _createElementVNode(\"h4\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.toggle('showOPs'))),\n class: _normalizeClass({ active: _ctx.showOPs, inactive: !_ctx.showOPs })\n }, \" Total Operations: \" + _toDisplayString(_ctx.partition.operations.length), 3),\n (_ctx.showOPs)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_30, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.partition.operations, (operation) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: operation.dataSha256Hash\n }, [\n _createVNode(_component_OperationDetail, {\n operation: operation,\n mapType: _ctx.opType.mapType\n }, null, 8, [\"operation\", \"mapType\"])\n ]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ], 64))\n}","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\nimport * as $protobuf from \"protobufjs/minimal\";\n\n// Common aliases\nconst $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nconst $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\nexport const chromeos_update_engine = $root.chromeos_update_engine = (() => {\n\n /**\n * Namespace chromeos_update_engine.\n * @exports chromeos_update_engine\n * @namespace\n */\n const chromeos_update_engine = {};\n\n chromeos_update_engine.Extent = (function() {\n\n /**\n * Properties of an Extent.\n * @memberof chromeos_update_engine\n * @interface IExtent\n * @property {number|Long|null} [startBlock] Extent startBlock\n * @property {number|Long|null} [numBlocks] Extent numBlocks\n */\n\n /**\n * Constructs a new Extent.\n * @memberof chromeos_update_engine\n * @classdesc Represents an Extent.\n * @implements IExtent\n * @constructor\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n */\n function Extent(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Extent startBlock.\n * @member {number|Long} startBlock\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.startBlock = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Extent numBlocks.\n * @member {number|Long} numBlocks\n * @memberof chromeos_update_engine.Extent\n * @instance\n */\n Extent.prototype.numBlocks = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new Extent instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent=} [properties] Properties to set\n * @returns {chromeos_update_engine.Extent} Extent instance\n */\n Extent.create = function create(properties) {\n return new Extent(properties);\n };\n\n /**\n * Encodes the specified Extent message. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.startBlock != null && Object.hasOwnProperty.call(message, \"startBlock\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.startBlock);\n if (message.numBlocks != null && Object.hasOwnProperty.call(message, \"numBlocks\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.numBlocks);\n return writer;\n };\n\n /**\n * Encodes the specified Extent message, length delimited. Does not implicitly {@link chromeos_update_engine.Extent.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.IExtent} message Extent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Extent.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Extent();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.startBlock = reader.uint64();\n break;\n case 2:\n message.numBlocks = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an Extent message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Extent} Extent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Extent.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an Extent message.\n * @function verify\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Extent.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (!$util.isInteger(message.startBlock) && !(message.startBlock && $util.isInteger(message.startBlock.low) && $util.isInteger(message.startBlock.high)))\n return \"startBlock: integer|Long expected\";\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (!$util.isInteger(message.numBlocks) && !(message.numBlocks && $util.isInteger(message.numBlocks.low) && $util.isInteger(message.numBlocks.high)))\n return \"numBlocks: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an Extent message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Extent} Extent\n */\n Extent.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Extent)\n return object;\n let message = new $root.chromeos_update_engine.Extent();\n if (object.startBlock != null)\n if ($util.Long)\n (message.startBlock = $util.Long.fromValue(object.startBlock)).unsigned = true;\n else if (typeof object.startBlock === \"string\")\n message.startBlock = parseInt(object.startBlock, 10);\n else if (typeof object.startBlock === \"number\")\n message.startBlock = object.startBlock;\n else if (typeof object.startBlock === \"object\")\n message.startBlock = new $util.LongBits(object.startBlock.low >>> 0, object.startBlock.high >>> 0).toNumber(true);\n if (object.numBlocks != null)\n if ($util.Long)\n (message.numBlocks = $util.Long.fromValue(object.numBlocks)).unsigned = true;\n else if (typeof object.numBlocks === \"string\")\n message.numBlocks = parseInt(object.numBlocks, 10);\n else if (typeof object.numBlocks === \"number\")\n message.numBlocks = object.numBlocks;\n else if (typeof object.numBlocks === \"object\")\n message.numBlocks = new $util.LongBits(object.numBlocks.low >>> 0, object.numBlocks.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from an Extent message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Extent\n * @static\n * @param {chromeos_update_engine.Extent} message Extent\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Extent.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.startBlock = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.startBlock = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.numBlocks = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.numBlocks = options.longs === String ? \"0\" : 0;\n }\n if (message.startBlock != null && message.hasOwnProperty(\"startBlock\"))\n if (typeof message.startBlock === \"number\")\n object.startBlock = options.longs === String ? String(message.startBlock) : message.startBlock;\n else\n object.startBlock = options.longs === String ? $util.Long.prototype.toString.call(message.startBlock) : options.longs === Number ? new $util.LongBits(message.startBlock.low >>> 0, message.startBlock.high >>> 0).toNumber(true) : message.startBlock;\n if (message.numBlocks != null && message.hasOwnProperty(\"numBlocks\"))\n if (typeof message.numBlocks === \"number\")\n object.numBlocks = options.longs === String ? String(message.numBlocks) : message.numBlocks;\n else\n object.numBlocks = options.longs === String ? $util.Long.prototype.toString.call(message.numBlocks) : options.longs === Number ? new $util.LongBits(message.numBlocks.low >>> 0, message.numBlocks.high >>> 0).toNumber(true) : message.numBlocks;\n return object;\n };\n\n /**\n * Converts this Extent to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Extent\n * @instance\n * @returns {Object.} JSON object\n */\n Extent.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Extent;\n })();\n\n chromeos_update_engine.Signatures = (function() {\n\n /**\n * Properties of a Signatures.\n * @memberof chromeos_update_engine\n * @interface ISignatures\n * @property {Array.|null} [signatures] Signatures signatures\n */\n\n /**\n * Constructs a new Signatures.\n * @memberof chromeos_update_engine\n * @classdesc Represents a Signatures.\n * @implements ISignatures\n * @constructor\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n */\n function Signatures(properties) {\n this.signatures = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signatures signatures.\n * @member {Array.} signatures\n * @memberof chromeos_update_engine.Signatures\n * @instance\n */\n Signatures.prototype.signatures = $util.emptyArray;\n\n /**\n * Creates a new Signatures instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures} Signatures instance\n */\n Signatures.create = function create(properties) {\n return new Signatures(properties);\n };\n\n /**\n * Encodes the specified Signatures message. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.signatures != null && message.signatures.length)\n for (let i = 0; i < message.signatures.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.signatures[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Signatures message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.ISignatures} message Signatures message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signatures.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.signatures && message.signatures.length))\n message.signatures = [];\n message.signatures.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signatures message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures} Signatures\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signatures.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signatures message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signatures.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.signatures != null && message.hasOwnProperty(\"signatures\")) {\n if (!Array.isArray(message.signatures))\n return \"signatures: array expected\";\n for (let i = 0; i < message.signatures.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.signatures[i]);\n if (error)\n return \"signatures.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a Signatures message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures} Signatures\n */\n Signatures.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures)\n return object;\n let message = new $root.chromeos_update_engine.Signatures();\n if (object.signatures) {\n if (!Array.isArray(object.signatures))\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: array expected\");\n message.signatures = [];\n for (let i = 0; i < object.signatures.length; ++i) {\n if (typeof object.signatures[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.Signatures.signatures: object expected\");\n message.signatures[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.signatures[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Signatures message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures\n * @static\n * @param {chromeos_update_engine.Signatures} message Signatures\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signatures.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.signatures = [];\n if (message.signatures && message.signatures.length) {\n object.signatures = [];\n for (let j = 0; j < message.signatures.length; ++j)\n object.signatures[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.signatures[j], options);\n }\n return object;\n };\n\n /**\n * Converts this Signatures to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures\n * @instance\n * @returns {Object.} JSON object\n */\n Signatures.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n Signatures.Signature = (function() {\n\n /**\n * Properties of a Signature.\n * @memberof chromeos_update_engine.Signatures\n * @interface ISignature\n * @property {number|null} [version] Signature version\n * @property {Uint8Array|null} [data] Signature data\n * @property {number|null} [unpaddedSignatureSize] Signature unpaddedSignatureSize\n */\n\n /**\n * Constructs a new Signature.\n * @memberof chromeos_update_engine.Signatures\n * @classdesc Represents a Signature.\n * @implements ISignature\n * @constructor\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n */\n function Signature(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Signature version.\n * @member {number} version\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.version = 0;\n\n /**\n * Signature data.\n * @member {Uint8Array} data\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.data = $util.newBuffer([]);\n\n /**\n * Signature unpaddedSignatureSize.\n * @member {number} unpaddedSignatureSize\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n */\n Signature.prototype.unpaddedSignatureSize = 0;\n\n /**\n * Creates a new Signature instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature=} [properties] Properties to set\n * @returns {chromeos_update_engine.Signatures.Signature} Signature instance\n */\n Signature.create = function create(properties) {\n return new Signature(properties);\n };\n\n /**\n * Encodes the specified Signature message. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.version);\n if (message.data != null && Object.hasOwnProperty.call(message, \"data\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.data);\n if (message.unpaddedSignatureSize != null && Object.hasOwnProperty.call(message, \"unpaddedSignatureSize\"))\n writer.uint32(/* id 3, wireType 5 =*/29).fixed32(message.unpaddedSignatureSize);\n return writer;\n };\n\n /**\n * Encodes the specified Signature message, length delimited. Does not implicitly {@link chromeos_update_engine.Signatures.Signature.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.ISignature} message Signature message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Signature.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.Signatures.Signature();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.version = reader.uint32();\n break;\n case 2:\n message.data = reader.bytes();\n break;\n case 3:\n message.unpaddedSignatureSize = reader.fixed32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Signature message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Signature.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Signature message.\n * @function verify\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Signature.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version))\n return \"version: integer expected\";\n if (message.data != null && message.hasOwnProperty(\"data\"))\n if (!(message.data && typeof message.data.length === \"number\" || $util.isString(message.data)))\n return \"data: buffer expected\";\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n if (!$util.isInteger(message.unpaddedSignatureSize))\n return \"unpaddedSignatureSize: integer expected\";\n return null;\n };\n\n /**\n * Creates a Signature message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.Signatures.Signature} Signature\n */\n Signature.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.Signatures.Signature)\n return object;\n let message = new $root.chromeos_update_engine.Signatures.Signature();\n if (object.version != null)\n message.version = object.version >>> 0;\n if (object.data != null)\n if (typeof object.data === \"string\")\n $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);\n else if (object.data.length)\n message.data = object.data;\n if (object.unpaddedSignatureSize != null)\n message.unpaddedSignatureSize = object.unpaddedSignatureSize >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a Signature message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.Signatures.Signature\n * @static\n * @param {chromeos_update_engine.Signatures.Signature} message Signature\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Signature.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.version = 0;\n if (options.bytes === String)\n object.data = \"\";\n else {\n object.data = [];\n if (options.bytes !== Array)\n object.data = $util.newBuffer(object.data);\n }\n object.unpaddedSignatureSize = 0;\n }\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.data != null && message.hasOwnProperty(\"data\"))\n object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;\n if (message.unpaddedSignatureSize != null && message.hasOwnProperty(\"unpaddedSignatureSize\"))\n object.unpaddedSignatureSize = message.unpaddedSignatureSize;\n return object;\n };\n\n /**\n * Converts this Signature to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.Signatures.Signature\n * @instance\n * @returns {Object.} JSON object\n */\n Signature.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Signature;\n })();\n\n return Signatures;\n })();\n\n chromeos_update_engine.PartitionInfo = (function() {\n\n /**\n * Properties of a PartitionInfo.\n * @memberof chromeos_update_engine\n * @interface IPartitionInfo\n * @property {number|Long|null} [size] PartitionInfo size\n * @property {Uint8Array|null} [hash] PartitionInfo hash\n */\n\n /**\n * Constructs a new PartitionInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionInfo.\n * @implements IPartitionInfo\n * @constructor\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n */\n function PartitionInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionInfo size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * PartitionInfo hash.\n * @member {Uint8Array} hash\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n */\n PartitionInfo.prototype.hash = $util.newBuffer([]);\n\n /**\n * Creates a new PartitionInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo instance\n */\n PartitionInfo.create = function create(properties) {\n return new PartitionInfo(properties);\n };\n\n /**\n * Encodes the specified PartitionInfo message. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.size);\n if (message.hash != null && Object.hasOwnProperty.call(message, \"hash\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.hash);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.IPartitionInfo} message PartitionInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.size = reader.uint64();\n break;\n case 2:\n message.hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a PartitionInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionInfo message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n if (!(message.hash && typeof message.hash.length === \"number\" || $util.isString(message.hash)))\n return \"hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates a PartitionInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionInfo} PartitionInfo\n */\n PartitionInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionInfo)\n return object;\n let message = new $root.chromeos_update_engine.PartitionInfo();\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.hash != null)\n if (typeof object.hash === \"string\")\n $util.base64.decode(object.hash, message.hash = $util.newBuffer($util.base64.length(object.hash)), 0);\n else if (object.hash.length)\n message.hash = object.hash;\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionInfo\n * @static\n * @param {chromeos_update_engine.PartitionInfo} message PartitionInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.hash = \"\";\n else {\n object.hash = [];\n if (options.bytes !== Array)\n object.hash = $util.newBuffer(object.hash);\n }\n }\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.hash != null && message.hasOwnProperty(\"hash\"))\n object.hash = options.bytes === String ? $util.base64.encode(message.hash, 0, message.hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.hash) : message.hash;\n return object;\n };\n\n /**\n * Converts this PartitionInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionInfo\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionInfo;\n })();\n\n chromeos_update_engine.InstallOperation = (function() {\n\n /**\n * Properties of an InstallOperation.\n * @memberof chromeos_update_engine\n * @interface IInstallOperation\n * @property {chromeos_update_engine.InstallOperation.Type} type InstallOperation type\n * @property {number|Long|null} [dataOffset] InstallOperation dataOffset\n * @property {number|Long|null} [dataLength] InstallOperation dataLength\n * @property {Array.|null} [srcExtents] InstallOperation srcExtents\n * @property {number|Long|null} [srcLength] InstallOperation srcLength\n * @property {Array.|null} [dstExtents] InstallOperation dstExtents\n * @property {number|Long|null} [dstLength] InstallOperation dstLength\n * @property {Uint8Array|null} [dataSha256Hash] InstallOperation dataSha256Hash\n * @property {Uint8Array|null} [srcSha256Hash] InstallOperation srcSha256Hash\n */\n\n /**\n * Constructs a new InstallOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents an InstallOperation.\n * @implements IInstallOperation\n * @constructor\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n */\n function InstallOperation(properties) {\n this.srcExtents = [];\n this.dstExtents = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * InstallOperation type.\n * @member {chromeos_update_engine.InstallOperation.Type} type\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.type = 0;\n\n /**\n * InstallOperation dataOffset.\n * @member {number|Long} dataOffset\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataLength.\n * @member {number|Long} dataLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation srcExtents.\n * @member {Array.} srcExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcExtents = $util.emptyArray;\n\n /**\n * InstallOperation srcLength.\n * @member {number|Long} srcLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dstExtents.\n * @member {Array.} dstExtents\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstExtents = $util.emptyArray;\n\n /**\n * InstallOperation dstLength.\n * @member {number|Long} dstLength\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dstLength = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * InstallOperation dataSha256Hash.\n * @member {Uint8Array} dataSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.dataSha256Hash = $util.newBuffer([]);\n\n /**\n * InstallOperation srcSha256Hash.\n * @member {Uint8Array} srcSha256Hash\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n */\n InstallOperation.prototype.srcSha256Hash = $util.newBuffer([]);\n\n /**\n * Creates a new InstallOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation instance\n */\n InstallOperation.create = function create(properties) {\n return new InstallOperation(properties);\n };\n\n /**\n * Encodes the specified InstallOperation message. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.dataOffset != null && Object.hasOwnProperty.call(message, \"dataOffset\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.dataOffset);\n if (message.dataLength != null && Object.hasOwnProperty.call(message, \"dataLength\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.dataLength);\n if (message.srcExtents != null && message.srcExtents.length)\n for (let i = 0; i < message.srcExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.srcExtents[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.srcLength != null && Object.hasOwnProperty.call(message, \"srcLength\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.srcLength);\n if (message.dstExtents != null && message.dstExtents.length)\n for (let i = 0; i < message.dstExtents.length; ++i)\n $root.chromeos_update_engine.Extent.encode(message.dstExtents[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.dstLength != null && Object.hasOwnProperty.call(message, \"dstLength\"))\n writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.dstLength);\n if (message.dataSha256Hash != null && Object.hasOwnProperty.call(message, \"dataSha256Hash\"))\n writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.dataSha256Hash);\n if (message.srcSha256Hash != null && Object.hasOwnProperty.call(message, \"srcSha256Hash\"))\n writer.uint32(/* id 9, wireType 2 =*/74).bytes(message.srcSha256Hash);\n return writer;\n };\n\n /**\n * Encodes the specified InstallOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.InstallOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.IInstallOperation} message InstallOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n InstallOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.InstallOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.dataOffset = reader.uint64();\n break;\n case 3:\n message.dataLength = reader.uint64();\n break;\n case 4:\n if (!(message.srcExtents && message.srcExtents.length))\n message.srcExtents = [];\n message.srcExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 5:\n message.srcLength = reader.uint64();\n break;\n case 6:\n if (!(message.dstExtents && message.dstExtents.length))\n message.dstExtents = [];\n message.dstExtents.push($root.chromeos_update_engine.Extent.decode(reader, reader.uint32()));\n break;\n case 7:\n message.dstLength = reader.uint64();\n break;\n case 8:\n message.dataSha256Hash = reader.bytes();\n break;\n case 9:\n message.srcSha256Hash = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"type\"))\n throw $util.ProtocolError(\"missing required 'type'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes an InstallOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n InstallOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an InstallOperation message.\n * @function verify\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n InstallOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 8:\n case 6:\n case 7:\n case 10:\n case 9:\n case 11:\n case 12:\n case 13:\n break;\n }\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (!$util.isInteger(message.dataOffset) && !(message.dataOffset && $util.isInteger(message.dataOffset.low) && $util.isInteger(message.dataOffset.high)))\n return \"dataOffset: integer|Long expected\";\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (!$util.isInteger(message.dataLength) && !(message.dataLength && $util.isInteger(message.dataLength.low) && $util.isInteger(message.dataLength.high)))\n return \"dataLength: integer|Long expected\";\n if (message.srcExtents != null && message.hasOwnProperty(\"srcExtents\")) {\n if (!Array.isArray(message.srcExtents))\n return \"srcExtents: array expected\";\n for (let i = 0; i < message.srcExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtents[i]);\n if (error)\n return \"srcExtents.\" + error;\n }\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (!$util.isInteger(message.srcLength) && !(message.srcLength && $util.isInteger(message.srcLength.low) && $util.isInteger(message.srcLength.high)))\n return \"srcLength: integer|Long expected\";\n if (message.dstExtents != null && message.hasOwnProperty(\"dstExtents\")) {\n if (!Array.isArray(message.dstExtents))\n return \"dstExtents: array expected\";\n for (let i = 0; i < message.dstExtents.length; ++i) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtents[i]);\n if (error)\n return \"dstExtents.\" + error;\n }\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (!$util.isInteger(message.dstLength) && !(message.dstLength && $util.isInteger(message.dstLength.low) && $util.isInteger(message.dstLength.high)))\n return \"dstLength: integer|Long expected\";\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n if (!(message.dataSha256Hash && typeof message.dataSha256Hash.length === \"number\" || $util.isString(message.dataSha256Hash)))\n return \"dataSha256Hash: buffer expected\";\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n if (!(message.srcSha256Hash && typeof message.srcSha256Hash.length === \"number\" || $util.isString(message.srcSha256Hash)))\n return \"srcSha256Hash: buffer expected\";\n return null;\n };\n\n /**\n * Creates an InstallOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.InstallOperation} InstallOperation\n */\n InstallOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.InstallOperation)\n return object;\n let message = new $root.chromeos_update_engine.InstallOperation();\n switch (object.type) {\n case \"REPLACE\":\n case 0:\n message.type = 0;\n break;\n case \"REPLACE_BZ\":\n case 1:\n message.type = 1;\n break;\n case \"MOVE\":\n case 2:\n message.type = 2;\n break;\n case \"BSDIFF\":\n case 3:\n message.type = 3;\n break;\n case \"SOURCE_COPY\":\n case 4:\n message.type = 4;\n break;\n case \"SOURCE_BSDIFF\":\n case 5:\n message.type = 5;\n break;\n case \"REPLACE_XZ\":\n case 8:\n message.type = 8;\n break;\n case \"ZERO\":\n case 6:\n message.type = 6;\n break;\n case \"DISCARD\":\n case 7:\n message.type = 7;\n break;\n case \"BROTLI_BSDIFF\":\n case 10:\n message.type = 10;\n break;\n case \"PUFFDIFF\":\n case 9:\n message.type = 9;\n break;\n case \"ZUCCHINI\":\n case 11:\n message.type = 11;\n break;\n case \"LZ4DIFF_BSDIFF\":\n case 12:\n message.type = 12;\n break;\n case \"LZ4DIFF_PUFFDIFF\":\n case 13:\n message.type = 13;\n break;\n }\n if (object.dataOffset != null)\n if ($util.Long)\n (message.dataOffset = $util.Long.fromValue(object.dataOffset)).unsigned = true;\n else if (typeof object.dataOffset === \"string\")\n message.dataOffset = parseInt(object.dataOffset, 10);\n else if (typeof object.dataOffset === \"number\")\n message.dataOffset = object.dataOffset;\n else if (typeof object.dataOffset === \"object\")\n message.dataOffset = new $util.LongBits(object.dataOffset.low >>> 0, object.dataOffset.high >>> 0).toNumber(true);\n if (object.dataLength != null)\n if ($util.Long)\n (message.dataLength = $util.Long.fromValue(object.dataLength)).unsigned = true;\n else if (typeof object.dataLength === \"string\")\n message.dataLength = parseInt(object.dataLength, 10);\n else if (typeof object.dataLength === \"number\")\n message.dataLength = object.dataLength;\n else if (typeof object.dataLength === \"object\")\n message.dataLength = new $util.LongBits(object.dataLength.low >>> 0, object.dataLength.high >>> 0).toNumber(true);\n if (object.srcExtents) {\n if (!Array.isArray(object.srcExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: array expected\");\n message.srcExtents = [];\n for (let i = 0; i < object.srcExtents.length; ++i) {\n if (typeof object.srcExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.srcExtents: object expected\");\n message.srcExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.srcExtents[i]);\n }\n }\n if (object.srcLength != null)\n if ($util.Long)\n (message.srcLength = $util.Long.fromValue(object.srcLength)).unsigned = true;\n else if (typeof object.srcLength === \"string\")\n message.srcLength = parseInt(object.srcLength, 10);\n else if (typeof object.srcLength === \"number\")\n message.srcLength = object.srcLength;\n else if (typeof object.srcLength === \"object\")\n message.srcLength = new $util.LongBits(object.srcLength.low >>> 0, object.srcLength.high >>> 0).toNumber(true);\n if (object.dstExtents) {\n if (!Array.isArray(object.dstExtents))\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: array expected\");\n message.dstExtents = [];\n for (let i = 0; i < object.dstExtents.length; ++i) {\n if (typeof object.dstExtents[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.InstallOperation.dstExtents: object expected\");\n message.dstExtents[i] = $root.chromeos_update_engine.Extent.fromObject(object.dstExtents[i]);\n }\n }\n if (object.dstLength != null)\n if ($util.Long)\n (message.dstLength = $util.Long.fromValue(object.dstLength)).unsigned = true;\n else if (typeof object.dstLength === \"string\")\n message.dstLength = parseInt(object.dstLength, 10);\n else if (typeof object.dstLength === \"number\")\n message.dstLength = object.dstLength;\n else if (typeof object.dstLength === \"object\")\n message.dstLength = new $util.LongBits(object.dstLength.low >>> 0, object.dstLength.high >>> 0).toNumber(true);\n if (object.dataSha256Hash != null)\n if (typeof object.dataSha256Hash === \"string\")\n $util.base64.decode(object.dataSha256Hash, message.dataSha256Hash = $util.newBuffer($util.base64.length(object.dataSha256Hash)), 0);\n else if (object.dataSha256Hash.length)\n message.dataSha256Hash = object.dataSha256Hash;\n if (object.srcSha256Hash != null)\n if (typeof object.srcSha256Hash === \"string\")\n $util.base64.decode(object.srcSha256Hash, message.srcSha256Hash = $util.newBuffer($util.base64.length(object.srcSha256Hash)), 0);\n else if (object.srcSha256Hash.length)\n message.srcSha256Hash = object.srcSha256Hash;\n return message;\n };\n\n /**\n * Creates a plain object from an InstallOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.InstallOperation\n * @static\n * @param {chromeos_update_engine.InstallOperation} message InstallOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n InstallOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.srcExtents = [];\n object.dstExtents = [];\n }\n if (options.defaults) {\n object.type = options.enums === String ? \"REPLACE\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dataLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dataLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.srcLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.srcLength = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.dstLength = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.dstLength = options.longs === String ? \"0\" : 0;\n if (options.bytes === String)\n object.dataSha256Hash = \"\";\n else {\n object.dataSha256Hash = [];\n if (options.bytes !== Array)\n object.dataSha256Hash = $util.newBuffer(object.dataSha256Hash);\n }\n if (options.bytes === String)\n object.srcSha256Hash = \"\";\n else {\n object.srcSha256Hash = [];\n if (options.bytes !== Array)\n object.srcSha256Hash = $util.newBuffer(object.srcSha256Hash);\n }\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.InstallOperation.Type[message.type] : message.type;\n if (message.dataOffset != null && message.hasOwnProperty(\"dataOffset\"))\n if (typeof message.dataOffset === \"number\")\n object.dataOffset = options.longs === String ? String(message.dataOffset) : message.dataOffset;\n else\n object.dataOffset = options.longs === String ? $util.Long.prototype.toString.call(message.dataOffset) : options.longs === Number ? new $util.LongBits(message.dataOffset.low >>> 0, message.dataOffset.high >>> 0).toNumber(true) : message.dataOffset;\n if (message.dataLength != null && message.hasOwnProperty(\"dataLength\"))\n if (typeof message.dataLength === \"number\")\n object.dataLength = options.longs === String ? String(message.dataLength) : message.dataLength;\n else\n object.dataLength = options.longs === String ? $util.Long.prototype.toString.call(message.dataLength) : options.longs === Number ? new $util.LongBits(message.dataLength.low >>> 0, message.dataLength.high >>> 0).toNumber(true) : message.dataLength;\n if (message.srcExtents && message.srcExtents.length) {\n object.srcExtents = [];\n for (let j = 0; j < message.srcExtents.length; ++j)\n object.srcExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.srcExtents[j], options);\n }\n if (message.srcLength != null && message.hasOwnProperty(\"srcLength\"))\n if (typeof message.srcLength === \"number\")\n object.srcLength = options.longs === String ? String(message.srcLength) : message.srcLength;\n else\n object.srcLength = options.longs === String ? $util.Long.prototype.toString.call(message.srcLength) : options.longs === Number ? new $util.LongBits(message.srcLength.low >>> 0, message.srcLength.high >>> 0).toNumber(true) : message.srcLength;\n if (message.dstExtents && message.dstExtents.length) {\n object.dstExtents = [];\n for (let j = 0; j < message.dstExtents.length; ++j)\n object.dstExtents[j] = $root.chromeos_update_engine.Extent.toObject(message.dstExtents[j], options);\n }\n if (message.dstLength != null && message.hasOwnProperty(\"dstLength\"))\n if (typeof message.dstLength === \"number\")\n object.dstLength = options.longs === String ? String(message.dstLength) : message.dstLength;\n else\n object.dstLength = options.longs === String ? $util.Long.prototype.toString.call(message.dstLength) : options.longs === Number ? new $util.LongBits(message.dstLength.low >>> 0, message.dstLength.high >>> 0).toNumber(true) : message.dstLength;\n if (message.dataSha256Hash != null && message.hasOwnProperty(\"dataSha256Hash\"))\n object.dataSha256Hash = options.bytes === String ? $util.base64.encode(message.dataSha256Hash, 0, message.dataSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.dataSha256Hash) : message.dataSha256Hash;\n if (message.srcSha256Hash != null && message.hasOwnProperty(\"srcSha256Hash\"))\n object.srcSha256Hash = options.bytes === String ? $util.base64.encode(message.srcSha256Hash, 0, message.srcSha256Hash.length) : options.bytes === Array ? Array.prototype.slice.call(message.srcSha256Hash) : message.srcSha256Hash;\n return object;\n };\n\n /**\n * Converts this InstallOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.InstallOperation\n * @instance\n * @returns {Object.} JSON object\n */\n InstallOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.InstallOperation.Type\n * @enum {number}\n * @property {number} REPLACE=0 REPLACE value\n * @property {number} REPLACE_BZ=1 REPLACE_BZ value\n * @property {number} MOVE=2 MOVE value\n * @property {number} BSDIFF=3 BSDIFF value\n * @property {number} SOURCE_COPY=4 SOURCE_COPY value\n * @property {number} SOURCE_BSDIFF=5 SOURCE_BSDIFF value\n * @property {number} REPLACE_XZ=8 REPLACE_XZ value\n * @property {number} ZERO=6 ZERO value\n * @property {number} DISCARD=7 DISCARD value\n * @property {number} BROTLI_BSDIFF=10 BROTLI_BSDIFF value\n * @property {number} PUFFDIFF=9 PUFFDIFF value\n * @property {number} ZUCCHINI=11 ZUCCHINI value\n * @property {number} LZ4DIFF_BSDIFF=12 LZ4DIFF_BSDIFF value\n * @property {number} LZ4DIFF_PUFFDIFF=13 LZ4DIFF_PUFFDIFF value\n */\n InstallOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"REPLACE\"] = 0;\n values[valuesById[1] = \"REPLACE_BZ\"] = 1;\n values[valuesById[2] = \"MOVE\"] = 2;\n values[valuesById[3] = \"BSDIFF\"] = 3;\n values[valuesById[4] = \"SOURCE_COPY\"] = 4;\n values[valuesById[5] = \"SOURCE_BSDIFF\"] = 5;\n values[valuesById[8] = \"REPLACE_XZ\"] = 8;\n values[valuesById[6] = \"ZERO\"] = 6;\n values[valuesById[7] = \"DISCARD\"] = 7;\n values[valuesById[10] = \"BROTLI_BSDIFF\"] = 10;\n values[valuesById[9] = \"PUFFDIFF\"] = 9;\n values[valuesById[11] = \"ZUCCHINI\"] = 11;\n values[valuesById[12] = \"LZ4DIFF_BSDIFF\"] = 12;\n values[valuesById[13] = \"LZ4DIFF_PUFFDIFF\"] = 13;\n return values;\n })();\n\n return InstallOperation;\n })();\n\n chromeos_update_engine.CowMergeOperation = (function() {\n\n /**\n * Properties of a CowMergeOperation.\n * @memberof chromeos_update_engine\n * @interface ICowMergeOperation\n * @property {chromeos_update_engine.CowMergeOperation.Type|null} [type] CowMergeOperation type\n * @property {chromeos_update_engine.IExtent|null} [srcExtent] CowMergeOperation srcExtent\n * @property {chromeos_update_engine.IExtent|null} [dstExtent] CowMergeOperation dstExtent\n * @property {number|null} [srcOffset] CowMergeOperation srcOffset\n */\n\n /**\n * Constructs a new CowMergeOperation.\n * @memberof chromeos_update_engine\n * @classdesc Represents a CowMergeOperation.\n * @implements ICowMergeOperation\n * @constructor\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n */\n function CowMergeOperation(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * CowMergeOperation type.\n * @member {chromeos_update_engine.CowMergeOperation.Type} type\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.type = 0;\n\n /**\n * CowMergeOperation srcExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} srcExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcExtent = null;\n\n /**\n * CowMergeOperation dstExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} dstExtent\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.dstExtent = null;\n\n /**\n * CowMergeOperation srcOffset.\n * @member {number} srcOffset\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n */\n CowMergeOperation.prototype.srcOffset = 0;\n\n /**\n * Creates a new CowMergeOperation instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation=} [properties] Properties to set\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation instance\n */\n CowMergeOperation.create = function create(properties) {\n return new CowMergeOperation(properties);\n };\n\n /**\n * Encodes the specified CowMergeOperation message. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.srcExtent != null && Object.hasOwnProperty.call(message, \"srcExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.srcExtent, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.dstExtent != null && Object.hasOwnProperty.call(message, \"dstExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.dstExtent, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.srcOffset != null && Object.hasOwnProperty.call(message, \"srcOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.srcOffset);\n return writer;\n };\n\n /**\n * Encodes the specified CowMergeOperation message, length delimited. Does not implicitly {@link chromeos_update_engine.CowMergeOperation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.ICowMergeOperation} message CowMergeOperation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CowMergeOperation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.CowMergeOperation();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.srcExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 3:\n message.dstExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 4:\n message.srcOffset = reader.uint32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a CowMergeOperation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CowMergeOperation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a CowMergeOperation message.\n * @function verify\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n CowMergeOperation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 0:\n case 1:\n case 2:\n break;\n }\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.srcExtent);\n if (error)\n return \"srcExtent.\" + error;\n }\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.dstExtent);\n if (error)\n return \"dstExtent.\" + error;\n }\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n if (!$util.isInteger(message.srcOffset))\n return \"srcOffset: integer expected\";\n return null;\n };\n\n /**\n * Creates a CowMergeOperation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.CowMergeOperation} CowMergeOperation\n */\n CowMergeOperation.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.CowMergeOperation)\n return object;\n let message = new $root.chromeos_update_engine.CowMergeOperation();\n switch (object.type) {\n case \"COW_COPY\":\n case 0:\n message.type = 0;\n break;\n case \"COW_XOR\":\n case 1:\n message.type = 1;\n break;\n case \"COW_REPLACE\":\n case 2:\n message.type = 2;\n break;\n }\n if (object.srcExtent != null) {\n if (typeof object.srcExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.srcExtent: object expected\");\n message.srcExtent = $root.chromeos_update_engine.Extent.fromObject(object.srcExtent);\n }\n if (object.dstExtent != null) {\n if (typeof object.dstExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.CowMergeOperation.dstExtent: object expected\");\n message.dstExtent = $root.chromeos_update_engine.Extent.fromObject(object.dstExtent);\n }\n if (object.srcOffset != null)\n message.srcOffset = object.srcOffset >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a CowMergeOperation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.CowMergeOperation\n * @static\n * @param {chromeos_update_engine.CowMergeOperation} message CowMergeOperation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n CowMergeOperation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"COW_COPY\" : 0;\n object.srcExtent = null;\n object.dstExtent = null;\n object.srcOffset = 0;\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.chromeos_update_engine.CowMergeOperation.Type[message.type] : message.type;\n if (message.srcExtent != null && message.hasOwnProperty(\"srcExtent\"))\n object.srcExtent = $root.chromeos_update_engine.Extent.toObject(message.srcExtent, options);\n if (message.dstExtent != null && message.hasOwnProperty(\"dstExtent\"))\n object.dstExtent = $root.chromeos_update_engine.Extent.toObject(message.dstExtent, options);\n if (message.srcOffset != null && message.hasOwnProperty(\"srcOffset\"))\n object.srcOffset = message.srcOffset;\n return object;\n };\n\n /**\n * Converts this CowMergeOperation to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.CowMergeOperation\n * @instance\n * @returns {Object.} JSON object\n */\n CowMergeOperation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Type enum.\n * @name chromeos_update_engine.CowMergeOperation.Type\n * @enum {number}\n * @property {number} COW_COPY=0 COW_COPY value\n * @property {number} COW_XOR=1 COW_XOR value\n * @property {number} COW_REPLACE=2 COW_REPLACE value\n */\n CowMergeOperation.Type = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"COW_COPY\"] = 0;\n values[valuesById[1] = \"COW_XOR\"] = 1;\n values[valuesById[2] = \"COW_REPLACE\"] = 2;\n return values;\n })();\n\n return CowMergeOperation;\n })();\n\n chromeos_update_engine.PartitionUpdate = (function() {\n\n /**\n * Properties of a PartitionUpdate.\n * @memberof chromeos_update_engine\n * @interface IPartitionUpdate\n * @property {string} partitionName PartitionUpdate partitionName\n * @property {boolean|null} [runPostinstall] PartitionUpdate runPostinstall\n * @property {string|null} [postinstallPath] PartitionUpdate postinstallPath\n * @property {string|null} [filesystemType] PartitionUpdate filesystemType\n * @property {Array.|null} [newPartitionSignature] PartitionUpdate newPartitionSignature\n * @property {chromeos_update_engine.IPartitionInfo|null} [oldPartitionInfo] PartitionUpdate oldPartitionInfo\n * @property {chromeos_update_engine.IPartitionInfo|null} [newPartitionInfo] PartitionUpdate newPartitionInfo\n * @property {Array.|null} [operations] PartitionUpdate operations\n * @property {boolean|null} [postinstallOptional] PartitionUpdate postinstallOptional\n * @property {chromeos_update_engine.IExtent|null} [hashTreeDataExtent] PartitionUpdate hashTreeDataExtent\n * @property {chromeos_update_engine.IExtent|null} [hashTreeExtent] PartitionUpdate hashTreeExtent\n * @property {string|null} [hashTreeAlgorithm] PartitionUpdate hashTreeAlgorithm\n * @property {Uint8Array|null} [hashTreeSalt] PartitionUpdate hashTreeSalt\n * @property {chromeos_update_engine.IExtent|null} [fecDataExtent] PartitionUpdate fecDataExtent\n * @property {chromeos_update_engine.IExtent|null} [fecExtent] PartitionUpdate fecExtent\n * @property {number|null} [fecRoots] PartitionUpdate fecRoots\n * @property {string|null} [version] PartitionUpdate version\n * @property {Array.|null} [mergeOperations] PartitionUpdate mergeOperations\n * @property {number|Long|null} [estimateCowSize] PartitionUpdate estimateCowSize\n * @property {number|Long|null} [estimateOpCountMax] PartitionUpdate estimateOpCountMax\n */\n\n /**\n * Constructs a new PartitionUpdate.\n * @memberof chromeos_update_engine\n * @classdesc Represents a PartitionUpdate.\n * @implements IPartitionUpdate\n * @constructor\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n */\n function PartitionUpdate(properties) {\n this.newPartitionSignature = [];\n this.operations = [];\n this.mergeOperations = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PartitionUpdate partitionName.\n * @member {string} partitionName\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.partitionName = \"\";\n\n /**\n * PartitionUpdate runPostinstall.\n * @member {boolean} runPostinstall\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.runPostinstall = false;\n\n /**\n * PartitionUpdate postinstallPath.\n * @member {string} postinstallPath\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallPath = \"\";\n\n /**\n * PartitionUpdate filesystemType.\n * @member {string} filesystemType\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.filesystemType = \"\";\n\n /**\n * PartitionUpdate newPartitionSignature.\n * @member {Array.} newPartitionSignature\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionSignature = $util.emptyArray;\n\n /**\n * PartitionUpdate oldPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} oldPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.oldPartitionInfo = null;\n\n /**\n * PartitionUpdate newPartitionInfo.\n * @member {chromeos_update_engine.IPartitionInfo|null|undefined} newPartitionInfo\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.newPartitionInfo = null;\n\n /**\n * PartitionUpdate operations.\n * @member {Array.} operations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.operations = $util.emptyArray;\n\n /**\n * PartitionUpdate postinstallOptional.\n * @member {boolean} postinstallOptional\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.postinstallOptional = false;\n\n /**\n * PartitionUpdate hashTreeDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeDataExtent = null;\n\n /**\n * PartitionUpdate hashTreeExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} hashTreeExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeExtent = null;\n\n /**\n * PartitionUpdate hashTreeAlgorithm.\n * @member {string} hashTreeAlgorithm\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeAlgorithm = \"\";\n\n /**\n * PartitionUpdate hashTreeSalt.\n * @member {Uint8Array} hashTreeSalt\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.hashTreeSalt = $util.newBuffer([]);\n\n /**\n * PartitionUpdate fecDataExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecDataExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecDataExtent = null;\n\n /**\n * PartitionUpdate fecExtent.\n * @member {chromeos_update_engine.IExtent|null|undefined} fecExtent\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecExtent = null;\n\n /**\n * PartitionUpdate fecRoots.\n * @member {number} fecRoots\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.fecRoots = 2;\n\n /**\n * PartitionUpdate version.\n * @member {string} version\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.version = \"\";\n\n /**\n * PartitionUpdate mergeOperations.\n * @member {Array.} mergeOperations\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.mergeOperations = $util.emptyArray;\n\n /**\n * PartitionUpdate estimateCowSize.\n * @member {number|Long} estimateCowSize\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.estimateCowSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * PartitionUpdate estimateOpCountMax.\n * @member {number|Long} estimateOpCountMax\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n */\n PartitionUpdate.prototype.estimateOpCountMax = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new PartitionUpdate instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate=} [properties] Properties to set\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate instance\n */\n PartitionUpdate.create = function create(properties) {\n return new PartitionUpdate(properties);\n };\n\n /**\n * Encodes the specified PartitionUpdate message. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.partitionName);\n if (message.runPostinstall != null && Object.hasOwnProperty.call(message, \"runPostinstall\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.runPostinstall);\n if (message.postinstallPath != null && Object.hasOwnProperty.call(message, \"postinstallPath\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.postinstallPath);\n if (message.filesystemType != null && Object.hasOwnProperty.call(message, \"filesystemType\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.filesystemType);\n if (message.newPartitionSignature != null && message.newPartitionSignature.length)\n for (let i = 0; i < message.newPartitionSignature.length; ++i)\n $root.chromeos_update_engine.Signatures.Signature.encode(message.newPartitionSignature[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.oldPartitionInfo != null && Object.hasOwnProperty.call(message, \"oldPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.oldPartitionInfo, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.newPartitionInfo != null && Object.hasOwnProperty.call(message, \"newPartitionInfo\"))\n $root.chromeos_update_engine.PartitionInfo.encode(message.newPartitionInfo, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.operations != null && message.operations.length)\n for (let i = 0; i < message.operations.length; ++i)\n $root.chromeos_update_engine.InstallOperation.encode(message.operations[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.postinstallOptional != null && Object.hasOwnProperty.call(message, \"postinstallOptional\"))\n writer.uint32(/* id 9, wireType 0 =*/72).bool(message.postinstallOptional);\n if (message.hashTreeDataExtent != null && Object.hasOwnProperty.call(message, \"hashTreeDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeDataExtent, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.hashTreeExtent != null && Object.hasOwnProperty.call(message, \"hashTreeExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.hashTreeExtent, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.hashTreeAlgorithm != null && Object.hasOwnProperty.call(message, \"hashTreeAlgorithm\"))\n writer.uint32(/* id 12, wireType 2 =*/98).string(message.hashTreeAlgorithm);\n if (message.hashTreeSalt != null && Object.hasOwnProperty.call(message, \"hashTreeSalt\"))\n writer.uint32(/* id 13, wireType 2 =*/106).bytes(message.hashTreeSalt);\n if (message.fecDataExtent != null && Object.hasOwnProperty.call(message, \"fecDataExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecDataExtent, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.fecExtent != null && Object.hasOwnProperty.call(message, \"fecExtent\"))\n $root.chromeos_update_engine.Extent.encode(message.fecExtent, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.fecRoots != null && Object.hasOwnProperty.call(message, \"fecRoots\"))\n writer.uint32(/* id 16, wireType 0 =*/128).uint32(message.fecRoots);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 17, wireType 2 =*/138).string(message.version);\n if (message.mergeOperations != null && message.mergeOperations.length)\n for (let i = 0; i < message.mergeOperations.length; ++i)\n $root.chromeos_update_engine.CowMergeOperation.encode(message.mergeOperations[i], writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n if (message.estimateCowSize != null && Object.hasOwnProperty.call(message, \"estimateCowSize\"))\n writer.uint32(/* id 19, wireType 0 =*/152).uint64(message.estimateCowSize);\n if (message.estimateOpCountMax != null && Object.hasOwnProperty.call(message, \"estimateOpCountMax\"))\n writer.uint32(/* id 20, wireType 0 =*/160).uint64(message.estimateOpCountMax);\n return writer;\n };\n\n /**\n * Encodes the specified PartitionUpdate message, length delimited. Does not implicitly {@link chromeos_update_engine.PartitionUpdate.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.IPartitionUpdate} message PartitionUpdate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PartitionUpdate.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.PartitionUpdate();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.partitionName = reader.string();\n break;\n case 2:\n message.runPostinstall = reader.bool();\n break;\n case 3:\n message.postinstallPath = reader.string();\n break;\n case 4:\n message.filesystemType = reader.string();\n break;\n case 5:\n if (!(message.newPartitionSignature && message.newPartitionSignature.length))\n message.newPartitionSignature = [];\n message.newPartitionSignature.push($root.chromeos_update_engine.Signatures.Signature.decode(reader, reader.uint32()));\n break;\n case 6:\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 7:\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.decode(reader, reader.uint32());\n break;\n case 8:\n if (!(message.operations && message.operations.length))\n message.operations = [];\n message.operations.push($root.chromeos_update_engine.InstallOperation.decode(reader, reader.uint32()));\n break;\n case 9:\n message.postinstallOptional = reader.bool();\n break;\n case 10:\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 11:\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 12:\n message.hashTreeAlgorithm = reader.string();\n break;\n case 13:\n message.hashTreeSalt = reader.bytes();\n break;\n case 14:\n message.fecDataExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 15:\n message.fecExtent = $root.chromeos_update_engine.Extent.decode(reader, reader.uint32());\n break;\n case 16:\n message.fecRoots = reader.uint32();\n break;\n case 17:\n message.version = reader.string();\n break;\n case 18:\n if (!(message.mergeOperations && message.mergeOperations.length))\n message.mergeOperations = [];\n message.mergeOperations.push($root.chromeos_update_engine.CowMergeOperation.decode(reader, reader.uint32()));\n break;\n case 19:\n message.estimateCowSize = reader.uint64();\n break;\n case 20:\n message.estimateOpCountMax = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"partitionName\"))\n throw $util.ProtocolError(\"missing required 'partitionName'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a PartitionUpdate message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PartitionUpdate.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PartitionUpdate message.\n * @function verify\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PartitionUpdate.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.partitionName))\n return \"partitionName: string expected\";\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n if (typeof message.runPostinstall !== \"boolean\")\n return \"runPostinstall: boolean expected\";\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n if (!$util.isString(message.postinstallPath))\n return \"postinstallPath: string expected\";\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n if (!$util.isString(message.filesystemType))\n return \"filesystemType: string expected\";\n if (message.newPartitionSignature != null && message.hasOwnProperty(\"newPartitionSignature\")) {\n if (!Array.isArray(message.newPartitionSignature))\n return \"newPartitionSignature: array expected\";\n for (let i = 0; i < message.newPartitionSignature.length; ++i) {\n let error = $root.chromeos_update_engine.Signatures.Signature.verify(message.newPartitionSignature[i]);\n if (error)\n return \"newPartitionSignature.\" + error;\n }\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.oldPartitionInfo);\n if (error)\n return \"oldPartitionInfo.\" + error;\n }\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\")) {\n let error = $root.chromeos_update_engine.PartitionInfo.verify(message.newPartitionInfo);\n if (error)\n return \"newPartitionInfo.\" + error;\n }\n if (message.operations != null && message.hasOwnProperty(\"operations\")) {\n if (!Array.isArray(message.operations))\n return \"operations: array expected\";\n for (let i = 0; i < message.operations.length; ++i) {\n let error = $root.chromeos_update_engine.InstallOperation.verify(message.operations[i]);\n if (error)\n return \"operations.\" + error;\n }\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n if (typeof message.postinstallOptional !== \"boolean\")\n return \"postinstallOptional: boolean expected\";\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeDataExtent);\n if (error)\n return \"hashTreeDataExtent.\" + error;\n }\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.hashTreeExtent);\n if (error)\n return \"hashTreeExtent.\" + error;\n }\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n if (!$util.isString(message.hashTreeAlgorithm))\n return \"hashTreeAlgorithm: string expected\";\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n if (!(message.hashTreeSalt && typeof message.hashTreeSalt.length === \"number\" || $util.isString(message.hashTreeSalt)))\n return \"hashTreeSalt: buffer expected\";\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecDataExtent);\n if (error)\n return \"fecDataExtent.\" + error;\n }\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\")) {\n let error = $root.chromeos_update_engine.Extent.verify(message.fecExtent);\n if (error)\n return \"fecExtent.\" + error;\n }\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n if (!$util.isInteger(message.fecRoots))\n return \"fecRoots: integer expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isString(message.version))\n return \"version: string expected\";\n if (message.mergeOperations != null && message.hasOwnProperty(\"mergeOperations\")) {\n if (!Array.isArray(message.mergeOperations))\n return \"mergeOperations: array expected\";\n for (let i = 0; i < message.mergeOperations.length; ++i) {\n let error = $root.chromeos_update_engine.CowMergeOperation.verify(message.mergeOperations[i]);\n if (error)\n return \"mergeOperations.\" + error;\n }\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (!$util.isInteger(message.estimateCowSize) && !(message.estimateCowSize && $util.isInteger(message.estimateCowSize.low) && $util.isInteger(message.estimateCowSize.high)))\n return \"estimateCowSize: integer|Long expected\";\n if (message.estimateOpCountMax != null && message.hasOwnProperty(\"estimateOpCountMax\"))\n if (!$util.isInteger(message.estimateOpCountMax) && !(message.estimateOpCountMax && $util.isInteger(message.estimateOpCountMax.low) && $util.isInteger(message.estimateOpCountMax.high)))\n return \"estimateOpCountMax: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a PartitionUpdate message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.PartitionUpdate} PartitionUpdate\n */\n PartitionUpdate.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.PartitionUpdate)\n return object;\n let message = new $root.chromeos_update_engine.PartitionUpdate();\n if (object.partitionName != null)\n message.partitionName = String(object.partitionName);\n if (object.runPostinstall != null)\n message.runPostinstall = Boolean(object.runPostinstall);\n if (object.postinstallPath != null)\n message.postinstallPath = String(object.postinstallPath);\n if (object.filesystemType != null)\n message.filesystemType = String(object.filesystemType);\n if (object.newPartitionSignature) {\n if (!Array.isArray(object.newPartitionSignature))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: array expected\");\n message.newPartitionSignature = [];\n for (let i = 0; i < object.newPartitionSignature.length; ++i) {\n if (typeof object.newPartitionSignature[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionSignature: object expected\");\n message.newPartitionSignature[i] = $root.chromeos_update_engine.Signatures.Signature.fromObject(object.newPartitionSignature[i]);\n }\n }\n if (object.oldPartitionInfo != null) {\n if (typeof object.oldPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.oldPartitionInfo: object expected\");\n message.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.oldPartitionInfo);\n }\n if (object.newPartitionInfo != null) {\n if (typeof object.newPartitionInfo !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.newPartitionInfo: object expected\");\n message.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.fromObject(object.newPartitionInfo);\n }\n if (object.operations) {\n if (!Array.isArray(object.operations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: array expected\");\n message.operations = [];\n for (let i = 0; i < object.operations.length; ++i) {\n if (typeof object.operations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.operations: object expected\");\n message.operations[i] = $root.chromeos_update_engine.InstallOperation.fromObject(object.operations[i]);\n }\n }\n if (object.postinstallOptional != null)\n message.postinstallOptional = Boolean(object.postinstallOptional);\n if (object.hashTreeDataExtent != null) {\n if (typeof object.hashTreeDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeDataExtent: object expected\");\n message.hashTreeDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeDataExtent);\n }\n if (object.hashTreeExtent != null) {\n if (typeof object.hashTreeExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.hashTreeExtent: object expected\");\n message.hashTreeExtent = $root.chromeos_update_engine.Extent.fromObject(object.hashTreeExtent);\n }\n if (object.hashTreeAlgorithm != null)\n message.hashTreeAlgorithm = String(object.hashTreeAlgorithm);\n if (object.hashTreeSalt != null)\n if (typeof object.hashTreeSalt === \"string\")\n $util.base64.decode(object.hashTreeSalt, message.hashTreeSalt = $util.newBuffer($util.base64.length(object.hashTreeSalt)), 0);\n else if (object.hashTreeSalt.length)\n message.hashTreeSalt = object.hashTreeSalt;\n if (object.fecDataExtent != null) {\n if (typeof object.fecDataExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecDataExtent: object expected\");\n message.fecDataExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecDataExtent);\n }\n if (object.fecExtent != null) {\n if (typeof object.fecExtent !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.fecExtent: object expected\");\n message.fecExtent = $root.chromeos_update_engine.Extent.fromObject(object.fecExtent);\n }\n if (object.fecRoots != null)\n message.fecRoots = object.fecRoots >>> 0;\n if (object.version != null)\n message.version = String(object.version);\n if (object.mergeOperations) {\n if (!Array.isArray(object.mergeOperations))\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: array expected\");\n message.mergeOperations = [];\n for (let i = 0; i < object.mergeOperations.length; ++i) {\n if (typeof object.mergeOperations[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.PartitionUpdate.mergeOperations: object expected\");\n message.mergeOperations[i] = $root.chromeos_update_engine.CowMergeOperation.fromObject(object.mergeOperations[i]);\n }\n }\n if (object.estimateCowSize != null)\n if ($util.Long)\n (message.estimateCowSize = $util.Long.fromValue(object.estimateCowSize)).unsigned = true;\n else if (typeof object.estimateCowSize === \"string\")\n message.estimateCowSize = parseInt(object.estimateCowSize, 10);\n else if (typeof object.estimateCowSize === \"number\")\n message.estimateCowSize = object.estimateCowSize;\n else if (typeof object.estimateCowSize === \"object\")\n message.estimateCowSize = new $util.LongBits(object.estimateCowSize.low >>> 0, object.estimateCowSize.high >>> 0).toNumber(true);\n if (object.estimateOpCountMax != null)\n if ($util.Long)\n (message.estimateOpCountMax = $util.Long.fromValue(object.estimateOpCountMax)).unsigned = true;\n else if (typeof object.estimateOpCountMax === \"string\")\n message.estimateOpCountMax = parseInt(object.estimateOpCountMax, 10);\n else if (typeof object.estimateOpCountMax === \"number\")\n message.estimateOpCountMax = object.estimateOpCountMax;\n else if (typeof object.estimateOpCountMax === \"object\")\n message.estimateOpCountMax = new $util.LongBits(object.estimateOpCountMax.low >>> 0, object.estimateOpCountMax.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from a PartitionUpdate message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.PartitionUpdate\n * @static\n * @param {chromeos_update_engine.PartitionUpdate} message PartitionUpdate\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n PartitionUpdate.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.newPartitionSignature = [];\n object.operations = [];\n object.mergeOperations = [];\n }\n if (options.defaults) {\n object.partitionName = \"\";\n object.runPostinstall = false;\n object.postinstallPath = \"\";\n object.filesystemType = \"\";\n object.oldPartitionInfo = null;\n object.newPartitionInfo = null;\n object.postinstallOptional = false;\n object.hashTreeDataExtent = null;\n object.hashTreeExtent = null;\n object.hashTreeAlgorithm = \"\";\n if (options.bytes === String)\n object.hashTreeSalt = \"\";\n else {\n object.hashTreeSalt = [];\n if (options.bytes !== Array)\n object.hashTreeSalt = $util.newBuffer(object.hashTreeSalt);\n }\n object.fecDataExtent = null;\n object.fecExtent = null;\n object.fecRoots = 2;\n object.version = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.estimateCowSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.estimateCowSize = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.estimateOpCountMax = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.estimateOpCountMax = options.longs === String ? \"0\" : 0;\n }\n if (message.partitionName != null && message.hasOwnProperty(\"partitionName\"))\n object.partitionName = message.partitionName;\n if (message.runPostinstall != null && message.hasOwnProperty(\"runPostinstall\"))\n object.runPostinstall = message.runPostinstall;\n if (message.postinstallPath != null && message.hasOwnProperty(\"postinstallPath\"))\n object.postinstallPath = message.postinstallPath;\n if (message.filesystemType != null && message.hasOwnProperty(\"filesystemType\"))\n object.filesystemType = message.filesystemType;\n if (message.newPartitionSignature && message.newPartitionSignature.length) {\n object.newPartitionSignature = [];\n for (let j = 0; j < message.newPartitionSignature.length; ++j)\n object.newPartitionSignature[j] = $root.chromeos_update_engine.Signatures.Signature.toObject(message.newPartitionSignature[j], options);\n }\n if (message.oldPartitionInfo != null && message.hasOwnProperty(\"oldPartitionInfo\"))\n object.oldPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.oldPartitionInfo, options);\n if (message.newPartitionInfo != null && message.hasOwnProperty(\"newPartitionInfo\"))\n object.newPartitionInfo = $root.chromeos_update_engine.PartitionInfo.toObject(message.newPartitionInfo, options);\n if (message.operations && message.operations.length) {\n object.operations = [];\n for (let j = 0; j < message.operations.length; ++j)\n object.operations[j] = $root.chromeos_update_engine.InstallOperation.toObject(message.operations[j], options);\n }\n if (message.postinstallOptional != null && message.hasOwnProperty(\"postinstallOptional\"))\n object.postinstallOptional = message.postinstallOptional;\n if (message.hashTreeDataExtent != null && message.hasOwnProperty(\"hashTreeDataExtent\"))\n object.hashTreeDataExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeDataExtent, options);\n if (message.hashTreeExtent != null && message.hasOwnProperty(\"hashTreeExtent\"))\n object.hashTreeExtent = $root.chromeos_update_engine.Extent.toObject(message.hashTreeExtent, options);\n if (message.hashTreeAlgorithm != null && message.hasOwnProperty(\"hashTreeAlgorithm\"))\n object.hashTreeAlgorithm = message.hashTreeAlgorithm;\n if (message.hashTreeSalt != null && message.hasOwnProperty(\"hashTreeSalt\"))\n object.hashTreeSalt = options.bytes === String ? $util.base64.encode(message.hashTreeSalt, 0, message.hashTreeSalt.length) : options.bytes === Array ? Array.prototype.slice.call(message.hashTreeSalt) : message.hashTreeSalt;\n if (message.fecDataExtent != null && message.hasOwnProperty(\"fecDataExtent\"))\n object.fecDataExtent = $root.chromeos_update_engine.Extent.toObject(message.fecDataExtent, options);\n if (message.fecExtent != null && message.hasOwnProperty(\"fecExtent\"))\n object.fecExtent = $root.chromeos_update_engine.Extent.toObject(message.fecExtent, options);\n if (message.fecRoots != null && message.hasOwnProperty(\"fecRoots\"))\n object.fecRoots = message.fecRoots;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n object.version = message.version;\n if (message.mergeOperations && message.mergeOperations.length) {\n object.mergeOperations = [];\n for (let j = 0; j < message.mergeOperations.length; ++j)\n object.mergeOperations[j] = $root.chromeos_update_engine.CowMergeOperation.toObject(message.mergeOperations[j], options);\n }\n if (message.estimateCowSize != null && message.hasOwnProperty(\"estimateCowSize\"))\n if (typeof message.estimateCowSize === \"number\")\n object.estimateCowSize = options.longs === String ? String(message.estimateCowSize) : message.estimateCowSize;\n else\n object.estimateCowSize = options.longs === String ? $util.Long.prototype.toString.call(message.estimateCowSize) : options.longs === Number ? new $util.LongBits(message.estimateCowSize.low >>> 0, message.estimateCowSize.high >>> 0).toNumber(true) : message.estimateCowSize;\n if (message.estimateOpCountMax != null && message.hasOwnProperty(\"estimateOpCountMax\"))\n if (typeof message.estimateOpCountMax === \"number\")\n object.estimateOpCountMax = options.longs === String ? String(message.estimateOpCountMax) : message.estimateOpCountMax;\n else\n object.estimateOpCountMax = options.longs === String ? $util.Long.prototype.toString.call(message.estimateOpCountMax) : options.longs === Number ? new $util.LongBits(message.estimateOpCountMax.low >>> 0, message.estimateOpCountMax.high >>> 0).toNumber(true) : message.estimateOpCountMax;\n return object;\n };\n\n /**\n * Converts this PartitionUpdate to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.PartitionUpdate\n * @instance\n * @returns {Object.} JSON object\n */\n PartitionUpdate.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PartitionUpdate;\n })();\n\n chromeos_update_engine.DynamicPartitionGroup = (function() {\n\n /**\n * Properties of a DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionGroup\n * @property {string} name DynamicPartitionGroup name\n * @property {number|Long|null} [size] DynamicPartitionGroup size\n * @property {Array.|null} [partitionNames] DynamicPartitionGroup partitionNames\n */\n\n /**\n * Constructs a new DynamicPartitionGroup.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionGroup.\n * @implements IDynamicPartitionGroup\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n */\n function DynamicPartitionGroup(properties) {\n this.partitionNames = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionGroup name.\n * @member {string} name\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.name = \"\";\n\n /**\n * DynamicPartitionGroup size.\n * @member {number|Long} size\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.size = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DynamicPartitionGroup partitionNames.\n * @member {Array.} partitionNames\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n */\n DynamicPartitionGroup.prototype.partitionNames = $util.emptyArray;\n\n /**\n * Creates a new DynamicPartitionGroup instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup instance\n */\n DynamicPartitionGroup.create = function create(properties) {\n return new DynamicPartitionGroup(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);\n if (message.size != null && Object.hasOwnProperty.call(message, \"size\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.size);\n if (message.partitionNames != null && message.partitionNames.length)\n for (let i = 0; i < message.partitionNames.length; ++i)\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.partitionNames[i]);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionGroup message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionGroup.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionGroup} message DynamicPartitionGroup message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionGroup.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.name = reader.string();\n break;\n case 2:\n message.size = reader.uint64();\n break;\n case 3:\n if (!(message.partitionNames && message.partitionNames.length))\n message.partitionNames = [];\n message.partitionNames.push(reader.string());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"name\"))\n throw $util.ProtocolError(\"missing required 'name'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionGroup message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionGroup.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionGroup message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionGroup.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.name))\n return \"name: string expected\";\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (!$util.isInteger(message.size) && !(message.size && $util.isInteger(message.size.low) && $util.isInteger(message.size.high)))\n return \"size: integer|Long expected\";\n if (message.partitionNames != null && message.hasOwnProperty(\"partitionNames\")) {\n if (!Array.isArray(message.partitionNames))\n return \"partitionNames: array expected\";\n for (let i = 0; i < message.partitionNames.length; ++i)\n if (!$util.isString(message.partitionNames[i]))\n return \"partitionNames: string[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a DynamicPartitionGroup message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionGroup} DynamicPartitionGroup\n */\n DynamicPartitionGroup.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionGroup)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionGroup();\n if (object.name != null)\n message.name = String(object.name);\n if (object.size != null)\n if ($util.Long)\n (message.size = $util.Long.fromValue(object.size)).unsigned = true;\n else if (typeof object.size === \"string\")\n message.size = parseInt(object.size, 10);\n else if (typeof object.size === \"number\")\n message.size = object.size;\n else if (typeof object.size === \"object\")\n message.size = new $util.LongBits(object.size.low >>> 0, object.size.high >>> 0).toNumber(true);\n if (object.partitionNames) {\n if (!Array.isArray(object.partitionNames))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionGroup.partitionNames: array expected\");\n message.partitionNames = [];\n for (let i = 0; i < object.partitionNames.length; ++i)\n message.partitionNames[i] = String(object.partitionNames[i]);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionGroup message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @static\n * @param {chromeos_update_engine.DynamicPartitionGroup} message DynamicPartitionGroup\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionGroup.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.partitionNames = [];\n if (options.defaults) {\n object.name = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.size = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.size = options.longs === String ? \"0\" : 0;\n }\n if (message.name != null && message.hasOwnProperty(\"name\"))\n object.name = message.name;\n if (message.size != null && message.hasOwnProperty(\"size\"))\n if (typeof message.size === \"number\")\n object.size = options.longs === String ? String(message.size) : message.size;\n else\n object.size = options.longs === String ? $util.Long.prototype.toString.call(message.size) : options.longs === Number ? new $util.LongBits(message.size.low >>> 0, message.size.high >>> 0).toNumber(true) : message.size;\n if (message.partitionNames && message.partitionNames.length) {\n object.partitionNames = [];\n for (let j = 0; j < message.partitionNames.length; ++j)\n object.partitionNames[j] = message.partitionNames[j];\n }\n return object;\n };\n\n /**\n * Converts this DynamicPartitionGroup to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionGroup\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionGroup.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionGroup;\n })();\n\n chromeos_update_engine.VABCFeatureSet = (function() {\n\n /**\n * Properties of a VABCFeatureSet.\n * @memberof chromeos_update_engine\n * @interface IVABCFeatureSet\n * @property {boolean|null} [threaded] VABCFeatureSet threaded\n * @property {boolean|null} [batchWrites] VABCFeatureSet batchWrites\n */\n\n /**\n * Constructs a new VABCFeatureSet.\n * @memberof chromeos_update_engine\n * @classdesc Represents a VABCFeatureSet.\n * @implements IVABCFeatureSet\n * @constructor\n * @param {chromeos_update_engine.IVABCFeatureSet=} [properties] Properties to set\n */\n function VABCFeatureSet(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * VABCFeatureSet threaded.\n * @member {boolean} threaded\n * @memberof chromeos_update_engine.VABCFeatureSet\n * @instance\n */\n VABCFeatureSet.prototype.threaded = false;\n\n /**\n * VABCFeatureSet batchWrites.\n * @member {boolean} batchWrites\n * @memberof chromeos_update_engine.VABCFeatureSet\n * @instance\n */\n VABCFeatureSet.prototype.batchWrites = false;\n\n /**\n * Creates a new VABCFeatureSet instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.VABCFeatureSet\n * @static\n * @param {chromeos_update_engine.IVABCFeatureSet=} [properties] Properties to set\n * @returns {chromeos_update_engine.VABCFeatureSet} VABCFeatureSet instance\n */\n VABCFeatureSet.create = function create(properties) {\n return new VABCFeatureSet(properties);\n };\n\n /**\n * Encodes the specified VABCFeatureSet message. Does not implicitly {@link chromeos_update_engine.VABCFeatureSet.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.VABCFeatureSet\n * @static\n * @param {chromeos_update_engine.IVABCFeatureSet} message VABCFeatureSet message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n VABCFeatureSet.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.threaded != null && Object.hasOwnProperty.call(message, \"threaded\"))\n writer.uint32(/* id 1, wireType 0 =*/8).bool(message.threaded);\n if (message.batchWrites != null && Object.hasOwnProperty.call(message, \"batchWrites\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.batchWrites);\n return writer;\n };\n\n /**\n * Encodes the specified VABCFeatureSet message, length delimited. Does not implicitly {@link chromeos_update_engine.VABCFeatureSet.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.VABCFeatureSet\n * @static\n * @param {chromeos_update_engine.IVABCFeatureSet} message VABCFeatureSet message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n VABCFeatureSet.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a VABCFeatureSet message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.VABCFeatureSet\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.VABCFeatureSet} VABCFeatureSet\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n VABCFeatureSet.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.VABCFeatureSet();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.threaded = reader.bool();\n break;\n case 2:\n message.batchWrites = reader.bool();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a VABCFeatureSet message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.VABCFeatureSet\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.VABCFeatureSet} VABCFeatureSet\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n VABCFeatureSet.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a VABCFeatureSet message.\n * @function verify\n * @memberof chromeos_update_engine.VABCFeatureSet\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n VABCFeatureSet.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.threaded != null && message.hasOwnProperty(\"threaded\"))\n if (typeof message.threaded !== \"boolean\")\n return \"threaded: boolean expected\";\n if (message.batchWrites != null && message.hasOwnProperty(\"batchWrites\"))\n if (typeof message.batchWrites !== \"boolean\")\n return \"batchWrites: boolean expected\";\n return null;\n };\n\n /**\n * Creates a VABCFeatureSet message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.VABCFeatureSet\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.VABCFeatureSet} VABCFeatureSet\n */\n VABCFeatureSet.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.VABCFeatureSet)\n return object;\n let message = new $root.chromeos_update_engine.VABCFeatureSet();\n if (object.threaded != null)\n message.threaded = Boolean(object.threaded);\n if (object.batchWrites != null)\n message.batchWrites = Boolean(object.batchWrites);\n return message;\n };\n\n /**\n * Creates a plain object from a VABCFeatureSet message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.VABCFeatureSet\n * @static\n * @param {chromeos_update_engine.VABCFeatureSet} message VABCFeatureSet\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n VABCFeatureSet.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.threaded = false;\n object.batchWrites = false;\n }\n if (message.threaded != null && message.hasOwnProperty(\"threaded\"))\n object.threaded = message.threaded;\n if (message.batchWrites != null && message.hasOwnProperty(\"batchWrites\"))\n object.batchWrites = message.batchWrites;\n return object;\n };\n\n /**\n * Converts this VABCFeatureSet to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.VABCFeatureSet\n * @instance\n * @returns {Object.} JSON object\n */\n VABCFeatureSet.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return VABCFeatureSet;\n })();\n\n chromeos_update_engine.DynamicPartitionMetadata = (function() {\n\n /**\n * Properties of a DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @interface IDynamicPartitionMetadata\n * @property {Array.|null} [groups] DynamicPartitionMetadata groups\n * @property {boolean|null} [snapshotEnabled] DynamicPartitionMetadata snapshotEnabled\n * @property {boolean|null} [vabcEnabled] DynamicPartitionMetadata vabcEnabled\n * @property {string|null} [vabcCompressionParam] DynamicPartitionMetadata vabcCompressionParam\n * @property {number|null} [cowVersion] DynamicPartitionMetadata cowVersion\n * @property {chromeos_update_engine.IVABCFeatureSet|null} [vabcFeatureSet] DynamicPartitionMetadata vabcFeatureSet\n * @property {number|Long|null} [compressionFactor] DynamicPartitionMetadata compressionFactor\n */\n\n /**\n * Constructs a new DynamicPartitionMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DynamicPartitionMetadata.\n * @implements IDynamicPartitionMetadata\n * @constructor\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n */\n function DynamicPartitionMetadata(properties) {\n this.groups = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DynamicPartitionMetadata groups.\n * @member {Array.} groups\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.groups = $util.emptyArray;\n\n /**\n * DynamicPartitionMetadata snapshotEnabled.\n * @member {boolean} snapshotEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.snapshotEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcEnabled.\n * @member {boolean} vabcEnabled\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcEnabled = false;\n\n /**\n * DynamicPartitionMetadata vabcCompressionParam.\n * @member {string} vabcCompressionParam\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcCompressionParam = \"\";\n\n /**\n * DynamicPartitionMetadata cowVersion.\n * @member {number} cowVersion\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.cowVersion = 0;\n\n /**\n * DynamicPartitionMetadata vabcFeatureSet.\n * @member {chromeos_update_engine.IVABCFeatureSet|null|undefined} vabcFeatureSet\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.vabcFeatureSet = null;\n\n /**\n * DynamicPartitionMetadata compressionFactor.\n * @member {number|Long} compressionFactor\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n */\n DynamicPartitionMetadata.prototype.compressionFactor = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new DynamicPartitionMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata instance\n */\n DynamicPartitionMetadata.create = function create(properties) {\n return new DynamicPartitionMetadata(properties);\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.groups != null && message.groups.length)\n for (let i = 0; i < message.groups.length; ++i)\n $root.chromeos_update_engine.DynamicPartitionGroup.encode(message.groups[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.snapshotEnabled != null && Object.hasOwnProperty.call(message, \"snapshotEnabled\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.snapshotEnabled);\n if (message.vabcEnabled != null && Object.hasOwnProperty.call(message, \"vabcEnabled\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.vabcEnabled);\n if (message.vabcCompressionParam != null && Object.hasOwnProperty.call(message, \"vabcCompressionParam\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.vabcCompressionParam);\n if (message.cowVersion != null && Object.hasOwnProperty.call(message, \"cowVersion\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.cowVersion);\n if (message.vabcFeatureSet != null && Object.hasOwnProperty.call(message, \"vabcFeatureSet\"))\n $root.chromeos_update_engine.VABCFeatureSet.encode(message.vabcFeatureSet, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.compressionFactor != null && Object.hasOwnProperty.call(message, \"compressionFactor\"))\n writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.compressionFactor);\n return writer;\n };\n\n /**\n * Encodes the specified DynamicPartitionMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.DynamicPartitionMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.IDynamicPartitionMetadata} message DynamicPartitionMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DynamicPartitionMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.groups && message.groups.length))\n message.groups = [];\n message.groups.push($root.chromeos_update_engine.DynamicPartitionGroup.decode(reader, reader.uint32()));\n break;\n case 2:\n message.snapshotEnabled = reader.bool();\n break;\n case 3:\n message.vabcEnabled = reader.bool();\n break;\n case 4:\n message.vabcCompressionParam = reader.string();\n break;\n case 5:\n message.cowVersion = reader.uint32();\n break;\n case 6:\n message.vabcFeatureSet = $root.chromeos_update_engine.VABCFeatureSet.decode(reader, reader.uint32());\n break;\n case 7:\n message.compressionFactor = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DynamicPartitionMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DynamicPartitionMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DynamicPartitionMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DynamicPartitionMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.groups != null && message.hasOwnProperty(\"groups\")) {\n if (!Array.isArray(message.groups))\n return \"groups: array expected\";\n for (let i = 0; i < message.groups.length; ++i) {\n let error = $root.chromeos_update_engine.DynamicPartitionGroup.verify(message.groups[i]);\n if (error)\n return \"groups.\" + error;\n }\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n if (typeof message.snapshotEnabled !== \"boolean\")\n return \"snapshotEnabled: boolean expected\";\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n if (typeof message.vabcEnabled !== \"boolean\")\n return \"vabcEnabled: boolean expected\";\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n if (!$util.isString(message.vabcCompressionParam))\n return \"vabcCompressionParam: string expected\";\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n if (!$util.isInteger(message.cowVersion))\n return \"cowVersion: integer expected\";\n if (message.vabcFeatureSet != null && message.hasOwnProperty(\"vabcFeatureSet\")) {\n let error = $root.chromeos_update_engine.VABCFeatureSet.verify(message.vabcFeatureSet);\n if (error)\n return \"vabcFeatureSet.\" + error;\n }\n if (message.compressionFactor != null && message.hasOwnProperty(\"compressionFactor\"))\n if (!$util.isInteger(message.compressionFactor) && !(message.compressionFactor && $util.isInteger(message.compressionFactor.low) && $util.isInteger(message.compressionFactor.high)))\n return \"compressionFactor: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a DynamicPartitionMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DynamicPartitionMetadata} DynamicPartitionMetadata\n */\n DynamicPartitionMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DynamicPartitionMetadata)\n return object;\n let message = new $root.chromeos_update_engine.DynamicPartitionMetadata();\n if (object.groups) {\n if (!Array.isArray(object.groups))\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: array expected\");\n message.groups = [];\n for (let i = 0; i < object.groups.length; ++i) {\n if (typeof object.groups[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.groups: object expected\");\n message.groups[i] = $root.chromeos_update_engine.DynamicPartitionGroup.fromObject(object.groups[i]);\n }\n }\n if (object.snapshotEnabled != null)\n message.snapshotEnabled = Boolean(object.snapshotEnabled);\n if (object.vabcEnabled != null)\n message.vabcEnabled = Boolean(object.vabcEnabled);\n if (object.vabcCompressionParam != null)\n message.vabcCompressionParam = String(object.vabcCompressionParam);\n if (object.cowVersion != null)\n message.cowVersion = object.cowVersion >>> 0;\n if (object.vabcFeatureSet != null) {\n if (typeof object.vabcFeatureSet !== \"object\")\n throw TypeError(\".chromeos_update_engine.DynamicPartitionMetadata.vabcFeatureSet: object expected\");\n message.vabcFeatureSet = $root.chromeos_update_engine.VABCFeatureSet.fromObject(object.vabcFeatureSet);\n }\n if (object.compressionFactor != null)\n if ($util.Long)\n (message.compressionFactor = $util.Long.fromValue(object.compressionFactor)).unsigned = true;\n else if (typeof object.compressionFactor === \"string\")\n message.compressionFactor = parseInt(object.compressionFactor, 10);\n else if (typeof object.compressionFactor === \"number\")\n message.compressionFactor = object.compressionFactor;\n else if (typeof object.compressionFactor === \"object\")\n message.compressionFactor = new $util.LongBits(object.compressionFactor.low >>> 0, object.compressionFactor.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from a DynamicPartitionMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @static\n * @param {chromeos_update_engine.DynamicPartitionMetadata} message DynamicPartitionMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DynamicPartitionMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.groups = [];\n if (options.defaults) {\n object.snapshotEnabled = false;\n object.vabcEnabled = false;\n object.vabcCompressionParam = \"\";\n object.cowVersion = 0;\n object.vabcFeatureSet = null;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.compressionFactor = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.compressionFactor = options.longs === String ? \"0\" : 0;\n }\n if (message.groups && message.groups.length) {\n object.groups = [];\n for (let j = 0; j < message.groups.length; ++j)\n object.groups[j] = $root.chromeos_update_engine.DynamicPartitionGroup.toObject(message.groups[j], options);\n }\n if (message.snapshotEnabled != null && message.hasOwnProperty(\"snapshotEnabled\"))\n object.snapshotEnabled = message.snapshotEnabled;\n if (message.vabcEnabled != null && message.hasOwnProperty(\"vabcEnabled\"))\n object.vabcEnabled = message.vabcEnabled;\n if (message.vabcCompressionParam != null && message.hasOwnProperty(\"vabcCompressionParam\"))\n object.vabcCompressionParam = message.vabcCompressionParam;\n if (message.cowVersion != null && message.hasOwnProperty(\"cowVersion\"))\n object.cowVersion = message.cowVersion;\n if (message.vabcFeatureSet != null && message.hasOwnProperty(\"vabcFeatureSet\"))\n object.vabcFeatureSet = $root.chromeos_update_engine.VABCFeatureSet.toObject(message.vabcFeatureSet, options);\n if (message.compressionFactor != null && message.hasOwnProperty(\"compressionFactor\"))\n if (typeof message.compressionFactor === \"number\")\n object.compressionFactor = options.longs === String ? String(message.compressionFactor) : message.compressionFactor;\n else\n object.compressionFactor = options.longs === String ? $util.Long.prototype.toString.call(message.compressionFactor) : options.longs === Number ? new $util.LongBits(message.compressionFactor.low >>> 0, message.compressionFactor.high >>> 0).toNumber(true) : message.compressionFactor;\n return object;\n };\n\n /**\n * Converts this DynamicPartitionMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DynamicPartitionMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n DynamicPartitionMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DynamicPartitionMetadata;\n })();\n\n chromeos_update_engine.ApexInfo = (function() {\n\n /**\n * Properties of an ApexInfo.\n * @memberof chromeos_update_engine\n * @interface IApexInfo\n * @property {string|null} [packageName] ApexInfo packageName\n * @property {number|Long|null} [version] ApexInfo version\n * @property {boolean|null} [isCompressed] ApexInfo isCompressed\n * @property {number|Long|null} [decompressedSize] ApexInfo decompressedSize\n */\n\n /**\n * Constructs a new ApexInfo.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexInfo.\n * @implements IApexInfo\n * @constructor\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n */\n function ApexInfo(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexInfo packageName.\n * @member {string} packageName\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.packageName = \"\";\n\n /**\n * ApexInfo version.\n * @member {number|Long} version\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.version = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * ApexInfo isCompressed.\n * @member {boolean} isCompressed\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.isCompressed = false;\n\n /**\n * ApexInfo decompressedSize.\n * @member {number|Long} decompressedSize\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n */\n ApexInfo.prototype.decompressedSize = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * Creates a new ApexInfo instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo instance\n */\n ApexInfo.create = function create(properties) {\n return new ApexInfo(properties);\n };\n\n /**\n * Encodes the specified ApexInfo message. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.packageName != null && Object.hasOwnProperty.call(message, \"packageName\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.packageName);\n if (message.version != null && Object.hasOwnProperty.call(message, \"version\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.version);\n if (message.isCompressed != null && Object.hasOwnProperty.call(message, \"isCompressed\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isCompressed);\n if (message.decompressedSize != null && Object.hasOwnProperty.call(message, \"decompressedSize\"))\n writer.uint32(/* id 4, wireType 0 =*/32).int64(message.decompressedSize);\n return writer;\n };\n\n /**\n * Encodes the specified ApexInfo message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.IApexInfo} message ApexInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexInfo();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.packageName = reader.string();\n break;\n case 2:\n message.version = reader.int64();\n break;\n case 3:\n message.isCompressed = reader.bool();\n break;\n case 4:\n message.decompressedSize = reader.int64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexInfo message.\n * @function verify\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n if (!$util.isString(message.packageName))\n return \"packageName: string expected\";\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (!$util.isInteger(message.version) && !(message.version && $util.isInteger(message.version.low) && $util.isInteger(message.version.high)))\n return \"version: integer|Long expected\";\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n if (typeof message.isCompressed !== \"boolean\")\n return \"isCompressed: boolean expected\";\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (!$util.isInteger(message.decompressedSize) && !(message.decompressedSize && $util.isInteger(message.decompressedSize.low) && $util.isInteger(message.decompressedSize.high)))\n return \"decompressedSize: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates an ApexInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexInfo} ApexInfo\n */\n ApexInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexInfo)\n return object;\n let message = new $root.chromeos_update_engine.ApexInfo();\n if (object.packageName != null)\n message.packageName = String(object.packageName);\n if (object.version != null)\n if ($util.Long)\n (message.version = $util.Long.fromValue(object.version)).unsigned = false;\n else if (typeof object.version === \"string\")\n message.version = parseInt(object.version, 10);\n else if (typeof object.version === \"number\")\n message.version = object.version;\n else if (typeof object.version === \"object\")\n message.version = new $util.LongBits(object.version.low >>> 0, object.version.high >>> 0).toNumber();\n if (object.isCompressed != null)\n message.isCompressed = Boolean(object.isCompressed);\n if (object.decompressedSize != null)\n if ($util.Long)\n (message.decompressedSize = $util.Long.fromValue(object.decompressedSize)).unsigned = false;\n else if (typeof object.decompressedSize === \"string\")\n message.decompressedSize = parseInt(object.decompressedSize, 10);\n else if (typeof object.decompressedSize === \"number\")\n message.decompressedSize = object.decompressedSize;\n else if (typeof object.decompressedSize === \"object\")\n message.decompressedSize = new $util.LongBits(object.decompressedSize.low >>> 0, object.decompressedSize.high >>> 0).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from an ApexInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexInfo\n * @static\n * @param {chromeos_update_engine.ApexInfo} message ApexInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.defaults) {\n object.packageName = \"\";\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.version = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.version = options.longs === String ? \"0\" : 0;\n object.isCompressed = false;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.decompressedSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.decompressedSize = options.longs === String ? \"0\" : 0;\n }\n if (message.packageName != null && message.hasOwnProperty(\"packageName\"))\n object.packageName = message.packageName;\n if (message.version != null && message.hasOwnProperty(\"version\"))\n if (typeof message.version === \"number\")\n object.version = options.longs === String ? String(message.version) : message.version;\n else\n object.version = options.longs === String ? $util.Long.prototype.toString.call(message.version) : options.longs === Number ? new $util.LongBits(message.version.low >>> 0, message.version.high >>> 0).toNumber() : message.version;\n if (message.isCompressed != null && message.hasOwnProperty(\"isCompressed\"))\n object.isCompressed = message.isCompressed;\n if (message.decompressedSize != null && message.hasOwnProperty(\"decompressedSize\"))\n if (typeof message.decompressedSize === \"number\")\n object.decompressedSize = options.longs === String ? String(message.decompressedSize) : message.decompressedSize;\n else\n object.decompressedSize = options.longs === String ? $util.Long.prototype.toString.call(message.decompressedSize) : options.longs === Number ? new $util.LongBits(message.decompressedSize.low >>> 0, message.decompressedSize.high >>> 0).toNumber() : message.decompressedSize;\n return object;\n };\n\n /**\n * Converts this ApexInfo to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexInfo\n * @instance\n * @returns {Object.} JSON object\n */\n ApexInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexInfo;\n })();\n\n chromeos_update_engine.ApexMetadata = (function() {\n\n /**\n * Properties of an ApexMetadata.\n * @memberof chromeos_update_engine\n * @interface IApexMetadata\n * @property {Array.|null} [apexInfo] ApexMetadata apexInfo\n */\n\n /**\n * Constructs a new ApexMetadata.\n * @memberof chromeos_update_engine\n * @classdesc Represents an ApexMetadata.\n * @implements IApexMetadata\n * @constructor\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n */\n function ApexMetadata(properties) {\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ApexMetadata apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n */\n ApexMetadata.prototype.apexInfo = $util.emptyArray;\n\n /**\n * Creates a new ApexMetadata instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata=} [properties] Properties to set\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata instance\n */\n ApexMetadata.create = function create(properties) {\n return new ApexMetadata(properties);\n };\n\n /**\n * Encodes the specified ApexMetadata message. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified ApexMetadata message, length delimited. Does not implicitly {@link chromeos_update_engine.ApexMetadata.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.IApexMetadata} message ApexMetadata message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ApexMetadata.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.ApexMetadata();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an ApexMetadata message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ApexMetadata.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an ApexMetadata message.\n * @function verify\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ApexMetadata.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates an ApexMetadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.ApexMetadata} ApexMetadata\n */\n ApexMetadata.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.ApexMetadata)\n return object;\n let message = new $root.chromeos_update_engine.ApexMetadata();\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.ApexMetadata.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from an ApexMetadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.ApexMetadata\n * @static\n * @param {chromeos_update_engine.ApexMetadata} message ApexMetadata\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ApexMetadata.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults)\n object.apexInfo = [];\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n return object;\n };\n\n /**\n * Converts this ApexMetadata to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.ApexMetadata\n * @instance\n * @returns {Object.} JSON object\n */\n ApexMetadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ApexMetadata;\n })();\n\n chromeos_update_engine.DeltaArchiveManifest = (function() {\n\n /**\n * Properties of a DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @interface IDeltaArchiveManifest\n * @property {number|null} [blockSize] DeltaArchiveManifest blockSize\n * @property {number|Long|null} [signaturesOffset] DeltaArchiveManifest signaturesOffset\n * @property {number|Long|null} [signaturesSize] DeltaArchiveManifest signaturesSize\n * @property {number|null} [minorVersion] DeltaArchiveManifest minorVersion\n * @property {Array.|null} [partitions] DeltaArchiveManifest partitions\n * @property {number|Long|null} [maxTimestamp] DeltaArchiveManifest maxTimestamp\n * @property {chromeos_update_engine.IDynamicPartitionMetadata|null} [dynamicPartitionMetadata] DeltaArchiveManifest dynamicPartitionMetadata\n * @property {boolean|null} [partialUpdate] DeltaArchiveManifest partialUpdate\n * @property {Array.|null} [apexInfo] DeltaArchiveManifest apexInfo\n * @property {string|null} [securityPatchLevel] DeltaArchiveManifest securityPatchLevel\n */\n\n /**\n * Constructs a new DeltaArchiveManifest.\n * @memberof chromeos_update_engine\n * @classdesc Represents a DeltaArchiveManifest.\n * @implements IDeltaArchiveManifest\n * @constructor\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n */\n function DeltaArchiveManifest(properties) {\n this.partitions = [];\n this.apexInfo = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DeltaArchiveManifest blockSize.\n * @member {number} blockSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.blockSize = 4096;\n\n /**\n * DeltaArchiveManifest signaturesOffset.\n * @member {number|Long} signaturesOffset\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesOffset = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest signaturesSize.\n * @member {number|Long} signaturesSize\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.signaturesSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * DeltaArchiveManifest minorVersion.\n * @member {number} minorVersion\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.minorVersion = 0;\n\n /**\n * DeltaArchiveManifest partitions.\n * @member {Array.} partitions\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partitions = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest maxTimestamp.\n * @member {number|Long} maxTimestamp\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.maxTimestamp = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * DeltaArchiveManifest dynamicPartitionMetadata.\n * @member {chromeos_update_engine.IDynamicPartitionMetadata|null|undefined} dynamicPartitionMetadata\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.dynamicPartitionMetadata = null;\n\n /**\n * DeltaArchiveManifest partialUpdate.\n * @member {boolean} partialUpdate\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.partialUpdate = false;\n\n /**\n * DeltaArchiveManifest apexInfo.\n * @member {Array.} apexInfo\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.apexInfo = $util.emptyArray;\n\n /**\n * DeltaArchiveManifest securityPatchLevel.\n * @member {string} securityPatchLevel\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n */\n DeltaArchiveManifest.prototype.securityPatchLevel = \"\";\n\n /**\n * Creates a new DeltaArchiveManifest instance using the specified properties.\n * @function create\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest=} [properties] Properties to set\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest instance\n */\n DeltaArchiveManifest.create = function create(properties) {\n return new DeltaArchiveManifest(properties);\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.blockSize != null && Object.hasOwnProperty.call(message, \"blockSize\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.blockSize);\n if (message.signaturesOffset != null && Object.hasOwnProperty.call(message, \"signaturesOffset\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.signaturesOffset);\n if (message.signaturesSize != null && Object.hasOwnProperty.call(message, \"signaturesSize\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.signaturesSize);\n if (message.minorVersion != null && Object.hasOwnProperty.call(message, \"minorVersion\"))\n writer.uint32(/* id 12, wireType 0 =*/96).uint32(message.minorVersion);\n if (message.partitions != null && message.partitions.length)\n for (let i = 0; i < message.partitions.length; ++i)\n $root.chromeos_update_engine.PartitionUpdate.encode(message.partitions[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim();\n if (message.maxTimestamp != null && Object.hasOwnProperty.call(message, \"maxTimestamp\"))\n writer.uint32(/* id 14, wireType 0 =*/112).int64(message.maxTimestamp);\n if (message.dynamicPartitionMetadata != null && Object.hasOwnProperty.call(message, \"dynamicPartitionMetadata\"))\n $root.chromeos_update_engine.DynamicPartitionMetadata.encode(message.dynamicPartitionMetadata, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim();\n if (message.partialUpdate != null && Object.hasOwnProperty.call(message, \"partialUpdate\"))\n writer.uint32(/* id 16, wireType 0 =*/128).bool(message.partialUpdate);\n if (message.apexInfo != null && message.apexInfo.length)\n for (let i = 0; i < message.apexInfo.length; ++i)\n $root.chromeos_update_engine.ApexInfo.encode(message.apexInfo[i], writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();\n if (message.securityPatchLevel != null && Object.hasOwnProperty.call(message, \"securityPatchLevel\"))\n writer.uint32(/* id 18, wireType 2 =*/146).string(message.securityPatchLevel);\n return writer;\n };\n\n /**\n * Encodes the specified DeltaArchiveManifest message, length delimited. Does not implicitly {@link chromeos_update_engine.DeltaArchiveManifest.verify|verify} messages.\n * @function encodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.IDeltaArchiveManifest} message DeltaArchiveManifest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DeltaArchiveManifest.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer.\n * @function decode\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n let end = length === undefined ? reader.len : reader.pos + length, message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n while (reader.pos < end) {\n let tag = reader.uint32();\n switch (tag >>> 3) {\n case 3:\n message.blockSize = reader.uint32();\n break;\n case 4:\n message.signaturesOffset = reader.uint64();\n break;\n case 5:\n message.signaturesSize = reader.uint64();\n break;\n case 12:\n message.minorVersion = reader.uint32();\n break;\n case 13:\n if (!(message.partitions && message.partitions.length))\n message.partitions = [];\n message.partitions.push($root.chromeos_update_engine.PartitionUpdate.decode(reader, reader.uint32()));\n break;\n case 14:\n message.maxTimestamp = reader.int64();\n break;\n case 15:\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.decode(reader, reader.uint32());\n break;\n case 16:\n message.partialUpdate = reader.bool();\n break;\n case 17:\n if (!(message.apexInfo && message.apexInfo.length))\n message.apexInfo = [];\n message.apexInfo.push($root.chromeos_update_engine.ApexInfo.decode(reader, reader.uint32()));\n break;\n case 18:\n message.securityPatchLevel = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DeltaArchiveManifest message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DeltaArchiveManifest.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DeltaArchiveManifest message.\n * @function verify\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DeltaArchiveManifest.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n if (!$util.isInteger(message.blockSize))\n return \"blockSize: integer expected\";\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (!$util.isInteger(message.signaturesOffset) && !(message.signaturesOffset && $util.isInteger(message.signaturesOffset.low) && $util.isInteger(message.signaturesOffset.high)))\n return \"signaturesOffset: integer|Long expected\";\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (!$util.isInteger(message.signaturesSize) && !(message.signaturesSize && $util.isInteger(message.signaturesSize.low) && $util.isInteger(message.signaturesSize.high)))\n return \"signaturesSize: integer|Long expected\";\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n if (!$util.isInteger(message.minorVersion))\n return \"minorVersion: integer expected\";\n if (message.partitions != null && message.hasOwnProperty(\"partitions\")) {\n if (!Array.isArray(message.partitions))\n return \"partitions: array expected\";\n for (let i = 0; i < message.partitions.length; ++i) {\n let error = $root.chromeos_update_engine.PartitionUpdate.verify(message.partitions[i]);\n if (error)\n return \"partitions.\" + error;\n }\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (!$util.isInteger(message.maxTimestamp) && !(message.maxTimestamp && $util.isInteger(message.maxTimestamp.low) && $util.isInteger(message.maxTimestamp.high)))\n return \"maxTimestamp: integer|Long expected\";\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\")) {\n let error = $root.chromeos_update_engine.DynamicPartitionMetadata.verify(message.dynamicPartitionMetadata);\n if (error)\n return \"dynamicPartitionMetadata.\" + error;\n }\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n if (typeof message.partialUpdate !== \"boolean\")\n return \"partialUpdate: boolean expected\";\n if (message.apexInfo != null && message.hasOwnProperty(\"apexInfo\")) {\n if (!Array.isArray(message.apexInfo))\n return \"apexInfo: array expected\";\n for (let i = 0; i < message.apexInfo.length; ++i) {\n let error = $root.chromeos_update_engine.ApexInfo.verify(message.apexInfo[i]);\n if (error)\n return \"apexInfo.\" + error;\n }\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n if (!$util.isString(message.securityPatchLevel))\n return \"securityPatchLevel: string expected\";\n return null;\n };\n\n /**\n * Creates a DeltaArchiveManifest message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {Object.} object Plain object\n * @returns {chromeos_update_engine.DeltaArchiveManifest} DeltaArchiveManifest\n */\n DeltaArchiveManifest.fromObject = function fromObject(object) {\n if (object instanceof $root.chromeos_update_engine.DeltaArchiveManifest)\n return object;\n let message = new $root.chromeos_update_engine.DeltaArchiveManifest();\n if (object.blockSize != null)\n message.blockSize = object.blockSize >>> 0;\n if (object.signaturesOffset != null)\n if ($util.Long)\n (message.signaturesOffset = $util.Long.fromValue(object.signaturesOffset)).unsigned = true;\n else if (typeof object.signaturesOffset === \"string\")\n message.signaturesOffset = parseInt(object.signaturesOffset, 10);\n else if (typeof object.signaturesOffset === \"number\")\n message.signaturesOffset = object.signaturesOffset;\n else if (typeof object.signaturesOffset === \"object\")\n message.signaturesOffset = new $util.LongBits(object.signaturesOffset.low >>> 0, object.signaturesOffset.high >>> 0).toNumber(true);\n if (object.signaturesSize != null)\n if ($util.Long)\n (message.signaturesSize = $util.Long.fromValue(object.signaturesSize)).unsigned = true;\n else if (typeof object.signaturesSize === \"string\")\n message.signaturesSize = parseInt(object.signaturesSize, 10);\n else if (typeof object.signaturesSize === \"number\")\n message.signaturesSize = object.signaturesSize;\n else if (typeof object.signaturesSize === \"object\")\n message.signaturesSize = new $util.LongBits(object.signaturesSize.low >>> 0, object.signaturesSize.high >>> 0).toNumber(true);\n if (object.minorVersion != null)\n message.minorVersion = object.minorVersion >>> 0;\n if (object.partitions) {\n if (!Array.isArray(object.partitions))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: array expected\");\n message.partitions = [];\n for (let i = 0; i < object.partitions.length; ++i) {\n if (typeof object.partitions[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.partitions: object expected\");\n message.partitions[i] = $root.chromeos_update_engine.PartitionUpdate.fromObject(object.partitions[i]);\n }\n }\n if (object.maxTimestamp != null)\n if ($util.Long)\n (message.maxTimestamp = $util.Long.fromValue(object.maxTimestamp)).unsigned = false;\n else if (typeof object.maxTimestamp === \"string\")\n message.maxTimestamp = parseInt(object.maxTimestamp, 10);\n else if (typeof object.maxTimestamp === \"number\")\n message.maxTimestamp = object.maxTimestamp;\n else if (typeof object.maxTimestamp === \"object\")\n message.maxTimestamp = new $util.LongBits(object.maxTimestamp.low >>> 0, object.maxTimestamp.high >>> 0).toNumber();\n if (object.dynamicPartitionMetadata != null) {\n if (typeof object.dynamicPartitionMetadata !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.dynamicPartitionMetadata: object expected\");\n message.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.fromObject(object.dynamicPartitionMetadata);\n }\n if (object.partialUpdate != null)\n message.partialUpdate = Boolean(object.partialUpdate);\n if (object.apexInfo) {\n if (!Array.isArray(object.apexInfo))\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: array expected\");\n message.apexInfo = [];\n for (let i = 0; i < object.apexInfo.length; ++i) {\n if (typeof object.apexInfo[i] !== \"object\")\n throw TypeError(\".chromeos_update_engine.DeltaArchiveManifest.apexInfo: object expected\");\n message.apexInfo[i] = $root.chromeos_update_engine.ApexInfo.fromObject(object.apexInfo[i]);\n }\n }\n if (object.securityPatchLevel != null)\n message.securityPatchLevel = String(object.securityPatchLevel);\n return message;\n };\n\n /**\n * Creates a plain object from a DeltaArchiveManifest message. Also converts values to other types if specified.\n * @function toObject\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @static\n * @param {chromeos_update_engine.DeltaArchiveManifest} message DeltaArchiveManifest\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n DeltaArchiveManifest.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n let object = {};\n if (options.arrays || options.defaults) {\n object.partitions = [];\n object.apexInfo = [];\n }\n if (options.defaults) {\n object.blockSize = 4096;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesOffset = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesOffset = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, true);\n object.signaturesSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.signaturesSize = options.longs === String ? \"0\" : 0;\n object.minorVersion = 0;\n if ($util.Long) {\n let long = new $util.Long(0, 0, false);\n object.maxTimestamp = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.maxTimestamp = options.longs === String ? \"0\" : 0;\n object.dynamicPartitionMetadata = null;\n object.partialUpdate = false;\n object.securityPatchLevel = \"\";\n }\n if (message.blockSize != null && message.hasOwnProperty(\"blockSize\"))\n object.blockSize = message.blockSize;\n if (message.signaturesOffset != null && message.hasOwnProperty(\"signaturesOffset\"))\n if (typeof message.signaturesOffset === \"number\")\n object.signaturesOffset = options.longs === String ? String(message.signaturesOffset) : message.signaturesOffset;\n else\n object.signaturesOffset = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesOffset) : options.longs === Number ? new $util.LongBits(message.signaturesOffset.low >>> 0, message.signaturesOffset.high >>> 0).toNumber(true) : message.signaturesOffset;\n if (message.signaturesSize != null && message.hasOwnProperty(\"signaturesSize\"))\n if (typeof message.signaturesSize === \"number\")\n object.signaturesSize = options.longs === String ? String(message.signaturesSize) : message.signaturesSize;\n else\n object.signaturesSize = options.longs === String ? $util.Long.prototype.toString.call(message.signaturesSize) : options.longs === Number ? new $util.LongBits(message.signaturesSize.low >>> 0, message.signaturesSize.high >>> 0).toNumber(true) : message.signaturesSize;\n if (message.minorVersion != null && message.hasOwnProperty(\"minorVersion\"))\n object.minorVersion = message.minorVersion;\n if (message.partitions && message.partitions.length) {\n object.partitions = [];\n for (let j = 0; j < message.partitions.length; ++j)\n object.partitions[j] = $root.chromeos_update_engine.PartitionUpdate.toObject(message.partitions[j], options);\n }\n if (message.maxTimestamp != null && message.hasOwnProperty(\"maxTimestamp\"))\n if (typeof message.maxTimestamp === \"number\")\n object.maxTimestamp = options.longs === String ? String(message.maxTimestamp) : message.maxTimestamp;\n else\n object.maxTimestamp = options.longs === String ? $util.Long.prototype.toString.call(message.maxTimestamp) : options.longs === Number ? new $util.LongBits(message.maxTimestamp.low >>> 0, message.maxTimestamp.high >>> 0).toNumber() : message.maxTimestamp;\n if (message.dynamicPartitionMetadata != null && message.hasOwnProperty(\"dynamicPartitionMetadata\"))\n object.dynamicPartitionMetadata = $root.chromeos_update_engine.DynamicPartitionMetadata.toObject(message.dynamicPartitionMetadata, options);\n if (message.partialUpdate != null && message.hasOwnProperty(\"partialUpdate\"))\n object.partialUpdate = message.partialUpdate;\n if (message.apexInfo && message.apexInfo.length) {\n object.apexInfo = [];\n for (let j = 0; j < message.apexInfo.length; ++j)\n object.apexInfo[j] = $root.chromeos_update_engine.ApexInfo.toObject(message.apexInfo[j], options);\n }\n if (message.securityPatchLevel != null && message.hasOwnProperty(\"securityPatchLevel\"))\n object.securityPatchLevel = message.securityPatchLevel;\n return object;\n };\n\n /**\n * Converts this DeltaArchiveManifest to JSON.\n * @function toJSON\n * @memberof chromeos_update_engine.DeltaArchiveManifest\n * @instance\n * @returns {Object.} JSON object\n */\n DeltaArchiveManifest.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DeltaArchiveManifest;\n })();\n\n return chromeos_update_engine;\n})();\n\nexport { $root as default };\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TextWriter, ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { chromeos_update_engine } from './update_metadata_pb.js'\n\n/**\n * Parse the non-A/B OTA package and return it as a DeltaArchiveManifest\n * @param {ZipReader} packedFile\n */\nexport class PayloadNonAB extends chromeos_update_engine.DeltaArchiveManifest {\n nonAB: boolean = true\n Blocksize: number = 4096\n packedFile: ZipReader\n constructor(packedFile: ZipReader) {\n super()\n this.packedFile = packedFile\n }\n\n async init() {\n this.Blocksize = 4096\n this.partialUpdate = false\n this.dynamicPartitionMetadata = new chromeos_update_engine.DynamicPartitionMetadata(\n { snapshotEnabled: false, vabcEnabled: false }\n )\n this.partitions = []\n\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.transfer.list)/g\n const /** Array */ entries = await this.packedFile.getEntries()\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n const match = entry.filename.match(regexName)![0]\n let newPartition: any = new chromeos_update_engine.PartitionUpdate({\n partitionName: match\n })\n newPartition.rawText = await entry.getData!(new TextWriter())\n await this.parseTransferList(newPartition)\n this.partitions.push(newPartition)\n }\n }\n }\n\n async parseTransferList(partition: chromeos_update_engine.PartitionUpdate | any) {\n let lines = (partition as any).rawText.split('\\n')\n // First four line in header: version, total blocks,\n // number of stashed entries, maximum used memory for stash\n if (lines.length < 4) {\n throw 'At least 4 lines in header should be provided.'\n }\n partition.version = lines[0]\n partition.totalBlocks = parseInt(lines[1])\n partition.entryStashed = parseInt(lines[2])\n partition.maxStashed = parseInt(lines[3])\n partition.newPartitionInfo = new chromeos_update_engine.PartitionInfo()\n partition.newPartitionInfo.hash = new Uint8Array()\n partition.newPartitionInfo.size = 'unknown'\n /**\n * The main body have 8 different ops:\n * zero [rangeset] : fill zeros\n * new [rangeset] : fill with new data from \n * erase [rangeset] : mark given blocks as empty\n * move <...>\n * bsdiff <...>\n * imgdiff <...> :\n * Read the source blocks and apply (not for move op) to the target blocks\n * stash : load the given source range to memory\n * free : free the given \n * format:\n * [rangeset]: <# of pairs>, , , ...\n * : a hex number with length of 40\n * <...>: We expect to parse the remainder of the parameter tokens as one of:\n * (loads data from source image only)\n * - <[stash_id:stash_range] ...> (loads data from stashes only)\n * <[stash_id:stash_range] ...>\n * (loads data from both source image and stashes)\n */\n partition.operations = new Array()\n let newDataSize = await this.sizeNewData(partition.partitionName)\n for (const line of lines.slice(4)) {\n let op = new chromeos_update_engine.InstallOperation()\n let elements = line.split(' ')\n op.type = elements[0]\n switch ((op.type as unknown) as string) {\n case 'zero':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'new':\n // unlike an A/B OTA, the payload only exists in the payload.bin,\n // in an non-A/B OTA, the payload exists in both .new.data and .patch.data.\n // The new ops do not have any information about data length.\n // what we do here is: read in the size of .new.data, assume the first new\n // op have the data length of the size of .new.data.\n op.dataLength = newDataSize\n newDataSize = 0\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'erase':\n op.dstExtents = elements.slice(1).reduce(parseRange, [])\n break\n case 'move':\n op.dstExtents = parseRange([], elements[2])\n break\n case 'bsdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'imgdiff':\n op.dataOffset = parseInt(elements[1])\n op.dataLength = parseInt(elements[2])\n op.dstExtents = parseRange([], elements[5])\n break\n case 'stash':\n break\n case 'free':\n break\n }\n partition.operations.push(op)\n }\n }\n\n /**\n * Return the size of .new.data.*\n * @param {String} partitionName\n * @return {Number}\n */\n async sizeNewData(partitionName: string) {\n const /** Array */ entries = await this.packedFile.getEntries()\n const /** RegExp */ regexName = new RegExp(partitionName + '.new.dat.*')\n for (const entry of entries) {\n if (entry.filename.match(regexName)) {\n return entry.uncompressedSize\n }\n }\n }\n}\n\n/**\n * Parse the range string and return it as an array of extents\n * @param {extents} Array\n * @param {String} rangeset\n * @return Array\n */\nfunction parseRange(extents: Object[], rangeset: string) {\n const regexRange = new RegExp('[d,]+')\n if (rangeset.match(regexRange)) {\n let elements = rangeset.split(',')\n for (let i = 1; i < elements.length; i = i + 2) {\n let extent = new Object({\n startBlock: parseInt(elements[i]),\n numBlocks: parseInt(elements[i + 1]) - parseInt(elements[i])\n })\n extents.push(extent)\n }\n }\n return extents\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class paypload is used to read in and\n * parse the payload.bin file from a OTA.zip file.\n * Class OpType creates a Map that can resolve the\n * operation type.\n * @package zip.js\n * @package protobufjs\n */\n\nimport {\n BlobReader,\n TextWriter,\n Writer,\n ZipReader,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\n// import '@zip.js/zip.js'\nimport { chromeos_update_engine as update_metadata_pb } from './update_metadata_pb'\nimport { PayloadNonAB } from './payload_nonab'\nimport { ZipFile } from './trim_zip'\n// import { Zip_js } from 'zip.js'\n\nconst /** String */ _MAGIC = 'CrAU'\nconst /** Number */ _VERSION_SIZE = 8\nconst /** Number */ _MANIFEST_LEN_SIZE = 8\nconst /** Number */ _METADATA_SIGNATURE_LEN_SIZE = 4\n\nconst /** Number */ _PAYLOAD_HEADER_SIZE =\n _MAGIC.length +\n _VERSION_SIZE +\n _MANIFEST_LEN_SIZE +\n _METADATA_SIGNATURE_LEN_SIZE\n\nconst /** Number */ _BRILLO_MAJOR_PAYLOAD_VERSION = 2\nexport const /** Array */ MetadataFormat = [\n {\n prefix: 'pre-build',\n key: 'preBuild',\n name: 'Pre-build'\n },\n {\n prefix: 'pre-build-incremental',\n key: 'preBuildVersion',\n name: 'Pre-build version'\n },\n {\n prefix: 'post-build',\n key: 'postBuild',\n name: 'Post-build'\n },\n {\n prefix: 'post-build-incremental',\n key: 'postBuildVersion',\n name: 'Post-build version'\n },\n {\n prefix: 'post-security-patch-level',\n key: 'postSecurityPatchLevel',\n name: 'Post-build SPL'\n },\n {\n prefix: 'post-timestamp',\n key: 'postTimestamp',\n name: 'Post-build timestamp'\n },\n ]\n\nclass StopIteration extends Error {}\n\nclass AbPayloadHeader {\n constructor(\n public magic: string,\n public version: number,\n public manifest_len: number,\n public metadata_signature_len: number\n ) {}\n}\n\n/**\n * Read in an integer from binary bufferArray.\n * @param {Int} size the size of a integer being read in\n * @return {Int} an integer.\n */\nasync function readIntAt(buffer: Blob, position: number, size: number) {\n let /** DataView */ view = new DataView(\n await buffer!.slice(position, position + size).arrayBuffer()\n )\n if (typeof view.getBigUint64 !== 'function') {\n view.getBigUint64 = function(offset) {\n const a = BigInt(view.getUint32(offset))\n const b = BigInt(view.getUint32(offset + 4))\n const bigNumber = a * 4294967296n + b\n return bigNumber\n }\n }\n switch (size) {\n case 2:\n return view.getUint16(0)\n case 4:\n return view.getUint32(0)\n case 8:\n return Number(view.getBigUint64(0))\n default:\n throw 'Cannot read this integer with size ' + size\n }\n}\n\nclass OTAPayloadBlobWriter extends Writer {\n offset: number\n contentType: string\n blob: Blob\n prefixLength: number\n\n header?: AbPayloadHeader\n\n async readHeader(blob: Blob) {\n let cursor = 0\n const readInt = (size: number) => {\n const ret = readIntAt(blob, cursor, size)\n cursor += size\n return ret\n }\n let buffer = await blob.slice(0, _PAYLOAD_HEADER_SIZE).arrayBuffer()\n let /** TextDecoder */ decoder = new TextDecoder()\n let magicBytes = buffer.slice(0, _MAGIC.length)\n const magic = decoder.decode(magicBytes)\n if (magic != _MAGIC) {\n throw new Error(\n `MAGIC is not correct, expected: ${_MAGIC} actual: ${magic}`\n )\n }\n cursor += _MAGIC.length\n const header_version = await readInt(_VERSION_SIZE)\n const manifest_len = await readInt(_MANIFEST_LEN_SIZE)\n if (header_version != _BRILLO_MAJOR_PAYLOAD_VERSION) {\n throw new Error(`Unexpected major version number: ${header_version}`)\n }\n const metadata_signature_len = await readInt(_METADATA_SIGNATURE_LEN_SIZE)\n this.header = new AbPayloadHeader(\n magic,\n header_version,\n manifest_len,\n metadata_signature_len\n )\n }\n /**\n * A zip.Writer that is tailored for OTA payload.bin read-in.\n * Instead of reading in all the contents in payload.bin, this writer will\n * throw an 'StopIteration' error when the header is read in.\n * The header will be stored into the .\n * @param {Payload} payload\n * @param {String} contentType\n */\n constructor(contentType = '') {\n super()\n this.offset = 0\n this.contentType = contentType\n this.blob = new Blob([], { type: contentType })\n this.prefixLength = 0\n }\n\n async writeUint8Array(array: Uint8Array) {\n super.writeUint8Array(array)\n this.blob = new Blob([this.blob, array.buffer], { type: this.contentType })\n this.offset = this.blob.size\n // Once the prefixLength is non-zero, the address of manifest and signature\n // become known and can be read in. Otherwise the header needs to be read\n // in first to determine the prefixLength.\n if (this.offset >= _PAYLOAD_HEADER_SIZE && this.prefixLength == 0) {\n console.log('Parsing header!')\n await this.readHeader(this.blob)\n this.prefixLength =\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n console.log(`Computed metadata length: ${this.prefixLength}`)\n }\n if (this.prefixLength > 0) {\n console.log(`${this.offset}/${this.prefixLength}`)\n if (this.offset >= this.prefixLength) {\n // The prefix has everything we need (header, manifest, signature). Once\n // the offset is beyond the prefix, no need to move on.\n this.blob = this.blob.slice(0, this.prefixLength)\n throw new StopIteration()\n }\n }\n }\n\n getData() {\n return this.blob\n }\n}\n\nexport class Payload {\n zipreader: ZipReader\n buffer: Blob | undefined\n private metadata: any\n payload_properties!: string[]\n manifest: update_metadata_pb.DeltaArchiveManifest | undefined\n metadata_signature!: update_metadata_pb.Signatures\n\n header?: AbPayloadHeader\n\n /**\n * This class parses the metadata of a OTA package.\n * @param {File} file A OTA.zip file read from user's machine.\n */\n constructor(file: File | URL | ZipFile) {\n if (file instanceof File) {\n this.zipreader = new ZipReader(new BlobReader(file))\n } else if (file instanceof URL) {\n this.zipreader = new ZipReader(new HttpReader(file.href))\n } else {\n this.zipreader = file.reader\n }\n this.payload_properties = []\n }\n\n getMetadataLength(): number {\n return (\n _PAYLOAD_HEADER_SIZE +\n this.header!.manifest_len +\n this.header!.metadata_signature_len\n )\n }\n\n /**\n * Unzip the OTA package, get payload.bin and metadata\n */\n async unzip() {\n let entries = await this.zipreader.getEntries()\n for (let entry of entries) {\n if (entry.filename == 'payload.bin') {\n let writer = new OTAPayloadBlobWriter('')\n try {\n await entry.getData!(writer)\n } catch (e) {\n if (e instanceof StopIteration) {\n // Exception used as a hack to stop reading from zip. NO need to do anything\n // Ideally zip.js would provide an API to partialll read a zip\n // entry, but they don't. So this is what we get\n } else {\n console.log(e)\n throw e\n }\n }\n this.buffer = writer.getData()\n await this.readManifest(this.buffer, writer.header!)\n console.log('AB OTA manifest parsed')\n } else if (entry.filename == 'META-INF/com/android/metadata') {\n this.metadata = await entry.getData!(new TextWriter())\n console.log('OTA Package metadata parsed')\n } else if (entry.filename == \"payload_properties.txt\") {\n let payload_properties: string = await entry.getData!(new TextWriter());\n this.payload_properties = payload_properties.split(\"\\n\");\n console.log('OTA payload_properties.txt parsed');\n console.log(this.getPayloadHash());\n }\n }\n if (!this.manifest) {\n console.log('Failed to parse AB OTA package, falling back to non-AB')\n try {\n // The temporary variable manifest has to be used here, to prevent the html page\n // being rendered before everything is read in properly\n let manifest = new PayloadNonAB(this.zipreader)\n await manifest.init()\n manifest.nonAB = true\n this.manifest = manifest\n } catch (error) {\n alert('Please select a legit OTA package')\n return\n }\n }\n }\n\n getPayloadHash() {\n const file_hash_prefix = \"FILE_HASH=\";\n for(let line of this.payload_properties) {\n if (line.startsWith(file_hash_prefix)) {\n return base64ToBytes(line.substring(file_hash_prefix.length));\n }\n }\n return \"\"\n }\n\n /**\n * Read the header of payload.bin, including the magic, header_version,\n * manifest_len, metadata_signature_len.\n */\n /**\n * Read in the manifest in an OTA.zip file.\n * The structure of the manifest can be found in:\n * aosp/system/update_engine/update_metadata.proto\n */\n async readManifest(buffer: Blob, header: AbPayloadHeader) {\n this.header = header\n let cursor = _PAYLOAD_HEADER_SIZE\n let manifestBlob = await buffer\n .slice(cursor, cursor + header.manifest_len)\n .arrayBuffer()\n cursor += header.manifest_len\n this.manifest = update_metadata_pb.DeltaArchiveManifest.decode(\n new Uint8Array(manifestBlob)\n )\n let signatureBlob = await buffer\n .slice(cursor, cursor + header.metadata_signature_len)\n .arrayBuffer()\n cursor += header.metadata_signature_len\n this.metadata_signature = update_metadata_pb.Signatures.decode(\n new Uint8Array(signatureBlob)\n );\n (this.manifest! as any).nonAB = false\n }\n\n parseMetadata() {\n for (let formatter of MetadataFormat) {\n let regex = new RegExp(formatter.prefix + '.+')\n if (this.metadata && this.metadata.match(regex)) {\n (this as any)[formatter.key] = trimEntry(\n this.metadata.match(regex)[0],\n formatter.prefix\n )\n } else {\n (this as any)[formatter.key] = ''\n }\n }\n }\n\n async init() {\n await this.unzip()\n this.parseMetadata()\n }\n}\n\nexport class DefaultMap extends Map {\n /** Reload the original get method. Return the original key value if\n * the key does not exist.\n * @param {Any} key\n */\n getWithDefault(key: any) {\n if (!this.has(key)) return key\n return this.get(key)\n }\n}\n\nexport class OpType {\n mapType: DefaultMap\n /**\n * OpType.mapType create a map that could resolve the operation\n * types. The operation types are encoded as numbers in\n * update_metadata.proto and must be decoded before any usage.\n */\n constructor() {\n let types = update_metadata_pb.InstallOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport class MergeOpType {\n mapType: DefaultMap\n /**\n * MergeOpType create a map that could resolve the COW merge operation\n * types. This is very similar to OpType class except that one is for\n * installation operations.\n */\n constructor() {\n let /** Array<{String: Number}>*/ types =\n update_metadata_pb.CowMergeOperation.Type\n this.mapType = new DefaultMap()\n for (let key of Object.keys(types)) {\n this.mapType.set(types[key as any], key)\n }\n }\n}\n\nexport function octToHex(bufferArray: Uint8Array, space = true, maxLine = 16) {\n let hex_table = ''\n for (let i = 0; i < bufferArray.length; i++) {\n const hex /** String **/ = bufferArray[i].toString(16).toUpperCase()\n if (hex.length === 2) {\n hex_table += hex + (space ? ' ' : '')\n } else {\n hex_table += '0' + hex + (space ? ' ' : '')\n }\n if ((i + 1) % maxLine == 0 && space) {\n hex_table += '\\n'\n }\n }\n return hex_table\n}\n\n/**\n * Trim the prefix in an entry. This is required because the lookbehind\n * regular expression is not supported in safari yet.\n * @param {String} entry\n * @param {String} prefix\n * @return String\n */\nfunction trimEntry(entry: string, prefix: string) {\n return entry.slice(prefix.length + 1, entry.length)\n}\n\nfunction base64ToBytes(base64: string) {\n const binString = atob(base64);\n return Uint8Array.from(binString, (m) => m.codePointAt(0)!);\n}\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = (n: any) => (_pushScopeId(\"data-v-44174082\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Data offset: \", -1))\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Data length: \", -1))\nconst _hoisted_5 = { key: 2 }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Source: \", -1))\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_8 = { key: 3 }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Destination: \", -1))\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"h5\", null, _toDisplayString(_ctx.mapType.getWithDefault(_ctx.operation.type)), 1),\n (_ctx.operation.hasOwnProperty('dataOffset'))\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_1, [\n _hoisted_2,\n _createTextVNode(\" \" + _toDisplayString(_ctx.operation.dataOffset), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.operation.hasOwnProperty('dataLength'))\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_3, [\n _hoisted_4,\n _createTextVNode(\" \" + _toDisplayString(_ctx.operation.dataLength), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.operation.hasOwnProperty('srcExtents'))\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.operation.srcExtents.length) + \" extents (\" + _toDisplayString(_ctx.srcTotalBlocks) + \" blocks) \", 1),\n _hoisted_7,\n _createTextVNode(\" \" + _toDisplayString(_ctx.srcBlocks), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.operation.hasOwnProperty('dstExtents'))\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_8, [\n _hoisted_9,\n _createTextVNode(\" \" + _toDisplayString(_ctx.operation.dstExtents.length) + \" extents (\" + _toDisplayString(_ctx.dstTotalBlocks) + \" blocks) \", 1),\n _hoisted_10,\n _createTextVNode(\" \" + _toDisplayString(_ctx.dstBlocks), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(_component_v_divider)\n ], 64))\n}","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EChartsOption } from 'echarts'\n\nexport class EchartsData {\n statisticData: Map\n trimmedData: Map\n title: string\n unit: string\n maximumEntries: number\n /**\n * Given a set of [key, value] pairs and title, create an object for further\n * usage in Vue-Echarts.\n * @param {Map} statisticData\n * @param {String} title\n * @param {String} unit\n * @param {Number} maximumEntries\n */\n constructor(\n statisticData: Map,\n title: string,\n unit: string,\n maximumEntries = 15\n ) {\n this.statisticData = statisticData\n this.trimmedData = trimMap(statisticData, maximumEntries)\n this.title = title\n this.unit = unit\n this.maximumEntries = maximumEntries\n }\n\n /**\n * Convert the raw data into a string.\n * @return {String} A list of [key, value].\n */\n listData() {\n let /** String */ table = ''\n for (let [key, value] of this.statisticData) {\n table += key + ' : ' + value.toString() + ' Blocks' + '\\n'\n }\n return table\n }\n\n /**\n * Generate necessary parameters (option) for vue-echarts.\n * Format of the parameters can be found here:\n * https://echarts.apache.org/en/option.html\n * @param {String} unit\n * @return {Object} an ECharts option object.\n */\n getEchartsOption(): EChartsOption {\n let /** Object */ option: EChartsOption = {}\n option.title = {\n text: this.title,\n left: 'center'\n }\n option.tooltip = {\n trigger: 'item',\n formatter: '{a}
{b} : {c} ' + this.unit + ' ({d}%)'\n }\n option.legend = {\n orient: 'horizontal',\n left: 'top',\n top: '10%',\n data: Array.from(this.trimmedData.keys())\n }\n option.series = [\n {\n name: this.title,\n type: 'pie',\n radius: '55%',\n center: ['50%', '60%'],\n data: Array.from(this.trimmedData).map((pair: any) => {\n return { value: pair[1], name: pair[0] }\n }),\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)'\n }\n }\n }\n ]\n return option\n }\n}\n\n/**\n * When there are too many entries in the map, the pie chart can be very\n * crowded. This function will return the entries that have high values.\n * Specifically, the top will be stored and the others\n * will be added into an entry called 'other'.\n * @param {Map} map\n * @param {Number} maximumEntries\n * @return {Map}\n */\nfunction trimMap(map: Map, maximumEntries: number) {\n if (map.size <= maximumEntries) return map\n let /** Map */ new_map = new Map()\n for (let i = 0; i < maximumEntries; i++) {\n let /** Number */ curr = 0\n let /** String */ currKey = ''\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n if (value > curr) {\n curr = value\n currKey = key\n }\n }\n }\n new_map.set(currKey, curr)\n }\n let /** Number */ restTotal = 0\n for (let [key, value] of map) {\n if (!new_map.get(key)) {\n restTotal += value\n }\n }\n new_map.set('other', restTotal)\n return new_map\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Class MapParser will take in a Android build and construct\n * several file name maps (physical address: file name) according to it.\n * The map of each partitions is added by calling MapParser.add(partitionName).\n * You can query the file name being operated by calling\n * MapParser.query(address, datalength).\n */\n\nimport {\n ZipReader,\n BlobReader,\n TextWriter,\n HttpReader\n} from '@zip.js/zip.js/dist/zip.js'\n\nimport { chromeos_update_engine } from './update_metadata_pb'\n\nexport class MapParser {\n build: ZipReader\n mapFiles: Map\n maps: Map\n /**\n * This class will take in a .zip Android build and construct a file type map\n * @param {File} targetFile\n */\n constructor(targetFile: File | URL) {\n if (targetFile instanceof File) {\n this.build = new ZipReader(new BlobReader(targetFile))\n } else {\n this.build = new ZipReader(new HttpReader(targetFile.href))\n }\n this.mapFiles = new Map()\n this.maps = new Map()\n }\n\n /**\n * Find the .map entries in the .zip build file. Store them as a map with\n * pairs of (partition name: zip.js entry).\n */\n async init() {\n let /** Array */ entries = await this.build.getEntries()\n const /** RegExp*/ regexPath = /IMAGES\\/[a-z_]*\\.map/g\n const /** RegExp*/ regexName = /[\\w_]+(?=\\.map)/g\n entries.forEach(entry => {\n if (entry.filename.match(regexPath)) {\n this.mapFiles.set(entry.filename.match(regexName)![0], entry)\n }\n })\n }\n\n /**\n * According to the .map in the build, build a map for later query.\n * @param {String} partitionName\n * @param {Number} totalLength\n */\n async add(partitionName: string, totalLength: number) {\n let /** Array */ map = []\n const /** RegExp */ regexNumber = /\\d+/g\n const /** Reg */ regexRange = /\\d+\\-\\d+/g\n for (let i = 0; i < totalLength; i++) map[i] = `<${partitionName}>`\n if (this.mapFiles.get(partitionName)) {\n let /** String */ mapText = await this.mapFiles\n .get(partitionName)\n .getData(new TextWriter())\n let /** Array */ fileEntries = mapText.split('\\n')\n // Each line of the .map file in Android build starts with the filename\n // Followed by the block address, either a number or a range, for example:\n // //system/apex/com.android.adbd.apex 54-66 66 66-2663\n for (let entry of fileEntries) {\n let /** Array */ elements = entry.split(' ')\n for (let j = 1; j < elements.length; j++) {\n let /** Number */ left = 0\n let /** Number */ right = 0\n if (elements[j].match(regexRange)) {\n left = parseInt(elements[j].match(/\\d+/g)[0])\n right = parseInt(elements[j].match(/\\d+/g)[1])\n } else {\n left = parseInt(elements[j].match(regexNumber))\n right = parseInt(elements[j].match(regexNumber))\n }\n InsertMap(map, elements[0], left, right)\n }\n }\n this.maps.set(partitionName, map)\n } else {\n this.maps.set(partitionName, map)\n }\n }\n\n /**\n * Return the filename of given address.\n * @param {String} partitionName\n * @param {Array} extents\n * @return {Array}\n */\n query(partitionName: string, extents: Array) {\n let /** Array */ names = []\n let /** Array */ map = this.maps.get(partitionName)\n for (let ext of extents) {\n names.push(queryMap(map, ext.startBlock, ext.startBlock + ext.numBlocks))\n }\n return names\n }\n}\n\n/**\n * Fill in the hashtable from to using .\n * @param {Array} map\n * @param {String} name\n * @param {Number} left\n * @param {Number} right\n */\nfunction InsertMap(\n map: Array,\n name: string,\n left: number,\n right: number\n) {\n for (let i = left; i <= right; i++) {\n map[i] = name\n }\n}\n\n/**\n * Query the hashtable using index
.\n * @param {Array} map\n * @param {Number} left\n * @param {Number} right\n */\nfunction queryMap(map: Array, left: number, right: number) {\n // Assuming the consecutive blocks belong to the same file\n // Only the start block is queried here.\n if (!map[left]) {\n return 'unknown'\n }\n return map[left]\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Offer functions that can be used to parse the partitionUpdate\n * and then do statistics over it. One can use analysePartitions to specify the\n * partitions been analysed and metrics.\n */\n\nimport { OpType, MergeOpType } from './payload'\nimport { EchartsData } from './echarts_data'\nimport { MapParser } from './map_parser'\nimport { chromeos_update_engine } from './update_metadata_pb'\n\n/**\n * Add a to a element associated to . If the element dose not\n * exists than its value will be initialized to zero.\n * @param {Map} map\n * @param {String} key\n * @param {Number} value\n */\nfunction addNumberToMap(map: Map, key: String, value: number) {\n if (!map.get(key)) {\n map.set(key, 0)\n }\n map.set(key, map.get(key)! + value)\n}\n\n/**\n * Return a statistics over the numbers of blocks (in destination) that are\n * being operated by different installation operation (e.g. REPLACE, BSDIFF).\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedBlockStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n operatedBlocks,\n operationType,\n numBlocks(operation.dstExtents)\n )\n }\n }\n return operatedBlocks\n}\n\nfunction partitionPayloadSize(\n partition: chromeos_update_engine.IPartitionUpdate\n) {\n if (!partition.operations) {\n return 0\n }\n let size = 0\n for (let op of partition.operations!) {\n size += op.dataLength\n }\n return size\n}\n\nexport function partitionPayloadSizeStatistics(\n partitions: Array\n) {\n let partitionStats = new Map()\n for (let partition of partitions) {\n addNumberToMap(\n partitionStats,\n partition.partitionName,\n partitionPayloadSize(partition)\n )\n }\n return partitionStats\n}\n\nexport function mergeOperationStatistics(\n partitions: Array,\n blockSize: number\n) {\n let /** Map */ mergeOperations = new Map()\n let /** MergeOpType */ opType = new MergeOpType()\n let /** Number */ totalBlocks = 0\n for (let partition of partitions) {\n for (let operation of partition.mergeOperations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(\n mergeOperations,\n operationType,\n operation.dstExtent!.numBlocks\n )\n }\n // The total blocks number should be rounded up\n if (partition.newPartitionInfo == null) {\n throw new Error(\n `Partition ${partition.partitionName} doesn't have new_partition_info field.`\n )\n }\n totalBlocks += Math.ceil(partition.newPartitionInfo.size / blockSize)\n }\n // The COW merge operation is default to be COW_replace and not shown in\n // the manifest info. We have to mannually add that part of operations,\n // by subtracting the total blocks with other blocks.\n mergeOperations.forEach((value, key) => (totalBlocks -= value))\n mergeOperations.set('COW_REPLACE', totalBlocks)\n return mergeOperations\n}\n\n/**\n * Return a statistics over the disk usage of payload.bin, based on the type of\n * installation operations. Only partitions that are being passed in will be\n * included.\n * @param {Array} partitions\n * @return {Map}\n */\nexport function operatedPayloadStatistics(\n partitions: Array\n) {\n let /** Map */ operatedBlocks = new Map()\n let /** OpType */ opType = new OpType()\n for (let partition of partitions) {\n for (let operation of partition.operations!) {\n let operationType = opType.mapType.getWithDefault(operation.type)\n addNumberToMap(operatedBlocks, operationType, operation.dataLength)\n }\n }\n return operatedBlocks\n}\n/**\n * Return a statistics over the disk usage of each file types in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFileExtensionsStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let filenameStats = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n const fileExtenstionStats = new Map()\n filenameStats.forEach((size, filename) => {\n addNumberToMap(fileExtenstionStats, name2Extension(filename), size)\n })\n return fileExtenstionStats\n}\n\n/**\n * Return a statistics over the disk usage of each file name in a OTA package.\n * A target file has to be provided and address-filename maps will be built.\n * Only partitions that are being passed in will be included.\n * @param {Array} partitions\n * @param {Number} blockSize\n * @param {File} targetFile\n * @return {Map}\n */\nexport async function operatedFilenamesStatistics(\n partitions: Array,\n blockSize: number,\n targetFile: File | URL\n): Promise> {\n let /** Map */ operatedFilenames = new Map()\n if (!targetFile) {\n return operatedFilenames\n }\n let buildMap = new MapParser(targetFile)\n await buildMap.init()\n for (let partition of partitions) {\n await buildMap.add(\n partition.partitionName,\n Math.ceil(partition.newPartitionInfo!.size / blockSize)\n )\n for (let operation of partition.operations!) {\n if (!operation.hasOwnProperty('dataLength')) continue\n let operatedFileNames = buildMap.query(\n partition.partitionName,\n operation.dstExtents!\n )\n let extentDataLength = distributeFilenames(\n operatedFileNames,\n operation.dstExtents!,\n operation.dataLength\n )\n extentDataLength!.forEach((value, key) => {\n addNumberToMap(operatedFilenames, key, value)\n })\n }\n }\n return operatedFilenames\n}\n\n/**\n * Analyse the given partitions using the given metrics.\n * @param {String} metrics\n * @param {Array} partitions\n * @return {EchartsData}\n */\nexport async function analysePartitions(\n metrics: String,\n partitions: Array,\n blockSize = 4096,\n targetFile: File | null | URL = null\n) {\n let /** Map */ statisticsData\n let /** Echartsdata */ echartsData\n switch (metrics) {\n case 'blocks':\n statisticsData = operatedBlockStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Operated blocks in target build',\n 'blocks'\n )\n break\n case 'payload':\n statisticsData = operatedPayloadStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Payload disk usage',\n 'bytes'\n )\n break\n case 'COWmerge':\n statisticsData = mergeOperationStatistics(partitions, blockSize)\n echartsData = new EchartsData(\n statisticsData,\n 'COW merge operations',\n 'blocks'\n )\n break\n case 'filenames':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFilenamesStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated filenames',\n 'bytes'\n )\n break\n case 'extensions':\n if (targetFile == null) {\n throw new Error('Target file is required for filenames analysis')\n }\n statisticsData = await operatedFileExtensionsStatistics(\n partitions,\n blockSize,\n targetFile\n )\n echartsData = new EchartsData(\n statisticsData,\n 'Size of operated extensions',\n 'bytes'\n )\n break\n case 'partitions':\n statisticsData = partitionPayloadSizeStatistics(partitions)\n echartsData = new EchartsData(\n statisticsData,\n 'Partition payload size',\n 'bytes'\n )\n break\n }\n if (echartsData) {\n return echartsData\n } else {\n throw 'Please double check if this is a proper AB OTA package.'\n }\n}\n\n/**\n * Calculate the number of blocks being operated\n * @param {Array} exts\n * @return {number}\n */\nexport function numBlocks(\n exts: Array | null | undefined\n) {\n if (!exts) {\n return 0\n }\n const accumulator = (total: number, ext: chromeos_update_engine.IExtent) =>\n total + ext.numBlocks\n return exts.reduce(accumulator, 0)\n}\n\n/**\n * Return a string that indicates the blocks being operated\n * in the manner of (start_block, block_length)\n * @param {Array} exts\n * @return {string}\n */\nexport function displayBlocks(exts: Array) {\n const accumulator = (total: string, ext: chromeos_update_engine.Extent) =>\n total + '(' + ext.startBlock + ',' + ext.numBlocks + ')'\n return exts.reduce(accumulator, '')\n}\n\n/**\n * Return a map with pairs of (file extension, data length used by this\n * extension). The total data length will be distributed by the blocks ratio\n * of each extent.\n * @param {Array} filenames\n * @param {Array} exts\n * @param {Number} length\n * @return {Map}\n */\nexport function distributeFilenames(\n filenames: Array,\n exts: Array,\n length: number\n): Map {\n let totalBlocks = numBlocks(exts)\n let distributedLengths = new Map()\n for (let i = 0; i < filenames.length; i++) {\n addNumberToMap(\n distributedLengths,\n filenames[i],\n Math.round((length * exts[i].numBlocks) / totalBlocks)\n )\n }\n return distributedLengths\n}\n\n/**\n * convert a filename into extension, for example:\n * '//system/apex/com.android.adbd.apex' => 'apex'\n * @param {String} filename\n * @return {String}\n */\nexport function name2Extension(filename: string) {\n let elements = filename.split('.')\n if (elements.length > 1) {\n return elements[elements.length - 1]\n } else if (elements[0] === 'unknown') {\n return 'unknown'\n } else if (filename[0] == '<' && filename.endsWith('>')) {\n return filename\n } else {\n return 'no-extension'\n }\n}\n","\nimport { numBlocks, displayBlocks } from '../services/payload_composition'\nimport { DefaultMap } from '../services/payload'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n operation: {\n type: Object,\n required: true\n },\n mapType: {\n type: DefaultMap,\n required: true\n }\n },\n data() {\n return {\n srcTotalBlocks: 0,\n srcBlocks: '',\n dstTotalBlocks: 0,\n dstBlocks: ''\n }\n },\n mounted() {\n if (this.operation.srcExtents) {\n this.srcTotalBlocks = numBlocks(this.operation.srcExtents)\n this.srcBlocks = displayBlocks(this.operation.srcExtents)\n }\n if (this.operation.dstExtents) {\n this.dstTotalBlocks = numBlocks(this.operation.dstExtents)\n this.dstBlocks = displayBlocks(this.operation.dstExtents)\n }\n }\n})\n","import { render } from \"./OperationDetail.vue?vue&type=template&id=44174082&scoped=true&ts=true\"\nimport script from \"./OperationDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./OperationDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./OperationDetail.vue?vue&type=style&index=0&id=44174082&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-44174082\"]])\n\nexport default __exports__","\nimport { chromeos_update_engine } from '@/services/update_metadata_pb'\nimport { defineComponent } from 'vue'\nimport { OpType, octToHex } from '../services/payload'\nimport OperationDetail from './OperationDetail.vue'\n\nexport default defineComponent({\n components: {\n OperationDetail\n },\n props: {\n partition: {\n type: chromeos_update_engine.PartitionUpdate,\n required: true\n },\n dynamicPartitionList: {\n type: Array,\n required: true\n }\n },\n data() {\n return {\n showOPs: false,\n showInfo: false,\n opType: new OpType()\n }\n },\n methods: {\n toggle(key: string) {\n ;(this as any)[key] = !(this as any)[key]\n },\n octToHex: octToHex\n },\n computed: {\n readableTimestamp() {\n const unixTimestamp = parseInt(this.partition.version)\n if (isNaN(unixTimestamp)) {\n return ''\n }\n // Unix timestamp is in seconds, but js want milliseconds. So *1000\n return new Date(unixTimestamp * 1000).toString()\n },\n isDynamicPartition(): boolean {\n return (\n this.dynamicPartitionList.indexOf(this.partition.partitionName) >= 0\n )\n },\n isFECEnabled(): boolean {\n return (\n this.partition.fecExtent?.numBlocks > 0\n )\n },\n isHashtreeEnabled(): boolean {\n return (\n this.partition.hashTreeExtent?.numBlocks > 0\n )\n }\n }\n})\n","import { render } from \"./PartitionDetail.vue?vue&type=template&id=21e569e9&scoped=true&ts=true\"\nimport script from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PartitionDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PartitionDetail.vue?vue&type=style&index=0&id=21e569e9&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-21e569e9\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, openBlock as _openBlock, createElementBlock as _createElementBlock, mergeProps as _mergeProps, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = (n: any) => (_pushScopeId(\"data-v-149f2bbc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"h3\", null, \"Basic infos\", -1))\nconst _hoisted_2 = { class: \"align\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" File name \", -1))\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" File size \", -1))\nconst _hoisted_5 = { class: \"align\" }\nconst _hoisted_6 = { class: \"wrap\" }\nconst _hoisted_7 = { key: 2 }\nconst _hoisted_8 = { class: \"align\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Incremental \", -1))\nconst _hoisted_10 = { key: 0 }\nconst _hoisted_11 = { key: 1 }\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Partial \", -1))\nconst _hoisted_13 = { key: 0 }\nconst _hoisted_14 = { key: 1 }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" A/B update \", -1))\nconst _hoisted_16 = { key: 0 }\nconst _hoisted_17 = { key: 1 }\nconst _hoisted_18 = { key: 0 }\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" VAB \", -1))\nconst _hoisted_20 = { key: 0 }\nconst _hoisted_21 = { key: 1 }\nconst _hoisted_22 = { key: 1 }\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" VABC \", -1))\nconst _hoisted_24 = { key: 0 }\nconst _hoisted_25 = { key: 1 }\nconst _hoisted_26 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Wipes Data \", -1))\nconst _hoisted_27 = { key: 0 }\nconst _hoisted_28 = { key: 1 }\nconst _hoisted_29 = { key: 2 }\nconst _hoisted_30 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Total Dynamic Partition Size \", -1))\nconst _hoisted_31 = { key: 3 }\nconst _hoisted_32 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Total VABC COW Size \", -1))\nconst _hoisted_33 = { key: 4 }\nconst _hoisted_34 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" VABC Compression Algorithm \", -1))\nconst _hoisted_35 = { key: 5 }\nconst _hoisted_36 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Compression Factor \", -1))\nconst _hoisted_37 = { key: 6 }\nconst _hoisted_38 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Cow Version \", -1))\nconst _hoisted_39 = { key: 7 }\nconst _hoisted_40 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \" Security Patch Level \", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n (_ctx.zipFile)\n ? (_openBlock(), _createElementBlock(\"div\", _normalizeProps(_mergeProps({ key: 0 }, _ctx.$attrs)), [\n _createElementVNode(\"ul\", _hoisted_2, [\n _createElementVNode(\"li\", null, [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(_ctx.zipFile.getFileName()), 1)\n ]),\n _createElementVNode(\"li\", null, [\n _hoisted_4,\n _createTextVNode(\" \" + _toDisplayString(_ctx.zipFile.getFileSize()) + \" Bytes\", 1)\n ])\n ])\n ], 16))\n : _createCommentVNode(\"\", true),\n (_ctx.payload && _ctx.payload.metadata)\n ? (_openBlock(), _createElementBlock(\"div\", _normalizeProps(_mergeProps({ key: 1 }, _ctx.$attrs)), [\n _createElementVNode(\"ul\", _hoisted_5, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.otaMetadata, (formatter) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: formatter.name\n }, [\n _createElementVNode(\"strong\", null, _toDisplayString(formatter.name.trim() + ' '), 1),\n _createElementVNode(\"p\", _hoisted_6, _toDisplayString(String(_ctx.payload[formatter.key]).trim()), 1)\n ]))\n }), 128))\n ])\n ], 16))\n : _createCommentVNode(\"\", true),\n (_ctx.payload && _ctx.payload.manifest)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createElementVNode(\"ul\", _hoisted_8, [\n _createElementVNode(\"li\", null, [\n _hoisted_9,\n (_ctx.payload.preBuild)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_10, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_11, \" ❌ \"))\n ]),\n _createElementVNode(\"li\", null, [\n _hoisted_12,\n (_ctx.payload.manifest.partialUpdate)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_13, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_14, \" ❌ \"))\n ]),\n _createElementVNode(\"li\", null, [\n _hoisted_15,\n (!_ctx.payload.manifest.nonAB)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_16, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_17, \" ❌ \"))\n ]),\n (_ctx.payload.manifest.dynamicPartitionMetadata)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_18, [\n _hoisted_19,\n (_ctx.payload.manifest.dynamicPartitionMetadata.snapshotEnabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_20, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_21, \" ❌ \"))\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.payload.manifest.dynamicPartitionMetadata)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_22, [\n _hoisted_23,\n (_ctx.payload.manifest.dynamicPartitionMetadata.vabcEnabled)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_24, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_25, \" ❌ \"))\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"li\", null, [\n _hoisted_26,\n (_ctx.isDataWipePackage)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_27, \" ✅ \"))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_28, \" ❌ \"))\n ]),\n (_ctx.totalDynamicPartitionSize)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_29, [\n _hoisted_30,\n _createTextVNode(\" \" + _toDisplayString(_ctx.totalDynamicPartitionSize), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.totalCOWSize)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_31, [\n _hoisted_32,\n _createTextVNode(\" \" + _toDisplayString(_ctx.totalCOWSize), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.vabcCompressionParam)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_33, [\n _hoisted_34,\n _createTextVNode(\" \" + _toDisplayString(_ctx.vabcCompressionParam), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.compressionFactor)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_35, [\n _hoisted_36,\n _createTextVNode(\" \" + _toDisplayString(_ctx.compressionFactor), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.cowVersion)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_37, [\n _hoisted_38,\n _createTextVNode(\" \" + _toDisplayString(_ctx.cowVersion), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.securityPatchLevel)\n ? (_openBlock(), _createElementBlock(\"li\", _hoisted_39, [\n _hoisted_40,\n _createTextVNode(\" \" + _toDisplayString(_ctx.securityPatchLevel), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}","import * as zip from '@zip.js/zip.js/dist/zip.js'\nimport { ZipReader } from '@zip.js/zip.js/dist/zip.js'\nimport { Payload } from './payload'\n\nexport class ZipFile {\n public reader: ZipReader\n\n constructor(private file: File | URL) {\n this.reader = getZipReader(file)\n }\n getFileName() {\n return getFileName(this.file)\n }\n getFileSize() {\n if (this.file instanceof File) {\n return this.file.size\n } else {\n // TODO(zhangkelvin) Support getting file size from URL\n return 0\n }\n }\n}\n\nexport async function trimZip(\n file: ZipReader,\n p: (entry: zip.Entry) => boolean\n): Promise {\n const reader = file\n const writer = new zip.ZipWriter(new zip.BlobWriter('application/zip'))\n const entries = await reader.getEntries()\n for (const entry of entries.filter(entry => !!entry && p(entry))) {\n const blobWriter = new zip.BlobWriter()\n const data = (await entry.getData!(blobWriter)) as Blob\n console.log(`Adding ${entry.filename}, ${data.size}`)\n writer.add(entry.filename, new zip.BlobReader(blobWriter.getData()), {\n level: 0 // no compression\n })\n }\n return writer\n}\n\nfunction getZipReader(file: File | URL) {\n if (file instanceof File) {\n return new zip.ZipReader(new zip.BlobReader(file))\n } else {\n return new zip.ZipReader(new zip.HttpReader(file.href))\n }\n}\n\nexport function getFileName(file: File | URL) {\n if (file instanceof File) {\n return file.name\n } else {\n return file.pathname\n }\n}\n\nexport async function trimTargetFiles(file: File | URL): Promise {\n const writer = await trimZip(getZipReader(file), entry => {\n return entry.filename.startsWith('META/') || entry.filename.endsWith('.map') || entry.filename.endsWith(\".prop\") || entry.filename == \"prop.default\"\n })\n return await writer.close()\n}\n\nexport async function trimOTAPackage(payload: Payload): Promise {\n const writer = await trimZip(payload.zipreader, entry => {\n return entry.filename != 'payload.bin'\n })\n await writer.add(\n 'payload.bin',\n new zip.BlobReader(payload.buffer!.slice(0, payload.getMetadataLength())),\n // Most toolings assume that payload.bin and other entries are not\n // compressed, so use level 0\n {\n level: 0\n }\n )\n const blob: Blob = await writer.close()\n return blob\n}\n\nexport function downloadFile(\n blob: Blob,\n downloadNode: HTMLAnchorElement,\n filename: string\n) {\n const url = window.URL.createObjectURL(blob)\n downloadNode.href = url\n downloadNode.download = filename\n downloadNode.click()\n window.URL.revokeObjectURL(url)\n}\n\nexport function ensureSuffix(str: string, suffix: string) {\n if (str.endsWith(suffix)) {\n return str\n } else {\n return str + suffix\n }\n}\n","\nimport { Payload, MetadataFormat } from '../services/payload'\nimport { ZipFile } from '@/services/trim_zip'\n\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n zipFile: {\n type: ZipFile,\n required: true\n },\n payload: {\n type: Payload,\n required: true\n }\n },\n data() {\n return {\n MetadataFormat\n }\n },\n computed: {\n isDataWipePackage(): boolean {\n return this.payload.payload_properties.includes('POWERWASH=1')\n },\n otaMetadata(): {\n prefix: string\n key: string\n name: string\n }[] {\n return MetadataFormat.filter(\n formatter => String((this.payload as any)[formatter.key]).length > 0\n )\n },\n totalCOWSize(): number {\n const cowSizes = this.payload?.manifest?.partitions.map(\n p => p.estimateCowSize || 0\n )\n if (!cowSizes) {\n return 0\n }\n return cowSizes.reduce((a, b) => a + b)\n },\n vabcCompressionParam(): string {\n return (\n this.payload?.manifest?.dynamicPartitionMetadata\n ?.vabcCompressionParam || ''\n )\n },\n compressionFactor(): number {\n return (\n this.payload?.manifest?.dynamicPartitionMetadata?.compressionFactor || 0\n )\n },\n cowVersion(): number {\n return this.payload?.manifest?.dynamicPartitionMetadata?.cowVersion || 0\n },\n securityPatchLevel(): string {\n const spl = this.payload?.manifest?.securityPatchLevel\n if (!spl) {\n return ''\n }\n return spl\n },\n totalDynamicPartitionSize(): number {\n const groups = this.payload?.manifest?.dynamicPartitionMetadata?.groups\n if (!groups) {\n return 0\n }\n const dynamicPartitionNamess = new Set(\n groups.flatMap(g => g.partitionNames)\n )\n const dynamicPartitions =\n this.payload.manifest?.partitions.filter(p =>\n dynamicPartitionNamess.has(p.partitionName)\n ) || []\n if (dynamicPartitions.length <= 0) {\n return 0\n }\n return dynamicPartitions\n .map(p => p.newPartitionInfo?.size || 0)\n .reduce((acc, cur) => acc + cur)\n }\n }\n})\n","import { render } from \"./BasicInfo.vue?vue&type=template&id=149f2bbc&scoped=true&ts=true\"\nimport script from \"./BasicInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./BasicInfo.vue?vue&type=script&lang=ts\"\n\nimport \"./BasicInfo.vue?vue&type=style&index=0&id=149f2bbc&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-149f2bbc\"]])\n\nexport default __exports__","\nimport PartitionDetail from './PartitionDetail.vue'\nimport BasicInfo from './BasicInfo.vue'\nimport { Payload, octToHex } from '../services/payload'\nimport {\n downloadFile,\n ensureSuffix,\n trimOTAPackage,\n ZipFile\n} from '@/services/trim_zip'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n components: {\n PartitionDetail,\n BasicInfo\n },\n props: {\n zipFile: {\n type: ZipFile,\n default: null\n },\n payload: {\n type: Payload,\n default: null\n }\n },\n methods: {\n octToHex: octToHex,\n async exportOTAPackage() {\n const blob = await trimOTAPackage(this.payload as Payload)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(this.zipFile.getFileName(), '.zip')\n )\n }\n },\n computed: {\n dynamicPartitions(): string[] {\n return (\n this.payload.manifest?.dynamicPartitionMetadata?.groups?.flatMap(\n g => g.partitionNames || []\n ) || []\n )\n },\n payloadHash(): string {\n const hash = this.payload?.getPayloadHash();\n if (!hash) {\n return \"\";\n }\n return octToHex(hash, false);\n },\n }\n})\n","import { render } from \"./PayloadDetail.vue?vue&type=template&id=5dd4ca12&scoped=true&ts=true\"\nimport script from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadDetail.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadDetail.vue?vue&type=style&index=0&id=5dd4ca12&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5dd4ca12\"]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createVNode as _createVNode, createElementBlock as _createElementBlock, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = (n: any) => (_pushScopeId(\"data-v-20303229\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { ref: \"download\" }\nconst _hoisted_2 = { key: 1 }\nconst _hoisted_3 = {\n key: 0,\n class: \"tooltiptext\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_btn = _resolveComponent(\"v-btn\")!\n const _component_PartialCheckbox = _resolveComponent(\"PartialCheckbox\")!\n const _component_PieChart = _resolveComponent(\"PieChart\")!\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n const _component_BaseFile = _resolveComponent(\"BaseFile\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (_ctx.targetFile)\n ? (_openBlock(), _createBlock(_component_v_btn, {\n key: 0,\n block: \"\",\n class: \"md-6\",\n onClick: _ctx.exportTargetFileMetadata\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"Export Target File Metadata\")\n ]),\n _: 1\n }, 8, [\"onClick\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"a\", _hoisted_1, null, 512),\n _createVNode(_component_PartialCheckbox, {\n modelValue: _ctx.partitionInclude,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.partitionInclude) = $event)),\n labels: _ctx.updatePartitions\n }, null, 8, [\"modelValue\", \"labels\"]),\n (_ctx.echartsData)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(_component_PieChart, {\n echartsData: _ctx.echartsData,\n onClick: _ctx.piechartClick\n }, null, 8, [\"echartsData\", \"onClick\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_v_divider),\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"4\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n block: \"\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.updateChart('blocks')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Analyse Installed Blocks (in target build) \")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"4\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n block: \"\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.updateChart('payload')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Analyse Payload Composition \")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"4\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n block: \"\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.updateChart('partitions')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Analyse Partition Payload Composition \")\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"4\",\n class: \"tooltip\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n disabled: \n _ctx.manifest.nonAB || !_ctx.manifest.dynamicPartitionMetadata || !_ctx.manifest.dynamicPartitionMetadata.vabcEnabled\n ,\n title: \"Only available for VABC update\",\n block: \"\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.updateChart('COWmerge')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Analyse COW Merge Operations \")\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n (_ctx.manifest.nonAB)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_3, \" This function is only supported in A/B OTA \"))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"4\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n block: \"\",\n disabled: !_ctx.targetFile,\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.updateChart('filenames')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Analyse Filenames \")\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ]),\n _: 1\n }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"4\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_v_btn, {\n block: \"\",\n disabled: !_ctx.targetFile,\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.updateChart('extensions')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Analyse File Extensions \")\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n (!_ctx.demo)\n ? (_openBlock(), _createBlock(_component_BaseFile, {\n key: 0,\n label: \"Drag and drop or Select The target Android build\",\n onFileSelect: _ctx.selectBuild\n }, null, 8, [\"onFileSelect\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ], 64))\n}","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = (n: any) => (_pushScopeId(\"data-v-533f2336\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"value\", \"checked\"]\nconst _hoisted_2 = { key: 0 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_v_btn = _resolveComponent(\"v-btn\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_v_btn, {\n block: \"\",\n type: \"button\",\n class: \"my-5\",\n onClick: _ctx.revertAllSelection\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.selectAllText[_ctx.selectAll]), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _createVNode(_component_v_row, { class: \"mb-5\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.labels, (label) => {\n return (_openBlock(), _createBlock(_component_v_col, {\n key: label,\n cols: \"12\",\n md: \"4\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n value: label,\n checked: _ctx.modelValue.get(label),\n onChange: _cache[0] || (_cache[0] = ($event: any) => (_ctx.updateSelected($event.target.value)))\n }, null, 40, _hoisted_1),\n label\n ? (_openBlock(), _createElementBlock(\"label\", _hoisted_2, _toDisplayString(label), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, 1024))\n }), 128))\n ]),\n _: 1\n })\n ], 64))\n}","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n props: {\n labels: {\n type: Array,\n default: new Array()\n },\n modelValue: {\n type: Map,\n default: new Map()\n }\n },\n data() {\n return {\n selectAll: 1,\n selectAllText: ['Select All', 'Unselect All']\n }\n },\n mounted() {\n // Set the default value to be true once mounted\n for (let key of this.labels) {\n this.modelValue.set(key, true)\n }\n },\n methods: {\n updateSelected(newSelect: string) {\n this.modelValue.set(newSelect, !this.modelValue.get(newSelect))\n this.$emit('update:modelValue', this.modelValue)\n },\n revertAllSelection() {\n this.selectAll = 1 - this.selectAll\n for (let key of this.modelValue.keys()) {\n this.modelValue.set(key, Boolean(this.selectAll))\n }\n }\n }\n})\n","import { render } from \"./PartialCheckbox.vue?vue&type=template&id=533f2336&scoped=true&ts=true\"\nimport script from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./PartialCheckbox.vue?vue&type=script&lang=ts\"\n\nimport \"./PartialCheckbox.vue?vue&type=style&index=0&id=533f2336&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-533f2336\"]])\n\nexport default __exports__","\n\n\n\n\n\n\n","import { render } from \"./PieChart.vue?vue&type=template&id=5d1cb486&scoped=true\"\nimport script from \"./PieChart.vue?vue&type=script&lang=js\"\nexport * from \"./PieChart.vue?vue&type=script&lang=js\"\n\nimport \"./PieChart.vue?vue&type=style&index=0&id=5d1cb486&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5d1cb486\"]])\n\nexport default __exports__","\nimport axios from 'axios'\nimport PartialCheckbox from './PartialCheckbox.vue'\nimport PieChart from './PieChart.vue'\nimport BaseFile from './BaseFile.vue'\nimport { analysePartitions } from '../services/payload_composition'\nimport { chromeos_update_engine as update_metadata_pb } from '../services/update_metadata_pb'\nimport { TooltipComponentPositionCallbackParams } from 'echarts'\nimport { EchartsData } from '@/services/echarts_data'\nimport { defineComponent } from 'vue'\nimport {\n downloadFile,\n ensureSuffix,\n getFileName,\n trimTargetFiles\n} from '@/services/trim_zip'\n\ninterface ComponentState {\n partitionInclude: Map\n echartsData: EchartsData | null\n listData: string\n targetFile: File | URL | null\n}\n\nexport default defineComponent({\n components: {\n PartialCheckbox,\n PieChart,\n BaseFile\n },\n props: {\n manifest: {\n type: update_metadata_pb.DeltaArchiveManifest,\n default: () => []\n },\n demo: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n partitionInclude: new Map(),\n echartsData: null,\n listData: '',\n targetFile: null\n } as ComponentState\n },\n computed: {\n updatePartitions(): string[] {\n return this.manifest.partitions.map(\n (partition: update_metadata_pb.IPartitionUpdate) => {\n return partition.partitionName\n }\n )\n }\n },\n async mounted() {\n if (this.demo) {\n try {\n const download = await axios.get(\n './files/cf_x86_target_file_demo.zip',\n { responseType: 'blob' }\n )\n this.targetFile = new File([download.data], 'target_demo.zip')\n } catch (err) {\n console.log('Please put a proper example target file in /public/files/')\n }\n }\n },\n methods: {\n piechartClick(param: TooltipComponentPositionCallbackParams) {\n console.log(param)\n },\n async updateChart(metrics: string) {\n let partitionSelected = this.manifest.partitions.filter(partition =>\n this.partitionInclude.get(partition.partitionName)\n )\n try {\n this.echartsData = await analysePartitions(\n metrics,\n partitionSelected,\n this.manifest.blockSize,\n this.targetFile as File\n )\n } catch (err) {\n alert(`Cannot be processed for the following issue: ${err}`)\n }\n },\n selectBuild(file: File | URL) {\n //TODO(lishutong) check the version of target file is same to the OTA target\n this.targetFile = file\n },\n async exportTargetFileMetadata() {\n const blob = await trimTargetFiles(this.targetFile! as File)\n const downloadNode = this.$refs['download'] as HTMLAnchorElement\n downloadFile(\n blob,\n downloadNode,\n 'trimmed_' + ensureSuffix(getFileName(this.targetFile! as File), '.zip')\n )\n }\n }\n})\n","import { render } from \"./PayloadComposition.vue?vue&type=template&id=20303229&scoped=true&ts=true\"\nimport script from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\nexport * from \"./PayloadComposition.vue?vue&type=script&lang=ts\"\n\nimport \"./PayloadComposition.vue?vue&type=style&index=0&id=20303229&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-20303229\"]])\n\nexport default __exports__","\nimport BaseFile from '../components/BaseFile.vue'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n BaseFile,\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return ({\n zipFile: null,\n payload: null\n } as unknown) as {\n zipFile: ZipFile\n payload: Payload\n }\n },\n methods: {\n async unpackOTA(file: File | URL) {\n this.zipFile = new ZipFile(file)\n try {\n const payload = new Payload(this.zipFile as ZipFile);\n await payload.init();\n this.payload = payload;\n } catch (err) {\n alert(`Please check if this is a correct OTA package (.zip). ${err}`)\n console.log(err)\n }\n }\n }\n})\n","import { render } from \"./PackageAnalysis.vue?vue&type=template&id=7bb77d0c&ts=true\"\nimport script from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\nexport * from \"./PackageAnalysis.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createVNode as _createVNode } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_PayloadDetail = _resolveComponent(\"PayloadDetail\")!\n const _component_v_col = _resolveComponent(\"v-col\")!\n const _component_v_divider = _resolveComponent(\"v-divider\")!\n const _component_PayloadComposition = _resolveComponent(\"PayloadComposition\")!\n const _component_v_row = _resolveComponent(\"v-row\")!\n\n return (_openBlock(), _createBlock(_component_v_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n (_ctx.zipFile && _ctx.payload)\n ? (_openBlock(), _createBlock(_component_PayloadDetail, {\n key: 0,\n zipFile: _ctx.zipFile,\n payload: _ctx.payload\n }, null, 8, [\"zipFile\", \"payload\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_component_v_divider, { vertical: \"\" }),\n _createVNode(_component_v_col, {\n cols: \"12\",\n md: \"6\"\n }, {\n default: _withCtx(() => [\n (_ctx.zipFile && _ctx.payload.manifest)\n ? (_openBlock(), _createBlock(_component_PayloadComposition, {\n key: 0,\n manifest: _ctx.payload.manifest,\n demo: true\n }, null, 8, [\"manifest\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n}","\nimport axios from 'axios'\nimport PayloadDetail from '../components/PayloadDetail.vue'\nimport PayloadComposition from '../components/PayloadComposition.vue'\nimport { Payload } from '../services/payload'\nimport { defineComponent } from 'vue'\nimport { ZipFile } from '@/services/trim_zip'\n\nexport default defineComponent({\n components: {\n PayloadDetail,\n PayloadComposition\n },\n data() {\n return {\n zipFile: null,\n payload: null\n } as {\n zipFile: ZipFile | null\n payload: Payload | null\n }\n },\n async created() {\n // put cf_x86_demo.zip and cf_x86_target_file_demo into\n // this directory: /public/files\n try {\n const download = await axios.get('./files/cf_x86_demo.zip', {\n responseType: 'blob'\n })\n this.zipFile = new ZipFile(new File([download.data], 'ota_demo.zip'))\n this.payload = new Payload(this.zipFile as ZipFile)\n await this.payload.init()\n } catch (err) {\n console.log('Please put a proper example OTA in /public/files/')\n }\n }\n})\n","import { render } from \"./Demo.vue?vue&type=template&id=1e5d071a&ts=true\"\nimport script from \"./Demo.vue?vue&type=script&lang=ts\"\nexport * from \"./Demo.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./About.vue?vue&type=template&id=67ed0bf6\"\nconst script = {}\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n\n","import { render } from \"./NotFound.vue?vue&type=template&id=50c6f348&scoped=true\"\nconst script = {}\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=50c6f348&scoped=true&lang=css\"\n\nimport exportComponent from \"/home/runner/work/ota-analyzer/ota-analyzer/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-50c6f348\"]])\n\nexport default __exports__","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createRouter, createWebHistory } from 'vue-router'\nimport PackageAnalysis from '@/views/PackageAnalysis.vue'\nimport Demo from'@/views/Demo.vue'\nimport About from '@/views/About.vue'\nimport NotFound from '@/views/NotFound.vue'\n\nconst routes = [\n {\n path: '/',\n name: 'Analysis',\n component: PackageAnalysis,\n meta: {\n title: 'Analyse OTA package - from AOSP'\n }\n },\n {\n path: '/demo',\n name: 'Demo',\n component: Demo\n },\n {\n path: '/about',\n name: 'About',\n component: About\n },\n {\n path: '/:catchAll(.*)',\n name: 'Not Found',\n component: NotFound\n }\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes\n})\n\n// This callback runs before every route change, including on page load.\nrouter.beforeEach((to, from, next) => {\n // This goes through the matched routes from last to first, finding the closest route with a title.\n // e.g., if we have `/some/deep/nested/route` and `/some`, `/deep`, and `/nested` have titles,\n // `/nested`'s will be chosen.\n const nearestWithTitle = to.matched.slice().reverse().find(r => r.meta && r.meta.title);\n\n // Find the nearest route element with meta tags.\n const nearestWithMeta = to.matched.slice().reverse().find(r => r.meta && r.meta.metaTags)!;\n\n const previousNearestWithMeta = from.matched.slice().reverse().find(r => r.meta && r.meta.metaTags);\n\n // If a route with a title was found, set the document (page) title to that value.\n if(nearestWithTitle) {\n document.title = nearestWithTitle.meta.title as string;\n } else if(previousNearestWithMeta) {\n document.title = previousNearestWithMeta.meta.title as string;\n }\n\n // Remove any stale meta tags from the document using the key attribute we set below.\n Array.from(document.querySelectorAll('[data-vue-router-controlled]')).map(el => el.parentNode!.removeChild(el));\n\n next();\n});\n\nexport default router\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createStore } from 'vuex'\n\nexport default createStore({\n state: {},\n mutations: {},\n actions: {},\n modules: {}\n})\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createApp } from 'vue'\nimport vuetify from './plugins/vuetify'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nconst app = createApp(App)\napp.use(router)\napp.use(store)\napp.use(vuetify)\n\napp.mount('#app')"],"sourceRoot":""} \ No newline at end of file diff --git a/analyseOTA/js/chunk-vendors-legacy.0735c942.js b/analyseOTA/js/chunk-vendors-legacy.0735c942.js new file mode 100644 index 0000000..69a9187 --- /dev/null +++ b/analyseOTA/js/chunk-vendors-legacy.0735c942.js @@ -0,0 +1,44 @@ +(self["webpackChunkota_analyzer"]=self["webpackChunkota_analyzer"]||[]).push([[998],{4537:function(t){"use strict";function e(t,e){var n=new Array(arguments.length-1),r=0,i=2,o=!0;while(i1&&"="===t.charAt(e))++n;return Math.ceil(3*t.length)/4-n};for(var r=new Array(64),i=new Array(123),o=0;o<64;)i[r[o]=o<26?o+65:o<52?o+71:o<62?o-4:o-59|43]=o++;n.encode=function(t,e,n){var i,o=null,a=[],s=0,l=0;while(e>2],i=(3&u)<<4,l=1;break;case 1:a[s++]=r[i|u>>4],i=(15&u)<<2,l=2;break;case 2:a[s++]=r[i|u>>6],a[s++]=r[63&u],l=0;break}s>8191&&((o||(o=[])).push(String.fromCharCode.apply(String,a)),s=0)}return l&&(a[s++]=r[i],a[s++]=61,1===l&&(a[s++]=61)),o?(s&&o.push(String.fromCharCode.apply(String,a.slice(0,s))),o.join("")):String.fromCharCode.apply(String,a.slice(0,s))};var a="invalid encoding";n.decode=function(t,e,n){for(var r,o=n,s=0,l=0;l1)break;if(void 0===(u=i[u]))throw Error(a);switch(s){case 0:r=u,s=1;break;case 1:e[n++]=r<<2|(48&u)>>4,r=u,s=2;break;case 2:e[n++]=(15&r)<<4|(60&u)>>2,r=u,s=3;break;case 3:e[n++]=(3&r)<<6|u,s=0;break}}if(1===s)throw Error(a);return n-o},n.test=function(t){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(t)}},9211:function(t){"use strict";function e(){this._listeners={}}t.exports=e,e.prototype.on=function(t,e,n){return(this._listeners[t]||(this._listeners[t]=[])).push({fn:e,ctx:n||this}),this},e.prototype.off=function(t,e){if(void 0===t)this._listeners={};else if(void 0===e)this._listeners[t]=[];else for(var n=this._listeners[t],r=0;r0?0:2147483648,n,r);else if(isNaN(e))t(2143289344,n,r);else if(e>34028234663852886e22)t((i<<31|2139095040)>>>0,n,r);else if(e<11754943508222875e-54)t((i<<31|Math.round(e/1401298464324817e-60))>>>0,n,r);else{var o=Math.floor(Math.log(e)/Math.LN2),a=8388607&Math.round(e*Math.pow(2,-o)*8388608);t((i<<31|o+127<<23|a)>>>0,n,r)}}function a(t,e,n){var r=t(e,n),i=2*(r>>31)+1,o=r>>>23&255,a=8388607&r;return 255===o?a?NaN:i*(1/0):0===o?1401298464324817e-60*i*a:i*Math.pow(2,o-150)*(a+8388608)}t.writeFloatLE=e.bind(null,n),t.writeFloatBE=e.bind(null,r),t.readFloatLE=a.bind(null,i),t.readFloatBE=a.bind(null,o)}(),"undefined"!==typeof Float64Array?function(){var e=new Float64Array([-0]),n=new Uint8Array(e.buffer),r=128===n[7];function i(t,r,i){e[0]=t,r[i]=n[0],r[i+1]=n[1],r[i+2]=n[2],r[i+3]=n[3],r[i+4]=n[4],r[i+5]=n[5],r[i+6]=n[6],r[i+7]=n[7]}function o(t,r,i){e[0]=t,r[i]=n[7],r[i+1]=n[6],r[i+2]=n[5],r[i+3]=n[4],r[i+4]=n[3],r[i+5]=n[2],r[i+6]=n[1],r[i+7]=n[0]}function a(t,r){return n[0]=t[r],n[1]=t[r+1],n[2]=t[r+2],n[3]=t[r+3],n[4]=t[r+4],n[5]=t[r+5],n[6]=t[r+6],n[7]=t[r+7],e[0]}function s(t,r){return n[7]=t[r],n[6]=t[r+1],n[5]=t[r+2],n[4]=t[r+3],n[3]=t[r+4],n[2]=t[r+5],n[1]=t[r+6],n[0]=t[r+7],e[0]}t.writeDoubleLE=r?i:o,t.writeDoubleBE=r?o:i,t.readDoubleLE=r?a:s,t.readDoubleBE=r?s:a}():function(){function e(t,e,n,r,i,o){var a=r<0?1:0;if(a&&(r=-r),0===r)t(0,i,o+e),t(1/r>0?0:2147483648,i,o+n);else if(isNaN(r))t(0,i,o+e),t(2146959360,i,o+n);else if(r>17976931348623157e292)t(0,i,o+e),t((a<<31|2146435072)>>>0,i,o+n);else{var s;if(r<22250738585072014e-324)s=r/5e-324,t(s>>>0,i,o+e),t((a<<31|s/4294967296)>>>0,i,o+n);else{var l=Math.floor(Math.log(r)/Math.LN2);1024===l&&(l=1023),s=r*Math.pow(2,-l),t(4503599627370496*s>>>0,i,o+e),t((a<<31|l+1023<<20|1048576*s&1048575)>>>0,i,o+n)}}}function a(t,e,n,r,i){var o=t(r,i+e),a=t(r,i+n),s=2*(a>>31)+1,l=a>>>20&2047,u=4294967296*(1048575&a)+o;return 2047===l?u?NaN:s*(1/0):0===l?5e-324*s*u:s*Math.pow(2,l-1075)*(u+4503599627370496)}t.writeDoubleLE=e.bind(null,n,0,4),t.writeDoubleBE=e.bind(null,r,4,0),t.readDoubleLE=a.bind(null,i,0,4),t.readDoubleBE=a.bind(null,o,4,0)}(),t}function n(t,e,n){e[n]=255&t,e[n+1]=t>>>8&255,e[n+2]=t>>>16&255,e[n+3]=t>>>24}function r(t,e,n){e[n]=t>>>24,e[n+1]=t>>>16&255,e[n+2]=t>>>8&255,e[n+3]=255&t}function i(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24)>>>0}function o(t,e){return(t[e]<<24|t[e+1]<<16|t[e+2]<<8|t[e+3])>>>0}t.exports=e(e)},7199:function(module){"use strict";function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(e){}return null}module.exports=inquire},6662:function(t){"use strict";function e(t,e,n){var r=n||8192,i=r>>>1,o=null,a=r;return function(n){if(n<1||n>i)return t(n);a+n>r&&(o=t(r),a=0);var s=e.call(o,a,a+=n);return 7&a&&(a=1+(7|a)),s}}t.exports=e},4997:function(t,e){"use strict";var n=e;n.length=function(t){for(var e=0,n=0,r=0;r191&&i<224?a[s++]=(31&i)<<6|63&t[e++]:i>239&&i<365?(i=((7&i)<<18|(63&t[e++])<<12|(63&t[e++])<<6|63&t[e++])-65536,a[s++]=55296+(i>>10),a[s++]=56320+(1023&i)):a[s++]=(15&i)<<12|(63&t[e++])<<6|63&t[e++],s>8191&&((o||(o=[])).push(String.fromCharCode.apply(String,a)),s=0);return o?(s&&o.push(String.fromCharCode.apply(String,a.slice(0,s))),o.join("")):String.fromCharCode.apply(String,a.slice(0,s))},n.write=function(t,e,n){for(var r,i,o=n,a=0;a>6|192,e[n++]=63&r|128):55296===(64512&r)&&56320===(64512&(i=t.charCodeAt(a+1)))?(r=65536+((1023&r)<<10)+(1023&i),++a,e[n++]=r>>18|240,e[n++]=r>>12&63|128,e[n++]=r>>6&63|128,e[n++]=63&r|128):(e[n++]=r>>12|224,e[n++]=r>>6&63|128,e[n++]=63&r|128);return n-o}},1778:function(){},2262:function(t,e,n){"use strict";n.d(e,{BK:function(){return Ut},Bj:function(){return o},Fl:function(){return Gt},IU:function(){return It},Jd:function(){return S},OT:function(){return xt},PG:function(){return kt},SU:function(){return zt},Um:function(){return wt},Vh:function(){return jt},WL:function(){return Wt},X$:function(){return A},X3:function(){return At},XI:function(){return Bt},Xl:function(){return Mt},dq:function(){return Lt},iH:function(){return Rt},j:function(){return C},lk:function(){return k},qj:function(){return bt},qq:function(){return _},yT:function(){return Tt}});var r=n(3577);let i;class o{constructor(t=!1){this.active=!0,this.effects=[],this.cleanups=[],!t&&i&&(this.parent=i,this.index=(i.scopes||(i.scopes=[])).push(this)-1)}run(t){if(this.active){const e=i;try{return i=this,t()}finally{i=e}}else 0}on(){i=this}off(){i=this.parent}stop(t){if(this.active){let e,n;for(e=0,n=this.effects.length;e{const e=new Set(t);return e.w=0,e.n=0,e},l=t=>(t.w&p)>0,u=t=>(t.n&p)>0,c=({deps:t})=>{if(t.length)for(let e=0;e{const{deps:e}=t;if(e.length){let n=0;for(let r=0;r{("length"===e||e>=i)&&u.push(t)}));else switch(void 0!==n&&u.push(l.get(n)),e){case"add":(0,r.kJ)(t)?(0,r.S0)(n)&&u.push(l.get("length")):(u.push(l.get(y)),(0,r._N)(t)&&u.push(l.get(m)));break;case"delete":(0,r.kJ)(t)||(u.push(l.get(y)),(0,r._N)(t)&&u.push(l.get(m)));break;case"set":(0,r._N)(t)&&u.push(l.get(y));break}if(1===u.length)u[0]&&I(u[0]);else{const t=[];for(const e of u)e&&t.push(...e);I(s(t))}}function I(t,e){const n=(0,r.kJ)(t)?t:[...t];for(const r of n)r.computed&&M(r,e);for(const r of n)r.computed||M(r,e)}function M(t,e){(t!==g||t.allowRecurse)&&(t.scheduler?t.scheduler():t.run())}const D=(0,r.fY)("__proto__,__v_isRef,__isVue"),O=new Set(Object.getOwnPropertyNames(Symbol).filter((t=>"arguments"!==t&&"caller"!==t)).map((t=>Symbol[t])).filter(r.yk)),E=Z(),P=Z(!1,!0),L=Z(!0),R=B();function B(){const t={};return["includes","indexOf","lastIndexOf"].forEach((e=>{t[e]=function(...t){const n=It(this);for(let e=0,i=this.length;e{t[e]=function(...t){S();const n=It(this)[e].apply(this,t);return k(),n}})),t}function Z(t=!1,e=!1){return function(n,i,o){if("__v_isReactive"===i)return!t;if("__v_isReadonly"===i)return t;if("__v_isShallow"===i)return e;if("__v_raw"===i&&o===(t?e?yt:gt:e?vt:pt).get(n))return n;const a=(0,r.kJ)(n);if(!t&&a&&(0,r.RI)(R,i))return Reflect.get(R,i,o);const s=Reflect.get(n,i,o);return((0,r.yk)(i)?O.has(i):D(i))?s:(t||C(n,"get",i),e?s:Lt(s)?a&&(0,r.S0)(i)?s:s.value:(0,r.Kn)(s)?t?xt(s):bt(s):s)}}const F=N(),z=N(!0);function N(t=!1){return function(e,n,i,o){let a=e[n];if(Ct(a)&&Lt(a)&&!Lt(i))return!1;if(!t&&!Ct(i)&&(Tt(i)||(i=It(i),a=It(a)),!(0,r.kJ)(e)&&Lt(a)&&!Lt(i)))return a.value=i,!0;const s=(0,r.kJ)(e)&&(0,r.S0)(n)?Number(n)t,Y=t=>Reflect.getPrototypeOf(t);function X(t,e,n=!1,r=!1){t=t["__v_raw"];const i=It(t),o=It(e);n||(e!==o&&C(i,"get",e),C(i,"get",o));const{has:a}=Y(i),s=r?q:n?Ot:Dt;return a.call(i,e)?s(t.get(e)):a.call(i,o)?s(t.get(o)):void(t!==i&&t.get(e))}function $(t,e=!1){const n=this["__v_raw"],r=It(n),i=It(t);return e||(t!==i&&C(r,"has",t),C(r,"has",i)),t===i?n.has(t):n.has(t)||n.has(i)}function K(t,e=!1){return t=t["__v_raw"],!e&&C(It(t),"iterate",y),Reflect.get(t,"size",t)}function J(t){t=It(t);const e=It(this),n=Y(e),r=n.has.call(e,t);return r||(e.add(t),A(e,"add",t,t)),this}function Q(t,e){e=It(e);const n=It(this),{has:i,get:o}=Y(n);let a=i.call(n,t);a||(t=It(t),a=i.call(n,t));const s=o.call(n,t);return n.set(t,e),a?(0,r.aU)(e,s)&&A(n,"set",t,e,s):A(n,"add",t,e),this}function tt(t){const e=It(this),{has:n,get:r}=Y(e);let i=n.call(e,t);i||(t=It(t),i=n.call(e,t));const o=r?r.call(e,t):void 0,a=e.delete(t);return i&&A(e,"delete",t,void 0,o),a}function et(){const t=It(this),e=0!==t.size,n=void 0,r=t.clear();return e&&A(t,"clear",void 0,void 0,n),r}function nt(t,e){return function(n,r){const i=this,o=i["__v_raw"],a=It(o),s=e?q:t?Ot:Dt;return!t&&C(a,"iterate",y),o.forEach(((t,e)=>n.call(r,s(t),s(e),i)))}}function rt(t,e,n){return function(...i){const o=this["__v_raw"],a=It(o),s=(0,r._N)(a),l="entries"===t||t===Symbol.iterator&&s,u="keys"===t&&s,c=o[t](...i),f=n?q:e?Ot:Dt;return!e&&C(a,"iterate",u?m:y),{next(){const{value:t,done:e}=c.next();return e?{value:t,done:e}:{value:l?[f(t[0]),f(t[1])]:f(t),done:e}},[Symbol.iterator](){return this}}}}function it(t){return function(...e){return"delete"!==t&&this}}function ot(){const t={get(t){return X(this,t)},get size(){return K(this)},has:$,add:J,set:Q,delete:tt,clear:et,forEach:nt(!1,!1)},e={get(t){return X(this,t,!1,!0)},get size(){return K(this)},has:$,add:J,set:Q,delete:tt,clear:et,forEach:nt(!1,!0)},n={get(t){return X(this,t,!0)},get size(){return K(this,!0)},has(t){return $.call(this,t,!0)},add:it("add"),set:it("set"),delete:it("delete"),clear:it("clear"),forEach:nt(!0,!1)},r={get(t){return X(this,t,!0,!0)},get size(){return K(this,!0)},has(t){return $.call(this,t,!0)},add:it("add"),set:it("set"),delete:it("delete"),clear:it("clear"),forEach:nt(!0,!0)},i=["keys","values","entries",Symbol.iterator];return i.forEach((i=>{t[i]=rt(i,!1,!1),n[i]=rt(i,!0,!1),e[i]=rt(i,!1,!0),r[i]=rt(i,!0,!0)})),[t,n,e,r]}const[at,st,lt,ut]=ot();function ct(t,e){const n=e?t?ut:lt:t?st:at;return(e,i,o)=>"__v_isReactive"===i?!t:"__v_isReadonly"===i?t:"__v_raw"===i?e:Reflect.get((0,r.RI)(n,i)&&i in e?n:e,i,o)}const ft={get:ct(!1,!1)},ht={get:ct(!1,!0)},dt={get:ct(!0,!1)};const pt=new WeakMap,vt=new WeakMap,gt=new WeakMap,yt=new WeakMap;function mt(t){switch(t){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function _t(t){return t["__v_skip"]||!Object.isExtensible(t)?0:mt((0,r.W7)(t))}function bt(t){return Ct(t)?t:St(t,!1,j,ft,pt)}function wt(t){return St(t,!1,G,ht,vt)}function xt(t){return St(t,!0,H,dt,gt)}function St(t,e,n,i,o){if(!(0,r.Kn)(t))return t;if(t["__v_raw"]&&(!e||!t["__v_isReactive"]))return t;const a=o.get(t);if(a)return a;const s=_t(t);if(0===s)return t;const l=new Proxy(t,2===s?i:n);return o.set(t,l),l}function kt(t){return Ct(t)?kt(t["__v_raw"]):!(!t||!t["__v_isReactive"])}function Ct(t){return!(!t||!t["__v_isReadonly"])}function Tt(t){return!(!t||!t["__v_isShallow"])}function At(t){return kt(t)||Ct(t)}function It(t){const e=t&&t["__v_raw"];return e?It(e):t}function Mt(t){return(0,r.Nj)(t,"__v_skip",!0),t}const Dt=t=>(0,r.Kn)(t)?bt(t):t,Ot=t=>(0,r.Kn)(t)?xt(t):t;function Et(t){w&&g&&(t=It(t),T(t.dep||(t.dep=s())))}function Pt(t,e){t=It(t),t.dep&&I(t.dep)}function Lt(t){return!(!t||!0!==t.__v_isRef)}function Rt(t){return Zt(t,!1)}function Bt(t){return Zt(t,!0)}function Zt(t,e){return Lt(t)?t:new Ft(t,e)}class Ft{constructor(t,e){this.__v_isShallow=e,this.dep=void 0,this.__v_isRef=!0,this._rawValue=e?t:It(t),this._value=e?t:Dt(t)}get value(){return Et(this),this._value}set value(t){t=this.__v_isShallow?t:It(t),(0,r.aU)(t,this._rawValue)&&(this._rawValue=t,this._value=this.__v_isShallow?t:Dt(t),Pt(this,t))}}function zt(t){return Lt(t)?t.value:t}const Nt={get:(t,e,n)=>zt(Reflect.get(t,e,n)),set:(t,e,n,r)=>{const i=t[e];return Lt(i)&&!Lt(n)?(i.value=n,!0):Reflect.set(t,e,n,r)}};function Wt(t){return kt(t)?t:new Proxy(t,Nt)}function Ut(t){const e=(0,r.kJ)(t)?new Array(t.length):{};for(const n in t)e[n]=jt(t,n);return e}class Vt{constructor(t,e,n){this._object=t,this._key=e,this._defaultValue=n,this.__v_isRef=!0}get value(){const t=this._object[this._key];return void 0===t?this._defaultValue:t}set value(t){this._object[this._key]=t}}function jt(t,e,n){const r=t[e];return Lt(r)?r:new Vt(t,e,n)}class Ht{constructor(t,e,n,r){this._setter=e,this.dep=void 0,this.__v_isRef=!0,this._dirty=!0,this.effect=new _(t,(()=>{this._dirty||(this._dirty=!0,Pt(this))})),this.effect.computed=this,this.effect.active=this._cacheable=!r,this["__v_isReadonly"]=n}get value(){const t=It(this);return Et(t),!t._dirty&&t._cacheable||(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function Gt(t,e,n=!1){let i,o;const a=(0,r.mf)(t);a?(i=t,o=r.dG):(i=t.get,o=t.set);const s=new Ht(i,o,a||!o,n);return s}},6252:function(t,e,n){"use strict";n.d(e,{$d:function(){return d},Ah:function(){return Nt},Cn:function(){return Y},FN:function(){return Rn},Fl:function(){return tr},HY:function(){return tn},JJ:function(){return it},Jd:function(){return zt},Ko:function(){return ee},LL:function(){return Kt},P$:function(){return gt},Q2:function(){return Jt},Q6:function(){return xt},U2:function(){return mt},Uk:function(){return kn},Us:function(){return We},Wm:function(){return bn},Xn:function(){return Zt},Y3:function(){return M},Y8:function(){return dt},YP:function(){return lt},ZK:function(){return a},_:function(){return _n},aZ:function(){return St},bv:function(){return Bt},dD:function(){return q},dG:function(){return Mn},f3:function(){return ot},h:function(){return er},iD:function(){return hn},ic:function(){return Ft},j4:function(){return dn},kq:function(){return Cn},lR:function(){return Qe},m0:function(){return at},nK:function(){return wt},up:function(){return Xt},w5:function(){return X},wF:function(){return Rt},wg:function(){return sn},wy:function(){return Ht}});var r=n(2262),i=n(3577);const o=[];function a(t,...e){(0,r.Jd)();const n=o.length?o[o.length-1].component:null,i=n&&n.appContext.config.warnHandler,a=s();if(i)h(i,n,11,[t+e.join(""),n&&n.proxy,a.map((({vnode:t})=>`at <${Jn(n,t.type)}>`)).join("\n"),a]);else{const n=[`[Vue warn]: ${t}`,...e];a.length&&n.push("\n",...l(a)),console.warn(...n)}(0,r.lk)()}function s(){let t=o[o.length-1];if(!t)return[];const e=[];while(t){const n=e[0];n&&n.vnode===t?n.recurseCount++:e.push({vnode:t,recurseCount:0});const r=t.component&&t.component.parent;t=r&&r.vnode}return e}function l(t){const e=[];return t.forEach(((t,n)=>{e.push(...0===n?[]:["\n"],...u(t))})),e}function u({vnode:t,recurseCount:e}){const n=e>0?`... (${e} recursive calls)`:"",r=!!t.component&&null==t.component.parent,i=` at <${Jn(t.component,t.type,r)}`,o=">"+n;return t.props?[i,...c(t.props),o]:[i+o]}function c(t){const e=[],n=Object.keys(t);return n.slice(0,3).forEach((n=>{e.push(...f(n,t[n]))})),n.length>3&&e.push(" ..."),e}function f(t,e,n){return(0,i.HD)(e)?(e=JSON.stringify(e),n?e:[`${t}=${e}`]):"number"===typeof e||"boolean"===typeof e||null==e?n?e:[`${t}=${e}`]:(0,r.dq)(e)?(e=f(t,(0,r.IU)(e.value),!0),n?e:[`${t}=Ref<`,e,">"]):(0,i.mf)(e)?[`${t}=fn${e.name?`<${e.name}>`:""}`]:(e=(0,r.IU)(e),n?e:[`${t}=`,e])}function h(t,e,n,r){let i;try{i=r?t(...r):t()}catch(o){p(o,e,n)}return i}function d(t,e,n,r){if((0,i.mf)(t)){const o=h(t,e,n,r);return o&&(0,i.tI)(o)&&o.catch((t=>{p(t,e,n)})),o}const o=[];for(let i=0;i>>1,i=z(m[r]);i_&&m.splice(e,1)}function L(t,e,n,r){(0,i.kJ)(t)?n.push(...t):e&&e.includes(t,t.allowRecurse?r+1:r)||n.push(t),E()}function R(t){L(t,w,b,x)}function B(t){L(t,k,S,C)}function Z(t,e=null){if(b.length){for(I=e,w=[...new Set(b)],b.length=0,x=0;xz(t)-z(e))),C=0;Cnull==t.id?1/0:t.id;function N(t){y=!1,g=!0,Z(t),m.sort(((t,e)=>z(t)-z(e)));i.dG;try{for(_=0;_t.trim()))),e&&(o=n.map(i.He))}let l;let u=r[l=(0,i.hR)(e)]||r[l=(0,i.hR)((0,i._A)(e))];!u&&a&&(u=r[l=(0,i.hR)((0,i.rs)(e))]),u&&d(u,t,6,o);const c=r[l+"Once"];if(c){if(t.emitted){if(t.emitted[l])return}else t.emitted={};t.emitted[l]=!0,d(c,t,6,o)}}function U(t,e,n=!1){const r=e.emitsCache,o=r.get(t);if(void 0!==o)return o;const a=t.emits;let s={},l=!1;if(!(0,i.mf)(t)){const r=t=>{const n=U(t,e,!0);n&&(l=!0,(0,i.l7)(s,n))};!n&&e.mixins.length&&e.mixins.forEach(r),t.extends&&r(t.extends),t.mixins&&t.mixins.forEach(r)}return a||l?((0,i.kJ)(a)?a.forEach((t=>s[t]=null)):(0,i.l7)(s,a),r.set(t,s),s):(r.set(t,null),null)}function V(t,e){return!(!t||!(0,i.F7)(e))&&(e=e.slice(2).replace(/Once$/,""),(0,i.RI)(t,e[0].toLowerCase()+e.slice(1))||(0,i.RI)(t,(0,i.rs)(e))||(0,i.RI)(t,e))}let j=null,H=null;function G(t){const e=j;return j=t,H=t&&t.type.__scopeId||null,e}function q(t){H=t}function Y(){H=null}function X(t,e=j,n){if(!e)return t;if(t._n)return t;const r=(...n)=>{r._d&&cn(-1);const i=G(e),o=t(...n);return G(i),r._d&&cn(1),o};return r._n=!0,r._c=!0,r._d=!0,r}function $(t){const{type:e,vnode:n,proxy:r,withProxy:o,props:a,propsOptions:[s],slots:l,attrs:u,emit:c,render:f,renderCache:h,data:d,setupState:v,ctx:g,inheritAttrs:y}=t;let m,_;const b=G(t);try{if(4&n.shapeFlag){const t=o||r;m=Tn(f.call(t,t,h,a,v,d,g)),_=u}else{const t=e;0,m=Tn(t.length>1?t(a,{attrs:u,slots:l,emit:c}):t(a,null)),_=e.props?u:K(u)}}catch(x){on.length=0,p(x,t,1),m=bn(nn)}let w=m;if(_&&!1!==y){const t=Object.keys(_),{shapeFlag:e}=w;t.length&&7&e&&(s&&t.some(i.tR)&&(_=J(_,s)),w=Sn(w,_))}return n.dirs&&(w=Sn(w),w.dirs=w.dirs?w.dirs.concat(n.dirs):n.dirs),n.transition&&(w.transition=n.transition),m=w,G(b),m}const K=t=>{let e;for(const n in t)("class"===n||"style"===n||(0,i.F7)(n))&&((e||(e={}))[n]=t[n]);return e},J=(t,e)=>{const n={};for(const r in t)(0,i.tR)(r)&&r.slice(9)in e||(n[r]=t[r]);return n};function Q(t,e,n){const{props:r,children:i,component:o}=t,{props:a,children:s,patchFlag:l}=e,u=o.emitsOptions;if(e.dirs||e.transition)return!0;if(!(n&&l>=0))return!(!i&&!s||s&&s.$stable)||r!==a&&(r?!a||tt(r,a,u):!!a);if(1024&l)return!0;if(16&l)return r?tt(r,a,u):!!a;if(8&l){const t=e.dynamicProps;for(let e=0;et.__isSuspense;function rt(t,e){e&&e.pendingBranch?(0,i.kJ)(t)?e.effects.push(...t):e.effects.push(t):B(t)}function it(t,e){if(Ln){let n=Ln.provides;const r=Ln.parent&&Ln.parent.provides;r===n&&(n=Ln.provides=Object.create(r)),n[t]=e}else 0}function ot(t,e,n=!1){const r=Ln||j;if(r){const o=null==r.parent?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(o&&t in o)return o[t];if(arguments.length>1)return n&&(0,i.mf)(e)?e.call(r.proxy):e}else 0}function at(t,e){return ut(t,null,e)}const st={};function lt(t,e,n){return ut(t,e,n)}function ut(t,e,{immediate:n,deep:o,flush:a,onTrack:s,onTrigger:l}=i.kT){const u=Ln;let c,f,p=!1,v=!1;if((0,r.dq)(t)?(c=()=>t.value,p=(0,r.yT)(t)):(0,r.PG)(t)?(c=()=>t,o=!0):(0,i.kJ)(t)?(v=!0,p=t.some((t=>(0,r.PG)(t)||(0,r.yT)(t))),c=()=>t.map((t=>(0,r.dq)(t)?t.value:(0,r.PG)(t)?ht(t):(0,i.mf)(t)?h(t,u,2):void 0))):c=(0,i.mf)(t)?e?()=>h(t,u,2):()=>{if(!u||!u.isUnmounted)return f&&f(),d(t,u,3,[g])}:i.dG,e&&o){const t=c;c=()=>ht(t())}let g=t=>{f=b.onStop=()=>{h(t,u,4)}};if(Wn)return g=i.dG,e?n&&d(e,u,3,[c(),v?[]:void 0,g]):c(),i.dG;let y=v?[]:st;const m=()=>{if(b.active)if(e){const t=b.run();(o||p||(v?t.some(((t,e)=>(0,i.aU)(t,y[e]))):(0,i.aU)(t,y)))&&(f&&f(),d(e,u,3,[t,y===st?void 0:y,g]),y=t)}else b.run()};let _;m.allowRecurse=!!e,_="sync"===a?m:"post"===a?()=>Ne(m,u&&u.suspense):()=>R(m);const b=new r.qq(c,_);return e?n?m():y=b.run():"post"===a?Ne(b.run.bind(b),u&&u.suspense):b.run(),()=>{b.stop(),u&&u.scope&&(0,i.Od)(u.scope.effects,b)}}function ct(t,e,n){const r=this.proxy,o=(0,i.HD)(t)?t.includes(".")?ft(r,t):()=>r[t]:t.bind(r,r);let a;(0,i.mf)(e)?a=e:(a=e.handler,n=e);const s=Ln;Bn(this);const l=ut(o,a.bind(r),n);return s?Bn(s):Zn(),l}function ft(t,e){const n=e.split(".");return()=>{let e=t;for(let t=0;t{ht(t,e)}));else if((0,i.PO)(t))for(const n in t)ht(t[n],e);return t}function dt(){const t={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Bt((()=>{t.isMounted=!0})),zt((()=>{t.isUnmounting=!0})),t}const pt=[Function,Array],vt={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:pt,onEnter:pt,onAfterEnter:pt,onEnterCancelled:pt,onBeforeLeave:pt,onLeave:pt,onAfterLeave:pt,onLeaveCancelled:pt,onBeforeAppear:pt,onAppear:pt,onAfterAppear:pt,onAppearCancelled:pt},setup(t,{slots:e}){const n=Rn(),i=dt();let o;return()=>{const a=e.default&&xt(e.default(),!0);if(!a||!a.length)return;let s=a[0];if(a.length>1){let t=!1;for(const e of a)if(e.type!==nn){0,s=e,t=!0;break}}const l=(0,r.IU)(t),{mode:u}=l;if(i.isLeaving)return _t(s);const c=bt(s);if(!c)return _t(s);const f=mt(c,l,i,n);wt(c,f);const h=n.subTree,d=h&&bt(h);let p=!1;const{getTransitionKey:v}=c.type;if(v){const t=v();void 0===o?o=t:t!==o&&(o=t,p=!0)}if(d&&d.type!==nn&&(!vn(c,d)||p)){const t=mt(d,l,i,n);if(wt(d,t),"out-in"===u)return i.isLeaving=!0,t.afterLeave=()=>{i.isLeaving=!1,n.update()},_t(s);"in-out"===u&&c.type!==nn&&(t.delayLeave=(t,e,n)=>{const r=yt(i,d);r[String(d.key)]=d,t._leaveCb=()=>{e(),t._leaveCb=void 0,delete f.delayedLeave},f.delayedLeave=n})}return s}}},gt=vt;function yt(t,e){const{leavingVNodes:n}=t;let r=n.get(e.type);return r||(r=Object.create(null),n.set(e.type,r)),r}function mt(t,e,n,r){const{appear:o,mode:a,persisted:s=!1,onBeforeEnter:l,onEnter:u,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:h,onLeave:p,onAfterLeave:v,onLeaveCancelled:g,onBeforeAppear:y,onAppear:m,onAfterAppear:_,onAppearCancelled:b}=e,w=String(t.key),x=yt(n,t),S=(t,e)=>{t&&d(t,r,9,e)},k=(t,e)=>{const n=e[1];S(t,e),(0,i.kJ)(t)?t.every((t=>t.length<=1))&&n():t.length<=1&&n()},C={mode:a,persisted:s,beforeEnter(e){let r=l;if(!n.isMounted){if(!o)return;r=y||l}e._leaveCb&&e._leaveCb(!0);const i=x[w];i&&vn(t,i)&&i.el._leaveCb&&i.el._leaveCb(),S(r,[e])},enter(t){let e=u,r=c,i=f;if(!n.isMounted){if(!o)return;e=m||u,r=_||c,i=b||f}let a=!1;const s=t._enterCb=e=>{a||(a=!0,S(e?i:r,[t]),C.delayedLeave&&C.delayedLeave(),t._enterCb=void 0)};e?k(e,[t,s]):s()},leave(e,r){const i=String(t.key);if(e._enterCb&&e._enterCb(!0),n.isUnmounting)return r();S(h,[e]);let o=!1;const a=e._leaveCb=n=>{o||(o=!0,r(),S(n?g:v,[e]),e._leaveCb=void 0,x[i]===t&&delete x[i])};x[i]=t,p?k(p,[e,a]):a()},clone(t){return mt(t,e,n,r)}};return C}function _t(t){if(Ct(t))return t=Sn(t),t.children=null,t}function bt(t){return Ct(t)?t.children?t.children[0]:void 0:t}function wt(t,e){6&t.shapeFlag&&t.component?wt(t.component.subTree,e):128&t.shapeFlag?(t.ssContent.transition=e.clone(t.ssContent),t.ssFallback.transition=e.clone(t.ssFallback)):t.transition=e}function xt(t,e=!1,n){let r=[],i=0;for(let o=0;o1)for(let o=0;o!!t.type.__asyncLoader;const Ct=t=>t.type.__isKeepAlive;RegExp,RegExp;function Tt(t,e){return(0,i.kJ)(t)?t.some((t=>Tt(t,e))):(0,i.HD)(t)?t.split(",").includes(e):!!t.test&&t.test(e)}function At(t,e){Mt(t,"a",e)}function It(t,e){Mt(t,"da",e)}function Mt(t,e,n=Ln){const r=t.__wdc||(t.__wdc=()=>{let e=n;while(e){if(e.isDeactivated)return;e=e.parent}return t()});if(Pt(e,r,n),n){let t=n.parent;while(t&&t.parent)Ct(t.parent.vnode)&&Dt(r,e,n,t),t=t.parent}}function Dt(t,e,n,r){const o=Pt(e,t,r,!0);Nt((()=>{(0,i.Od)(r[e],o)}),n)}function Ot(t){let e=t.shapeFlag;256&e&&(e-=256),512&e&&(e-=512),t.shapeFlag=e}function Et(t){return 128&t.shapeFlag?t.ssContent:t}function Pt(t,e,n=Ln,i=!1){if(n){const o=n[t]||(n[t]=[]),a=e.__weh||(e.__weh=(...i)=>{if(n.isUnmounted)return;(0,r.Jd)(),Bn(n);const o=d(e,n,t,i);return Zn(),(0,r.lk)(),o});return i?o.unshift(a):o.push(a),a}}const Lt=t=>(e,n=Ln)=>(!Wn||"sp"===t)&&Pt(t,e,n),Rt=Lt("bm"),Bt=Lt("m"),Zt=Lt("bu"),Ft=Lt("u"),zt=Lt("bum"),Nt=Lt("um"),Wt=Lt("sp"),Ut=Lt("rtg"),Vt=Lt("rtc");function jt(t,e=Ln){Pt("ec",t,e)}function Ht(t,e){const n=j;if(null===n)return t;const r=Yn(n)||n.proxy,o=t.dirs||(t.dirs=[]);for(let a=0;ae(t,n,void 0,a&&a[n])));else{const n=Object.keys(t);o=new Array(n.length);for(let r=0,i=n.length;rt?Fn(t)?Yn(t)||t.proxy:ne(t.parent):null,re=(0,i.l7)(Object.create(null),{$:t=>t,$el:t=>t.vnode.el,$data:t=>t.data,$props:t=>t.props,$attrs:t=>t.attrs,$slots:t=>t.slots,$refs:t=>t.refs,$parent:t=>ne(t.parent),$root:t=>ne(t.root),$emit:t=>t.emit,$options:t=>ce(t),$forceUpdate:t=>t.f||(t.f=()=>O(t.update)),$nextTick:t=>t.n||(t.n=M.bind(t.proxy)),$watch:t=>ct.bind(t)}),ie={get({_:t},e){const{ctx:n,setupState:o,data:a,props:s,accessCache:l,type:u,appContext:c}=t;let f;if("$"!==e[0]){const r=l[e];if(void 0!==r)switch(r){case 1:return o[e];case 2:return a[e];case 4:return n[e];case 3:return s[e]}else{if(o!==i.kT&&(0,i.RI)(o,e))return l[e]=1,o[e];if(a!==i.kT&&(0,i.RI)(a,e))return l[e]=2,a[e];if((f=t.propsOptions[0])&&(0,i.RI)(f,e))return l[e]=3,s[e];if(n!==i.kT&&(0,i.RI)(n,e))return l[e]=4,n[e];oe&&(l[e]=0)}}const h=re[e];let d,p;return h?("$attrs"===e&&(0,r.j)(t,"get",e),h(t)):(d=u.__cssModules)&&(d=d[e])?d:n!==i.kT&&(0,i.RI)(n,e)?(l[e]=4,n[e]):(p=c.config.globalProperties,(0,i.RI)(p,e)?p[e]:void 0)},set({_:t},e,n){const{data:r,setupState:o,ctx:a}=t;return o!==i.kT&&(0,i.RI)(o,e)?(o[e]=n,!0):r!==i.kT&&(0,i.RI)(r,e)?(r[e]=n,!0):!(0,i.RI)(t.props,e)&&(("$"!==e[0]||!(e.slice(1)in t))&&(a[e]=n,!0))},has({_:{data:t,setupState:e,accessCache:n,ctx:r,appContext:o,propsOptions:a}},s){let l;return!!n[s]||t!==i.kT&&(0,i.RI)(t,s)||e!==i.kT&&(0,i.RI)(e,s)||(l=a[0])&&(0,i.RI)(l,s)||(0,i.RI)(r,s)||(0,i.RI)(re,s)||(0,i.RI)(o.config.globalProperties,s)},defineProperty(t,e,n){return null!=n.get?t._.accessCache[e]=0:(0,i.RI)(n,"value")&&this.set(t,e,n.value,null),Reflect.defineProperty(t,e,n)}};let oe=!0;function ae(t){const e=ce(t),n=t.proxy,o=t.ctx;oe=!1,e.beforeCreate&&le(e.beforeCreate,t,"bc");const{data:a,computed:s,methods:l,watch:u,provide:c,inject:f,created:h,beforeMount:d,mounted:p,beforeUpdate:v,updated:g,activated:y,deactivated:m,beforeDestroy:_,beforeUnmount:b,destroyed:w,unmounted:x,render:S,renderTracked:k,renderTriggered:C,errorCaptured:T,serverPrefetch:A,expose:I,inheritAttrs:M,components:D,directives:O,filters:E}=e,P=null;if(f&&se(f,o,P,t.appContext.config.unwrapInjectedRef),l)for(const r in l){const t=l[r];(0,i.mf)(t)&&(o[r]=t.bind(n))}if(a){0;const e=a.call(n,n);0,(0,i.Kn)(e)&&(t.data=(0,r.qj)(e))}if(oe=!0,s)for(const r in s){const t=s[r],e=(0,i.mf)(t)?t.bind(n,n):(0,i.mf)(t.get)?t.get.bind(n,n):i.dG;0;const a=!(0,i.mf)(t)&&(0,i.mf)(t.set)?t.set.bind(n):i.dG,l=tr({get:e,set:a});Object.defineProperty(o,r,{enumerable:!0,configurable:!0,get:()=>l.value,set:t=>l.value=t})}if(u)for(const r in u)ue(u[r],o,n,r);if(c){const t=(0,i.mf)(c)?c.call(n):c;Reflect.ownKeys(t).forEach((e=>{it(e,t[e])}))}function L(t,e){(0,i.kJ)(e)?e.forEach((e=>t(e.bind(n)))):e&&t(e.bind(n))}if(h&&le(h,t,"c"),L(Rt,d),L(Bt,p),L(Zt,v),L(Ft,g),L(At,y),L(It,m),L(jt,T),L(Vt,k),L(Ut,C),L(zt,b),L(Nt,x),L(Wt,A),(0,i.kJ)(I))if(I.length){const e=t.exposed||(t.exposed={});I.forEach((t=>{Object.defineProperty(e,t,{get:()=>n[t],set:e=>n[t]=e})}))}else t.exposed||(t.exposed={});S&&t.render===i.dG&&(t.render=S),null!=M&&(t.inheritAttrs=M),D&&(t.components=D),O&&(t.directives=O)}function se(t,e,n=i.dG,o=!1){(0,i.kJ)(t)&&(t=ve(t));for(const a in t){const n=t[a];let s;s=(0,i.Kn)(n)?"default"in n?ot(n.from||a,n.default,!0):ot(n.from||a):ot(n),(0,r.dq)(s)&&o?Object.defineProperty(e,a,{enumerable:!0,configurable:!0,get:()=>s.value,set:t=>s.value=t}):e[a]=s}}function le(t,e,n){d((0,i.kJ)(t)?t.map((t=>t.bind(e.proxy))):t.bind(e.proxy),e,n)}function ue(t,e,n,r){const o=r.includes(".")?ft(n,r):()=>n[r];if((0,i.HD)(t)){const n=e[t];(0,i.mf)(n)&<(o,n)}else if((0,i.mf)(t))lt(o,t.bind(n));else if((0,i.Kn)(t))if((0,i.kJ)(t))t.forEach((t=>ue(t,e,n,r)));else{const r=(0,i.mf)(t.handler)?t.handler.bind(n):e[t.handler];(0,i.mf)(r)&<(o,r,t)}else 0}function ce(t){const e=t.type,{mixins:n,extends:r}=e,{mixins:i,optionsCache:o,config:{optionMergeStrategies:a}}=t.appContext,s=o.get(e);let l;return s?l=s:i.length||n||r?(l={},i.length&&i.forEach((t=>fe(l,t,a,!0))),fe(l,e,a)):l=e,o.set(e,l),l}function fe(t,e,n,r=!1){const{mixins:i,extends:o}=e;o&&fe(t,o,n,!0),i&&i.forEach((e=>fe(t,e,n,!0)));for(const a in e)if(r&&"expose"===a);else{const r=he[a]||n&&n[a];t[a]=r?r(t[a],e[a]):e[a]}return t}const he={data:de,props:ye,emits:ye,methods:ye,computed:ye,beforeCreate:ge,created:ge,beforeMount:ge,mounted:ge,beforeUpdate:ge,updated:ge,beforeDestroy:ge,beforeUnmount:ge,destroyed:ge,unmounted:ge,activated:ge,deactivated:ge,errorCaptured:ge,serverPrefetch:ge,components:ye,directives:ye,watch:me,provide:de,inject:pe};function de(t,e){return e?t?function(){return(0,i.l7)((0,i.mf)(t)?t.call(this,this):t,(0,i.mf)(e)?e.call(this,this):e)}:e:t}function pe(t,e){return ye(ve(t),ve(e))}function ve(t){if((0,i.kJ)(t)){const e={};for(let n=0;n0)||16&l){let r;we(t,e,a,s)&&(f=!0);for(const o in u)e&&((0,i.RI)(e,o)||(r=(0,i.rs)(o))!==o&&(0,i.RI)(e,r))||(c?!n||void 0===n[o]&&void 0===n[r]||(a[o]=xe(c,u,o,void 0,t,!0)):delete a[o]);if(s!==u)for(const t in s)e&&(0,i.RI)(e,t)||(delete s[t],f=!0)}else if(8&l){const n=t.vnode.dynamicProps;for(let r=0;r{u=!0;const[n,r]=Se(t,e,!0);(0,i.l7)(s,n),r&&l.push(...r)};!n&&e.mixins.length&&e.mixins.forEach(r),t.extends&&r(t.extends),t.mixins&&t.mixins.forEach(r)}if(!a&&!u)return r.set(t,i.Z6),i.Z6;if((0,i.kJ)(a))for(let f=0;f-1,r[1]=n<0||t-1||(0,i.RI)(r,"default"))&&l.push(e)}}}}const c=[s,l];return r.set(t,c),c}function ke(t){return"$"!==t[0]}function Ce(t){const e=t&&t.toString().match(/^\s*function (\w+)/);return e?e[1]:null===t?"null":""}function Te(t,e){return Ce(t)===Ce(e)}function Ae(t,e){return(0,i.kJ)(e)?e.findIndex((e=>Te(e,t))):(0,i.mf)(e)&&Te(e,t)?0:-1}const Ie=t=>"_"===t[0]||"$stable"===t,Me=t=>(0,i.kJ)(t)?t.map(Tn):[Tn(t)],De=(t,e,n)=>{if(e._n)return e;const r=X(((...t)=>Me(e(...t))),n);return r._c=!1,r},Oe=(t,e,n)=>{const r=t._ctx;for(const o in t){if(Ie(o))continue;const n=t[o];if((0,i.mf)(n))e[o]=De(o,n,r);else if(null!=n){0;const t=Me(n);e[o]=()=>t}}},Ee=(t,e)=>{const n=Me(e);t.slots.default=()=>n},Pe=(t,e)=>{if(32&t.vnode.shapeFlag){const n=e._;n?(t.slots=(0,r.IU)(e),(0,i.Nj)(e,"_",n)):Oe(e,t.slots={})}else t.slots={},e&&Ee(t,e);(0,i.Nj)(t.slots,gn,1)},Le=(t,e,n)=>{const{vnode:r,slots:o}=t;let a=!0,s=i.kT;if(32&r.shapeFlag){const t=e._;t?n&&1===t?a=!1:((0,i.l7)(o,e),n||1!==t||delete o._):(a=!e.$stable,Oe(e,o)),s=e}else e&&(Ee(t,e),s={default:1});if(a)for(const i in o)Ie(i)||i in s||delete o[i]};function Re(){return{app:null,config:{isNativeTag:i.NO,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Be=0;function Ze(t,e){return function(n,r=null){(0,i.mf)(n)||(n=Object.assign({},n)),null==r||(0,i.Kn)(r)||(r=null);const o=Re(),a=new Set;let s=!1;const l=o.app={_uid:Be++,_component:n,_props:r,_container:null,_context:o,_instance:null,version:nr,get config(){return o.config},set config(t){0},use(t,...e){return a.has(t)||(t&&(0,i.mf)(t.install)?(a.add(t),t.install(l,...e)):(0,i.mf)(t)&&(a.add(t),t(l,...e))),l},mixin(t){return o.mixins.includes(t)||o.mixins.push(t),l},component(t,e){return e?(o.components[t]=e,l):o.components[t]},directive(t,e){return e?(o.directives[t]=e,l):o.directives[t]},mount(i,a,u){if(!s){0;const c=bn(n,r);return c.appContext=o,a&&e?e(c,i):t(c,i,u),s=!0,l._container=i,i.__vue_app__=l,Yn(c.component)||c.component.proxy}},unmount(){s&&(t(null,l._container),delete l._container.__vue_app__)},provide(t,e){return o.provides[t]=e,l}};return l}}function Fe(t,e,n,o,a=!1){if((0,i.kJ)(t))return void t.forEach(((t,r)=>Fe(t,e&&((0,i.kJ)(e)?e[r]:e),n,o,a)));if(kt(o)&&!a)return;const s=4&o.shapeFlag?Yn(o.component)||o.component.proxy:o.el,l=a?null:s,{i:u,r:c}=t;const f=e&&e.r,d=u.refs===i.kT?u.refs={}:u.refs,p=u.setupState;if(null!=f&&f!==c&&((0,i.HD)(f)?(d[f]=null,(0,i.RI)(p,f)&&(p[f]=null)):(0,r.dq)(f)&&(f.value=null)),(0,i.mf)(c))h(c,u,12,[l,d]);else{const e=(0,i.HD)(c),o=(0,r.dq)(c);if(e||o){const r=()=>{if(t.f){const n=e?d[c]:c.value;a?(0,i.kJ)(n)&&(0,i.Od)(n,s):(0,i.kJ)(n)?n.includes(s)||n.push(s):e?(d[c]=[s],(0,i.RI)(p,c)&&(p[c]=d[c])):(c.value=[s],t.k&&(d[t.k]=c.value))}else e?(d[c]=l,(0,i.RI)(p,c)&&(p[c]=l)):o&&(c.value=l,t.k&&(d[t.k]=l))};l?(r.id=-1,Ne(r,n)):r()}else 0}}function ze(){}const Ne=rt;function We(t){return Ue(t)}function Ue(t,e){ze();const n=(0,i.E9)();n.__VUE__=!0;const{insert:o,remove:a,patchProp:s,createElement:l,createText:u,createComment:c,setText:f,setElementText:h,parentNode:d,nextSibling:p,setScopeId:v=i.dG,cloneNode:g,insertStaticContent:y}=t,m=(t,e,n,r=null,i=null,o=null,a=!1,s=null,l=!!e.dynamicChildren)=>{if(t===e)return;t&&!vn(t,e)&&(r=K(t),H(t,i,o,!0),t=null),-2===e.patchFlag&&(l=!1,e.dynamicChildren=null);const{type:u,ref:c,shapeFlag:f}=e;switch(u){case en:_(t,e,n,r);break;case nn:b(t,e,n,r);break;case rn:null==t&&w(e,n,r,a);break;case tn:E(t,e,n,r,i,o,a,s,l);break;default:1&f?k(t,e,n,r,i,o,a,s,l):6&f?L(t,e,n,r,i,o,a,s,l):(64&f||128&f)&&u.process(t,e,n,r,i,o,a,s,l,tt)}null!=c&&i&&Fe(c,t&&t.ref,o,e||t,!e)},_=(t,e,n,r)=>{if(null==t)o(e.el=u(e.children),n,r);else{const n=e.el=t.el;e.children!==t.children&&f(n,e.children)}},b=(t,e,n,r)=>{null==t?o(e.el=c(e.children||""),n,r):e.el=t.el},w=(t,e,n,r)=>{[t.el,t.anchor]=y(t.children,e,n,r,t.el,t.anchor)},x=({el:t,anchor:e},n,r)=>{let i;while(t&&t!==e)i=p(t),o(t,n,r),t=i;o(e,n,r)},S=({el:t,anchor:e})=>{let n;while(t&&t!==e)n=p(t),a(t),t=n;a(e)},k=(t,e,n,r,i,o,a,s,l)=>{a=a||"svg"===e.type,null==t?C(e,n,r,i,o,a,s,l):I(t,e,i,o,a,s,l)},C=(t,e,n,r,a,u,c,f)=>{let d,p;const{type:v,props:y,shapeFlag:m,transition:_,patchFlag:b,dirs:w}=t;if(t.el&&void 0!==g&&-1===b)d=t.el=g(t.el);else{if(d=t.el=l(t.type,u,y&&y.is,y),8&m?h(d,t.children):16&m&&A(t.children,d,null,r,a,u&&"foreignObject"!==v,c,f),w&&Gt(t,null,r,"created"),y){for(const e in y)"value"===e||(0,i.Gg)(e)||s(d,e,null,y[e],u,t.children,r,a,X);"value"in y&&s(d,"value",null,y.value),(p=y.onVnodeBeforeMount)&&Dn(p,r,t)}T(d,t,t.scopeId,c,r)}w&&Gt(t,null,r,"beforeMount");const x=(!a||a&&!a.pendingBranch)&&_&&!_.persisted;x&&_.beforeEnter(d),o(d,e,n),((p=y&&y.onVnodeMounted)||x||w)&&Ne((()=>{p&&Dn(p,r,t),x&&_.enter(d),w&&Gt(t,null,r,"mounted")}),a)},T=(t,e,n,r,i)=>{if(n&&v(t,n),r)for(let o=0;o{for(let u=l;u{const u=e.el=t.el;let{patchFlag:c,dynamicChildren:f,dirs:d}=e;c|=16&t.patchFlag;const p=t.props||i.kT,v=e.props||i.kT;let g;n&&Ve(n,!1),(g=v.onVnodeBeforeUpdate)&&Dn(g,n,e,t),d&&Gt(e,t,n,"beforeUpdate"),n&&Ve(n,!0);const y=o&&"foreignObject"!==e.type;if(f?M(t.dynamicChildren,f,u,n,r,y,a):l||W(t,e,u,null,n,r,y,a,!1),c>0){if(16&c)D(u,e,p,v,n,r,o);else if(2&c&&p.class!==v.class&&s(u,"class",null,v.class,o),4&c&&s(u,"style",p.style,v.style,o),8&c){const i=e.dynamicProps;for(let e=0;e{g&&Dn(g,n,e,t),d&&Gt(e,t,n,"updated")}),r)},M=(t,e,n,r,i,o,a)=>{for(let s=0;s{if(n!==r){for(const u in r){if((0,i.Gg)(u))continue;const c=r[u],f=n[u];c!==f&&"value"!==u&&s(t,u,f,c,l,e.children,o,a,X)}if(n!==i.kT)for(const u in n)(0,i.Gg)(u)||u in r||s(t,u,n[u],null,l,e.children,o,a,X);"value"in r&&s(t,"value",n.value,r.value)}},E=(t,e,n,r,i,a,s,l,c)=>{const f=e.el=t?t.el:u(""),h=e.anchor=t?t.anchor:u("");let{patchFlag:d,dynamicChildren:p,slotScopeIds:v}=e;v&&(l=l?l.concat(v):v),null==t?(o(f,n,r),o(h,n,r),A(e.children,n,h,i,a,s,l,c)):d>0&&64&d&&p&&t.dynamicChildren?(M(t.dynamicChildren,p,n,i,a,s,l),(null!=e.key||i&&e===i.subTree)&&je(t,e,!0)):W(t,e,n,h,i,a,s,l,c)},L=(t,e,n,r,i,o,a,s,l)=>{e.slotScopeIds=s,null==t?512&e.shapeFlag?i.ctx.activate(e,n,r,a,l):R(e,n,r,i,o,a,l):B(t,e,l)},R=(t,e,n,r,i,o,a)=>{const s=t.component=Pn(t,r,i);if(Ct(t)&&(s.ctx.renderer=tt),Un(s),s.asyncDep){if(i&&i.registerDep(s,z),!t.el){const t=s.subTree=bn(nn);b(null,t,e,n)}}else z(s,t,e,n,i,o,a)},B=(t,e,n)=>{const r=e.component=t.component;if(Q(t,e,n)){if(r.asyncDep&&!r.asyncResolved)return void N(r,e,n);r.next=e,P(r.update),r.update()}else e.el=t.el,r.vnode=e},z=(t,e,n,o,a,s,l)=>{const u=()=>{if(t.isMounted){let e,{next:n,bu:r,u:o,parent:u,vnode:c}=t,f=n;0,Ve(t,!1),n?(n.el=c.el,N(t,n,l)):n=c,r&&(0,i.ir)(r),(e=n.props&&n.props.onVnodeBeforeUpdate)&&Dn(e,u,n,c),Ve(t,!0);const h=$(t);0;const p=t.subTree;t.subTree=h,m(p,h,d(p.el),K(p),t,a,s),n.el=h.el,null===f&&et(t,h.el),o&&Ne(o,a),(e=n.props&&n.props.onVnodeUpdated)&&Ne((()=>Dn(e,u,n,c)),a)}else{let r;const{el:l,props:u}=e,{bm:c,m:f,parent:h}=t,d=kt(e);if(Ve(t,!1),c&&(0,i.ir)(c),!d&&(r=u&&u.onVnodeBeforeMount)&&Dn(r,h,e),Ve(t,!0),l&&rt){const n=()=>{t.subTree=$(t),rt(l,t.subTree,t,a,null)};d?e.type.__asyncLoader().then((()=>!t.isUnmounted&&n())):n()}else{0;const r=t.subTree=$(t);0,m(null,r,n,o,t,a,s),e.el=r.el}if(f&&Ne(f,a),!d&&(r=u&&u.onVnodeMounted)){const t=e;Ne((()=>Dn(r,h,t)),a)}(256&e.shapeFlag||h&&kt(h.vnode)&&256&h.vnode.shapeFlag)&&t.a&&Ne(t.a,a),t.isMounted=!0,e=n=o=null}},c=t.effect=new r.qq(u,(()=>O(f)),t.scope),f=t.update=()=>c.run();f.id=t.uid,Ve(t,!0),f()},N=(t,e,n)=>{e.component=t;const i=t.vnode.props;t.vnode=e,t.next=null,be(t,e.props,i,n),Le(t,e.children,n),(0,r.Jd)(),Z(void 0,t.update),(0,r.lk)()},W=(t,e,n,r,i,o,a,s,l=!1)=>{const u=t&&t.children,c=t?t.shapeFlag:0,f=e.children,{patchFlag:d,shapeFlag:p}=e;if(d>0){if(128&d)return void V(u,f,n,r,i,o,a,s,l);if(256&d)return void U(u,f,n,r,i,o,a,s,l)}8&p?(16&c&&X(u,i,o),f!==u&&h(n,f)):16&c?16&p?V(u,f,n,r,i,o,a,s,l):X(u,i,o,!0):(8&c&&h(n,""),16&p&&A(f,n,r,i,o,a,s,l))},U=(t,e,n,r,o,a,s,l,u)=>{t=t||i.Z6,e=e||i.Z6;const c=t.length,f=e.length,h=Math.min(c,f);let d;for(d=0;df?X(t,o,a,!0,!1,h):A(e,n,r,o,a,s,l,u,h)},V=(t,e,n,r,o,a,s,l,u)=>{let c=0;const f=e.length;let h=t.length-1,d=f-1;while(c<=h&&c<=d){const r=t[c],i=e[c]=u?An(e[c]):Tn(e[c]);if(!vn(r,i))break;m(r,i,n,null,o,a,s,l,u),c++}while(c<=h&&c<=d){const r=t[h],i=e[d]=u?An(e[d]):Tn(e[d]);if(!vn(r,i))break;m(r,i,n,null,o,a,s,l,u),h--,d--}if(c>h){if(c<=d){const t=d+1,i=td)while(c<=h)H(t[c],o,a,!0),c++;else{const p=c,v=c,g=new Map;for(c=v;c<=d;c++){const t=e[c]=u?An(e[c]):Tn(e[c]);null!=t.key&&g.set(t.key,c)}let y,_=0;const b=d-v+1;let w=!1,x=0;const S=new Array(b);for(c=0;c=b){H(r,o,a,!0);continue}let i;if(null!=r.key)i=g.get(r.key);else for(y=v;y<=d;y++)if(0===S[y-v]&&vn(r,e[y])){i=y;break}void 0===i?H(r,o,a,!0):(S[i-v]=c+1,i>=x?x=i:w=!0,m(r,e[i],n,null,o,a,s,l,u),_++)}const k=w?He(S):i.Z6;for(y=k.length-1,c=b-1;c>=0;c--){const t=v+c,i=e[t],h=t+1{const{el:a,type:s,transition:l,children:u,shapeFlag:c}=t;if(6&c)return void j(t.component.subTree,e,n,r);if(128&c)return void t.suspense.move(e,n,r);if(64&c)return void s.move(t,e,n,tt);if(s===tn){o(a,e,n);for(let t=0;tl.enter(a)),i);else{const{leave:t,delayLeave:r,afterLeave:i}=l,s=()=>o(a,e,n),u=()=>{t(a,(()=>{s(),i&&i()}))};r?r(a,s,u):u()}else o(a,e,n)},H=(t,e,n,r=!1,i=!1)=>{const{type:o,props:a,ref:s,children:l,dynamicChildren:u,shapeFlag:c,patchFlag:f,dirs:h}=t;if(null!=s&&Fe(s,null,n,t,!0),256&c)return void e.ctx.deactivate(t);const d=1&c&&h,p=!kt(t);let v;if(p&&(v=a&&a.onVnodeBeforeUnmount)&&Dn(v,e,t),6&c)Y(t.component,n,r);else{if(128&c)return void t.suspense.unmount(n,r);d&&Gt(t,null,e,"beforeUnmount"),64&c?t.type.remove(t,e,n,i,tt,r):u&&(o!==tn||f>0&&64&f)?X(u,e,n,!1,!0):(o===tn&&384&f||!i&&16&c)&&X(l,e,n),r&&G(t)}(p&&(v=a&&a.onVnodeUnmounted)||d)&&Ne((()=>{v&&Dn(v,e,t),d&&Gt(t,null,e,"unmounted")}),n)},G=t=>{const{type:e,el:n,anchor:r,transition:i}=t;if(e===tn)return void q(n,r);if(e===rn)return void S(t);const o=()=>{a(n),i&&!i.persisted&&i.afterLeave&&i.afterLeave()};if(1&t.shapeFlag&&i&&!i.persisted){const{leave:e,delayLeave:r}=i,a=()=>e(n,o);r?r(t.el,o,a):a()}else o()},q=(t,e)=>{let n;while(t!==e)n=p(t),a(t),t=n;a(e)},Y=(t,e,n)=>{const{bum:r,scope:o,update:a,subTree:s,um:l}=t;r&&(0,i.ir)(r),o.stop(),a&&(a.active=!1,H(s,t,e,n)),l&&Ne(l,e),Ne((()=>{t.isUnmounted=!0}),e),e&&e.pendingBranch&&!e.isUnmounted&&t.asyncDep&&!t.asyncResolved&&t.suspenseId===e.pendingId&&(e.deps--,0===e.deps&&e.resolve())},X=(t,e,n,r=!1,i=!1,o=0)=>{for(let a=o;a6&t.shapeFlag?K(t.component.subTree):128&t.shapeFlag?t.suspense.next():p(t.anchor||t.el),J=(t,e,n)=>{null==t?e._vnode&&H(e._vnode,null,null,!0):m(e._vnode||null,t,e,null,null,null,n),F(),e._vnode=t},tt={p:m,um:H,m:j,r:G,mt:R,mc:A,pc:W,pbc:M,n:K,o:t};let nt,rt;return e&&([nt,rt]=e(tt)),{render:J,hydrate:nt,createApp:Ze(J,nt)}}function Ve({effect:t,update:e},n){t.allowRecurse=e.allowRecurse=n}function je(t,e,n=!1){const r=t.children,o=e.children;if((0,i.kJ)(r)&&(0,i.kJ)(o))for(let i=0;i>1,t[n[s]]0&&(e[r]=n[o-1]),n[o]=r)}}o=n.length,a=n[o-1];while(o-- >0)n[o]=a,a=e[a];return n}const Ge=t=>t.__isTeleport,qe=t=>t&&(t.disabled||""===t.disabled),Ye=t=>"undefined"!==typeof SVGElement&&t instanceof SVGElement,Xe=(t,e)=>{const n=t&&t.to;if((0,i.HD)(n)){if(e){const t=e(n);return t}return null}return n},$e={__isTeleport:!0,process(t,e,n,r,i,o,a,s,l,u){const{mc:c,pc:f,pbc:h,o:{insert:d,querySelector:p,createText:v,createComment:g}}=u,y=qe(e.props);let{shapeFlag:m,children:_,dynamicChildren:b}=e;if(null==t){const t=e.el=v(""),u=e.anchor=v("");d(t,n,r),d(u,n,r);const f=e.target=Xe(e.props,p),h=e.targetAnchor=v("");f&&(d(h,f),a=a||Ye(f));const g=(t,e)=>{16&m&&c(_,t,e,i,o,a,s,l)};y?g(n,u):f&&g(f,h)}else{e.el=t.el;const r=e.anchor=t.anchor,c=e.target=t.target,d=e.targetAnchor=t.targetAnchor,v=qe(t.props),g=v?n:c,m=v?r:d;if(a=a||Ye(c),b?(h(t.dynamicChildren,b,g,i,o,a,s),je(t,e,!0)):l||f(t,e,g,m,i,o,a,s,!1),y)v||Ke(e,n,r,u,1);else if((e.props&&e.props.to)!==(t.props&&t.props.to)){const t=e.target=Xe(e.props,p);t&&Ke(e,t,null,u,0)}else v&&Ke(e,c,d,u,1)}},remove(t,e,n,r,{um:i,o:{remove:o}},a){const{shapeFlag:s,children:l,anchor:u,targetAnchor:c,target:f,props:h}=t;if(f&&o(c),(a||!qe(h))&&(o(u),16&s))for(let d=0;d0?an||i.Z6:null,ln(),un>0&&an&&an.push(t),t}function hn(t,e,n,r,i,o){return fn(_n(t,e,n,r,i,o,!0))}function dn(t,e,n,r,i){return fn(bn(t,e,n,r,i,!0))}function pn(t){return!!t&&!0===t.__v_isVNode}function vn(t,e){return t.type===e.type&&t.key===e.key}const gn="__vInternal",yn=({key:t})=>null!=t?t:null,mn=({ref:t,ref_key:e,ref_for:n})=>null!=t?(0,i.HD)(t)||(0,r.dq)(t)||(0,i.mf)(t)?{i:j,r:t,k:e,f:!!n}:t:null;function _n(t,e=null,n=null,r=0,o=null,a=(t===tn?0:1),s=!1,l=!1){const u={__v_isVNode:!0,__v_skip:!0,type:t,props:e,key:e&&yn(e),ref:e&&mn(e),scopeId:H,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null};return l?(In(u,n),128&a&&t.normalize(u)):n&&(u.shapeFlag|=(0,i.HD)(n)?8:16),un>0&&!s&&an&&(u.patchFlag>0||6&a)&&32!==u.patchFlag&&an.push(u),u}const bn=wn;function wn(t,e=null,n=null,o=0,a=null,s=!1){if(t&&t!==$t||(t=nn),pn(t)){const r=Sn(t,e,!0);return n&&In(r,n),un>0&&!s&&an&&(6&r.shapeFlag?an[an.indexOf(t)]=r:an.push(r)),r.patchFlag|=-2,r}if(Qn(t)&&(t=t.__vccOpts),e){e=xn(e);let{class:t,style:n}=e;t&&!(0,i.HD)(t)&&(e.class=(0,i.C_)(t)),(0,i.Kn)(n)&&((0,r.X3)(n)&&!(0,i.kJ)(n)&&(n=(0,i.l7)({},n)),e.style=(0,i.j5)(n))}const l=(0,i.HD)(t)?1:nt(t)?128:Ge(t)?64:(0,i.Kn)(t)?4:(0,i.mf)(t)?2:0;return _n(t,e,n,o,a,l,s,!0)}function xn(t){return t?(0,r.X3)(t)||gn in t?(0,i.l7)({},t):t:null}function Sn(t,e,n=!1){const{props:r,ref:o,patchFlag:a,children:s}=t,l=e?Mn(r||{},e):r,u={__v_isVNode:!0,__v_skip:!0,type:t.type,props:l,key:l&&yn(l),ref:e&&e.ref?n&&o?(0,i.kJ)(o)?o.concat(mn(e)):[o,mn(e)]:mn(e):o,scopeId:t.scopeId,slotScopeIds:t.slotScopeIds,children:s,target:t.target,targetAnchor:t.targetAnchor,staticCount:t.staticCount,shapeFlag:t.shapeFlag,patchFlag:e&&t.type!==tn?-1===a?16:16|a:a,dynamicProps:t.dynamicProps,dynamicChildren:t.dynamicChildren,appContext:t.appContext,dirs:t.dirs,transition:t.transition,component:t.component,suspense:t.suspense,ssContent:t.ssContent&&Sn(t.ssContent),ssFallback:t.ssFallback&&Sn(t.ssFallback),el:t.el,anchor:t.anchor};return u}function kn(t=" ",e=0){return bn(en,null,t,e)}function Cn(t="",e=!1){return e?(sn(),dn(nn,null,t)):bn(nn,null,t)}function Tn(t){return null==t||"boolean"===typeof t?bn(nn):(0,i.kJ)(t)?bn(tn,null,t.slice()):"object"===typeof t?An(t):bn(en,null,String(t))}function An(t){return null===t.el||t.memo?t:Sn(t)}function In(t,e){let n=0;const{shapeFlag:r}=t;if(null==e)e=null;else if((0,i.kJ)(e))n=16;else if("object"===typeof e){if(65&r){const n=e.default;return void(n&&(n._c&&(n._d=!1),In(t,n()),n._c&&(n._d=!0)))}{n=32;const r=e._;r||gn in e?3===r&&j&&(1===j.slots._?e._=1:(e._=2,t.patchFlag|=1024)):e._ctx=j}}else(0,i.mf)(e)?(e={default:e,_ctx:j},n=32):(e=String(e),64&r?(n=16,e=[kn(e)]):n=8);t.children=e,t.shapeFlag|=n}function Mn(...t){const e={};for(let n=0;nLn||j,Bn=t=>{Ln=t,t.scope.on()},Zn=()=>{Ln&&Ln.scope.off(),Ln=null};function Fn(t){return 4&t.vnode.shapeFlag}let zn,Nn,Wn=!1;function Un(t,e=!1){Wn=e;const{props:n,children:r}=t.vnode,i=Fn(t);_e(t,n,i,e),Pe(t,r);const o=i?Vn(t,e):void 0;return Wn=!1,o}function Vn(t,e){const n=t.type;t.accessCache=Object.create(null),t.proxy=(0,r.Xl)(new Proxy(t.ctx,ie));const{setup:o}=n;if(o){const n=t.setupContext=o.length>1?qn(t):null;Bn(t),(0,r.Jd)();const a=h(o,t,0,[t.props,n]);if((0,r.lk)(),Zn(),(0,i.tI)(a)){if(a.then(Zn,Zn),e)return a.then((n=>{jn(t,n,e)})).catch((e=>{p(e,t,0)}));t.asyncDep=a}else jn(t,a,e)}else Hn(t,e)}function jn(t,e,n){(0,i.mf)(e)?t.type.__ssrInlineRender?t.ssrRender=e:t.render=e:(0,i.Kn)(e)&&(t.setupState=(0,r.WL)(e)),Hn(t,n)}function Hn(t,e,n){const o=t.type;if(!t.render){if(!e&&zn&&!o.render){const e=o.template;if(e){0;const{isCustomElement:n,compilerOptions:r}=t.appContext.config,{delimiters:a,compilerOptions:s}=o,l=(0,i.l7)((0,i.l7)({isCustomElement:n,delimiters:a},r),s);o.render=zn(e,l)}}t.render=o.render||i.dG,Nn&&Nn(t)}Bn(t),(0,r.Jd)(),ae(t),(0,r.lk)(),Zn()}function Gn(t){return new Proxy(t.attrs,{get(e,n){return(0,r.j)(t,"get","$attrs"),e[n]}})}function qn(t){const e=e=>{t.exposed=e||{}};let n;return{get attrs(){return n||(n=Gn(t))},slots:t.slots,emit:t.emit,expose:e}}function Yn(t){if(t.exposed)return t.exposeProxy||(t.exposeProxy=new Proxy((0,r.WL)((0,r.Xl)(t.exposed)),{get(e,n){return n in e?e[n]:n in re?re[n](t):void 0}}))}const Xn=/(?:^|[-_])(\w)/g,$n=t=>t.replace(Xn,(t=>t.toUpperCase())).replace(/[-_]/g,"");function Kn(t,e=!0){return(0,i.mf)(t)?t.displayName||t.name:t.name||e&&t.__name}function Jn(t,e,n=!1){let r=Kn(e);if(!r&&e.__file){const t=e.__file.match(/([^/\\]+)\.\w+$/);t&&(r=t[1])}if(!r&&t&&t.parent){const n=t=>{for(const n in t)if(t[n]===e)return n};r=n(t.components||t.parent.type.components)||n(t.appContext.components)}return r?$n(r):n?"App":"Anonymous"}function Qn(t){return(0,i.mf)(t)&&"__vccOpts"in t}const tr=(t,e)=>(0,r.Fl)(t,e,Wn);function er(t,e,n){const r=arguments.length;return 2===r?(0,i.Kn)(e)&&!(0,i.kJ)(e)?pn(e)?bn(t,null,[e]):bn(t,e):bn(t,null,e):(r>3?n=Array.prototype.slice.call(arguments,2):3===r&&pn(n)&&(n=[n]),bn(t,e,n))}Symbol("");const nr="3.2.37"},9963:function(t,e,n){"use strict";n.d(e,{F8:function(){return dt},W3:function(){return it},nr:function(){return ht},ri:function(){return mt},uT:function(){return F}});var r=n(3577),i=n(6252),o=n(2262);const a="http://www.w3.org/2000/svg",s="undefined"!==typeof document?document:null,l=s&&s.createElement("template"),u={insert:(t,e,n)=>{e.insertBefore(t,n||null)},remove:t=>{const e=t.parentNode;e&&e.removeChild(t)},createElement:(t,e,n,r)=>{const i=e?s.createElementNS(a,t):s.createElement(t,n?{is:n}:void 0);return"select"===t&&r&&null!=r.multiple&&i.setAttribute("multiple",r.multiple),i},createText:t=>s.createTextNode(t),createComment:t=>s.createComment(t),setText:(t,e)=>{t.nodeValue=e},setElementText:(t,e)=>{t.textContent=e},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>s.querySelector(t),setScopeId(t,e){t.setAttribute(e,"")},cloneNode(t){const e=t.cloneNode(!0);return"_value"in t&&(e._value=t._value),e},insertStaticContent(t,e,n,r,i,o){const a=n?n.previousSibling:e.lastChild;if(i&&(i===o||i.nextSibling)){while(1)if(e.insertBefore(i.cloneNode(!0),n),i===o||!(i=i.nextSibling))break}else{l.innerHTML=r?`${t}`:t;const i=l.content;if(r){const t=i.firstChild;while(t.firstChild)i.appendChild(t.firstChild);i.removeChild(t)}e.insertBefore(i,n)}return[a?a.nextSibling:e.firstChild,n?n.previousSibling:e.lastChild]}};function c(t,e,n){const r=t._vtc;r&&(e=(e?[e,...r]:[...r]).join(" ")),null==e?t.removeAttribute("class"):n?t.setAttribute("class",e):t.className=e}function f(t,e,n){const i=t.style,o=(0,r.HD)(n);if(n&&!o){for(const t in n)d(i,t,n[t]);if(e&&!(0,r.HD)(e))for(const t in e)null==n[t]&&d(i,t,"")}else{const r=i.display;o?e!==n&&(i.cssText=n):e&&t.removeAttribute("style"),"_vod"in t&&(i.display=r)}}const h=/\s*!important$/;function d(t,e,n){if((0,r.kJ)(n))n.forEach((n=>d(t,e,n)));else if(null==n&&(n=""),e.startsWith("--"))t.setProperty(e,n);else{const i=g(t,e);h.test(n)?t.setProperty((0,r.rs)(i),n.replace(h,""),"important"):t[i]=n}}const p=["Webkit","Moz","ms"],v={};function g(t,e){const n=v[e];if(n)return n;let i=(0,r._A)(e);if("filter"!==i&&i in t)return v[e]=i;i=(0,r.kC)(i);for(let r=0;r{let t=Date.now,e=!1;if("undefined"!==typeof window){Date.now()>document.createEvent("Event").timeStamp&&(t=performance.now.bind(performance));const n=navigator.userAgent.match(/firefox\/(\d+)/i);e=!!(n&&Number(n[1])<=53)}return[t,e]})();let x=0;const S=Promise.resolve(),k=()=>{x=0},C=()=>x||(S.then(k),x=b());function T(t,e,n,r){t.addEventListener(e,n,r)}function A(t,e,n,r){t.removeEventListener(e,n,r)}function I(t,e,n,r,i=null){const o=t._vei||(t._vei={}),a=o[e];if(r&&a)a.value=r;else{const[n,s]=D(e);if(r){const a=o[e]=O(r,i);T(t,n,a,s)}else a&&(A(t,n,a,s),o[e]=void 0)}}const M=/(?:Once|Passive|Capture)$/;function D(t){let e;if(M.test(t)){let n;e={};while(n=t.match(M))t=t.slice(0,t.length-n[0].length),e[n[0].toLowerCase()]=!0}return[(0,r.rs)(t.slice(2)),e]}function O(t,e){const n=t=>{const r=t.timeStamp||b();(w||r>=n.attached-1)&&(0,i.$d)(E(t,n.value),e,5,[t])};return n.value=t,n.attached=C(),n}function E(t,e){if((0,r.kJ)(e)){const n=t.stopImmediatePropagation;return t.stopImmediatePropagation=()=>{n.call(t),t._stopped=!0},e.map((t=>e=>!e._stopped&&t&&t(e)))}return e}const P=/^on[a-z]/,L=(t,e,n,i,o=!1,a,s,l,u)=>{"class"===e?c(t,i,o):"style"===e?f(t,n,i):(0,r.F7)(e)?(0,r.tR)(e)||I(t,e,n,i,s):("."===e[0]?(e=e.slice(1),1):"^"===e[0]?(e=e.slice(1),0):R(t,e,i,o))?_(t,e,i,a,s,l,u):("true-value"===e?t._trueValue=i:"false-value"===e&&(t._falseValue=i),m(t,e,i,o))};function R(t,e,n,i){return i?"innerHTML"===e||"textContent"===e||!!(e in t&&P.test(e)&&(0,r.mf)(n)):"spellcheck"!==e&&"draggable"!==e&&"translate"!==e&&("form"!==e&&(("list"!==e||"INPUT"!==t.tagName)&&(("type"!==e||"TEXTAREA"!==t.tagName)&&((!P.test(e)||!(0,r.HD)(n))&&e in t))))}"undefined"!==typeof HTMLElement&&HTMLElement;const B="transition",Z="animation",F=(t,{slots:e})=>(0,i.h)(i.P$,V(t),e);F.displayName="Transition";const z={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},N=F.props=(0,r.l7)({},i.P$.props,z),W=(t,e=[])=>{(0,r.kJ)(t)?t.forEach((t=>t(...e))):t&&t(...e)},U=t=>!!t&&((0,r.kJ)(t)?t.some((t=>t.length>1)):t.length>1);function V(t){const e={};for(const r in t)r in z||(e[r]=t[r]);if(!1===t.css)return e;const{name:n="v",type:i,duration:o,enterFromClass:a=`${n}-enter-from`,enterActiveClass:s=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:u=a,appearActiveClass:c=s,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=t,v=j(o),g=v&&v[0],y=v&&v[1],{onBeforeEnter:m,onEnter:_,onEnterCancelled:b,onLeave:w,onLeaveCancelled:x,onBeforeAppear:S=m,onAppear:k=_,onAppearCancelled:C=b}=e,T=(t,e,n)=>{q(t,e?f:l),q(t,e?c:s),n&&n()},A=(t,e)=>{t._isLeaving=!1,q(t,h),q(t,p),q(t,d),e&&e()},I=t=>(e,n)=>{const r=t?k:_,o=()=>T(e,t,n);W(r,[e,o]),Y((()=>{q(e,t?u:a),G(e,t?f:l),U(r)||$(e,i,g,o)}))};return(0,r.l7)(e,{onBeforeEnter(t){W(m,[t]),G(t,a),G(t,s)},onBeforeAppear(t){W(S,[t]),G(t,u),G(t,c)},onEnter:I(!1),onAppear:I(!0),onLeave(t,e){t._isLeaving=!0;const n=()=>A(t,e);G(t,h),tt(),G(t,d),Y((()=>{t._isLeaving&&(q(t,h),G(t,p),U(w)||$(t,i,y,n))})),W(w,[t,n])},onEnterCancelled(t){T(t,!1),W(b,[t])},onAppearCancelled(t){T(t,!0),W(C,[t])},onLeaveCancelled(t){A(t),W(x,[t])}})}function j(t){if(null==t)return null;if((0,r.Kn)(t))return[H(t.enter),H(t.leave)];{const e=H(t);return[e,e]}}function H(t){const e=(0,r.He)(t);return e}function G(t,e){e.split(/\s+/).forEach((e=>e&&t.classList.add(e))),(t._vtc||(t._vtc=new Set)).add(e)}function q(t,e){e.split(/\s+/).forEach((e=>e&&t.classList.remove(e)));const{_vtc:n}=t;n&&(n.delete(e),n.size||(t._vtc=void 0))}function Y(t){requestAnimationFrame((()=>{requestAnimationFrame(t)}))}let X=0;function $(t,e,n,r){const i=t._endId=++X,o=()=>{i===t._endId&&r()};if(n)return setTimeout(o,n);const{type:a,timeout:s,propCount:l}=K(t,e);if(!a)return r();const u=a+"end";let c=0;const f=()=>{t.removeEventListener(u,h),o()},h=e=>{e.target===t&&++c>=l&&f()};setTimeout((()=>{c(n[t]||"").split(", "),i=r(B+"Delay"),o=r(B+"Duration"),a=J(i,o),s=r(Z+"Delay"),l=r(Z+"Duration"),u=J(s,l);let c=null,f=0,h=0;e===B?a>0&&(c=B,f=a,h=o.length):e===Z?u>0&&(c=Z,f=u,h=l.length):(f=Math.max(a,u),c=f>0?a>u?B:Z:null,h=c?c===B?o.length:l.length:0);const d=c===B&&/\b(transform|all)(,|$)/.test(n[B+"Property"]);return{type:c,timeout:f,propCount:h,hasTransform:d}}function J(t,e){while(t.lengthQ(e)+Q(t[n]))))}function Q(t){return 1e3*Number(t.slice(0,-1).replace(",","."))}function tt(){return document.body.offsetHeight}const et=new WeakMap,nt=new WeakMap,rt={name:"TransitionGroup",props:(0,r.l7)({},N,{tag:String,moveClass:String}),setup(t,{slots:e}){const n=(0,i.FN)(),r=(0,i.Y8)();let a,s;return(0,i.ic)((()=>{if(!a.length)return;const e=t.moveClass||`${t.name||"v"}-move`;if(!lt(a[0].el,n.vnode.el,e))return;a.forEach(ot),a.forEach(at);const r=a.filter(st);tt(),r.forEach((t=>{const n=t.el,r=n.style;G(n,e),r.transform=r.webkitTransform=r.transitionDuration="";const i=n._moveCb=t=>{t&&t.target!==n||t&&!/transform$/.test(t.propertyName)||(n.removeEventListener("transitionend",i),n._moveCb=null,q(n,e))};n.addEventListener("transitionend",i)}))})),()=>{const l=(0,o.IU)(t),u=V(l);let c=l.tag||i.HY;a=s,s=e.default?(0,i.Q6)(e.default()):[];for(let t=0;t{t.split(/\s+/).forEach((t=>t&&r.classList.remove(t)))})),n.split(/\s+/).forEach((t=>t&&r.classList.add(t))),r.style.display="none";const i=1===e.nodeType?e:e.parentNode;i.appendChild(r);const{hasTransform:o}=K(r);return i.removeChild(r),o}const ut=t=>{const e=t.props["onUpdate:modelValue"]||!1;return(0,r.kJ)(e)?t=>(0,r.ir)(e,t):e};function ct(t){t.target.composing=!0}function ft(t){const e=t.target;e.composing&&(e.composing=!1,e.dispatchEvent(new Event("input")))}const ht={created(t,{modifiers:{lazy:e,trim:n,number:i}},o){t._assign=ut(o);const a=i||o.props&&"number"===o.props.type;T(t,e?"change":"input",(e=>{if(e.target.composing)return;let i=t.value;n&&(i=i.trim()),a&&(i=(0,r.He)(i)),t._assign(i)})),n&&T(t,"change",(()=>{t.value=t.value.trim()})),e||(T(t,"compositionstart",ct),T(t,"compositionend",ft),T(t,"change",ft))},mounted(t,{value:e}){t.value=null==e?"":e},beforeUpdate(t,{value:e,modifiers:{lazy:n,trim:i,number:o}},a){if(t._assign=ut(a),t.composing)return;if(document.activeElement===t&&"range"!==t.type){if(n)return;if(i&&t.value.trim()===e)return;if((o||"number"===t.type)&&(0,r.He)(t.value)===e)return}const s=null==e?"":e;t.value!==s&&(t.value=s)}};const dt={beforeMount(t,{value:e},{transition:n}){t._vod="none"===t.style.display?"":t.style.display,n&&e?n.beforeEnter(t):pt(t,e)},mounted(t,{value:e},{transition:n}){n&&e&&n.enter(t)},updated(t,{value:e,oldValue:n},{transition:r}){!e!==!n&&(r?e?(r.beforeEnter(t),pt(t,!0),r.enter(t)):r.leave(t,(()=>{pt(t,!1)})):pt(t,e))},beforeUnmount(t,{value:e}){pt(t,e)}};function pt(t,e){t.style.display=e?t._vod:"none"}const vt=(0,r.l7)({patchProp:L},u);let gt;function yt(){return gt||(gt=(0,i.Us)(vt))}const mt=(...t)=>{const e=yt().createApp(...t);const{mount:n}=e;return e.mount=t=>{const i=_t(t);if(!i)return;const o=e._component;(0,r.mf)(o)||o.render||o.template||(o.template=i.innerHTML),i.innerHTML="";const a=n(i,!1,i instanceof SVGElement);return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),a},e};function _t(t){if((0,r.HD)(t)){const e=document.querySelector(t);return e}return t}},3577:function(t,e,n){"use strict";function r(t,e){const n=Object.create(null),r=t.split(",");for(let i=0;i!!n[t.toLowerCase()]:t=>!!n[t]}n.d(e,{C_:function(){return d},DM:function(){return P},E9:function(){return it},F7:function(){return C},Gg:function(){return H},HD:function(){return B},He:function(){return nt},Kn:function(){return F},NO:function(){return S},Nj:function(){return et},Od:function(){return I},PO:function(){return V},Pq:function(){return s},RI:function(){return D},S0:function(){return j},W7:function(){return U},WV:function(){return g},Z6:function(){return w},_A:function(){return Y},_N:function(){return E},aU:function(){return Q},dG:function(){return x},e1:function(){return o},fY:function(){return r},hR:function(){return J},hq:function(){return y},ir:function(){return tt},j5:function(){return u},kC:function(){return K},kJ:function(){return O},kT:function(){return b},l7:function(){return A},mf:function(){return R},rs:function(){return $},tI:function(){return z},tR:function(){return T},vs:function(){return p},yA:function(){return l},yk:function(){return Z},zw:function(){return m}});const i="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt",o=r(i);const a="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",s=r(a);function l(t){return!!t||""===t}function u(t){if(O(t)){const e={};for(let n=0;n{if(t){const n=t.split(f);n.length>1&&(e[n[0].trim()]=n[1].trim())}})),e}function d(t){let e="";if(B(t))e=t;else if(O(t))for(let n=0;ng(t,e)))}const m=t=>B(t)?t:null==t?"":O(t)||F(t)&&(t.toString===N||!R(t.toString))?JSON.stringify(t,_,2):String(t),_=(t,e)=>e&&e.__v_isRef?_(t,e.value):E(e)?{[`Map(${e.size})`]:[...e.entries()].reduce(((t,[e,n])=>(t[`${e} =>`]=n,t)),{})}:P(e)?{[`Set(${e.size})`]:[...e.values()]}:!F(e)||O(e)||V(e)?e:String(e),b={},w=[],x=()=>{},S=()=>!1,k=/^on[^a-z]/,C=t=>k.test(t),T=t=>t.startsWith("onUpdate:"),A=Object.assign,I=(t,e)=>{const n=t.indexOf(e);n>-1&&t.splice(n,1)},M=Object.prototype.hasOwnProperty,D=(t,e)=>M.call(t,e),O=Array.isArray,E=t=>"[object Map]"===W(t),P=t=>"[object Set]"===W(t),L=t=>"[object Date]"===W(t),R=t=>"function"===typeof t,B=t=>"string"===typeof t,Z=t=>"symbol"===typeof t,F=t=>null!==t&&"object"===typeof t,z=t=>F(t)&&R(t.then)&&R(t.catch),N=Object.prototype.toString,W=t=>N.call(t),U=t=>W(t).slice(8,-1),V=t=>"[object Object]"===W(t),j=t=>B(t)&&"NaN"!==t&&"-"!==t[0]&&""+parseInt(t,10)===t,H=r(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),G=t=>{const e=Object.create(null);return n=>{const r=e[n];return r||(e[n]=t(n))}},q=/-(\w)/g,Y=G((t=>t.replace(q,((t,e)=>e?e.toUpperCase():"")))),X=/\B([A-Z])/g,$=G((t=>t.replace(X,"-$1").toLowerCase())),K=G((t=>t.charAt(0).toUpperCase()+t.slice(1))),J=G((t=>t?`on${K(t)}`:"")),Q=(t,e)=>!Object.is(t,e),tt=(t,e)=>{for(let n=0;n{Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:n})},nt=t=>{const e=parseFloat(t);return isNaN(e)?t:e};let rt;const it=()=>rt||(rt="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof self?self:"undefined"!==typeof window?window:"undefined"!==typeof n.g?n.g:{})},9669:function(t,e,n){t.exports=n(1609)},5448:function(t,e,n){"use strict";var r=n(4867),i=n(6026),o=n(4372),a=n(5327),s=n(4097),l=n(4109),u=n(7985),c=n(5061);t.exports=function(t){return new Promise((function(e,n){var f=t.data,h=t.headers,d=t.responseType;r.isFormData(f)&&delete h["Content-Type"];var p=new XMLHttpRequest;if(t.auth){var v=t.auth.username||"",g=t.auth.password?unescape(encodeURIComponent(t.auth.password)):"";h.Authorization="Basic "+btoa(v+":"+g)}var y=s(t.baseURL,t.url);function m(){if(p){var r="getAllResponseHeaders"in p?l(p.getAllResponseHeaders()):null,o=d&&"text"!==d&&"json"!==d?p.response:p.responseText,a={data:o,status:p.status,statusText:p.statusText,headers:r,config:t,request:p};i(e,n,a),p=null}}if(p.open(t.method.toUpperCase(),a(y,t.params,t.paramsSerializer),!0),p.timeout=t.timeout,"onloadend"in p?p.onloadend=m:p.onreadystatechange=function(){p&&4===p.readyState&&(0!==p.status||p.responseURL&&0===p.responseURL.indexOf("file:"))&&setTimeout(m)},p.onabort=function(){p&&(n(c("Request aborted",t,"ECONNABORTED",p)),p=null)},p.onerror=function(){n(c("Network Error",t,null,p)),p=null},p.ontimeout=function(){var e="timeout of "+t.timeout+"ms exceeded";t.timeoutErrorMessage&&(e=t.timeoutErrorMessage),n(c(e,t,t.transitional&&t.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",p)),p=null},r.isStandardBrowserEnv()){var _=(t.withCredentials||u(y))&&t.xsrfCookieName?o.read(t.xsrfCookieName):void 0;_&&(h[t.xsrfHeaderName]=_)}"setRequestHeader"in p&&r.forEach(h,(function(t,e){"undefined"===typeof f&&"content-type"===e.toLowerCase()?delete h[e]:p.setRequestHeader(e,t)})),r.isUndefined(t.withCredentials)||(p.withCredentials=!!t.withCredentials),d&&"json"!==d&&(p.responseType=t.responseType),"function"===typeof t.onDownloadProgress&&p.addEventListener("progress",t.onDownloadProgress),"function"===typeof t.onUploadProgress&&p.upload&&p.upload.addEventListener("progress",t.onUploadProgress),t.cancelToken&&t.cancelToken.promise.then((function(t){p&&(p.abort(),n(t),p=null)})),f||(f=null),p.send(f)}))}},1609:function(t,e,n){"use strict";var r=n(4867),i=n(1849),o=n(321),a=n(7185),s=n(5655);function l(t){var e=new o(t),n=i(o.prototype.request,e);return r.extend(n,o.prototype,e),r.extend(n,e),n}var u=l(s);u.Axios=o,u.create=function(t){return l(a(u.defaults,t))},u.Cancel=n(5263),u.CancelToken=n(4972),u.isCancel=n(6502),u.all=function(t){return Promise.all(t)},u.spread=n(8713),u.isAxiosError=n(6268),t.exports=u,t.exports["default"]=u},5263:function(t){"use strict";function e(t){this.message=t}e.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},e.prototype.__CANCEL__=!0,t.exports=e},4972:function(t,e,n){"use strict";var r=n(5263);function i(t){if("function"!==typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;t((function(t){n.reason||(n.reason=new r(t),e(n.reason))}))}i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.source=function(){var t,e=new i((function(e){t=e}));return{token:e,cancel:t}},t.exports=i},6502:function(t){"use strict";t.exports=function(t){return!(!t||!t.__CANCEL__)}},321:function(t,e,n){"use strict";var r=n(4867),i=n(5327),o=n(782),a=n(3572),s=n(7185),l=n(4875),u=l.validators;function c(t){this.defaults=t,this.interceptors={request:new o,response:new o}}c.prototype.request=function(t){"string"===typeof t?(t=arguments[1]||{},t.url=arguments[0]):t=t||{},t=s(this.defaults,t),t.method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var e=t.transitional;void 0!==e&&l.assertOptions(e,{silentJSONParsing:u.transitional(u.boolean,"1.0.0"),forcedJSONParsing:u.transitional(u.boolean,"1.0.0"),clarifyTimeoutError:u.transitional(u.boolean,"1.0.0")},!1);var n=[],r=!0;this.interceptors.request.forEach((function(e){"function"===typeof e.runWhen&&!1===e.runWhen(t)||(r=r&&e.synchronous,n.unshift(e.fulfilled,e.rejected))}));var i,o=[];if(this.interceptors.response.forEach((function(t){o.push(t.fulfilled,t.rejected)})),!r){var c=[a,void 0];Array.prototype.unshift.apply(c,n),c=c.concat(o),i=Promise.resolve(t);while(c.length)i=i.then(c.shift(),c.shift());return i}var f=t;while(n.length){var h=n.shift(),d=n.shift();try{f=h(f)}catch(p){d(p);break}}try{i=a(f)}catch(p){return Promise.reject(p)}while(o.length)i=i.then(o.shift(),o.shift());return i},c.prototype.getUri=function(t){return t=s(this.defaults,t),i(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],(function(t){c.prototype[t]=function(e,n){return this.request(s(n||{},{method:t,url:e,data:(n||{}).data}))}})),r.forEach(["post","put","patch"],(function(t){c.prototype[t]=function(e,n,r){return this.request(s(r||{},{method:t,url:e,data:n}))}})),t.exports=c},782:function(t,e,n){"use strict";var r=n(4867);function i(){this.handlers=[]}i.prototype.use=function(t,e,n){return this.handlers.push({fulfilled:t,rejected:e,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},i.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},i.prototype.forEach=function(t){r.forEach(this.handlers,(function(e){null!==e&&t(e)}))},t.exports=i},4097:function(t,e,n){"use strict";var r=n(1793),i=n(7303);t.exports=function(t,e){return t&&!r(e)?i(t,e):e}},5061:function(t,e,n){"use strict";var r=n(481);t.exports=function(t,e,n,i,o){var a=new Error(t);return r(a,e,n,i,o)}},3572:function(t,e,n){"use strict";var r=n(4867),i=n(8527),o=n(6502),a=n(5655);function s(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){s(t),t.headers=t.headers||{},t.data=i.call(t,t.data,t.headers,t.transformRequest),t.headers=r.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]}));var e=t.adapter||a.adapter;return e(t).then((function(e){return s(t),e.data=i.call(t,e.data,e.headers,t.transformResponse),e}),(function(e){return o(e)||(s(t),e&&e.response&&(e.response.data=i.call(t,e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))}},481:function(t){"use strict";t.exports=function(t,e,n,r,i){return t.config=e,n&&(t.code=n),t.request=r,t.response=i,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},t}},7185:function(t,e,n){"use strict";var r=n(4867);t.exports=function(t,e){e=e||{};var n={},i=["url","method","data"],o=["headers","auth","proxy","params"],a=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],s=["validateStatus"];function l(t,e){return r.isPlainObject(t)&&r.isPlainObject(e)?r.merge(t,e):r.isPlainObject(e)?r.merge({},e):r.isArray(e)?e.slice():e}function u(i){r.isUndefined(e[i])?r.isUndefined(t[i])||(n[i]=l(void 0,t[i])):n[i]=l(t[i],e[i])}r.forEach(i,(function(t){r.isUndefined(e[t])||(n[t]=l(void 0,e[t]))})),r.forEach(o,u),r.forEach(a,(function(i){r.isUndefined(e[i])?r.isUndefined(t[i])||(n[i]=l(void 0,t[i])):n[i]=l(void 0,e[i])})),r.forEach(s,(function(r){r in e?n[r]=l(t[r],e[r]):r in t&&(n[r]=l(void 0,t[r]))}));var c=i.concat(o).concat(a).concat(s),f=Object.keys(t).concat(Object.keys(e)).filter((function(t){return-1===c.indexOf(t)}));return r.forEach(f,u),n}},6026:function(t,e,n){"use strict";var r=n(5061);t.exports=function(t,e,n){var i=n.config.validateStatus;n.status&&i&&!i(n.status)?e(r("Request failed with status code "+n.status,n.config,null,n.request,n)):t(n)}},8527:function(t,e,n){"use strict";var r=n(4867),i=n(5655);t.exports=function(t,e,n){var o=this||i;return r.forEach(n,(function(n){t=n.call(o,t,e)})),t}},5655:function(t,e,n){"use strict";var r=n(4867),i=n(6016),o=n(481),a={"Content-Type":"application/x-www-form-urlencoded"};function s(t,e){!r.isUndefined(t)&&r.isUndefined(t["Content-Type"])&&(t["Content-Type"]=e)}function l(){var t;return("undefined"!==typeof XMLHttpRequest||"undefined"!==typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(t=n(5448)),t}function u(t,e,n){if(r.isString(t))try{return(e||JSON.parse)(t),r.trim(t)}catch(i){if("SyntaxError"!==i.name)throw i}return(n||JSON.stringify)(t)}var c={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:l(),transformRequest:[function(t,e){return i(e,"Accept"),i(e,"Content-Type"),r.isFormData(t)||r.isArrayBuffer(t)||r.isBuffer(t)||r.isStream(t)||r.isFile(t)||r.isBlob(t)?t:r.isArrayBufferView(t)?t.buffer:r.isURLSearchParams(t)?(s(e,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):r.isObject(t)||e&&"application/json"===e["Content-Type"]?(s(e,"application/json"),u(t)):t}],transformResponse:[function(t){var e=this.transitional,n=e&&e.silentJSONParsing,i=e&&e.forcedJSONParsing,a=!n&&"json"===this.responseType;if(a||i&&r.isString(t)&&t.length)try{return JSON.parse(t)}catch(s){if(a){if("SyntaxError"===s.name)throw o(s,this,"E_JSON_PARSE");throw s}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(t){c.headers[t]={}})),r.forEach(["post","put","patch"],(function(t){c.headers[t]=r.merge(a)})),t.exports=c},1849:function(t){"use strict";t.exports=function(t,e){return function(){for(var n=new Array(arguments.length),r=0;r=0)return;a[e]="set-cookie"===e?(a[e]?a[e]:[]).concat([n]):a[e]?a[e]+", "+n:n}})),a):a}},8713:function(t){"use strict";t.exports=function(t){return function(e){return t.apply(null,e)}}},4875:function(t,e,n){"use strict";var r=n(8593),i={};["object","boolean","number","function","string","symbol"].forEach((function(t,e){i[t]=function(n){return typeof n===t||"a"+(e<1?"n ":" ")+t}}));var o={},a=r.version.split(".");function s(t,e){for(var n=e?e.split("."):a,r=t.split("."),i=0;i<3;i++){if(n[i]>r[i])return!0;if(n[i]0){var o=r[i],a=e[o];if(a){var s=t[o],l=void 0===s||a(s,o,t);if(!0!==l)throw new TypeError("option "+o+" must be "+l)}else if(!0!==n)throw Error("Unknown option "+o)}}i.transitional=function(t,e,n){var i=e&&s(e);function a(t,e){return"[Axios v"+r.version+"] Transitional option '"+t+"'"+e+(n?". "+n:"")}return function(n,r,s){if(!1===t)throw new Error(a(r," has been removed in "+e));return i&&!o[r]&&(o[r]=!0,console.warn(a(r," has been deprecated since v"+e+" and will be removed in the near future"))),!t||t(n,r,s)}},t.exports={isOlderVersion:s,assertOptions:l,validators:i}},4867:function(t,e,n){"use strict";var r=n(1849),i=Object.prototype.toString;function o(t){return"[object Array]"===i.call(t)}function a(t){return"undefined"===typeof t}function s(t){return null!==t&&!a(t)&&null!==t.constructor&&!a(t.constructor)&&"function"===typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}function l(t){return"[object ArrayBuffer]"===i.call(t)}function u(t){return"undefined"!==typeof FormData&&t instanceof FormData}function c(t){var e;return e="undefined"!==typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer,e}function f(t){return"string"===typeof t}function h(t){return"number"===typeof t}function d(t){return null!==t&&"object"===typeof t}function p(t){if("[object Object]"!==i.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype}function v(t){return"[object Date]"===i.call(t)}function g(t){return"[object File]"===i.call(t)}function y(t){return"[object Blob]"===i.call(t)}function m(t){return"[object Function]"===i.call(t)}function _(t){return d(t)&&m(t.pipe)}function b(t){return"undefined"!==typeof URLSearchParams&&t instanceof URLSearchParams}function w(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function x(){return("undefined"===typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!==typeof window&&"undefined"!==typeof document)}function S(t,e){if(null!==t&&"undefined"!==typeof t)if("object"!==typeof t&&(t=[t]),o(t))for(var n=0,r=t.length;n>8&255]},F=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},z=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},N=function(t){return L(t,23,4)},W=function(t){return L(t,52,8)},U=function(t,e){y(t[C],e,{get:function(){return w(this)[e]}})},V=function(t,e,n,r){var i=h(n),o=w(t);if(i+e>o.byteLength)throw P(A);var a=w(o.buffer).bytes,s=i+o.byteOffset,l=a.slice(s,s+e);return r?l:l.reverse()},j=function(t,e,n,r,i,o){var a=h(n),s=w(t);if(a+e>s.byteLength)throw P(A);for(var l=w(s.buffer).bytes,u=a+s.byteOffset,c=r(+i),f=0;fY;)(H=q[Y++])in M||a(M,H,I[H]);G.constructor=M}v&&p(O)!==E&&v(O,E);var X=new D(new M(2)),$=O.setInt8;X.setInt8(0,2147483648),X.setInt8(1,2147483649),!X.getInt8(0)&&X.getInt8(1)||s(O,{setInt8:function(t,e){$.call(this,t,e<<24>>24)},setUint8:function(t,e){$.call(this,t,e<<24>>24)}},{unsafe:!0})}else M=function(t){u(this,M,S);var e=h(t);x(this,{bytes:m.call(new Array(e),0),byteLength:e}),i||(this.byteLength=e)},D=function(t,e,n){u(this,D,k),u(t,M,k);var r=w(t).byteLength,o=c(e);if(o<0||o>r)throw P("Wrong offset");if(n=void 0===n?r-o:f(n),o+n>r)throw P(T);x(this,{buffer:t,byteLength:n,byteOffset:o}),i||(this.buffer=t,this.byteLength=n,this.byteOffset=o)},i&&(U(M,"byteLength"),U(D,"buffer"),U(D,"byteLength"),U(D,"byteOffset")),s(D[C],{getInt8:function(t){return V(this,1,t)[0]<<24>>24},getUint8:function(t){return V(this,1,t)[0]},getInt16:function(t){var e=V(this,2,t,arguments.length>1?arguments[1]:void 0);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=V(this,2,t,arguments.length>1?arguments[1]:void 0);return e[1]<<8|e[0]},getInt32:function(t){return z(V(this,4,t,arguments.length>1?arguments[1]:void 0))},getUint32:function(t){return z(V(this,4,t,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(t){return R(V(this,4,t,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(t){return R(V(this,8,t,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(t,e){j(this,1,t,B,e)},setUint8:function(t,e){j(this,1,t,B,e)},setInt16:function(t,e){j(this,2,t,Z,e,arguments.length>2?arguments[2]:void 0)},setUint16:function(t,e){j(this,2,t,Z,e,arguments.length>2?arguments[2]:void 0)},setInt32:function(t,e){j(this,4,t,F,e,arguments.length>2?arguments[2]:void 0)},setUint32:function(t,e){j(this,4,t,F,e,arguments.length>2?arguments[2]:void 0)},setFloat32:function(t,e){j(this,4,t,N,e,arguments.length>2?arguments[2]:void 0)},setFloat64:function(t,e){j(this,8,t,W,e,arguments.length>2?arguments[2]:void 0)}});_(M,S),_(D,k),t.exports={ArrayBuffer:M,DataView:D}},1048:function(t,e,n){"use strict";var r=n(7908),i=n(1400),o=n(7466),a=Math.min;t.exports=[].copyWithin||function(t,e){var n=r(this),s=o(n.length),l=i(t,s),u=i(e,s),c=arguments.length>2?arguments[2]:void 0,f=a((void 0===c?s:i(c,s))-u,s-l),h=1;u0)u in n?n[l]=n[u]:delete n[l],l+=h,u+=h;return n}},1285:function(t,e,n){"use strict";var r=n(7908),i=n(1400),o=n(7466);t.exports=function(t){var e=r(this),n=o(e.length),a=arguments.length,s=i(a>1?arguments[1]:void 0,n),l=a>2?arguments[2]:void 0,u=void 0===l?n:i(l,n);while(u>s)e[s++]=t;return e}},8533:function(t,e,n){"use strict";var r=n(2092).forEach,i=n(9341),o=i("forEach");t.exports=o?[].forEach:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}},8457:function(t,e,n){"use strict";var r=n(9974),i=n(7908),o=n(3411),a=n(7659),s=n(7466),l=n(6135),u=n(1246);t.exports=function(t){var e,n,c,f,h,d,p=i(t),v="function"==typeof this?this:Array,g=arguments.length,y=g>1?arguments[1]:void 0,m=void 0!==y,_=u(p),b=0;if(m&&(y=r(y,g>2?arguments[2]:void 0,2)),void 0==_||v==Array&&a(_))for(e=s(p.length),n=new v(e);e>b;b++)d=m?y(p[b],b):p[b],l(n,b,d);else for(f=_.call(p),h=f.next,n=new v;!(c=h.call(f)).done;b++)d=m?o(f,y,[c.value,b],!0):c.value,l(n,b,d);return n.length=b,n}},1318:function(t,e,n){var r=n(5656),i=n(7466),o=n(1400),a=function(t){return function(e,n,a){var s,l=r(e),u=i(l.length),c=o(a,u);if(t&&n!=n){while(u>c)if(s=l[c++],s!=s)return!0}else for(;u>c;c++)if((t||c in l)&&l[c]===n)return t||c||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},2092:function(t,e,n){var r=n(9974),i=n(8361),o=n(7908),a=n(7466),s=n(5417),l=[].push,u=function(t){var e=1==t,n=2==t,u=3==t,c=4==t,f=6==t,h=7==t,d=5==t||f;return function(p,v,g,y){for(var m,_,b=o(p),w=i(b),x=r(v,g,3),S=a(w.length),k=0,C=y||s,T=e?C(p,S):n||h?C(p,0):void 0;S>k;k++)if((d||k in w)&&(m=w[k],_=x(m,k,b),t))if(e)T[k]=_;else if(_)switch(t){case 3:return!0;case 5:return m;case 6:return k;case 2:l.call(T,m)}else switch(t){case 4:return!1;case 7:l.call(T,m)}return f?-1:u||c?c:T}};t.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6),filterOut:u(7)}},6583:function(t,e,n){"use strict";var r=n(5656),i=n(9958),o=n(7466),a=n(9341),s=Math.min,l=[].lastIndexOf,u=!!l&&1/[1].lastIndexOf(1,-0)<0,c=a("lastIndexOf"),f=u||!c;t.exports=f?function(t){if(u)return l.apply(this,arguments)||0;var e=r(this),n=o(e.length),a=n-1;for(arguments.length>1&&(a=s(a,i(arguments[1]))),a<0&&(a=n+a);a>=0;a--)if(a in e&&e[a]===t)return a||0;return-1}:l},1194:function(t,e,n){var r=n(7293),i=n(5112),o=n(7392),a=i("species");t.exports=function(t){return o>=51||!r((function(){var e=[],n=e.constructor={};return n[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},9341:function(t,e,n){"use strict";var r=n(7293);t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){throw 1},1)}))}},3671:function(t,e,n){var r=n(3099),i=n(7908),o=n(8361),a=n(7466),s=function(t){return function(e,n,s,l){r(n);var u=i(e),c=o(u),f=a(u.length),h=t?f-1:0,d=t?-1:1;if(s<2)while(1){if(h in c){l=c[h],h+=d;break}if(h+=d,t?h<0:f<=h)throw TypeError("Reduce of empty array with no initial value")}for(;t?h>=0:f>h;h+=d)h in c&&(l=n(l,c[h],h,u));return l}};t.exports={left:s(!1),right:s(!0)}},4362:function(t){var e=Math.floor,n=function(t,o){var a=t.length,s=e(a/2);return a<8?r(t,o):i(n(t.slice(0,s),o),n(t.slice(s),o),o)},r=function(t,e){var n,r,i=t.length,o=1;while(o0)t[r]=t[--r];r!==o++&&(t[r]=n)}return t},i=function(t,e,n){var r=t.length,i=e.length,o=0,a=0,s=[];while(o1?arguments[1]:void 0,3);while(e=e?e.next:n.first){r(e.value,e.key,this);while(e&&e.removed)e=e.previous}},has:function(t){return!!y(this,t)}}),o(c.prototype,n?{get:function(t){var e=y(this,t);return e&&e.value},set:function(t,e){return g(this,0===t?0:t,e)}}:{add:function(t){return g(this,t=0===t?0:t,t)}}),f&&r(c.prototype,"size",{get:function(){return d(this).size}}),c},setStrong:function(t,e,n){var r=e+" Iterator",i=v(e),o=v(r);u(t,e,(function(t,e){p(this,{type:r,target:t,state:i(t),kind:e,last:void 0})}),(function(){var t=o(this),e=t.kind,n=t.last;while(n&&n.removed)n=n.previous;return t.target&&(t.last=n=n?n.next:t.state.first)?"keys"==e?{value:n.key,done:!1}:"values"==e?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),c(e)}}},9320:function(t,e,n){"use strict";var r=n(2248),i=n(2423).getWeakData,o=n(9670),a=n(111),s=n(5787),l=n(408),u=n(2092),c=n(6656),f=n(9909),h=f.set,d=f.getterFor,p=u.find,v=u.findIndex,g=0,y=function(t){return t.frozen||(t.frozen=new m)},m=function(){this.entries=[]},_=function(t,e){return p(t.entries,(function(t){return t[0]===e}))};m.prototype={get:function(t){var e=_(this,t);if(e)return e[1]},has:function(t){return!!_(this,t)},set:function(t,e){var n=_(this,t);n?n[1]=e:this.entries.push([t,e])},delete:function(t){var e=v(this.entries,(function(e){return e[0]===t}));return~e&&this.entries.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,n,u){var f=t((function(t,r){s(t,f,e),h(t,{type:e,id:g++,frozen:void 0}),void 0!=r&&l(r,t[u],{that:t,AS_ENTRIES:n})})),p=d(e),v=function(t,e,n){var r=p(t),a=i(o(e),!0);return!0===a?y(r).set(e,n):a[r.id]=n,t};return r(f.prototype,{delete:function(t){var e=p(this);if(!a(t))return!1;var n=i(t);return!0===n?y(e)["delete"](t):n&&c(n,e.id)&&delete n[e.id]},has:function(t){var e=p(this);if(!a(t))return!1;var n=i(t);return!0===n?y(e).has(t):n&&c(n,e.id)}}),r(f.prototype,n?{get:function(t){var e=p(this);if(a(t)){var n=i(t);return!0===n?y(e).get(t):n?n[e.id]:void 0}},set:function(t,e){return v(this,t,e)}}:{add:function(t){return v(this,t,!0)}}),f}}},7710:function(t,e,n){"use strict";var r=n(2109),i=n(7854),o=n(4705),a=n(1320),s=n(2423),l=n(408),u=n(5787),c=n(111),f=n(7293),h=n(7072),d=n(8003),p=n(9587);t.exports=function(t,e,n){var v=-1!==t.indexOf("Map"),g=-1!==t.indexOf("Weak"),y=v?"set":"add",m=i[t],_=m&&m.prototype,b=m,w={},x=function(t){var e=_[t];a(_,t,"add"==t?function(t){return e.call(this,0===t?0:t),this}:"delete"==t?function(t){return!(g&&!c(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return g&&!c(t)?void 0:e.call(this,0===t?0:t)}:"has"==t?function(t){return!(g&&!c(t))&&e.call(this,0===t?0:t)}:function(t,n){return e.call(this,0===t?0:t,n),this})},S=o(t,"function"!=typeof m||!(g||_.forEach&&!f((function(){(new m).entries().next()}))));if(S)b=n.getConstructor(e,t,v,y),s.REQUIRED=!0;else if(o(t,!0)){var k=new b,C=k[y](g?{}:-0,1)!=k,T=f((function(){k.has(1)})),A=h((function(t){new m(t)})),I=!g&&f((function(){var t=new m,e=5;while(e--)t[y](e,e);return!t.has(-0)}));A||(b=e((function(e,n){u(e,b,t);var r=p(new m,e,b);return void 0!=n&&l(n,r[y],{that:r,AS_ENTRIES:v}),r})),b.prototype=_,_.constructor=b),(T||I)&&(x("delete"),x("has"),v&&x("get")),(I||C)&&x(y),g&&_.clear&&delete _.clear}return w[t]=b,r({global:!0,forced:b!=m},w),d(b,t),g||n.setStrong(b,t,v),b}},9920:function(t,e,n){var r=n(6656),i=n(3887),o=n(1236),a=n(3070);t.exports=function(t,e){for(var n=i(e),s=a.f,l=o.f,u=0;u"+a+""}},4994:function(t,e,n){"use strict";var r=n(3383).IteratorPrototype,i=n(30),o=n(9114),a=n(8003),s=n(7497),l=function(){return this};t.exports=function(t,e,n){var u=e+" Iterator";return t.prototype=i(r,{next:o(1,n)}),a(t,u,!1,!0),s[u]=l,t}},8880:function(t,e,n){var r=n(9781),i=n(3070),o=n(9114);t.exports=r?function(t,e,n){return i.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},9114:function(t){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},6135:function(t,e,n){"use strict";var r=n(7593),i=n(3070),o=n(9114);t.exports=function(t,e,n){var a=r(e);a in t?i.f(t,a,o(0,n)):t[a]=n}},654:function(t,e,n){"use strict";var r=n(2109),i=n(4994),o=n(9518),a=n(7674),s=n(8003),l=n(8880),u=n(1320),c=n(5112),f=n(1913),h=n(7497),d=n(3383),p=d.IteratorPrototype,v=d.BUGGY_SAFARI_ITERATORS,g=c("iterator"),y="keys",m="values",_="entries",b=function(){return this};t.exports=function(t,e,n,c,d,w,x){i(n,e,c);var S,k,C,T=function(t){if(t===d&&O)return O;if(!v&&t in M)return M[t];switch(t){case y:return function(){return new n(this,t)};case m:return function(){return new n(this,t)};case _:return function(){return new n(this,t)}}return function(){return new n(this)}},A=e+" Iterator",I=!1,M=t.prototype,D=M[g]||M["@@iterator"]||d&&M[d],O=!v&&D||T(d),E="Array"==e&&M.entries||D;if(E&&(S=o(E.call(new t)),p!==Object.prototype&&S.next&&(f||o(S)===p||(a?a(S,p):"function"!=typeof S[g]&&l(S,g,b)),s(S,A,!0,!0),f&&(h[A]=b))),d==m&&D&&D.name!==m&&(I=!0,O=function(){return D.call(this)}),f&&!x||M[g]===O||l(M,g,O),h[e]=O,d)if(k={values:T(m),keys:w?O:T(y),entries:T(_)},x)for(C in k)(v||I||!(C in M))&&u(M,C,k[C]);else r({target:e,proto:!0,forced:v||I},k);return k}},7235:function(t,e,n){var r=n(857),i=n(6656),o=n(6061),a=n(3070).f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});i(e,t)||a(e,t,{value:o.f(t)})}},9781:function(t,e,n){var r=n(7293);t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},317:function(t,e,n){var r=n(7854),i=n(111),o=r.document,a=i(o)&&i(o.createElement);t.exports=function(t){return a?o.createElement(t):{}}},8324:function(t){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},8886:function(t,e,n){var r=n(8113),i=r.match(/firefox\/(\d+)/i);t.exports=!!i&&+i[1]},7871:function(t){t.exports="object"==typeof window},256:function(t,e,n){var r=n(8113);t.exports=/MSIE|Trident/.test(r)},6833:function(t,e,n){var r=n(8113);t.exports=/(?:iphone|ipod|ipad).*applewebkit/i.test(r)},5268:function(t,e,n){var r=n(4326),i=n(7854);t.exports="process"==r(i.process)},1036:function(t,e,n){var r=n(8113);t.exports=/web0s(?!.*chrome)/i.test(r)},8113:function(t,e,n){var r=n(5005);t.exports=r("navigator","userAgent")||""},7392:function(t,e,n){var r,i,o=n(7854),a=n(8113),s=o.process,l=s&&s.versions,u=l&&l.v8;u?(r=u.split("."),i=r[0]<4?1:r[0]+r[1]):a&&(r=a.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/),r&&(i=r[1]))),t.exports=i&&+i},8008:function(t,e,n){var r=n(8113),i=r.match(/AppleWebKit\/(\d+)\./);t.exports=!!i&&+i[1]},748:function(t){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(t,e,n){var r=n(7854),i=n(1236).f,o=n(8880),a=n(1320),s=n(3505),l=n(9920),u=n(4705);t.exports=function(t,e){var n,c,f,h,d,p,v=t.target,g=t.global,y=t.stat;if(c=g?r:y?r[v]||s(v,{}):(r[v]||{}).prototype,c)for(f in e){if(d=e[f],t.noTargetGet?(p=i(c,f),h=p&&p.value):h=c[f],n=u(g?f:v+(y?".":"#")+f,t.forced),!n&&void 0!==h){if(typeof d===typeof h)continue;l(d,h)}(t.sham||h&&h.sham)&&o(d,"sham",!0),a(c,f,d,t)}}},7293:function(t){t.exports=function(t){try{return!!t()}catch(e){return!0}}},7007:function(t,e,n){"use strict";n(4916);var r=n(1320),i=n(2261),o=n(7293),a=n(5112),s=n(8880),l=a("species"),u=RegExp.prototype;t.exports=function(t,e,n,c){var f=a(t),h=!o((function(){var e={};return e[f]=function(){return 7},7!=""[t](e)})),d=h&&!o((function(){var e=!1,n=/a/;return"split"===t&&(n={},n.constructor={},n.constructor[l]=function(){return n},n.flags="",n[f]=/./[f]),n.exec=function(){return e=!0,null},n[f](""),!e}));if(!h||!d||n){var p=/./[f],v=e(f,""[t],(function(t,e,n,r,o){var a=e.exec;return a===i||a===u.exec?h&&!o?{done:!0,value:p.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}));r(String.prototype,t,v[0]),r(u,f,v[1])}c&&s(u[f],"sham",!0)}},6790:function(t,e,n){"use strict";var r=n(3157),i=n(7466),o=n(9974),a=function(t,e,n,s,l,u,c,f){var h,d=l,p=0,v=!!c&&o(c,f,3);while(p0&&r(h))d=a(t,e,h,i(h.length),d,u-1)-1;else{if(d>=9007199254740991)throw TypeError("Exceed the acceptable array length");t[d]=h}d++}p++}return d};t.exports=a},6677:function(t,e,n){var r=n(7293);t.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},9974:function(t,e,n){var r=n(3099);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},7065:function(t,e,n){"use strict";var r=n(3099),i=n(111),o=[].slice,a={},s=function(t,e,n){if(!(e in a)){for(var r=[],i=0;i]*>)/g,s=/\$([$&'`]|\d{1,2})/g;t.exports=function(t,e,n,l,u,c){var f=n+t.length,h=l.length,d=s;return void 0!==u&&(u=r(u),d=a),o.call(c,d,(function(r,o){var a;switch(o.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,n);case"'":return e.slice(f);case"<":a=u[o.slice(1,-1)];break;default:var s=+o;if(0===s)return r;if(s>h){var c=i(s/10);return 0===c?r:c<=h?void 0===l[c-1]?o.charAt(1):l[c-1]+o.charAt(1):r}a=l[s-1]}return void 0===a?"":a}))}},7854:function(t,e,n){var r=function(t){return t&&t.Math==Math&&t};t.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(t,e,n){var r=n(7908),i={}.hasOwnProperty;t.exports=Object.hasOwn||function(t,e){return i.call(r(t),e)}},3501:function(t){t.exports={}},842:function(t,e,n){var r=n(7854);t.exports=function(t,e){var n=r.console;n&&n.error&&(1===arguments.length?n.error(t):n.error(t,e))}},490:function(t,e,n){var r=n(5005);t.exports=r("document","documentElement")},4664:function(t,e,n){var r=n(9781),i=n(7293),o=n(317);t.exports=!r&&!i((function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a}))},1179:function(t){var e=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2,a=function(t,a,s){var l,u,c,f=new Array(s),h=8*s-a-1,d=(1<>1,v=23===a?n(2,-24)-n(2,-77):0,g=t<0||0===t&&1/t<0?1:0,y=0;for(t=e(t),t!=t||t===1/0?(u=t!=t?1:0,l=d):(l=r(i(t)/o),t*(c=n(2,-l))<1&&(l--,c*=2),t+=l+p>=1?v/c:v*n(2,1-p),t*c>=2&&(l++,c/=2),l+p>=d?(u=0,l=d):l+p>=1?(u=(t*c-1)*n(2,a),l+=p):(u=t*n(2,p-1)*n(2,a),l=0));a>=8;f[y++]=255&u,u/=256,a-=8);for(l=l<0;f[y++]=255&l,l/=256,h-=8);return f[--y]|=128*g,f},s=function(t,e){var r,i=t.length,o=8*i-e-1,a=(1<>1,l=o-7,u=i-1,c=t[u--],f=127&c;for(c>>=7;l>0;f=256*f+t[u],u--,l-=8);for(r=f&(1<<-l)-1,f>>=-l,l+=e;l>0;r=256*r+t[u],u--,l-=8);if(0===f)f=1-s;else{if(f===a)return r?NaN:c?-1/0:1/0;r+=n(2,e),f-=s}return(c?-1:1)*r*n(2,f-e)};t.exports={pack:a,unpack:s}},8361:function(t,e,n){var r=n(7293),i=n(4326),o="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==i(t)?o.call(t,""):Object(t)}:Object},9587:function(t,e,n){var r=n(111),i=n(7674);t.exports=function(t,e,n){var o,a;return i&&"function"==typeof(o=e.constructor)&&o!==n&&r(a=o.prototype)&&a!==n.prototype&&i(t,a),t}},2788:function(t,e,n){var r=n(5465),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(t){return i.call(t)}),t.exports=r.inspectSource},2423:function(t,e,n){var r=n(3501),i=n(111),o=n(6656),a=n(3070).f,s=n(9711),l=n(6677),u=s("meta"),c=0,f=Object.isExtensible||function(){return!0},h=function(t){a(t,u,{value:{objectID:"O"+ ++c,weakData:{}}})},d=function(t,e){if(!i(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!o(t,u)){if(!f(t))return"F";if(!e)return"E";h(t)}return t[u].objectID},p=function(t,e){if(!o(t,u)){if(!f(t))return!0;if(!e)return!1;h(t)}return t[u].weakData},v=function(t){return l&&g.REQUIRED&&f(t)&&!o(t,u)&&h(t),t},g=t.exports={REQUIRED:!1,fastKey:d,getWeakData:p,onFreeze:v};r[u]=!0},9909:function(t,e,n){var r,i,o,a=n(8536),s=n(7854),l=n(111),u=n(8880),c=n(6656),f=n(5465),h=n(6200),d=n(3501),p="Object already initialized",v=s.WeakMap,g=function(t){return o(t)?i(t):r(t,{})},y=function(t){return function(e){var n;if(!l(e)||(n=i(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}};if(a||f.state){var m=f.state||(f.state=new v),_=m.get,b=m.has,w=m.set;r=function(t,e){if(b.call(m,t))throw new TypeError(p);return e.facade=t,w.call(m,t,e),e},i=function(t){return _.call(m,t)||{}},o=function(t){return b.call(m,t)}}else{var x=h("state");d[x]=!0,r=function(t,e){if(c(t,x))throw new TypeError(p);return e.facade=t,u(t,x,e),e},i=function(t){return c(t,x)?t[x]:{}},o=function(t){return c(t,x)}}t.exports={set:r,get:i,has:o,enforce:g,getterFor:y}},7659:function(t,e,n){var r=n(5112),i=n(7497),o=r("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(i.Array===t||a[o]===t)}},3157:function(t,e,n){var r=n(4326);t.exports=Array.isArray||function(t){return"Array"==r(t)}},4705:function(t,e,n){var r=n(7293),i=/#|\.prototype\./,o=function(t,e){var n=s[a(t)];return n==u||n!=l&&("function"==typeof e?r(e):!!e)},a=o.normalize=function(t){return String(t).replace(i,".").toLowerCase()},s=o.data={},l=o.NATIVE="N",u=o.POLYFILL="P";t.exports=o},111:function(t){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},1913:function(t){t.exports=!1},7850:function(t,e,n){var r=n(111),i=n(4326),o=n(5112),a=o("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[a])?!!e:"RegExp"==i(t))}},408:function(t,e,n){var r=n(9670),i=n(7659),o=n(7466),a=n(9974),s=n(1246),l=n(9212),u=function(t,e){this.stopped=t,this.result=e};t.exports=function(t,e,n){var c,f,h,d,p,v,g,y=n&&n.that,m=!(!n||!n.AS_ENTRIES),_=!(!n||!n.IS_ITERATOR),b=!(!n||!n.INTERRUPTED),w=a(e,y,1+m+b),x=function(t){return c&&l(c),new u(!0,t)},S=function(t){return m?(r(t),b?w(t[0],t[1],x):w(t[0],t[1])):b?w(t,x):w(t)};if(_)c=t;else{if(f=s(t),"function"!=typeof f)throw TypeError("Target is not iterable");if(i(f)){for(h=0,d=o(t.length);d>h;h++)if(p=S(t[h]),p&&p instanceof u)return p;return new u(!1)}c=f.call(t)}v=c.next;while(!(g=v.call(c)).done){try{p=S(g.value)}catch(k){throw l(c),k}if("object"==typeof p&&p&&p instanceof u)return p}return new u(!1)}},9212:function(t,e,n){var r=n(9670);t.exports=function(t){var e=t["return"];if(void 0!==e)return r(e.call(t)).value}},3383:function(t,e,n){"use strict";var r,i,o,a=n(7293),s=n(9518),l=n(8880),u=n(6656),c=n(5112),f=n(1913),h=c("iterator"),d=!1,p=function(){return this};[].keys&&(o=[].keys(),"next"in o?(i=s(s(o)),i!==Object.prototype&&(r=i)):d=!0);var v=void 0==r||a((function(){var t={};return r[h].call(t)!==t}));v&&(r={}),f&&!v||u(r,h)||l(r,h,p),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:d}},7497:function(t){t.exports={}},4310:function(t){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},5948:function(t,e,n){var r,i,o,a,s,l,u,c,f=n(7854),h=n(1236).f,d=n(261).set,p=n(6833),v=n(1036),g=n(5268),y=f.MutationObserver||f.WebKitMutationObserver,m=f.document,_=f.process,b=f.Promise,w=h(f,"queueMicrotask"),x=w&&w.value;x||(r=function(){var t,e;g&&(t=_.domain)&&t.exit();while(i){e=i.fn,i=i.next;try{e()}catch(n){throw i?a():o=void 0,n}}o=void 0,t&&t.enter()},p||g||v||!y||!m?b&&b.resolve?(u=b.resolve(void 0),u.constructor=b,c=u.then,a=function(){c.call(u,r)}):a=g?function(){_.nextTick(r)}:function(){d.call(f,r)}:(s=!0,l=m.createTextNode(""),new y(r).observe(l,{characterData:!0}),a=function(){l.data=s=!s})),t.exports=x||function(t){var e={fn:t,next:void 0};o&&(o.next=e),i||(i=e,a()),o=e}},3366:function(t,e,n){var r=n(7854);t.exports=r.Promise},133:function(t,e,n){var r=n(7392),i=n(7293);t.exports=!!Object.getOwnPropertySymbols&&!i((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},590:function(t,e,n){var r=n(7293),i=n(5112),o=n(1913),a=i("iterator");t.exports=!r((function(){var t=new URL("b?a=1&b=2&c=3","http://a/"),e=t.searchParams,n="";return t.pathname="c%20d",e.forEach((function(t,r){e["delete"]("b"),n+=r+t})),o&&!t.toJSON||!e.sort||"http://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[a]||"a"!==new URL("https://a@b/").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://xn--e1aybc/").host||"#%D0%B1"!==new URL("http://a/#%D0%B1").hash||"a1c3"!==n||"x"!==new URL("http://x/",void 0).host}))},8536:function(t,e,n){var r=n(7854),i=n(2788),o=r.WeakMap;t.exports="function"===typeof o&&/native code/.test(i(o))},8523:function(t,e,n){"use strict";var r=n(3099),i=function(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=r(e),this.reject=r(n)};t.exports.f=function(t){return new i(t)}},3929:function(t,e,n){var r=n(7850);t.exports=function(t){if(r(t))throw TypeError("The method doesn't accept regular expressions");return t}},1574:function(t,e,n){"use strict";var r=n(9781),i=n(7293),o=n(1956),a=n(5181),s=n(5296),l=n(7908),u=n(8361),c=Object.assign,f=Object.defineProperty;t.exports=!c||i((function(){if(r&&1!==c({b:1},c(f({},"a",{enumerable:!0,get:function(){f(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol(),i="abcdefghijklmnopqrst";return t[n]=7,i.split("").forEach((function(t){e[t]=t})),7!=c({},t)[n]||o(c({},e)).join("")!=i}))?function(t,e){var n=l(t),i=arguments.length,c=1,f=a.f,h=s.f;while(i>c){var d,p=u(arguments[c++]),v=f?o(p).concat(f(p)):o(p),g=v.length,y=0;while(g>y)d=v[y++],r&&!h.call(p,d)||(n[d]=p[d])}return n}:c},30:function(t,e,n){var r,i=n(9670),o=n(6048),a=n(748),s=n(3501),l=n(490),u=n(317),c=n(6200),f=">",h="<",d="prototype",p="script",v=c("IE_PROTO"),g=function(){},y=function(t){return h+p+f+t+h+"/"+p+f},m=function(t){t.write(y("")),t.close();var e=t.parentWindow.Object;return t=null,e},_=function(){var t,e=u("iframe"),n="java"+p+":";return e.style.display="none",l.appendChild(e),e.src=String(n),t=e.contentWindow.document,t.open(),t.write(y("document.F=Object")),t.close(),t.F},b=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}b=r?m(r):_();var t=a.length;while(t--)delete b[d][a[t]];return b()};s[v]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(g[d]=i(t),n=new g,g[d]=null,n[v]=t):n=b(),void 0===e?n:o(n,e)}},6048:function(t,e,n){var r=n(9781),i=n(3070),o=n(9670),a=n(1956);t.exports=r?Object.defineProperties:function(t,e){o(t);var n,r=a(e),s=r.length,l=0;while(s>l)i.f(t,n=r[l++],e[n]);return t}},3070:function(t,e,n){var r=n(9781),i=n(4664),o=n(9670),a=n(7593),s=Object.defineProperty;e.f=r?s:function(t,e,n){if(o(t),e=a(e,!0),o(n),i)try{return s(t,e,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},1236:function(t,e,n){var r=n(9781),i=n(5296),o=n(9114),a=n(5656),s=n(7593),l=n(6656),u=n(4664),c=Object.getOwnPropertyDescriptor;e.f=r?c:function(t,e){if(t=a(t),e=s(e,!0),u)try{return c(t,e)}catch(n){}if(l(t,e))return o(!i.f.call(t,e),t[e])}},1156:function(t,e,n){var r=n(5656),i=n(8006).f,o={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return i(t)}catch(e){return a.slice()}};t.exports.f=function(t){return a&&"[object Window]"==o.call(t)?s(t):i(r(t))}},8006:function(t,e,n){var r=n(6324),i=n(748),o=i.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},5181:function(t,e){e.f=Object.getOwnPropertySymbols},9518:function(t,e,n){var r=n(6656),i=n(7908),o=n(6200),a=n(8544),s=o("IE_PROTO"),l=Object.prototype;t.exports=a?Object.getPrototypeOf:function(t){return t=i(t),r(t,s)?t[s]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?l:null}},6324:function(t,e,n){var r=n(6656),i=n(5656),o=n(1318).indexOf,a=n(3501);t.exports=function(t,e){var n,s=i(t),l=0,u=[];for(n in s)!r(a,n)&&r(s,n)&&u.push(n);while(e.length>l)r(s,n=e[l++])&&(~o(u,n)||u.push(n));return u}},1956:function(t,e,n){var r=n(6324),i=n(748);t.exports=Object.keys||function(t){return r(t,i)}},5296:function(t,e){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);e.f=i?function(t){var e=r(this,t);return!!e&&e.enumerable}:n},7674:function(t,e,n){var r=n(9670),i=n(6077);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,t.call(n,[]),e=n instanceof Array}catch(o){}return function(n,o){return r(n),i(o),e?t.call(n,o):n.__proto__=o,n}}():void 0)},4699:function(t,e,n){var r=n(9781),i=n(1956),o=n(5656),a=n(5296).f,s=function(t){return function(e){var n,s=o(e),l=i(s),u=l.length,c=0,f=[];while(u>c)n=l[c++],r&&!a.call(s,n)||f.push(t?[n,s[n]]:s[n]);return f}};t.exports={entries:s(!0),values:s(!1)}},288:function(t,e,n){"use strict";var r=n(1694),i=n(648);t.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},3887:function(t,e,n){var r=n(5005),i=n(8006),o=n(5181),a=n(9670);t.exports=r("Reflect","ownKeys")||function(t){var e=i.f(a(t)),n=o.f;return n?e.concat(n(t)):e}},857:function(t,e,n){var r=n(7854);t.exports=r},2534:function(t){t.exports=function(t){try{return{error:!1,value:t()}}catch(e){return{error:!0,value:e}}}},9478:function(t,e,n){var r=n(9670),i=n(111),o=n(8523);t.exports=function(t,e){if(r(t),i(e)&&e.constructor===t)return e;var n=o.f(t),a=n.resolve;return a(e),n.promise}},2248:function(t,e,n){var r=n(1320);t.exports=function(t,e,n){for(var i in e)r(t,i,e[i],n);return t}},1320:function(t,e,n){var r=n(7854),i=n(8880),o=n(6656),a=n(3505),s=n(2788),l=n(9909),u=l.get,c=l.enforce,f=String(String).split("String");(t.exports=function(t,e,n,s){var l,u=!!s&&!!s.unsafe,h=!!s&&!!s.enumerable,d=!!s&&!!s.noTargetGet;"function"==typeof n&&("string"!=typeof e||o(n,"name")||i(n,"name",e),l=c(n),l.source||(l.source=f.join("string"==typeof e?e:""))),t!==r?(u?!d&&t[e]&&(h=!0):delete t[e],h?t[e]=n:i(t,e,n)):h?t[e]=n:a(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&u(this).source||s(this)}))},7651:function(t,e,n){var r=n(4326),i=n(2261);t.exports=function(t,e){var n=t.exec;if("function"===typeof n){var o=n.call(t,e);if("object"!==typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(t))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(t,e)}},2261:function(t,e,n){"use strict";var r=n(7066),i=n(2999),o=n(2309),a=n(30),s=n(9909).get,l=n(9441),u=n(8173),c=RegExp.prototype.exec,f=o("native-string-replace",String.prototype.replace),h=c,d=function(){var t=/a/,e=/b*/g;return c.call(t,"a"),c.call(e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),p=i.UNSUPPORTED_Y||i.BROKEN_CARET,v=void 0!==/()??/.exec("")[1],g=d||v||p||l||u;g&&(h=function(t){var e,n,i,o,l,u,g,y=this,m=s(y),_=m.raw;if(_)return _.lastIndex=y.lastIndex,e=h.call(_,t),y.lastIndex=_.lastIndex,e;var b=m.groups,w=p&&y.sticky,x=r.call(y),S=y.source,k=0,C=t;if(w&&(x=x.replace("y",""),-1===x.indexOf("g")&&(x+="g"),C=String(t).slice(y.lastIndex),y.lastIndex>0&&(!y.multiline||y.multiline&&"\n"!==t[y.lastIndex-1])&&(S="(?: "+S+")",C=" "+C,k++),n=new RegExp("^(?:"+S+")",x)),v&&(n=new RegExp("^"+S+"$(?!\\s)",x)),d&&(i=y.lastIndex),o=c.call(w?n:y,C),w?o?(o.input=o.input.slice(k),o[0]=o[0].slice(k),o.index=y.lastIndex,y.lastIndex+=o[0].length):y.lastIndex=0:d&&o&&(y.lastIndex=y.global?o.index+o[0].length:i),v&&o&&o.length>1&&f.call(o[0],n,(function(){for(l=1;lb)","string".charAt(5));return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$c")}))},4488:function(t){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},3505:function(t,e,n){var r=n(7854),i=n(8880);t.exports=function(t,e){try{i(r,t,e)}catch(n){r[t]=e}return e}},6340:function(t,e,n){"use strict";var r=n(5005),i=n(3070),o=n(5112),a=n(9781),s=o("species");t.exports=function(t){var e=r(t),n=i.f;a&&e&&!e[s]&&n(e,s,{configurable:!0,get:function(){return this}})}},8003:function(t,e,n){var r=n(3070).f,i=n(6656),o=n(5112),a=o("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,a)&&r(t,a,{configurable:!0,value:e})}},6200:function(t,e,n){var r=n(2309),i=n(9711),o=r("keys");t.exports=function(t){return o[t]||(o[t]=i(t))}},5465:function(t,e,n){var r=n(7854),i=n(3505),o="__core-js_shared__",a=r[o]||i(o,{});t.exports=a},2309:function(t,e,n){var r=n(1913),i=n(5465);(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.15.1",mode:r?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},6707:function(t,e,n){var r=n(9670),i=n(3099),o=n(5112),a=o("species");t.exports=function(t,e){var n,o=r(t).constructor;return void 0===o||void 0==(n=r(o)[a])?e:i(n)}},3429:function(t,e,n){var r=n(7293);t.exports=function(t){return r((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}))}},8710:function(t,e,n){var r=n(9958),i=n(4488),o=function(t){return function(e,n){var o,a,s=String(i(e)),l=r(n),u=s.length;return l<0||l>=u?t?"":void 0:(o=s.charCodeAt(l),o<55296||o>56319||l+1===u||(a=s.charCodeAt(l+1))<56320||a>57343?t?s.charAt(l):o:t?s.slice(l,l+2):a-56320+(o-55296<<10)+65536)}};t.exports={codeAt:o(!1),charAt:o(!0)}},3197:function(t){"use strict";var e=2147483647,n=36,r=1,i=26,o=38,a=700,s=72,l=128,u="-",c=/[^\0-\u007E]/,f=/[.\u3002\uFF0E\uFF61]/g,h="Overflow: input needs wider integers to process",d=n-r,p=Math.floor,v=String.fromCharCode,g=function(t){var e=[],n=0,r=t.length;while(n=55296&&i<=56319&&n>1,t+=p(t/e);t>d*i>>1;s+=n)t=p(t/d);return p(s+(d+1)*t/(t+o))},_=function(t){var o=[];t=g(t);var a,c,f=t.length,d=l,_=0,b=s;for(a=0;a=d&&cp((e-_)/k))throw RangeError(h);for(_+=(S-d)*k,d=S,a=0;ae)throw RangeError(h);if(c==d){for(var C=_,T=n;;T+=n){var A=T<=b?r:T>=b+i?i:T-b;if(C0;(o>>>=1)&&(e+=e))1&o&&(n+=e);return n}},6091:function(t,e,n){var r=n(7293),i=n(1361),o="​…᠎";t.exports=function(t){return r((function(){return!!i[t]()||o[t]()!=o||i[t].name!==t}))}},3111:function(t,e,n){var r=n(4488),i=n(1361),o="["+i+"]",a=RegExp("^"+o+o+"*"),s=RegExp(o+o+"*$"),l=function(t){return function(e){var n=String(r(e));return 1&t&&(n=n.replace(a,"")),2&t&&(n=n.replace(s,"")),n}};t.exports={start:l(1),end:l(2),trim:l(3)}},261:function(t,e,n){var r,i,o,a=n(7854),s=n(7293),l=n(9974),u=n(490),c=n(317),f=n(6833),h=n(5268),d=a.location,p=a.setImmediate,v=a.clearImmediate,g=a.process,y=a.MessageChannel,m=a.Dispatch,_=0,b={},w="onreadystatechange",x=function(t){if(b.hasOwnProperty(t)){var e=b[t];delete b[t],e()}},S=function(t){return function(){x(t)}},k=function(t){x(t.data)},C=function(t){a.postMessage(t+"",d.protocol+"//"+d.host)};p&&v||(p=function(t){var e=[],n=1;while(arguments.length>n)e.push(arguments[n++]);return b[++_]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},r(_),_},v=function(t){delete b[t]},h?r=function(t){g.nextTick(S(t))}:m&&m.now?r=function(t){m.now(S(t))}:y&&!f?(i=new y,o=i.port2,i.port1.onmessage=k,r=l(o.postMessage,o,1)):a.addEventListener&&"function"==typeof postMessage&&!a.importScripts&&d&&"file:"!==d.protocol&&!s(C)?(r=C,a.addEventListener("message",k,!1)):r=w in c("script")?function(t){u.appendChild(c("script"))[w]=function(){u.removeChild(this),x(t)}}:function(t){setTimeout(S(t),0)}),t.exports={set:p,clear:v}},863:function(t,e,n){var r=n(4326);t.exports=function(t){if("number"!=typeof t&&"Number"!=r(t))throw TypeError("Incorrect invocation");return+t}},1400:function(t,e,n){var r=n(9958),i=Math.max,o=Math.min;t.exports=function(t,e){var n=r(t);return n<0?i(n+e,0):o(n,e)}},7067:function(t,e,n){var r=n(9958),i=n(7466);t.exports=function(t){if(void 0===t)return 0;var e=r(t),n=i(e);if(e!==n)throw RangeError("Wrong length or index");return n}},5656:function(t,e,n){var r=n(8361),i=n(4488);t.exports=function(t){return r(i(t))}},9958:function(t){var e=Math.ceil,n=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?n:e)(t)}},7466:function(t,e,n){var r=n(9958),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},7908:function(t,e,n){var r=n(4488);t.exports=function(t){return Object(r(t))}},4590:function(t,e,n){var r=n(3002);t.exports=function(t,e){var n=r(t);if(n%e)throw RangeError("Wrong offset");return n}},3002:function(t,e,n){var r=n(9958);t.exports=function(t){var e=r(t);if(e<0)throw RangeError("The argument can't be less than 0");return e}},7593:function(t,e,n){var r=n(111);t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},1694:function(t,e,n){var r=n(5112),i=r("toStringTag"),o={};o[i]="z",t.exports="[object z]"===String(o)},9843:function(t,e,n){"use strict";var r=n(2109),i=n(7854),o=n(9781),a=n(3832),s=n(260),l=n(3331),u=n(5787),c=n(9114),f=n(8880),h=n(7466),d=n(7067),p=n(4590),v=n(7593),g=n(6656),y=n(648),m=n(111),_=n(30),b=n(7674),w=n(8006).f,x=n(7321),S=n(2092).forEach,k=n(6340),C=n(3070),T=n(1236),A=n(9909),I=n(9587),M=A.get,D=A.set,O=C.f,E=T.f,P=Math.round,L=i.RangeError,R=l.ArrayBuffer,B=l.DataView,Z=s.NATIVE_ARRAY_BUFFER_VIEWS,F=s.TYPED_ARRAY_TAG,z=s.TypedArray,N=s.TypedArrayPrototype,W=s.aTypedArrayConstructor,U=s.isTypedArray,V="BYTES_PER_ELEMENT",j="Wrong length",H=function(t,e){var n=0,r=e.length,i=new(W(t))(r);while(r>n)i[n]=e[n++];return i},G=function(t,e){O(t,e,{get:function(){return M(this)[e]}})},q=function(t){var e;return t instanceof R||"ArrayBuffer"==(e=y(t))||"SharedArrayBuffer"==e},Y=function(t,e){return U(t)&&"symbol"!=typeof e&&e in t&&String(+e)==String(e)},X=function(t,e){return Y(t,e=v(e,!0))?c(2,t[e]):E(t,e)},$=function(t,e,n){return!(Y(t,e=v(e,!0))&&m(n)&&g(n,"value"))||g(n,"get")||g(n,"set")||n.configurable||g(n,"writable")&&!n.writable||g(n,"enumerable")&&!n.enumerable?O(t,e,n):(t[e]=n.value,t)};o?(Z||(T.f=X,C.f=$,G(N,"buffer"),G(N,"byteOffset"),G(N,"byteLength"),G(N,"length")),r({target:"Object",stat:!0,forced:!Z},{getOwnPropertyDescriptor:X,defineProperty:$}),t.exports=function(t,e,n){var o=t.match(/\d+$/)[0]/8,s=t+(n?"Clamped":"")+"Array",l="get"+t,c="set"+t,v=i[s],g=v,y=g&&g.prototype,C={},T=function(t,e){var n=M(t);return n.view[l](e*o+n.byteOffset,!0)},A=function(t,e,r){var i=M(t);n&&(r=(r=P(r))<0?0:r>255?255:255&r),i.view[c](e*o+i.byteOffset,r,!0)},E=function(t,e){O(t,e,{get:function(){return T(this,e)},set:function(t){return A(this,e,t)},enumerable:!0})};Z?a&&(g=e((function(t,e,n,r){return u(t,g,s),I(function(){return m(e)?q(e)?void 0!==r?new v(e,p(n,o),r):void 0!==n?new v(e,p(n,o)):new v(e):U(e)?H(g,e):x.call(g,e):new v(d(e))}(),t,g)})),b&&b(g,z),S(w(v),(function(t){t in g||f(g,t,v[t])})),g.prototype=y):(g=e((function(t,e,n,r){u(t,g,s);var i,a,l,c=0,f=0;if(m(e)){if(!q(e))return U(e)?H(g,e):x.call(g,e);i=e,f=p(n,o);var v=e.byteLength;if(void 0===r){if(v%o)throw L(j);if(a=v-f,a<0)throw L(j)}else if(a=h(r)*o,a+f>v)throw L(j);l=a/o}else l=d(e),a=l*o,i=new R(a);D(t,{buffer:i,byteOffset:f,byteLength:a,length:l,view:new B(i)});while(co)s[o]=e[o++];return s}},7321:function(t,e,n){var r=n(7908),i=n(7466),o=n(1246),a=n(7659),s=n(9974),l=n(260).aTypedArrayConstructor;t.exports=function(t){var e,n,u,c,f,h,d=r(t),p=arguments.length,v=p>1?arguments[1]:void 0,g=void 0!==v,y=o(d);if(void 0!=y&&!a(y)){f=y.call(d),h=f.next,d=[];while(!(c=h.call(f)).done)d.push(c.value)}for(g&&p>2&&(v=s(v,arguments[2],2)),n=i(d.length),u=new(l(this))(n),e=0;n>e;e++)u[e]=g?v(d[e],e):d[e];return u}},9711:function(t){var e=0,n=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++e+n).toString(36)}},3307:function(t,e,n){var r=n(133);t.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},6061:function(t,e,n){var r=n(5112);e.f=r},5112:function(t,e,n){var r=n(7854),i=n(2309),o=n(6656),a=n(9711),s=n(133),l=n(3307),u=i("wks"),c=r.Symbol,f=l?c:c&&c.withoutSetter||a;t.exports=function(t){return o(u,t)&&(s||"string"==typeof u[t])||(s&&o(c,t)?u[t]=c[t]:u[t]=f("Symbol."+t)),u[t]}},1361:function(t){t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},2222:function(t,e,n){"use strict";var r=n(2109),i=n(7293),o=n(3157),a=n(111),s=n(7908),l=n(7466),u=n(6135),c=n(5417),f=n(1194),h=n(5112),d=n(7392),p=h("isConcatSpreadable"),v=9007199254740991,g="Maximum allowed index exceeded",y=d>=51||!i((function(){var t=[];return t[p]=!1,t.concat()[0]!==t})),m=f("concat"),_=function(t){if(!a(t))return!1;var e=t[p];return void 0!==e?!!e:o(t)},b=!y||!m;r({target:"Array",proto:!0,forced:b},{concat:function(t){var e,n,r,i,o,a=s(this),f=c(a,0),h=0;for(e=-1,r=arguments.length;ev)throw TypeError(g);for(n=0;n=v)throw TypeError(g);u(f,h++,o)}return f.length=h,f}})},3290:function(t,e,n){var r=n(2109),i=n(1285),o=n(1223);r({target:"Array",proto:!0},{fill:i}),o("fill")},7327:function(t,e,n){"use strict";var r=n(2109),i=n(2092).filter,o=n(1194),a=o("filter");r({target:"Array",proto:!0,forced:!a},{filter:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}})},4553:function(t,e,n){"use strict";var r=n(2109),i=n(2092).findIndex,o=n(1223),a="findIndex",s=!0;a in[]&&Array(1)[a]((function(){s=!1})),r({target:"Array",proto:!0,forced:s},{findIndex:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),o(a)},9826:function(t,e,n){"use strict";var r=n(2109),i=n(2092).find,o=n(1223),a="find",s=!0;a in[]&&Array(1)[a]((function(){s=!1})),r({target:"Array",proto:!0,forced:s},{find:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),o(a)},6535:function(t,e,n){"use strict";var r=n(2109),i=n(6790),o=n(7908),a=n(7466),s=n(3099),l=n(5417);r({target:"Array",proto:!0},{flatMap:function(t){var e,n=o(this),r=a(n.length);return s(t),e=l(n,0),e.length=i(e,n,n,r,0,1,t,arguments.length>1?arguments[1]:void 0),e}})},4944:function(t,e,n){"use strict";var r=n(2109),i=n(6790),o=n(7908),a=n(7466),s=n(9958),l=n(5417);r({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=o(this),n=a(e.length),r=l(e,0);return r.length=i(r,e,e,n,0,void 0===t?1:s(t)),r}})},1038:function(t,e,n){var r=n(2109),i=n(8457),o=n(7072),a=!o((function(t){Array.from(t)}));r({target:"Array",stat:!0,forced:a},{from:i})},6699:function(t,e,n){"use strict";var r=n(2109),i=n(1318).includes,o=n(1223);r({target:"Array",proto:!0},{includes:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),o("includes")},6992:function(t,e,n){"use strict";var r=n(5656),i=n(1223),o=n(7497),a=n(9909),s=n(654),l="Array Iterator",u=a.set,c=a.getterFor(l);t.exports=s(Array,"Array",(function(t,e){u(this,{type:l,target:r(t),index:0,kind:e})}),(function(){var t=c(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},9600:function(t,e,n){"use strict";var r=n(2109),i=n(8361),o=n(5656),a=n(9341),s=[].join,l=i!=Object,u=a("join",",");r({target:"Array",proto:!0,forced:l||!u},{join:function(t){return s.call(o(this),void 0===t?",":t)}})},1249:function(t,e,n){"use strict";var r=n(2109),i=n(2092).map,o=n(1194),a=o("map");r({target:"Array",proto:!0,forced:!a},{map:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}})},7042:function(t,e,n){"use strict";var r=n(2109),i=n(111),o=n(3157),a=n(1400),s=n(7466),l=n(5656),u=n(6135),c=n(5112),f=n(1194),h=f("slice"),d=c("species"),p=[].slice,v=Math.max;r({target:"Array",proto:!0,forced:!h},{slice:function(t,e){var n,r,c,f=l(this),h=s(f.length),g=a(t,h),y=a(void 0===e?h:e,h);if(o(f)&&(n=f.constructor,"function"!=typeof n||n!==Array&&!o(n.prototype)?i(n)&&(n=n[d],null===n&&(n=void 0)):n=void 0,n===Array||void 0===n))return p.call(f,g,y);for(r=new(void 0===n?Array:n)(v(y-g,0)),c=0;g3)){if(f)return!0;if(d)return d<603;var t,e,n,r,i="";for(t=65;t<76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(r=0;r<47;r++)p.push({k:e+r,v:n})}for(p.sort((function(t,e){return e.v-t.v})),r=0;rString(n)?1:-1}};r({target:"Array",proto:!0,forced:b},{sort:function(t){void 0!==t&&i(t);var e=o(this);if(_)return void 0===t?v.call(e):v.call(e,t);var n,r,s=[],u=a(e.length);for(r=0;rp)throw TypeError(v);for(c=l(m,r),f=0;f_-r+n;f--)delete m[f-1]}else if(n>r)for(f=_-r;f>b;f--)g=f+r-1,y=f+n-1,g in m?m[y]=m[g]:delete m[y];for(f=0;f2)if(u=g(u),e=u.charCodeAt(0),43===e||45===e){if(n=u.charCodeAt(2),88===n||120===n)return NaN}else if(48===e){switch(u.charCodeAt(1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+u}for(o=u.slice(2),a=o.length,s=0;si)return NaN;return parseInt(o,r)}return+u};if(o(y,!m(" 0o1")||!m("0b1")||m("+0x1"))){for(var x,S=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof S&&(b?f((function(){_.valueOf.call(n)})):l(n)!=y)?u(new m(w(e)),n,S):w(e)},k=r?d(m):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","),C=0;k.length>C;C++)s(m,x=k[C])&&!s(S,x)&&v(S,x,p(m,x));S.prototype=_,_.constructor=S,a(i,y,S)}},6977:function(t,e,n){"use strict";var r=n(2109),i=n(9958),o=n(863),a=n(8415),s=n(7293),l=1..toFixed,u=Math.floor,c=function(t,e,n){return 0===e?n:e%2===1?c(t,e-1,n*t):c(t*t,e/2,n)},f=function(t){var e=0,n=t;while(n>=4096)e+=12,n/=4096;while(n>=2)e+=1,n/=2;return e},h=function(t,e,n){var r=-1,i=n;while(++r<6)i+=e*t[r],t[r]=i%1e7,i=u(i/1e7)},d=function(t,e){var n=6,r=0;while(--n>=0)r+=t[n],t[n]=u(r/e),r=r%e*1e7},p=function(t){var e=6,n="";while(--e>=0)if(""!==n||0===e||0!==t[e]){var r=String(t[e]);n=""===n?r:n+a.call("0",7-r.length)+r}return n},v=l&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!s((function(){l.call({})}));r({target:"Number",proto:!0,forced:v},{toFixed:function(t){var e,n,r,s,l=o(this),u=i(t),v=[0,0,0,0,0,0],g="",y="0";if(u<0||u>20)throw RangeError("Incorrect fraction digits");if(l!=l)return"NaN";if(l<=-1e21||l>=1e21)return String(l);if(l<0&&(g="-",l=-l),l>1e-21)if(e=f(l*c(2,69,1))-69,n=e<0?l*c(2,-e,1):l/c(2,e,1),n*=4503599627370496,e=52-e,e>0){h(v,0,n),r=u;while(r>=7)h(v,1e7,0),r-=7;h(v,c(10,r,1),0),r=e-1;while(r>=23)d(v,1<<23),r-=23;d(v,1<0?(s=y.length,y=g+(s<=u?"0."+a.call("0",u-s)+y:y.slice(0,s-u)+"."+y.slice(s-u))):y=g+y,y}})},9601:function(t,e,n){var r=n(2109),i=n(1574);r({target:"Object",stat:!0,forced:Object.assign!==i},{assign:i})},9720:function(t,e,n){var r=n(2109),i=n(4699).entries;r({target:"Object",stat:!0},{entries:function(t){return i(t)}})},3371:function(t,e,n){var r=n(2109),i=n(6677),o=n(7293),a=n(111),s=n(2423).onFreeze,l=Object.freeze,u=o((function(){l(1)}));r({target:"Object",stat:!0,forced:u,sham:!i},{freeze:function(t){return l&&a(t)?l(s(t)):t}})},5003:function(t,e,n){var r=n(2109),i=n(7293),o=n(5656),a=n(1236).f,s=n(9781),l=i((function(){a(1)})),u=!s||l;r({target:"Object",stat:!0,forced:u,sham:!s},{getOwnPropertyDescriptor:function(t,e){return a(o(t),e)}})},9337:function(t,e,n){var r=n(2109),i=n(9781),o=n(3887),a=n(5656),s=n(1236),l=n(6135);r({target:"Object",stat:!0,sham:!i},{getOwnPropertyDescriptors:function(t){var e,n,r=a(t),i=s.f,u=o(r),c={},f=0;while(u.length>f)n=i(r,e=u[f++]),void 0!==n&&l(c,e,n);return c}})},489:function(t,e,n){var r=n(2109),i=n(7293),o=n(7908),a=n(9518),s=n(8544),l=i((function(){a(1)}));r({target:"Object",stat:!0,forced:l,sham:!s},{getPrototypeOf:function(t){return a(o(t))}})},7941:function(t,e,n){var r=n(2109),i=n(7908),o=n(1956),a=n(7293),s=a((function(){o(1)}));r({target:"Object",stat:!0,forced:s},{keys:function(t){return o(i(t))}})},1539:function(t,e,n){var r=n(1694),i=n(1320),o=n(288);r||i(Object.prototype,"toString",o,{unsafe:!0})},2479:function(t,e,n){var r=n(2109),i=n(4699).values;r({target:"Object",stat:!0},{values:function(t){return i(t)}})},7727:function(t,e,n){"use strict";var r=n(2109),i=n(1913),o=n(3366),a=n(7293),s=n(5005),l=n(6707),u=n(9478),c=n(1320),f=!!o&&a((function(){o.prototype["finally"].call({then:function(){}},(function(){}))}));if(r({target:"Promise",proto:!0,real:!0,forced:f},{finally:function(t){var e=l(this,s("Promise")),n="function"==typeof t;return this.then(n?function(n){return u(e,t()).then((function(){return n}))}:t,n?function(n){return u(e,t()).then((function(){throw n}))}:t)}}),!i&&"function"==typeof o){var h=s("Promise").prototype["finally"];o.prototype["finally"]!==h&&c(o.prototype,"finally",h,{unsafe:!0})}},8674:function(t,e,n){"use strict";var r,i,o,a,s=n(2109),l=n(1913),u=n(7854),c=n(5005),f=n(3366),h=n(1320),d=n(2248),p=n(7674),v=n(8003),g=n(6340),y=n(111),m=n(3099),_=n(5787),b=n(2788),w=n(408),x=n(7072),S=n(6707),k=n(261).set,C=n(5948),T=n(9478),A=n(842),I=n(8523),M=n(2534),D=n(9909),O=n(4705),E=n(5112),P=n(7871),L=n(5268),R=n(7392),B=E("species"),Z="Promise",F=D.get,z=D.set,N=D.getterFor(Z),W=f&&f.prototype,U=f,V=W,j=u.TypeError,H=u.document,G=u.process,q=I.f,Y=q,X=!!(H&&H.createEvent&&u.dispatchEvent),$="function"==typeof PromiseRejectionEvent,K="unhandledrejection",J="rejectionhandled",Q=0,tt=1,et=2,nt=1,rt=2,it=!1,ot=O(Z,(function(){var t=b(U)!==String(U);if(!t&&66===R)return!0;if(l&&!V["finally"])return!0;if(R>=51&&/native code/.test(U))return!1;var e=new U((function(t){t(1)})),n=function(t){t((function(){}),(function(){}))},r=e.constructor={};return r[B]=n,it=e.then((function(){}))instanceof n,!it||!t&&P&&!$})),at=ot||!x((function(t){U.all(t)["catch"]((function(){}))})),st=function(t){var e;return!(!y(t)||"function"!=typeof(e=t.then))&&e},lt=function(t,e){if(!t.notified){t.notified=!0;var n=t.reactions;C((function(){var r=t.value,i=t.state==tt,o=0;while(n.length>o){var a,s,l,u=n[o++],c=i?u.ok:u.fail,f=u.resolve,h=u.reject,d=u.domain;try{c?(i||(t.rejection===rt&&ht(t),t.rejection=nt),!0===c?a=r:(d&&d.enter(),a=c(r),d&&(d.exit(),l=!0)),a===u.promise?h(j("Promise-chain cycle")):(s=st(a))?s.call(a,f,h):f(a)):h(r)}catch(p){d&&!l&&d.exit(),h(p)}}t.reactions=[],t.notified=!1,e&&!t.rejection&&ct(t)}))}},ut=function(t,e,n){var r,i;X?(r=H.createEvent("Event"),r.promise=e,r.reason=n,r.initEvent(t,!1,!0),u.dispatchEvent(r)):r={promise:e,reason:n},!$&&(i=u["on"+t])?i(r):t===K&&A("Unhandled promise rejection",n)},ct=function(t){k.call(u,(function(){var e,n=t.facade,r=t.value,i=ft(t);if(i&&(e=M((function(){L?G.emit("unhandledRejection",r,n):ut(K,n,r)})),t.rejection=L||ft(t)?rt:nt,e.error))throw e.value}))},ft=function(t){return t.rejection!==nt&&!t.parent},ht=function(t){k.call(u,(function(){var e=t.facade;L?G.emit("rejectionHandled",e):ut(J,e,t.value)}))},dt=function(t,e,n){return function(r){t(e,r,n)}},pt=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=et,lt(t,!0))},vt=function(t,e,n){if(!t.done){t.done=!0,n&&(t=n);try{if(t.facade===e)throw j("Promise can't be resolved itself");var r=st(e);r?C((function(){var n={done:!1};try{r.call(e,dt(vt,n,t),dt(pt,n,t))}catch(i){pt(n,i,t)}})):(t.value=e,t.state=tt,lt(t,!1))}catch(i){pt({done:!1},i,t)}}};if(ot&&(U=function(t){_(this,U,Z),m(t),r.call(this);var e=F(this);try{t(dt(vt,e),dt(pt,e))}catch(n){pt(e,n)}},V=U.prototype,r=function(t){z(this,{type:Z,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:Q,value:void 0})},r.prototype=d(V,{then:function(t,e){var n=N(this),r=q(S(this,U));return r.ok="function"!=typeof t||t,r.fail="function"==typeof e&&e,r.domain=L?G.domain:void 0,n.parent=!0,n.reactions.push(r),n.state!=Q&<(n,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),i=function(){var t=new r,e=F(t);this.promise=t,this.resolve=dt(vt,e),this.reject=dt(pt,e)},I.f=q=function(t){return t===U||t===o?new i(t):Y(t)},!l&&"function"==typeof f&&W!==Object.prototype)){a=W.then,it||(h(W,"then",(function(t,e){var n=this;return new U((function(t,e){a.call(n,t,e)})).then(t,e)}),{unsafe:!0}),h(W,"catch",V["catch"],{unsafe:!0}));try{delete W.constructor}catch(gt){}p&&p(W,V)}s({global:!0,wrap:!0,forced:ot},{Promise:U}),v(U,Z,!1,!0),g(Z),o=c(Z),s({target:Z,stat:!0,forced:ot},{reject:function(t){var e=q(this);return e.reject.call(void 0,t),e.promise}}),s({target:Z,stat:!0,forced:l||ot},{resolve:function(t){return T(l&&this===o?U:this,t)}}),s({target:Z,stat:!0,forced:at},{all:function(t){var e=this,n=q(e),r=n.resolve,i=n.reject,o=M((function(){var n=m(e.resolve),o=[],a=0,s=1;w(t,(function(t){var l=a++,u=!1;o.push(void 0),s++,n.call(e,t).then((function(t){u||(u=!0,o[l]=t,--s||r(o))}),i)})),--s||r(o)}));return o.error&&i(o.value),n.promise},race:function(t){var e=this,n=q(e),r=n.reject,i=M((function(){var i=m(e.resolve);w(t,(function(t){i.call(e,t).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}})},2419:function(t,e,n){var r=n(2109),i=n(5005),o=n(3099),a=n(9670),s=n(111),l=n(30),u=n(7065),c=n(7293),f=i("Reflect","construct"),h=c((function(){function t(){}return!(f((function(){}),[],t)instanceof t)})),d=!c((function(){f((function(){}))})),p=h||d;r({target:"Reflect",stat:!0,forced:p,sham:p},{construct:function(t,e){o(t),a(e);var n=arguments.length<3?t:o(arguments[2]);if(d&&!h)return f(t,e,n);if(t==n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var r=[null];return r.push.apply(r,e),new(u.apply(t,r))}var i=n.prototype,c=l(s(i)?i:Object.prototype),p=Function.apply.call(t,c,e);return s(p)?p:c}})},4819:function(t,e,n){var r=n(2109),i=n(111),o=n(9670),a=n(6656),s=n(1236),l=n(9518);function u(t,e){var n,r,c=arguments.length<3?t:arguments[2];return o(t)===c?t[e]:(n=s.f(t,e))?a(n,"value")?n.value:void 0===n.get?void 0:n.get.call(c):i(r=l(t))?u(r,e,c):void 0}r({target:"Reflect",stat:!0},{get:u})},1299:function(t,e,n){var r=n(2109),i=n(7854),o=n(8003);r({global:!0},{Reflect:{}}),o(i.Reflect,"Reflect",!0)},4603:function(t,e,n){var r=n(9781),i=n(7854),o=n(4705),a=n(9587),s=n(8880),l=n(3070).f,u=n(8006).f,c=n(7850),f=n(7066),h=n(2999),d=n(1320),p=n(7293),v=n(6656),g=n(9909).enforce,y=n(6340),m=n(5112),_=n(9441),b=n(8173),w=m("match"),x=i.RegExp,S=x.prototype,k=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,C=/a/g,T=/a/g,A=new x(C)!==C,I=h.UNSUPPORTED_Y,M=r&&(!A||I||_||b||p((function(){return T[w]=!1,x(C)!=C||x(T)==T||"/a/i"!=x(C,"i")}))),D=function(t){for(var e,n=t.length,r=0,i="",o=!1;r<=n;r++)e=t.charAt(r),"\\"!==e?o||"."!==e?("["===e?o=!0:"]"===e&&(o=!1),i+=e):i+="[\\s\\S]":i+=e+t.charAt(++r);return i},O=function(t){for(var e,n=t.length,r=0,i="",o=[],a={},s=!1,l=!1,u=0,c="";r<=n;r++){if(e=t.charAt(r),"\\"===e)e+=t.charAt(++r);else if("]"===e)s=!1;else if(!s)switch(!0){case"["===e:s=!0;break;case"("===e:k.test(t.slice(r+1))&&(r+=2,l=!0),i+=e,u++;continue;case">"===e&&l:if(""===c||v(a,c))throw new SyntaxError("Invalid capture group name");a[c]=!0,o.push([c,u]),l=!1,c="";continue}l?c+=e:i+=e}return[i,o]};if(o("RegExp",M)){for(var E=function(t,e){var n,r,i,o,l,u,h=this instanceof E,d=c(t),p=void 0===e,v=[],y=t;if(!h&&d&&p&&t.constructor===E)return t;if((d||t instanceof E)&&(t=t.source,p&&(e="flags"in y?y.flags:f.call(y))),t=void 0===t?"":String(t),e=void 0===e?"":String(e),y=t,_&&"dotAll"in C&&(r=!!e&&e.indexOf("s")>-1,r&&(e=e.replace(/s/g,""))),n=e,I&&"sticky"in C&&(i=!!e&&e.indexOf("y")>-1,i&&(e=e.replace(/y/g,""))),b&&(o=O(t),t=o[0],v=o[1]),l=a(x(t,e),h?this:S,E),(r||i||v.length)&&(u=g(l),r&&(u.dotAll=!0,u.raw=E(D(t),n)),i&&(u.sticky=!0),v.length&&(u.groups=v)),t!==y)try{s(l,"source",""===y?"(?:)":y)}catch(m){}return l},P=function(t){t in E||l(E,t,{configurable:!0,get:function(){return x[t]},set:function(e){x[t]=e}})},L=u(x),R=0;L.length>R;)P(L[R++]);S.constructor=E,E.prototype=S,d(i,"RegExp",E)}y("RegExp")},8450:function(t,e,n){var r=n(9781),i=n(9441),o=n(3070).f,a=n(9909).get,s=RegExp.prototype;r&&i&&o(s,"dotAll",{configurable:!0,get:function(){if(this!==s){if(this instanceof RegExp)return!!a(this).dotAll;throw TypeError("Incompatible receiver, RegExp required")}}})},4916:function(t,e,n){"use strict";var r=n(2109),i=n(2261);r({target:"RegExp",proto:!0,forced:/./.exec!==i},{exec:i})},8386:function(t,e,n){var r=n(9781),i=n(2999).UNSUPPORTED_Y,o=n(3070).f,a=n(9909).get,s=RegExp.prototype;r&&i&&o(s,"sticky",{configurable:!0,get:function(){if(this!==s){if(this instanceof RegExp)return!!a(this).sticky;throw TypeError("Incompatible receiver, RegExp required")}}})},7601:function(t,e,n){"use strict";n(4916);var r=n(2109),i=n(111),o=function(){var t=!1,e=/[ac]/;return e.exec=function(){return t=!0,/./.exec.apply(this,arguments)},!0===e.test("abc")&&t}(),a=/./.test;r({target:"RegExp",proto:!0,forced:!o},{test:function(t){if("function"!==typeof this.exec)return a.call(this,t);var e=this.exec(t);if(null!==e&&!i(e))throw new Error("RegExp exec method returned something other than an Object or null");return!!e}})},9714:function(t,e,n){"use strict";var r=n(1320),i=n(9670),o=n(7293),a=n(7066),s="toString",l=RegExp.prototype,u=l[s],c=o((function(){return"/a/b"!=u.call({source:"a",flags:"b"})})),f=u.name!=s;(c||f)&&r(RegExp.prototype,s,(function(){var t=i(this),e=String(t.source),n=t.flags,r=String(void 0===n&&t instanceof RegExp&&!("flags"in l)?a.call(t):n);return"/"+e+"/"+r}),{unsafe:!0})},189:function(t,e,n){"use strict";var r=n(7710),i=n(5631);t.exports=r("Set",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),i)},7852:function(t,e,n){"use strict";var r=n(2109),i=n(1236).f,o=n(7466),a=n(3929),s=n(4488),l=n(4964),u=n(1913),c="".endsWith,f=Math.min,h=l("endsWith"),d=!u&&!h&&!!function(){var t=i(String.prototype,"endsWith");return t&&!t.writable}();r({target:"String",proto:!0,forced:!d&&!h},{endsWith:function(t){var e=String(s(this));a(t);var n=arguments.length>1?arguments[1]:void 0,r=o(e.length),i=void 0===n?r:f(o(n),r),l=String(t);return c?c.call(e,l,i):e.slice(i-l.length,i)===l}})},9253:function(t,e,n){"use strict";var r=n(2109),i=n(4230),o=n(3429);r({target:"String",proto:!0,forced:o("fixed")},{fixed:function(){return i(this,"tt","","")}})},2023:function(t,e,n){"use strict";var r=n(2109),i=n(3929),o=n(4488),a=n(4964);r({target:"String",proto:!0,forced:!a("includes")},{includes:function(t){return!!~String(o(this)).indexOf(i(t),arguments.length>1?arguments[1]:void 0)}})},8783:function(t,e,n){"use strict";var r=n(8710).charAt,i=n(9909),o=n(654),a="String Iterator",s=i.set,l=i.getterFor(a);o(String,"String",(function(t){s(this,{type:a,string:String(t),index:0})}),(function(){var t,e=l(this),n=e.string,i=e.index;return i>=n.length?{value:void 0,done:!0}:(t=r(n,i),e.index+=t.length,{value:t,done:!1})}))},9254:function(t,e,n){"use strict";var r=n(2109),i=n(4230),o=n(3429);r({target:"String",proto:!0,forced:o("link")},{link:function(t){return i(this,"a","href",t)}})},4723:function(t,e,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),a=n(4488),s=n(1530),l=n(7651);r("match",(function(t,e,n){return[function(e){var n=a(this),r=void 0==e?void 0:e[t];return void 0!==r?r.call(e,n):new RegExp(e)[t](String(n))},function(t){var r=n(e,this,t);if(r.done)return r.value;var a=i(this),u=String(t);if(!a.global)return l(a,u);var c=a.unicode;a.lastIndex=0;var f,h=[],d=0;while(null!==(f=l(a,u))){var p=String(f[0]);h[d]=p,""===p&&(a.lastIndex=s(u,o(a.lastIndex),c)),d++}return 0===d?null:h}]}))},2481:function(t,e,n){var r=n(2109),i=n(8415);r({target:"String",proto:!0},{repeat:i})},5306:function(t,e,n){"use strict";var r=n(7007),i=n(7293),o=n(9670),a=n(7466),s=n(9958),l=n(4488),u=n(1530),c=n(647),f=n(7651),h=n(5112),d=h("replace"),p=Math.max,v=Math.min,g=function(t){return void 0===t?t:String(t)},y=function(){return"$0"==="a".replace(/./,"$0")}(),m=function(){return!!/./[d]&&""===/./[d]("a","$0")}(),_=!i((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")}));r("replace",(function(t,e,n){var r=m?"$":"$0";return[function(t,n){var r=l(this),i=void 0==t?void 0:t[d];return void 0!==i?i.call(t,r,n):e.call(String(r),t,n)},function(t,i){if("string"===typeof i&&-1===i.indexOf(r)&&-1===i.indexOf("$<")){var l=n(e,this,t,i);if(l.done)return l.value}var h=o(this),d=String(t),y="function"===typeof i;y||(i=String(i));var m=h.global;if(m){var _=h.unicode;h.lastIndex=0}var b=[];while(1){var w=f(h,d);if(null===w)break;if(b.push(w),!m)break;var x=String(w[0]);""===x&&(h.lastIndex=u(d,a(h.lastIndex),_))}for(var S="",k=0,C=0;C=k&&(S+=d.slice(k,A)+E,k=A+T.length)}return S+d.slice(k)}]}),!_||!y||m)},3123:function(t,e,n){"use strict";var r=n(7007),i=n(7850),o=n(9670),a=n(4488),s=n(6707),l=n(1530),u=n(7466),c=n(7651),f=n(2261),h=n(2999),d=n(7293),p=h.UNSUPPORTED_Y,v=[].push,g=Math.min,y=4294967295,m=!d((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));r("split",(function(t,e,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var r=String(a(this)),o=void 0===n?y:n>>>0;if(0===o)return[];if(void 0===t)return[r];if(!i(t))return e.call(r,t,o);var s,l,u,c=[],h=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),d=0,p=new RegExp(t.source,h+"g");while(s=f.call(p,r)){if(l=p.lastIndex,l>d&&(c.push(r.slice(d,s.index)),s.length>1&&s.index=o))break;p.lastIndex===s.index&&p.lastIndex++}return d===r.length?!u&&p.test("")||c.push(""):c.push(r.slice(d)),c.length>o?c.slice(0,o):c}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:e.call(this,t,n)}:e,[function(e,n){var i=a(this),o=void 0==e?void 0:e[t];return void 0!==o?o.call(e,i,n):r.call(String(i),e,n)},function(t,i){var a=n(r,this,t,i,r!==e);if(a.done)return a.value;var f=o(this),h=String(t),d=s(f,RegExp),v=f.unicode,m=(f.ignoreCase?"i":"")+(f.multiline?"m":"")+(f.unicode?"u":"")+(p?"g":"y"),_=new d(p?"^(?:"+f.source+")":f,m),b=void 0===i?y:i>>>0;if(0===b)return[];if(0===h.length)return null===c(_,h)?[h]:[];var w=0,x=0,S=[];while(x1?arguments[1]:void 0,e.length)),r=String(t);return c?c.call(e,r,n):e.slice(n,n+r.length)===r}})},3210:function(t,e,n){"use strict";var r=n(2109),i=n(3111).trim,o=n(6091);r({target:"String",proto:!0,forced:o("trim")},{trim:function(){return i(this)}})},1817:function(t,e,n){"use strict";var r=n(2109),i=n(9781),o=n(7854),a=n(6656),s=n(111),l=n(3070).f,u=n(9920),c=o.Symbol;if(i&&"function"==typeof c&&(!("description"in c.prototype)||void 0!==c().description)){var f={},h=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),e=this instanceof h?new c(t):void 0===t?c():c(t);return""===t&&(f[e]=!0),e};u(h,c);var d=h.prototype=c.prototype;d.constructor=h;var p=d.toString,v="Symbol(test)"==String(c("test")),g=/^Symbol\((.*)\)[^)]+$/;l(d,"description",{configurable:!0,get:function(){var t=s(this)?this.valueOf():this,e=p.call(t);if(a(f,t))return"";var n=v?e.slice(7,-1):e.replace(g,"$1");return""===n?void 0:n}}),r({global:!0,forced:!0},{Symbol:h})}},2165:function(t,e,n){var r=n(7235);r("iterator")},2526:function(t,e,n){"use strict";var r=n(2109),i=n(7854),o=n(5005),a=n(1913),s=n(9781),l=n(133),u=n(3307),c=n(7293),f=n(6656),h=n(3157),d=n(111),p=n(9670),v=n(7908),g=n(5656),y=n(7593),m=n(9114),_=n(30),b=n(1956),w=n(8006),x=n(1156),S=n(5181),k=n(1236),C=n(3070),T=n(5296),A=n(8880),I=n(1320),M=n(2309),D=n(6200),O=n(3501),E=n(9711),P=n(5112),L=n(6061),R=n(7235),B=n(8003),Z=n(9909),F=n(2092).forEach,z=D("hidden"),N="Symbol",W="prototype",U=P("toPrimitive"),V=Z.set,j=Z.getterFor(N),H=Object[W],G=i.Symbol,q=o("JSON","stringify"),Y=k.f,X=C.f,$=x.f,K=T.f,J=M("symbols"),Q=M("op-symbols"),tt=M("string-to-symbol-registry"),et=M("symbol-to-string-registry"),nt=M("wks"),rt=i.QObject,it=!rt||!rt[W]||!rt[W].findChild,ot=s&&c((function(){return 7!=_(X({},"a",{get:function(){return X(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=Y(H,e);r&&delete H[e],X(t,e,n),r&&t!==H&&X(H,e,r)}:X,at=function(t,e){var n=J[t]=_(G[W]);return V(n,{type:N,tag:t,description:e}),s||(n.description=e),n},st=u?function(t){return"symbol"==typeof t}:function(t){return Object(t)instanceof G},lt=function(t,e,n){t===H&<(Q,e,n),p(t);var r=y(e,!0);return p(n),f(J,r)?(n.enumerable?(f(t,z)&&t[z][r]&&(t[z][r]=!1),n=_(n,{enumerable:m(0,!1)})):(f(t,z)||X(t,z,m(1,{})),t[z][r]=!0),ot(t,r,n)):X(t,r,n)},ut=function(t,e){p(t);var n=g(e),r=b(n).concat(pt(n));return F(r,(function(e){s&&!ft.call(n,e)||lt(t,e,n[e])})),t},ct=function(t,e){return void 0===e?_(t):ut(_(t),e)},ft=function(t){var e=y(t,!0),n=K.call(this,e);return!(this===H&&f(J,e)&&!f(Q,e))&&(!(n||!f(this,e)||!f(J,e)||f(this,z)&&this[z][e])||n)},ht=function(t,e){var n=g(t),r=y(e,!0);if(n!==H||!f(J,r)||f(Q,r)){var i=Y(n,r);return!i||!f(J,r)||f(n,z)&&n[z][r]||(i.enumerable=!0),i}},dt=function(t){var e=$(g(t)),n=[];return F(e,(function(t){f(J,t)||f(O,t)||n.push(t)})),n},pt=function(t){var e=t===H,n=$(e?Q:g(t)),r=[];return F(n,(function(t){!f(J,t)||e&&!f(H,t)||r.push(J[t])})),r};if(l||(G=function(){if(this instanceof G)throw TypeError("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,e=E(t),n=function(t){this===H&&n.call(Q,t),f(this,z)&&f(this[z],e)&&(this[z][e]=!1),ot(this,e,m(1,t))};return s&&it&&ot(H,e,{configurable:!0,set:n}),at(e,t)},I(G[W],"toString",(function(){return j(this).tag})),I(G,"withoutSetter",(function(t){return at(E(t),t)})),T.f=ft,C.f=lt,k.f=ht,w.f=x.f=dt,S.f=pt,L.f=function(t){return at(P(t),t)},s&&(X(G[W],"description",{configurable:!0,get:function(){return j(this).description}}),a||I(H,"propertyIsEnumerable",ft,{unsafe:!0}))),r({global:!0,wrap:!0,forced:!l,sham:!l},{Symbol:G}),F(b(nt),(function(t){R(t)})),r({target:N,stat:!0,forced:!l},{for:function(t){var e=String(t);if(f(tt,e))return tt[e];var n=G(e);return tt[e]=n,et[n]=e,n},keyFor:function(t){if(!st(t))throw TypeError(t+" is not a symbol");if(f(et,t))return et[t]},useSetter:function(){it=!0},useSimple:function(){it=!1}}),r({target:"Object",stat:!0,forced:!l,sham:!s},{create:ct,defineProperty:lt,defineProperties:ut,getOwnPropertyDescriptor:ht}),r({target:"Object",stat:!0,forced:!l},{getOwnPropertyNames:dt,getOwnPropertySymbols:pt}),r({target:"Object",stat:!0,forced:c((function(){S.f(1)}))},{getOwnPropertySymbols:function(t){return S.f(v(t))}}),q){var vt=!l||c((function(){var t=G();return"[null]"!=q([t])||"{}"!=q({a:t})||"{}"!=q(Object(t))}));r({target:"JSON",stat:!0,forced:vt},{stringify:function(t,e,n){var r,i=[t],o=1;while(arguments.length>o)i.push(arguments[o++]);if(r=e,(d(e)||void 0!==t)&&!st(t))return h(e)||(e=function(t,e){if("function"==typeof r&&(e=r.call(this,t,e)),!st(e))return e}),i[1]=e,q.apply(null,i)}})}G[W][U]||A(G[W],U,G[W].valueOf),B(G,N),O[z]=!0},2990:function(t,e,n){"use strict";var r=n(260),i=n(1048),o=r.aTypedArray,a=r.exportTypedArrayMethod;a("copyWithin",(function(t,e){return i.call(o(this),t,e,arguments.length>2?arguments[2]:void 0)}))},8927:function(t,e,n){"use strict";var r=n(260),i=n(2092).every,o=r.aTypedArray,a=r.exportTypedArrayMethod;a("every",(function(t){return i(o(this),t,arguments.length>1?arguments[1]:void 0)}))},3105:function(t,e,n){"use strict";var r=n(260),i=n(1285),o=r.aTypedArray,a=r.exportTypedArrayMethod;a("fill",(function(t){return i.apply(o(this),arguments)}))},5035:function(t,e,n){"use strict";var r=n(260),i=n(2092).filter,o=n(3074),a=r.aTypedArray,s=r.exportTypedArrayMethod;s("filter",(function(t){var e=i(a(this),t,arguments.length>1?arguments[1]:void 0);return o(this,e)}))},7174:function(t,e,n){"use strict";var r=n(260),i=n(2092).findIndex,o=r.aTypedArray,a=r.exportTypedArrayMethod;a("findIndex",(function(t){return i(o(this),t,arguments.length>1?arguments[1]:void 0)}))},4345:function(t,e,n){"use strict";var r=n(260),i=n(2092).find,o=r.aTypedArray,a=r.exportTypedArrayMethod;a("find",(function(t){return i(o(this),t,arguments.length>1?arguments[1]:void 0)}))},2846:function(t,e,n){"use strict";var r=n(260),i=n(2092).forEach,o=r.aTypedArray,a=r.exportTypedArrayMethod;a("forEach",(function(t){i(o(this),t,arguments.length>1?arguments[1]:void 0)}))},4731:function(t,e,n){"use strict";var r=n(260),i=n(1318).includes,o=r.aTypedArray,a=r.exportTypedArrayMethod;a("includes",(function(t){return i(o(this),t,arguments.length>1?arguments[1]:void 0)}))},7209:function(t,e,n){"use strict";var r=n(260),i=n(1318).indexOf,o=r.aTypedArray,a=r.exportTypedArrayMethod;a("indexOf",(function(t){return i(o(this),t,arguments.length>1?arguments[1]:void 0)}))},6319:function(t,e,n){"use strict";var r=n(7854),i=n(260),o=n(6992),a=n(5112),s=a("iterator"),l=r.Uint8Array,u=o.values,c=o.keys,f=o.entries,h=i.aTypedArray,d=i.exportTypedArrayMethod,p=l&&l.prototype[s],v=!!p&&("values"==p.name||void 0==p.name),g=function(){return u.call(h(this))};d("entries",(function(){return f.call(h(this))})),d("keys",(function(){return c.call(h(this))})),d("values",g,!v),d(s,g,!v)},8867:function(t,e,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,a=[].join;o("join",(function(t){return a.apply(i(this),arguments)}))},7789:function(t,e,n){"use strict";var r=n(260),i=n(6583),o=r.aTypedArray,a=r.exportTypedArrayMethod;a("lastIndexOf",(function(t){return i.apply(o(this),arguments)}))},3739:function(t,e,n){"use strict";var r=n(260),i=n(2092).map,o=n(6707),a=r.aTypedArray,s=r.aTypedArrayConstructor,l=r.exportTypedArrayMethod;l("map",(function(t){return i(a(this),t,arguments.length>1?arguments[1]:void 0,(function(t,e){return new(s(o(t,t.constructor)))(e)}))}))},4483:function(t,e,n){"use strict";var r=n(260),i=n(3671).right,o=r.aTypedArray,a=r.exportTypedArrayMethod;a("reduceRight",(function(t){return i(o(this),t,arguments.length,arguments.length>1?arguments[1]:void 0)}))},9368:function(t,e,n){"use strict";var r=n(260),i=n(3671).left,o=r.aTypedArray,a=r.exportTypedArrayMethod;a("reduce",(function(t){return i(o(this),t,arguments.length,arguments.length>1?arguments[1]:void 0)}))},2056:function(t,e,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,a=Math.floor;o("reverse",(function(){var t,e=this,n=i(e).length,r=a(n/2),o=0;while(o1?arguments[1]:void 0,1),n=this.length,r=a(t),s=i(r.length),u=0;if(s+e>n)throw RangeError("Wrong length");while(uo)c[o]=n[o++];return c}),c)},7462:function(t,e,n){"use strict";var r=n(260),i=n(2092).some,o=r.aTypedArray,a=r.exportTypedArrayMethod;a("some",(function(t){return i(o(this),t,arguments.length>1?arguments[1]:void 0)}))},3824:function(t,e,n){"use strict";var r=n(260),i=n(7854),o=n(7293),a=n(3099),s=n(7466),l=n(4362),u=n(8886),c=n(256),f=n(7392),h=n(8008),d=r.aTypedArray,p=r.exportTypedArrayMethod,v=i.Uint16Array,g=v&&v.prototype.sort,y=!!g&&!o((function(){var t=new v(2);t.sort(null),t.sort({})})),m=!!g&&!o((function(){if(f)return f<74;if(u)return u<67;if(c)return!0;if(h)return h<602;var t,e,n=new v(516),r=Array(516);for(t=0;t<516;t++)e=t%4,n[t]=515-t,r[t]=t-2*e+3;for(n.sort((function(t,e){return(t/4|0)-(e/4|0)})),t=0;t<516;t++)if(n[t]!==r[t])return!0})),_=function(t){return function(e,n){return void 0!==t?+t(e,n)||0:n!==n?-1:e!==e?1:0===e&&0===n?1/e>0&&1/n<0?1:-1:e>n}};p("sort",(function(t){var e=this;if(void 0!==t&&a(t),m)return g.call(e,t);d(e);var n,r=s(e.length),i=Array(r);for(n=0;n=0?r:n+r;return s<0||s>=n?void 0:e[s]}))},4747:function(t,e,n){var r=n(7854),i=n(8324),o=n(8533),a=n(8880);for(var s in i){var l=r[s],u=l&&l.prototype;if(u&&u.forEach!==o)try{a(u,"forEach",o)}catch(c){u.forEach=o}}},3948:function(t,e,n){var r=n(7854),i=n(8324),o=n(6992),a=n(8880),s=n(5112),l=s("iterator"),u=s("toStringTag"),c=o.values;for(var f in i){var h=r[f],d=h&&h.prototype;if(d){if(d[l]!==c)try{a(d,l,c)}catch(v){d[l]=c}if(d[u]||a(d,u,f),i[f])for(var p in o)if(d[p]!==o[p])try{a(d,p,o[p])}catch(v){d[p]=o[p]}}}},1637:function(t,e,n){"use strict";n(6992);var r=n(2109),i=n(5005),o=n(590),a=n(1320),s=n(2248),l=n(8003),u=n(4994),c=n(9909),f=n(5787),h=n(6656),d=n(9974),p=n(648),v=n(9670),g=n(111),y=n(30),m=n(9114),_=n(8554),b=n(1246),w=n(5112),x=i("fetch"),S=i("Headers"),k=w("iterator"),C="URLSearchParams",T=C+"Iterator",A=c.set,I=c.getterFor(C),M=c.getterFor(T),D=/\+/g,O=Array(4),E=function(t){return O[t-1]||(O[t-1]=RegExp("((?:%[\\da-f]{2}){"+t+"})","gi"))},P=function(t){try{return decodeURIComponent(t)}catch(e){return t}},L=function(t){var e=t.replace(D," "),n=4;try{return decodeURIComponent(e)}catch(r){while(n)e=e.replace(E(n--),P);return e}},R=/[!'()~]|%20/g,B={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},Z=function(t){return B[t]},F=function(t){return encodeURIComponent(t).replace(R,Z)},z=function(t,e){if(e){var n,r,i=e.split("&"),o=0;while(o0?arguments[0]:void 0,c=this,d=[];if(A(c,{type:C,entries:d,updateURL:function(){},updateSearchParams:N}),void 0!==u)if(g(u))if(t=b(u),"function"===typeof t){e=t.call(u),n=e.next;while(!(r=n.call(e)).done){if(i=_(v(r.value)),o=i.next,(a=o.call(i)).done||(s=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");d.push({key:a.value+"",value:s.value+""})}}else for(l in u)h(u,l)&&d.push({key:l,value:u[l]+""});else z(d,"string"===typeof u?"?"===u.charAt(0)?u.slice(1):u:u+"")},j=V.prototype;s(j,{append:function(t,e){W(arguments.length,2);var n=I(this);n.entries.push({key:t+"",value:e+""}),n.updateURL()},delete:function(t){W(arguments.length,1);var e=I(this),n=e.entries,r=t+"",i=0;while(it.key){i.splice(e,0,t);break}e===n&&i.push(t)}r.updateURL()},forEach:function(t){var e,n=I(this).entries,r=d(t,arguments.length>1?arguments[1]:void 0,3),i=0;while(i1&&(e=arguments[1],g(e)&&(n=e.body,p(n)===C&&(r=e.headers?new S(e.headers):new S,r.has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),e=y(e,{body:m(0,String(n)),headers:m(0,r)}))),i.push(e)),x.apply(this,i)}}),t.exports={URLSearchParams:V,getState:I}},285:function(t,e,n){"use strict";n(8783);var r,i=n(2109),o=n(9781),a=n(590),s=n(7854),l=n(6048),u=n(1320),c=n(5787),f=n(6656),h=n(1574),d=n(8457),p=n(8710).codeAt,v=n(3197),g=n(8003),y=n(1637),m=n(9909),_=s.URL,b=y.URLSearchParams,w=y.getState,x=m.set,S=m.getterFor("URL"),k=Math.floor,C=Math.pow,T="Invalid authority",A="Invalid scheme",I="Invalid host",M="Invalid port",D=/[A-Za-z]/,O=/[\d+-.A-Za-z]/,E=/\d/,P=/^0x/i,L=/^[0-7]+$/,R=/^\d+$/,B=/^[\dA-Fa-f]+$/,Z=/[\0\t\n\r #%/:<>?@[\\\]^|]/,F=/[\0\t\n\r #/:<>?@[\\\]^|]/,z=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,N=/[\t\n\r]/g,W=function(t,e){var n,r,i;if("["==e.charAt(0)){if("]"!=e.charAt(e.length-1))return I;if(n=V(e.slice(1,-1)),!n)return I;t.host=n}else if(J(t)){if(e=v(e),Z.test(e))return I;if(n=U(e),null===n)return I;t.host=n}else{if(F.test(e))return I;for(n="",r=d(e),i=0;i4)return t;for(n=[],r=0;r1&&"0"==i.charAt(0)&&(o=P.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)a=0;else{if(!(10==o?R:8==o?L:B).test(i))return t;a=parseInt(i,o)}n.push(a)}for(r=0;r=C(256,5-e))return null}else if(a>255)return null;for(s=n.pop(),r=0;r6)return;r=0;while(h()){if(i=null,r>0){if(!("."==h()&&r<4))return;f++}if(!E.test(h()))return;while(E.test(h())){if(o=parseInt(h(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;f++}l[u]=256*l[u]+i,r++,2!=r&&4!=r||u++}if(4!=r)return;break}if(":"==h()){if(f++,!h())return}else if(h())return;l[u++]=e}else{if(null!==c)return;f++,u++,c=u}}if(null!==c){a=u-c,u=7;while(0!=u&&a>0)s=l[u],l[u--]=l[c+a-1],l[c+--a]=s}else if(8!=u)return;return l},j=function(t){for(var e=null,n=1,r=null,i=0,o=0;o<8;o++)0!==t[o]?(i>n&&(e=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(e=r,n=i),e},H=function(t){var e,n,r,i;if("number"==typeof t){for(e=[],n=0;n<4;n++)e.unshift(t%256),t=k(t/256);return e.join(".")}if("object"==typeof t){for(e="",r=j(t),n=0;n<8;n++)i&&0===t[n]||(i&&(i=!1),r===n?(e+=n?":":"::",i=!0):(e+=t[n].toString(16),n<7&&(e+=":")));return"["+e+"]"}return t},G={},q=h({},G,{" ":1,'"':1,"<":1,">":1,"`":1}),Y=h({},q,{"#":1,"?":1,"{":1,"}":1}),X=h({},Y,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),$=function(t,e){var n=p(t,0);return n>32&&n<127&&!f(e,t)?t:encodeURIComponent(t)},K={ftp:21,file:null,http:80,https:443,ws:80,wss:443},J=function(t){return f(K,t.scheme)},Q=function(t){return""!=t.username||""!=t.password},tt=function(t){return!t.host||t.cannotBeABaseURL||"file"==t.scheme},et=function(t,e){var n;return 2==t.length&&D.test(t.charAt(0))&&(":"==(n=t.charAt(1))||!e&&"|"==n)},nt=function(t){var e;return t.length>1&&et(t.slice(0,2))&&(2==t.length||"/"===(e=t.charAt(2))||"\\"===e||"?"===e||"#"===e)},rt=function(t){var e=t.path,n=e.length;!n||"file"==t.scheme&&1==n&&et(e[0],!0)||e.pop()},it=function(t){return"."===t||"%2e"===t.toLowerCase()},ot=function(t){return t=t.toLowerCase(),".."===t||"%2e."===t||".%2e"===t||"%2e%2e"===t},at={},st={},lt={},ut={},ct={},ft={},ht={},dt={},pt={},vt={},gt={},yt={},mt={},_t={},bt={},wt={},xt={},St={},kt={},Ct={},Tt={},At=function(t,e,n,i){var o,a,s,l,u=n||at,c=0,h="",p=!1,v=!1,g=!1;n||(t.scheme="",t.username="",t.password="",t.host=null,t.port=null,t.path=[],t.query=null,t.fragment=null,t.cannotBeABaseURL=!1,e=e.replace(z,"")),e=e.replace(N,""),o=d(e);while(c<=o.length){switch(a=o[c],u){case at:if(!a||!D.test(a)){if(n)return A;u=lt;continue}h+=a.toLowerCase(),u=st;break;case st:if(a&&(O.test(a)||"+"==a||"-"==a||"."==a))h+=a.toLowerCase();else{if(":"!=a){if(n)return A;h="",u=lt,c=0;continue}if(n&&(J(t)!=f(K,h)||"file"==h&&(Q(t)||null!==t.port)||"file"==t.scheme&&!t.host))return;if(t.scheme=h,n)return void(J(t)&&K[t.scheme]==t.port&&(t.port=null));h="","file"==t.scheme?u=_t:J(t)&&i&&i.scheme==t.scheme?u=ut:J(t)?u=dt:"/"==o[c+1]?(u=ct,c++):(t.cannotBeABaseURL=!0,t.path.push(""),u=kt)}break;case lt:if(!i||i.cannotBeABaseURL&&"#"!=a)return A;if(i.cannotBeABaseURL&&"#"==a){t.scheme=i.scheme,t.path=i.path.slice(),t.query=i.query,t.fragment="",t.cannotBeABaseURL=!0,u=Tt;break}u="file"==i.scheme?_t:ft;continue;case ut:if("/"!=a||"/"!=o[c+1]){u=ft;continue}u=pt,c++;break;case ct:if("/"==a){u=vt;break}u=St;continue;case ft:if(t.scheme=i.scheme,a==r)t.username=i.username,t.password=i.password,t.host=i.host,t.port=i.port,t.path=i.path.slice(),t.query=i.query;else if("/"==a||"\\"==a&&J(t))u=ht;else if("?"==a)t.username=i.username,t.password=i.password,t.host=i.host,t.port=i.port,t.path=i.path.slice(),t.query="",u=Ct;else{if("#"!=a){t.username=i.username,t.password=i.password,t.host=i.host,t.port=i.port,t.path=i.path.slice(),t.path.pop(),u=St;continue}t.username=i.username,t.password=i.password,t.host=i.host,t.port=i.port,t.path=i.path.slice(),t.query=i.query,t.fragment="",u=Tt}break;case ht:if(!J(t)||"/"!=a&&"\\"!=a){if("/"!=a){t.username=i.username,t.password=i.password,t.host=i.host,t.port=i.port,u=St;continue}u=vt}else u=pt;break;case dt:if(u=pt,"/"!=a||"/"!=h.charAt(c+1))continue;c++;break;case pt:if("/"!=a&&"\\"!=a){u=vt;continue}break;case vt:if("@"==a){p&&(h="%40"+h),p=!0,s=d(h);for(var y=0;y65535)return M;t.port=J(t)&&b===K[t.scheme]?null:b,h=""}if(n)return;u=xt;continue}return M}h+=a;break;case _t:if(t.scheme="file","/"==a||"\\"==a)u=bt;else{if(!i||"file"!=i.scheme){u=St;continue}if(a==r)t.host=i.host,t.path=i.path.slice(),t.query=i.query;else if("?"==a)t.host=i.host,t.path=i.path.slice(),t.query="",u=Ct;else{if("#"!=a){nt(o.slice(c).join(""))||(t.host=i.host,t.path=i.path.slice(),rt(t)),u=St;continue}t.host=i.host,t.path=i.path.slice(),t.query=i.query,t.fragment="",u=Tt}}break;case bt:if("/"==a||"\\"==a){u=wt;break}i&&"file"==i.scheme&&!nt(o.slice(c).join(""))&&(et(i.path[0],!0)?t.path.push(i.path[0]):t.host=i.host),u=St;continue;case wt:if(a==r||"/"==a||"\\"==a||"?"==a||"#"==a){if(!n&&et(h))u=St;else if(""==h){if(t.host="",n)return;u=xt}else{if(l=W(t,h),l)return l;if("localhost"==t.host&&(t.host=""),n)return;h="",u=xt}continue}h+=a;break;case xt:if(J(t)){if(u=St,"/"!=a&&"\\"!=a)continue}else if(n||"?"!=a)if(n||"#"!=a){if(a!=r&&(u=St,"/"!=a))continue}else t.fragment="",u=Tt;else t.query="",u=Ct;break;case St:if(a==r||"/"==a||"\\"==a&&J(t)||!n&&("?"==a||"#"==a)){if(ot(h)?(rt(t),"/"==a||"\\"==a&&J(t)||t.path.push("")):it(h)?"/"==a||"\\"==a&&J(t)||t.path.push(""):("file"==t.scheme&&!t.path.length&&et(h)&&(t.host&&(t.host=""),h=h.charAt(0)+":"),t.path.push(h)),h="","file"==t.scheme&&(a==r||"?"==a||"#"==a))while(t.path.length>1&&""===t.path[0])t.path.shift();"?"==a?(t.query="",u=Ct):"#"==a&&(t.fragment="",u=Tt)}else h+=$(a,Y);break;case kt:"?"==a?(t.query="",u=Ct):"#"==a?(t.fragment="",u=Tt):a!=r&&(t.path[0]+=$(a,G));break;case Ct:n||"#"!=a?a!=r&&("'"==a&&J(t)?t.query+="%27":t.query+="#"==a?"%23":$(a,G)):(t.fragment="",u=Tt);break;case Tt:a!=r&&(t.fragment+=$(a,q));break}c++}},It=function(t){var e,n,r=c(this,It,"URL"),i=arguments.length>1?arguments[1]:void 0,a=String(t),s=x(r,{type:"URL"});if(void 0!==i)if(i instanceof It)e=S(i);else if(n=At(e={},String(i)),n)throw TypeError(n);if(n=At(s,a,null,e),n)throw TypeError(n);var l=s.searchParams=new b,u=w(l);u.updateSearchParams(s.query),u.updateURL=function(){s.query=String(l)||null},o||(r.href=Dt.call(r),r.origin=Ot.call(r),r.protocol=Et.call(r),r.username=Pt.call(r),r.password=Lt.call(r),r.host=Rt.call(r),r.hostname=Bt.call(r),r.port=Zt.call(r),r.pathname=Ft.call(r),r.search=zt.call(r),r.searchParams=Nt.call(r),r.hash=Wt.call(r))},Mt=It.prototype,Dt=function(){var t=S(this),e=t.scheme,n=t.username,r=t.password,i=t.host,o=t.port,a=t.path,s=t.query,l=t.fragment,u=e+":";return null!==i?(u+="//",Q(t)&&(u+=n+(r?":"+r:"")+"@"),u+=H(i),null!==o&&(u+=":"+o)):"file"==e&&(u+="//"),u+=t.cannotBeABaseURL?a[0]:a.length?"/"+a.join("/"):"",null!==s&&(u+="?"+s),null!==l&&(u+="#"+l),u},Ot=function(){var t=S(this),e=t.scheme,n=t.port;if("blob"==e)try{return new It(e.path[0]).origin}catch(r){return"null"}return"file"!=e&&J(t)?e+"://"+H(t.host)+(null!==n?":"+n:""):"null"},Et=function(){return S(this).scheme+":"},Pt=function(){return S(this).username},Lt=function(){return S(this).password},Rt=function(){var t=S(this),e=t.host,n=t.port;return null===e?"":null===n?H(e):H(e)+":"+n},Bt=function(){var t=S(this).host;return null===t?"":H(t)},Zt=function(){var t=S(this).port;return null===t?"":String(t)},Ft=function(){var t=S(this),e=t.path;return t.cannotBeABaseURL?e[0]:e.length?"/"+e.join("/"):""},zt=function(){var t=S(this).query;return t?"?"+t:""},Nt=function(){return S(this).searchParams},Wt=function(){var t=S(this).fragment;return t?"#"+t:""},Ut=function(t,e){return{get:t,set:e,configurable:!0,enumerable:!0}};if(o&&l(Mt,{href:Ut(Dt,(function(t){var e=S(this),n=String(t),r=At(e,n);if(r)throw TypeError(r);w(e.searchParams).updateSearchParams(e.query)})),origin:Ut(Ot),protocol:Ut(Et,(function(t){var e=S(this);At(e,String(t)+":",at)})),username:Ut(Pt,(function(t){var e=S(this),n=d(String(t));if(!tt(e)){e.username="";for(var r=0;r0){var d=h.duration,p=h.delay,v=h.easing,g={duration:d,delay:p||0,easing:v,done:s,force:!!s||!!l,setToFinal:!f,scope:t,during:l};c?e.animateFrom(n,g):e.animateTo(n,g)}else e.stopAnimation(),!c&&e.attr(n),l&&l(1),s&&s()}function l(t,e,n,r,i,o){s("update",t,e,n,r,i,o)}function u(t,e,n,r,i,o){s("enter",t,e,n,r,i,o)}function c(t){if(!t.__zr)return!0;for(var e=0;e0){e=e/180*Math.PI,C.fromArray(t[0]),T.fromArray(t[1]),A.fromArray(t[2]),w.Z.sub(I,C,T),w.Z.sub(M,A,T);var n=I.len(),r=M.len();if(!(n<.001||r<.001)){I.scale(1/n),M.scale(1/r);var i=I.dot(M),o=Math.cos(e);if(o1&&w.Z.copy(O,A),O.toArray(t[1])}}}}function P(t,e,n){if(n<=180&&n>0){n=n/180*Math.PI,C.fromArray(t[0]),T.fromArray(t[1]),A.fromArray(t[2]),w.Z.sub(I,T,C),w.Z.sub(M,A,T);var r=I.len(),i=M.len();if(!(r<.001||i<.001)){I.scale(1/r),M.scale(1/i);var o=I.dot(e),a=Math.cos(n);if(o=l)w.Z.copy(O,A);else{O.scaleAndAdd(M,s/Math.tan(Math.PI/2-c));var f=A.x!==T.x?(O.x-T.x)/(A.x-T.x):(O.y-T.y)/(A.y-T.y);if(isNaN(f))return;f<0?w.Z.copy(O,T):f>1&&w.Z.copy(O,A)}O.toArray(t[1])}}}}function L(t,e,n,r){var i="normal"===n,o=i?t:t.ensureState(n);o.ignore=e;var a=r.get("smooth");a&&!0===a&&(a=.3),o.shape=o.shape||{},a>0&&(o.shape.smooth=a);var s=r.getModel("lineStyle").getLineStyle();i?t.useStyle(s):o.style=s}function R(t,e){var n=e.smooth,r=e.points;if(r)if(t.moveTo(r[0][0],r[0][1]),n>0&&r.length>=3){var i=S.TK(r[0],r[1]),o=S.TK(r[1],r[2]);if(!i||!o)return t.lineTo(r[1][0],r[1][1]),void t.lineTo(r[2][0],r[2][1]);var a=Math.min(i,o)*n,s=S.t7([],r[1],r[0],a/i),l=S.t7([],r[1],r[2],a/o),u=S.t7([],s,l,.5);t.bezierCurveTo(s[0],s[1],s[0],s[1],u[0],u[1]),t.bezierCurveTo(l[0],l[1],l[0],l[1],r[2][0],r[2][1])}else for(var c=1;cn?a:o,c=Math.abs(l.label.y-n);if(c>=u.maxY){var f=l.label.x-e-l.len2*i,h=r+l.len,p=Math.abs(f)t.unconstrainedWidth?null:d:null;r.setStyle("width",p)}var v=r.getBoundingRect();o.width=v.width;var g=(r.style.margin||0)+2.1;o.height=v.height+g,o.y-=(o.height-f)/2}}}function V(t){return"center"===t.position}function j(t){var e,n,r=t.getData(),o=[],s=!1,l=(t.get("minShowLabelAngle")||0)*z,u=r.getLayout("viewRect"),c=r.getLayout("r"),f=u.width,h=u.x,d=u.y,p=u.height;function v(t){t.ignore=!0}function g(t){if(!t.ignore)return!0;for(var e in t.states)if(!1===t.states[e].ignore)return!0;return!1}r.each((function(t){var u=r.getItemGraphicEl(t),d=u.shape,p=u.getTextContent(),y=u.getTextGuideLine(),m=r.getItemModel(t),_=m.getModel("label"),b=_.get("position")||m.get(["emphasis","label","position"]),x=_.get("distanceToLabelLine"),S=_.get("alignTo"),k=(0,i.GM)(_.get("edgeDistance"),f),C=_.get("bleedMargin"),T=m.getModel("labelLine"),A=T.get("length");A=(0,i.GM)(A,f);var I=T.get("length2");if(I=(0,i.GM)(I,f),Math.abs(d.endAngle-d.startAngle)0?"right":"left":L>0?"left":"right"}var V=Math.PI,j=0,H=_.get("rotate");if((0,a.hj)(H))j=H*(V/180);else if("center"===b)j=0;else if("radial"===H||!0===H){var G=L<0?-P+V:-P;j=G}else if("tangential"===H&&"outside"!==b&&"outer"!==b){var q=Math.atan2(L,R);q<0&&(q=2*V+q);var Y=R>0;Y&&(q=V+q),j=q-V}if(s=!!j,p.x=M,p.y=D,p.rotation=j,p.setStyle({verticalAlign:"middle"}),B){p.setStyle({align:E});var X=p.states.select;X&&(X.x+=p.x,X.y+=p.y)}else{var $=p.getBoundingRect().clone();$.applyTransform(p.getComputedTransform());var K=(p.style.margin||0)+2.1;$.y-=K/2,$.height+=K,o.push({label:p,labelLine:y,position:b,len:A,len2:I,minTurnAngle:T.get("minTurnAngle"),maxSurfaceAngle:T.get("maxSurfaceAngle"),surfaceNormal:new w.Z(L,R),linePoints:O,textAlign:E,labelDistance:x,labelAlignTo:S,edgeDistance:k,bleedMargin:C,rect:$,unconstrainedWidth:$.width,labelStyleWidth:p.style.width})}u.setTextConfig({inside:B})}})),!s&&t.get("avoidLabelOverlap")&&W(o,e,n,c,f,p,h,d);for(var y=0;y0){for(var l=o.getItemLayout(0),u=1;isNaN(l&&l.startAngle)&&u=r.r0}},e.type="pie",e}(b.Z),$=X,K=n(4279),J=function(){function t(t){this.otherDims={},null!=t&&a.l7(this,t)}return t}(),Q=J,tt=n(9574),et=n(3834),nt=n(2234),rt=n(1772),it=(0,nt.Yf)(),ot={float:"f",int:"i",ordinal:"o",number:"n",time:"t"},at=function(){function t(t){this.dimensions=t.dimensions,this._dimOmitted=t.dimensionOmitted,this.source=t.source,this._fullDimCount=t.fullDimensionCount,this._updateDimOmitted(t.dimensionOmitted)}return t.prototype.isDimensionOmitted=function(){return this._dimOmitted},t.prototype._updateDimOmitted=function(t){this._dimOmitted=t,t&&(this._dimNameMap||(this._dimNameMap=ut(this.source)))},t.prototype.getSourceDimensionIndex=function(t){return(0,a.pD)(this._dimNameMap.get(t),-1)},t.prototype.getSourceDimension=function(t){var e=this.source.dimensionsDefine;if(e)return e[t]},t.prototype.makeStoreSchema=function(){for(var t=this._fullDimCount,e=(0,tt.QY)(this.source),n=!ct(t),r="",i=[],o=0,a=0;o30}function ft(t,e){(0,tt.Ld)(t)||(t=(0,tt.nx)(t)),e=e||{};var n=e.coordDimensions||[],r=e.dimensionsDefine||t.dimensionsDefine||[],i=(0,a.kW)(),o=[],s=dt(t,n,r,e.dimensionsCount),l=e.canOmitUnusedDimensions&&ct(s),u=r===t.dimensionsDefine,c=u?ut(t):lt(r),f=e.encodeDefine;!f&&e.encodeDefaulter&&(f=e.encodeDefaulter(t,s));for(var h=(0,a.kW)(f),d=new et.hG(s),p=0;p0&&(r.name=i+(o-1)),o++,e.set(i,o)}}function dt(t,e,n,r){var i=Math.max(t.dimensionsDetectedCount||1,e.length,n.length,r||0);return(0,a.S6)(e,(function(t){var e;(0,a.Kn)(t)&&(e=t.dimsDef)&&(i=Math.max(i,e.length))})),i}function pt(t,e,n){var r=e.data;if(n||r.hasOwnProperty(t)){var i=0;while(r.hasOwnProperty(t+i))i++;t+=i}return e.set(t,!0),t}var vt=n(2312);function gt(t){return null==t?0:t.length||1}function yt(t){return t}var mt=function(){function t(t,e,n,r,i,o){this._old=t,this._new=e,this._oldKeyGetter=n||yt,this._newKeyGetter=r||yt,this.context=i,this._diffModeMultiple="multiple"===o}return t.prototype.add=function(t){return this._add=t,this},t.prototype.update=function(t){return this._update=t,this},t.prototype.updateManyToOne=function(t){return this._updateManyToOne=t,this},t.prototype.updateOneToMany=function(t){return this._updateOneToMany=t,this},t.prototype.updateManyToMany=function(t){return this._updateManyToMany=t,this},t.prototype.remove=function(t){return this._remove=t,this},t.prototype.execute=function(){this[this._diffModeMultiple?"_executeMultiple":"_executeOneToOne"]()},t.prototype._executeOneToOne=function(){var t=this._old,e=this._new,n={},r=new Array(t.length),i=new Array(e.length);this._initIndexMap(t,null,r,"_oldKeyGetter"),this._initIndexMap(e,n,i,"_newKeyGetter");for(var o=0;o1){var u=s.shift();1===s.length&&(n[a]=s[0]),this._update&&this._update(u,o)}else 1===l?(n[a]=null,this._update&&this._update(s,o)):this._remove&&this._remove(o)}this._performRestAdd(i,n)},t.prototype._executeMultiple=function(){var t=this._old,e=this._new,n={},r={},i=[],o=[];this._initIndexMap(t,n,i,"_oldKeyGetter"),this._initIndexMap(e,r,o,"_newKeyGetter");for(var a=0;a1&&1===f)this._updateManyToOne&&this._updateManyToOne(u,l),r[s]=null;else if(1===c&&f>1)this._updateOneToMany&&this._updateOneToMany(u,l),r[s]=null;else if(1===c&&1===f)this._update&&this._update(u,l),r[s]=null;else if(c>1&&f>1)this._updateManyToMany&&this._updateManyToMany(u,l),r[s]=null;else if(c>1)for(var h=0;h1)for(var a=0;a=e)){var n=this._store,r=n.getProvider();this._updateOrdinalMeta();var i=this._nameList,o=this._idList,a=r.getSource().sourceFormat,s=a===K.cy;if(s&&!r.pure)for(var l=[],u=t;u0},t.prototype.ensureUniqueItemVisual=function(t,e){var n=this._itemVisuals,r=n[t];r||(r=n[t]={});var i=r[e];return null==i&&(i=this.getVisual(e),a.kJ(i)?i=i.slice():Pt(i)&&(i=a.l7({},i)),r[e]=i),i},t.prototype.setItemVisual=function(t,e,n){var r=this._itemVisuals[t]||{};this._itemVisuals[t]=r,Pt(e)?a.l7(r,e):r[e]=n},t.prototype.clearAllVisual=function(){this._visual={},this._itemVisuals=[]},t.prototype.setLayout=function(t,e){Pt(t)?a.l7(this._layout,t):this._layout[t]=e},t.prototype.getLayout=function(t){return this._layout[t]},t.prototype.getItemLayout=function(t){return this._itemLayouts[t]},t.prototype.setItemLayout=function(t,e,n){this._itemLayouts[t]=n?a.l7(this._itemLayouts[t]||{},e):e},t.prototype.clearItemLayouts=function(){this._itemLayouts.length=0},t.prototype.setItemGraphicEl=function(t,e){var n=this.hostModel&&this.hostModel.seriesIndex;(0,Et.Q)(n,this.dataType,t,e),this._graphicEls[t]=e},t.prototype.getItemGraphicEl=function(t){return this._graphicEls[t]},t.prototype.eachItemGraphicEl=function(t,e){a.S6(this._graphicEls,(function(n,r){n&&t&&t.call(e,n,r)}))},t.prototype.cloneShallow=function(e){return e||(e=new t(this._schema?this._schema:Lt(this.dimensions,this._getDimInfo,this),this.hostModel)),Mt(e,this),e._store=this._store,e},t.prototype.wrapMethod=function(t,e){var n=this[t];a.mf(n)&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=n.apply(this,arguments);return e.apply(this,[t].concat(a.tP(arguments)))})},t.internalField=function(){Ct=function(t){var e=t._invertedIndicesMap;a.S6(e,(function(n,r){var i=t._dimInfos[r],o=i.ordinalMeta,a=t._store;if(o){n=e[r]=new Rt(o.categories.length);for(var s=0;s1&&(s+="__ec__"+u),r[e]=s}}}(),t}(),Wt=Nt;function Ut(t,e,n){e=(0,a.kJ)(e)&&{coordDimensions:e}||(0,a.l7)({encodeDefine:t.getEncode()},e);var r=t.getSource(),i=ft(r,e).dimensions,o=new Wt(i,t);return o.initData(r,n),o}var Vt=function(){function t(t,e){this._getDataWithEncodedVisual=t,this._getRawData=e}return t.prototype.getAllNames=function(){var t=this._getRawData();return t.mapArray(t.getName)},t.prototype.containName=function(t){var e=this._getRawData();return e.indexOfName(t)>=0},t.prototype.indexOfName=function(t){var e=this._getDataWithEncodedVisual();return e.indexOfName(t)},t.prototype.getItemVisual=function(t,e){var n=this._getDataWithEncodedVisual();return n.getItemVisual(t,e)},t}(),jt=Vt,Ht=n(3392),Gt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,d.ZT)(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments),this.legendVisualProvider=new jt(a.ak(this.getData,this),a.ak(this.getRawData,this)),this._defaultLabelLine(e)},e.prototype.mergeOption=function(){t.prototype.mergeOption.apply(this,arguments)},e.prototype.getInitialData=function(){return Ut(this,{coordDimensions:["value"],encodeDefaulter:a.WA(rt.Ss,this)})},e.prototype.getDataParams=function(e){var n=this.getData(),r=t.prototype.getDataParams.call(this,e),o=[];return n.each(n.mapDimension("value"),(function(t){o.push(t)})),r.percent=(0,i.eJ)(o,e,n.hostModel.get("percentPrecision")),r.$vars.push("percent"),r},e.prototype._defaultLabelLine=function(t){nt.Cc(t,"labelLine",["show"]);var e=t.labelLine,n=t.emphasis.labelLine;e.show=e.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},e.type="series.pie",e.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,minShowLabelAngle:0,selectedOffset:10,percentPrecision:2,stillShowZeroSum:!0,left:0,top:0,right:0,bottom:0,width:null,height:null,label:{rotate:0,show:!0,overflow:"truncate",position:"outer",alignTo:"none",edgeDistance:"25%",bleedMargin:10,distanceToLabelLine:5},labelLine:{show:!0,length:15,length2:15,smooth:!1,minTurnAngle:90,maxSurfaceAngle:90,lineStyle:{width:1,type:"solid"}},itemStyle:{borderWidth:1,borderJoin:"round"},showEmptyCircle:!0,emptyCircleStyle:{color:"lightgray",opacity:1},labelLayout:{hideOverlap:!0},emphasis:{scale:!0,scaleSize:5},avoidLabelOverlap:!0,animationType:"expansion",animationDuration:1e3,animationTypeUpdate:"transition",animationEasingUpdate:"cubicInOut",animationDurationUpdate:500,animationEasing:"cubicInOut"},e}(Ht.Z),qt=Gt;function Yt(t){return{seriesType:t,reset:function(t,e){var n=t.getData();n.filterSelf((function(t){var e=n.mapDimension("value"),r=n.get(e,t);return!((0,a.hj)(r)&&!isNaN(r)&&r<0)}))}}}function Xt(t){t.registerChartView($),t.registerSeriesModel(qt),(0,r.y)("pie",t.registerAction),t.registerLayout((0,a.WA)(f,"pie")),t.registerProcessor(h("pie")),t.registerProcessor(Yt("pie"))}},6179:function(t,e,n){"use strict";n.d(e,{N:function(){return K}});var r=n(8023),i=n(8299),o=n(3051),a=n(2312),s=n(2234),l=n(8071),u=function(t,e){return"all"===e?{type:"all",title:t.getLocaleModel().get(["legend","selector","all"])}:"inverse"===e?{type:"inverse",title:t.getLocaleModel().get(["legend","selector","inverse"])}:void 0},c=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.layoutMode={type:"box",ignoreSize:!0},n}return(0,i.ZT)(e,t),e.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n),t.selected=t.selected||{},this._updateSelector(t)},e.prototype.mergeOption=function(e,n){t.prototype.mergeOption.call(this,e,n),this._updateSelector(e)},e.prototype._updateSelector=function(t){var e=t.selector,n=this.ecModel;!0===e&&(e=t.selector=["all","inverse"]),o.kJ(e)&&o.S6(e,(function(t,r){o.HD(t)&&(t={type:t}),e[r]=o.TS(t,u(n,t.type))}))},e.prototype.optionUpdated=function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,n=0;n=0},e.prototype.getOrient=function(){return"vertical"===this.get("orient")?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},e.type="legend.plain",e.dependencies=["series"],e.defaultOption={z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,symbolRotate:"inherit",symbolKeepAspect:!0,inactiveColor:"#ccc",inactiveBorderColor:"#ccc",inactiveBorderWidth:"auto",itemStyle:{color:"inherit",opacity:"inherit",borderColor:"inherit",borderWidth:"auto",borderCap:"inherit",borderJoin:"inherit",borderDashOffset:"inherit",borderMiterLimit:"inherit"},lineStyle:{width:"auto",color:"inherit",inactiveColor:"#ccc",inactiveWidth:2,opacity:"inherit",type:"inherit",cap:"inherit",join:"inherit",dashOffset:"inherit",miterLimit:"inherit"},textStyle:{color:"#333"},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:"sans-serif",color:"#666",borderWidth:1,borderColor:"#666"},emphasis:{selectorLabel:{show:!0,color:"#eee",backgroundColor:"#666"}},selectorPosition:"auto",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1}},e}(l.Z),f=c,h=n(1092),d=n(6315),p=n(8154),v=n(9750),g=n(5293),y=n(6357),m=n(6006),_=n(8988);function b(t,e){var n=_.MY(e.get("padding")),r=e.getItemStyle(["color","opacity"]);return r.fill=e.get("backgroundColor"),t=new g.Z({shape:{x:t.x-n[3],y:t.y-n[0],width:t.width+n[1]+n[3],height:t.height+n[0]+n[2],r:e.get("borderRadius")},style:r,silent:!0,z2:-1}),t}var w=n(6172),x=n(3166),S=n(1525),k=o.WA,C=o.S6,T=p.Z,A=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.newlineDisabled=!1,n}return(0,i.ZT)(e,t),e.prototype.init=function(){this.group.add(this._contentGroup=new T),this.group.add(this._selectorGroup=new T),this._isFirstRender=!0},e.prototype.getContentGroup=function(){return this._contentGroup},e.prototype.getSelectorGroup=function(){return this._selectorGroup},e.prototype.render=function(t,e,n){var r=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var i=t.get("align"),a=t.get("orient");i&&"auto"!==i||(i="right"===t.get("left")&&"vertical"===a?"right":"left");var s=t.get("selector",!0),l=t.get("selectorPosition",!0);!s||l&&"auto"!==l||(l="horizontal"===a?"end":"start"),this.renderInner(i,t,e,n,s,a,l);var u=t.getBoxLayoutParams(),c={width:n.getWidth(),height:n.getHeight()},f=t.get("padding"),h=w.ME(u,c,f),d=this.layoutInner(t,i,h,r,s,l),p=w.ME(o.ce({width:d.width,height:d.height},u),c,f);this.group.x=p.x-d.x,this.group.y=p.y-d.y,this.group.markRedraw(),this.group.add(this._backgroundEl=b(d,t))}},e.prototype.resetInner=function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},e.prototype.renderInner=function(t,e,n,r,i,a,s){var l=this.getContentGroup(),u=o.kW(),c=e.get("selectedMode"),f=[];n.eachRawSeries((function(t){!t.get("legendHoverLink")&&f.push(t.id)})),C(e.getData(),(function(i,a){var s=i.get("name");if(!this.newlineDisabled&&(""===s||"\n"===s)){var d=new T;return d.newline=!0,void l.add(d)}var p=n.getSeriesByName(s)[0];if(!u.get(s)){if(p){var v=p.getData(),g=v.getVisual("legendLineStyle")||{},y=v.getVisual("legendIcon"),m=v.getVisual("style"),_=this._createItem(p,s,a,i,e,t,g,m,y,c);_.on("click",k(D,s,null,r,f)).on("mouseover",k(E,p.name,null,r,f)).on("mouseout",k(P,p.name,null,r,f)),u.set(s,!0)}else n.eachRawSeries((function(n){if(!u.get(s)&&n.legendVisualProvider){var l=n.legendVisualProvider;if(!l.containName(s))return;var d=l.indexOfName(s),p=l.getItemVisual(d,"style"),v=l.getItemVisual(d,"legendIcon"),g=(0,h.Qc)(p.fill);g&&0===g[3]&&(g[3]=.2,p=o.l7(o.l7({},p),{fill:(0,h.Pz)(g,"rgba")}));var y=this._createItem(n,s,a,i,e,t,{},p,v,c);y.on("click",k(D,null,s,r,f)).on("mouseover",k(E,null,s,r,f)).on("mouseout",k(P,null,s,r,f)),u.set(s,!0)}}),this);0}}),this),i&&this._createSelector(i,e,r,a,s)},e.prototype._createSelector=function(t,e,n,r,i){var o=this.getSelectorGroup();C(t,(function(t){var r=t.type,i=new v.ZP({style:{x:0,y:0,align:"center",verticalAlign:"middle"},onclick:function(){n.dispatchAction({type:"all"===r?"legendAllSelect":"legendInverseSelect"})}});o.add(i);var a=e.getModel("selectorLabel"),s=e.getModel(["emphasis","selectorLabel"]);(0,m.ni)(i,{normal:a,emphasis:s},{defaultText:t.title}),(0,y.vF)(i)}))},e.prototype._createItem=function(t,e,n,r,i,a,s,l,u,c){var f=t.visualDrawType,h=i.get("itemWidth"),p=i.get("itemHeight"),_=i.isSelected(e),b=r.get("symbolRotate"),w=r.get("symbolKeepAspect"),x=r.get("icon");u=x||u||"roundRect";var S=I(u,r,s,l,f,_),k=new T,C=r.getModel("textStyle");if(!o.mf(t.getLegendIcon)||x&&"inherit"!==x){var A="inherit"===x&&t.getData().getVisual("symbol")?"inherit"===b?t.getData().getVisual("symbolRotate"):b:0;k.add(M({itemWidth:h,itemHeight:p,icon:u,iconRotate:A,itemStyle:S.itemStyle,lineStyle:S.lineStyle,symbolKeepAspect:w}))}else k.add(t.getLegendIcon({itemWidth:h,itemHeight:p,icon:u,iconRotate:b,itemStyle:S.itemStyle,lineStyle:S.lineStyle,symbolKeepAspect:w}));var D="left"===a?h+5:-5,O=a,E=i.get("formatter"),P=e;o.HD(E)&&E?P=E.replace("{name}",null!=e?e:""):o.mf(E)&&(P=E(e));var L=r.get("inactiveColor");k.add(new v.ZP({style:(0,m.Lr)(C,{text:P,x:D,y:p/2,fill:_?C.getTextColor():L,align:O,verticalAlign:"middle"})}));var R=new g.Z({shape:k.getBoundingRect(),invisible:!0}),B=r.getModel("tooltip");return B.get("show")&&d.setTooltipConfig({el:R,componentModel:i,itemName:e,itemTooltipOption:B.option}),k.add(R),k.eachChild((function(t){t.silent=!0})),R.silent=!c,this.getContentGroup().add(k),(0,y.vF)(k),k.__legendDataIndex=n,k},e.prototype.layoutInner=function(t,e,n,r,i,o){var a=this.getContentGroup(),s=this.getSelectorGroup();w.BZ(t.get("orient"),a,t.get("itemGap"),n.width,n.height);var l=a.getBoundingRect(),u=[-l.x,-l.y];if(s.markRedraw(),a.markRedraw(),i){w.BZ("horizontal",s,t.get("selectorItemGap",!0));var c=s.getBoundingRect(),f=[-c.x,-c.y],h=t.get("selectorButtonGap",!0),d=t.getOrient().index,p=0===d?"width":"height",v=0===d?"height":"width",g=0===d?"y":"x";"end"===o?f[d]+=l[p]+h:u[d]+=c[p]+h,f[1-d]+=l[v]/2-c[v]/2,s.x=f[0],s.y=f[1],a.x=u[0],a.y=u[1];var y={x:0,y:0};return y[p]=l[p]+h+c[p],y[v]=Math.max(l[v],c[v]),y[g]=Math.min(0,c[g]+f[1-d]),y}return a.x=u[0],a.y=u[1],this.group.getBoundingRect()},e.prototype.remove=function(){this.getContentGroup().removeAll(),this._isFirstRender=!0},e.type="legend.plain",e}(x.Z);function I(t,e,n,r,i,o){function a(t,e){"auto"===t.lineWidth&&(t.lineWidth=e.lineWidth>0?2:0),C(t,(function(n,r){"inherit"===t[r]&&(t[r]=e[r])}))}var s=e.getModel("itemStyle"),l=s.getItemStyle(),u=0===t.lastIndexOf("empty",0)?"fill":"stroke";l.decal=r.decal,"inherit"===l.fill&&(l.fill=r[i]),"inherit"===l.stroke&&(l.stroke=r[u]),"inherit"===l.opacity&&(l.opacity=("fill"===i?r:n).opacity),a(l,r);var c=e.getModel("lineStyle"),f=c.getLineStyle();if(a(f,n),"auto"===l.fill&&(l.fill=r.fill),"auto"===l.stroke&&(l.stroke=r.fill),"auto"===f.stroke&&(f.stroke=r.fill),!o){var h=e.get("inactiveBorderWidth"),d=l[u];l.lineWidth="auto"===h?r.lineWidth>0&&d?2:0:l.lineWidth,l.fill=e.get("inactiveColor"),l.stroke=e.get("inactiveBorderColor"),f.stroke=c.get("inactiveColor"),f.lineWidth=c.get("inactiveWidth")}return{itemStyle:l,lineStyle:f}}function M(t){var e=t.icon||"roundRect",n=(0,S.th)(e,0,0,t.itemWidth,t.itemHeight,t.itemStyle.fill,t.symbolKeepAspect);return n.setStyle(t.itemStyle),n.rotation=(t.iconRotate||0)*Math.PI/180,n.setOrigin([t.itemWidth/2,t.itemHeight/2]),e.indexOf("empty")>-1&&(n.style.stroke=n.style.fill,n.style.fill="#fff",n.style.lineWidth=2),n}function D(t,e,n,r){P(t,e,n,r),n.dispatchAction({type:"legendToggleSelect",name:null!=t?t:e}),E(t,e,n,r)}function O(t){var e,n=t.getZr().storage.getDisplayList(),r=0,i=n.length;while(rn[i],v=[-h.x,-h.y];e||(v[r]=u[l]);var y=[0,0],m=[-d.x,-d.y],_=o.pD(t.get("pageButtonGap",!0),t.get("itemGap",!0));if(p){var b=t.get("pageButtonPosition",!0);"end"===b?m[r]+=n[i]-d[i]:y[r]+=d[i]+_}m[1-r]+=h[a]/2-d[a]/2,u.setPosition(v),c.setPosition(y),f.setPosition(m);var x={x:0,y:0};if(x[i]=p?n[i]:h[i],x[a]=Math.max(h[a],d[a]),x[s]=Math.min(0,d[s]+m[1-r]),c.__rectSize=n[i],p){var S={x:0,y:0};S[i]=Math.max(n[i]-d[i]-_,0),S[a]=x[a],c.setClipPath(new g.Z({shape:S})),c.__rectSize=S[i]}else f.eachChild((function(t){t.attr({invisible:!0,silent:!0})}));var k=this._getPageInfo(t);return null!=k.pageIndex&&V.D(u,{x:k.contentPosition[0],y:k.contentPosition[1]},p?t:null),this._updatePageInfoView(t,k),x},e.prototype._pageGo=function(t,e,n){var r=this._getPageInfo(e)[t];null!=r&&n.dispatchAction({type:"legendScroll",scrollDataIndex:r,legendId:e.id})},e.prototype._updatePageInfoView=function(t,e){var n=this._controllerGroup;o.S6(["pagePrev","pageNext"],(function(r){var i=r+"DataIndex",o=null!=e[i],a=n.childOfName(r);a&&(a.setStyle("fill",o?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),a.cursor=o?"pointer":"default")}));var r=n.childOfName("pageText"),i=t.get("pageFormatter"),a=e.pageIndex,s=null!=a?a+1:0,l=e.pageCount;r&&i&&r.setStyle("text",o.HD(i)?i.replace("{current}",null==s?"":s+"").replace("{total}",null==l?"":l+""):i({current:s,total:l}))},e.prototype._getPageInfo=function(t){var e=t.get("scrollDataIndex",!0),n=this.getContentGroup(),r=this._containerGroup.__rectSize,i=t.getOrient().index,o=H[i],a=G[i],s=this._findTargetItemIndex(e),l=n.children(),u=l[s],c=l.length,f=c?1:0,h={contentPosition:[n.x,n.y],pageCount:f,pageIndex:f-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!u)return h;var d=m(u);h.contentPosition[i]=-d.s;for(var p=s+1,v=d,g=d,y=null;p<=c;++p)y=m(l[p]),(!y&&g.e>v.s+r||y&&!_(y,v.s))&&(v=g.i>v.i?g:y,v&&(null==h.pageNextDataIndex&&(h.pageNextDataIndex=v.i),++h.pageCount)),g=y;for(p=s-1,v=d,g=d,y=null;p>=-1;--p)y=m(l[p]),y&&_(g,y.s)||!(v.i=e&&t.s<=e+r}},e.prototype._findTargetItemIndex=function(t){if(!this._showController)return 0;var e,n,r=this.getContentGroup();return r.eachChild((function(r,i){var o=r.__legendDataIndex;null==n&&null!=o&&(n=i),o===t&&(e=i)})),null!=e?e:n},e.type="legend.scroll",e}(L),Y=q;function X(t){t.registerAction("legendScroll","legendscroll",(function(t,e){var n=t.scrollDataIndex;null!=n&&e.eachComponent({mainType:"legend",subType:"scroll",query:t},(function(t){t.setScrollDataIndex(n)}))}))}function $(t){(0,r.D)(F),t.registerComponentModel(U),t.registerComponentView(Y),X(t)}function K(t){(0,r.D)(F),(0,r.D)($)}},8690:function(t,e,n){"use strict";n.d(e,{N:function(){return v}});var r=n(8299),i=n(3051),o=n(9750),a=n(5293),s=n(106),l=n(6006),u=n(6172),c=n(8071),f=n(3166),h=n(8988),d=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.layoutMode={type:"box",ignoreSize:!0},n}return(0,r.ZT)(e,t),e.type="title",e.defaultOption={z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bold",color:"#464646"},subtextStyle:{fontSize:12,color:"#6E7079"}},e}(c.Z),p=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return(0,r.ZT)(e,t),e.prototype.render=function(t,e,n){if(this.group.removeAll(),t.get("show")){var r=this.group,c=t.getModel("textStyle"),f=t.getModel("subtextStyle"),d=t.get("textAlign"),p=i.pD(t.get("textBaseline"),t.get("textVerticalAlign")),v=new o.ZP({style:(0,l.Lr)(c,{text:t.get("text"),fill:c.getTextColor()},{disableBox:!0}),z2:10}),g=v.getBoundingRect(),y=t.get("subtext"),m=new o.ZP({style:(0,l.Lr)(f,{text:y,fill:f.getTextColor(),y:g.height+t.get("itemGap"),verticalAlign:"top"},{disableBox:!0}),z2:10}),_=t.get("link"),b=t.get("sublink"),w=t.get("triggerEvent",!0);v.silent=!_&&!w,m.silent=!b&&!w,_&&v.on("click",(function(){(0,h.MI)(_,"_"+t.get("target"))})),b&&m.on("click",(function(){(0,h.MI)(b,"_"+t.get("subtarget"))})),(0,s.A)(v).eventData=(0,s.A)(m).eventData=w?{componentType:"title",componentIndex:t.componentIndex}:null,r.add(v),y&&r.add(m);var x=r.getBoundingRect(),S=t.getBoxLayoutParams();S.width=x.width,S.height=x.height;var k=(0,u.ME)(S,{width:n.getWidth(),height:n.getHeight()},t.get("padding"));d||(d=t.get("left")||t.get("right"),"middle"===d&&(d="center"),"right"===d?k.x+=k.width:"center"===d&&(k.x+=k.width/2)),p||(p=t.get("top")||t.get("bottom"),"center"===p&&(p="middle"),"bottom"===p?k.y+=k.height:"middle"===p&&(k.y+=k.height/2),p=p||"top"),r.x=k.x,r.y=k.y,r.markRedraw();var C={align:d,verticalAlign:p};v.setStyle(C),m.setStyle(C),x=r.getBoundingRect();var T=k.margin,A=t.getItemStyle(["color","opacity"]);A.fill=t.get("backgroundColor");var I=new a.Z({shape:{x:x.x-T[3],y:x.y-T[0],width:x.width+T[1]+T[3],height:x.height+T[0]+T[2],r:t.get("borderRadius")},style:A,subPixelOptimize:!0,silent:!0});r.add(I)}},e.type="title",e}(f.Z);function v(t){t.registerComponentModel(d),t.registerComponentView(p)}},3703:function(t,e,n){"use strict";n.d(e,{N:function(){return Ve}});var r=n(8299),i=n(2312),o=n(3051);function a(t,e){var n={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{},coordSysMap:{}};return s(n,t,e),n.seriesInvolved&&u(n,t),n}function s(t,e,n){var r=e.getComponent("tooltip"),i=e.getComponent("axisPointer"),a=i.get("link",!0)||[],s=[];(0,o.S6)(n.getCoordinateSystems(),(function(n){if(n.axisPointerEnabled){var u=g(n.model),f=t.coordSysAxesInfo[u]={};t.coordSysMap[u]=n;var h=n.model,d=h.getModel("tooltip",r);if((0,o.S6)(n.getAxes(),(0,o.WA)(_,!1,null)),n.getTooltipAxes&&r&&d.get("show")){var p="axis"===d.get("trigger"),y="cross"===d.get(["axisPointer","type"]),m=n.getTooltipAxes(d.get(["axisPointer","axis"]));(p||y)&&(0,o.S6)(m.baseAxes,(0,o.WA)(_,!y||"cross",p)),y&&(0,o.S6)(m.otherAxes,(0,o.WA)(_,"cross",!1))}}function _(r,o,u){var h=u.model.getModel("axisPointer",i),p=h.get("show");if(p&&("auto"!==p||r||v(h))){null==o&&(o=h.get("triggerTooltip")),h=r?l(u,d,i,e,r,o):h;var y=h.get("snap"),m=g(u.model),_=o||y||"category"===u.type,b=t.axesInfo[m]={key:m,axis:u,coordSys:n,axisPointerModel:h,triggerTooltip:o,involveSeries:_,snap:y,useHandle:v(h),seriesModels:[],linkGroup:null};f[m]=b,t.seriesInvolved=t.seriesInvolved||_;var w=c(a,u);if(null!=w){var x=s[w]||(s[w]={axesInfo:{}});x.axesInfo[m]=b,x.mapper=a[w].mapper,b.linkGroup=x}}}}))}function l(t,e,n,r,a,s){var l=e.getModel("axisPointer"),u=["type","snap","lineStyle","shadowStyle","label","animation","animationDurationUpdate","animationEasingUpdate","z"],c={};(0,o.S6)(u,(function(t){c[t]=(0,o.d9)(l.get(t))})),c.snap="category"!==t.type&&!!s,"cross"===l.get("type")&&(c.type="line");var f=c.label||(c.label={});if(null==f.show&&(f.show=!1),"cross"===a){var h=l.get(["label","show"]);if(f.show=null==h||h,!s){var d=c.lineStyle=l.get("crossStyle");d&&(0,o.ce)(f,d.textStyle)}}return t.model.getModel("axisPointer",new i.Z(c,n,r))}function u(t,e){e.eachSeries((function(e){var n=e.coordinateSystem,r=e.get(["tooltip","trigger"],!0),i=e.get(["tooltip","show"],!0);n&&"none"!==r&&!1!==r&&"item"!==r&&!1!==i&&!1!==e.get(["axisPointer","show"],!0)&&(0,o.S6)(t.coordSysAxesInfo[g(n.model)],(function(t){var r=t.axis;n.getAxis(r.dim)===r&&(t.seriesModels.push(e),null==t.seriesDataCount&&(t.seriesDataCount=0),t.seriesDataCount+=e.getData().count())}))}))}function c(t,e){for(var n=e.model,r=e.dim,i=0;i=0||t===e}function h(t){var e=d(t);if(e){var n=e.axisPointerModel,r=e.axis.scale,i=n.option,o=n.get("status"),a=n.get("value");null!=a&&(a=r.parse(a));var s=v(n);null==o&&(i.status=s?"show":"hide");var l=r.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==a||a>l[1])&&(a=l[1]),aa)return!0;if(o){var s=d(t).seriesDataCount,l=r.getExtent();return Math.abs(l[0]-l[1])/s>a}return!1}return!0===n},t.prototype.makeElOption=function(t,e,n,r,i){},t.prototype.createPointerEl=function(t,e,n,r){var i=e.pointer;if(i){var o=I(t).pointerEl=new w[i.type](M(e.pointer));t.add(o)}},t.prototype.createLabelEl=function(t,e,n,r){if(e.label){var i=I(t).labelEl=new S.ZP(M(e.label));t.add(i),L(i,r)}},t.prototype.updatePointerEl=function(t,e,n){var r=I(t).pointerEl;r&&e.pointer&&(r.setStyle(e.pointer.style),n(r,{shape:e.pointer.shape}))},t.prototype.updateLabelEl=function(t,e,n,r){var i=I(t).labelEl;i&&(i.setStyle(e.label.style),n(i,{x:e.label.x,y:e.label.y}),L(i,r))},t.prototype._renderHandle=function(t){if(!this._dragging&&this.updateHandleTransform){var e,n=this._axisPointerModel,r=this._api.getZr(),i=this._handle,a=n.getModel("handle"),s=n.get("status");if(!a.get("show")||!s||"hide"===s)return i&&r.remove(i),void(this._handle=null);this._handle||(e=!0,i=this._handle=w.createIcon(a.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){C.sT(t.event)},onmousedown:D(this._onHandleDragMove,this,0,0),drift:D(this._onHandleDragMove,this),ondragend:D(this._onHandleDragEnd,this)}),r.add(i)),B(i,n,!1),i.setStyle(a.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var l=a.get("size");o.kJ(l)||(l=[l,l]),i.scaleX=l[0]/2,i.scaleY=l[1]/2,T.T9(this,"_doDispatchAxisPointer",a.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,e)}},t.prototype._moveHandleToValue=function(t,e){E(this._axisPointerModel,!e&&this._moveAnimation,this._handle,R(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},t.prototype._onHandleDragMove=function(t,e){var n=this._handle;if(n){this._dragging=!0;var r=this.updateHandleTransform(R(n),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=r,n.stopAnimation(),n.attr(R(r)),I(n).lastProp=null,this._doDispatchAxisPointer()}},t.prototype._doDispatchAxisPointer=function(){var t=this._handle;if(t){var e=this._payloadInfo,n=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:e.cursorPoint[0],y:e.cursorPoint[1],tooltipOption:e.tooltipOption,axesInfo:[{axisDim:n.axis.dim,axisIndex:n.componentIndex}]})}},t.prototype._onHandleDragEnd=function(){this._dragging=!1;var t=this._handle;if(t){var e=this._axisPointerModel.get("value");this._moveHandleToValue(e),this._api.dispatchAction({type:"hideTip"})}},t.prototype.clear=function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),n=this._group,r=this._handle;e&&n&&(this._lastGraphicKey=null,n&&e.remove(n),r&&e.remove(r),this._group=null,this._handle=null,this._payloadInfo=null),T.ZH(this,"_doDispatchAxisPointer")},t.prototype.doClear=function(){},t.prototype.buildLabel=function(t,e,n){return n=n||0,{x:t[n],y:t[1-n],width:e[n],height:e[1-n]}},t}();function E(t,e,n,r){P(I(n).lastProp,r)||(I(n).lastProp=r,e?k.D(n,r,t):(n.stopAnimation(),n.attr(r)))}function P(t,e){if(o.Kn(t)&&o.Kn(e)){var n=!0;return o.S6(e,(function(e,r){n=n&&P(t[r],e)})),!!n}return t===e}function L(t,e){t[e.get(["label","show"])?"show":"hide"]()}function R(t){return{x:t.x||0,y:t.y||0,rotation:t.rotation||0}}function B(t,e,n){var r=e.get("z"),i=e.get("zlevel");t&&t.traverse((function(t){"group"!==t.type&&(null!=r&&(t.z=r),null!=i&&(t.zlevel=i),t.silent=n)}))}var Z=O,F=n(423),z=n(8988),N=n(2892);function W(t,e){return"category"===t.type?t.scale.getLabel(e):e.value}function U(t){var e=t.get("interval");return null==e?"auto":e}function V(t){return"category"===t.type&&0===U(t.getLabelModel())}var j=n(2095),H=n(106),G=n(6006),q=n(5669),Y=n(1525),X=n(5280),$=n(4162),K=Math.PI,J=function(){function t(t,e){this.group=new x.Z,this.opt=e,this.axisModel=t,(0,o.ce)(e,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0,handleAutoShown:function(){return!0}});var n=new x.Z({x:e.position[0],y:e.position[1],rotation:e.rotation});n.updateTransform(),this._transformGroup=n}return t.prototype.hasBuilder=function(t){return!!Q[t]},t.prototype.add=function(t){Q[t](this.opt,this.axisModel,this.group,this._transformGroup)},t.prototype.getGroup=function(){return this.group},t.innerTextLayout=function(t,e,n){var r,i,o=(0,q.wW)(e-t);return(0,q.mW)(o)?(i=n>0?"top":"bottom",r="center"):(0,q.mW)(o-K)?(i=n>0?"bottom":"top",r="center"):(i="middle",r=o>0&&o0?"right":"left":n>0?"left":"right"),{rotation:o,textAlign:r,textVerticalAlign:i}},t.makeAxisEventDataBase=function(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e},t.isLabelSilent=function(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)},t}(),Q={axisLine:function(t,e,n,r){var i=e.get(["axisLine","show"]);if("auto"===i&&t.handleAutoShown&&(i=t.handleAutoShown("axisLine")),i){var a=e.axis.getExtent(),s=r.transform,l=[a[0],0],u=[a[1],0];s&&((0,X.Ne)(l,l,s),(0,X.Ne)(u,u,s));var c=(0,o.l7)({lineCap:"round"},e.getModel(["axisLine","lineStyle"]).getLineStyle()),f=new j.Z({subPixelOptimize:!0,shape:{x1:l[0],y1:l[1],x2:u[0],y2:u[1]},style:c,strokeContainThreshold:t.strokeContainThreshold||5,silent:!0,z2:1});f.anid="line",n.add(f);var h=e.get(["axisLine","symbol"]);if(null!=h){var d=e.get(["axisLine","symbolSize"]);(0,o.HD)(h)&&(h=[h,h]),((0,o.HD)(d)||(0,o.hj)(d))&&(d=[d,d]);var p=(0,Y.Cq)(e.get(["axisLine","symbolOffset"])||0,d),v=d[0],g=d[1];(0,o.S6)([{rotate:t.rotation+Math.PI/2,offset:p[0],r:0},{rotate:t.rotation-Math.PI/2,offset:p[1],r:Math.sqrt((l[0]-u[0])*(l[0]-u[0])+(l[1]-u[1])*(l[1]-u[1]))}],(function(e,r){if("none"!==h[r]&&null!=h[r]){var i=(0,Y.th)(h[r],-v/2,-g/2,v,g,c.stroke,!0),o=e.r+e.offset;i.attr({rotation:e.rotate,x:l[0]+o*Math.cos(t.rotation),y:l[1]-o*Math.sin(t.rotation),silent:!0,z2:11}),n.add(i)}}))}}},axisTickLabel:function(t,e,n,r){var i=at(n,r,e,t),a=lt(n,r,e,t);if(et(e,a,i),st(n,r,e,t.tickDirection),e.get(["axisLabel","hideOverlap"])){var s=(0,$.VT)((0,o.UI)(a,(function(t){return{label:t,priority:t.z2,defaultAttr:{ignore:t.ignore}}})));(0,$.yl)(s)}},axisName:function(t,e,n,r){var i=(0,o.Jv)(t.axisName,e.get("name"));if(i){var a,s,l=e.get("nameLocation"),u=t.nameDirection,c=e.getModel("nameTextStyle"),f=e.get("nameGap")||0,h=e.axis.getExtent(),d=h[0]>h[1]?-1:1,p=["start"===l?h[0]-d*f:"end"===l?h[1]+d*f:(h[0]+h[1])/2,it(l)?t.labelOffset+u*f:0],v=e.get("nameRotate");null!=v&&(v=v*K/180),it(l)?a=J.innerTextLayout(t.rotation,null!=v?v:t.rotation,u):(a=tt(t.rotation,l,v||0,h),s=t.axisNameAvailableWidth,null!=s&&(s=Math.abs(s/Math.sin(a.rotation)),!isFinite(s)&&(s=null)));var g=c.getFont(),y=e.get("nameTruncate",!0)||{},m=y.ellipsis,_=(0,o.Jv)(t.nameTruncateMaxWidth,y.maxWidth,s),b=new S.ZP({x:p[0],y:p[1],rotation:a.rotation,silent:J.isLabelSilent(e),style:(0,G.Lr)(c,{text:i,font:g,overflow:"truncate",width:_,ellipsis:m,fill:c.getTextColor()||e.get(["axisLine","lineStyle","color"]),align:c.get("align")||a.textAlign,verticalAlign:c.get("verticalAlign")||a.textVerticalAlign}),z2:1});if(w.setTooltipConfig({el:b,componentModel:e,itemName:i}),b.__fullText=i,b.anid="name",e.get("triggerEvent")){var x=J.makeAxisEventDataBase(e);x.targetType="axisName",x.name=i,(0,H.A)(b).eventData=x}r.add(b),b.updateTransform(),n.add(b),b.decomposeTransform()}}};function tt(t,e,n,r){var i,o,a=(0,q.wW)(n-t),s=r[0]>r[1],l="start"===e&&!s||"start"!==e&&s;return(0,q.mW)(a-K/2)?(o=l?"bottom":"top",i="center"):(0,q.mW)(a-1.5*K)?(o=l?"top":"bottom",i="center"):(o="middle",i=a<1.5*K&&a>K/2?l?"left":"right":l?"right":"left"),{rotation:a,textAlign:i,textVerticalAlign:o}}function et(t,e,n){if(!V(t.axis)){var r=t.get(["axisLabel","showMinLabel"]),i=t.get(["axisLabel","showMaxLabel"]);e=e||[],n=n||[];var o=e[0],a=e[1],s=e[e.length-1],l=e[e.length-2],u=n[0],c=n[1],f=n[n.length-1],h=n[n.length-2];!1===r?(nt(o),nt(u)):rt(o,a)&&(r?(nt(a),nt(c)):(nt(o),nt(u))),!1===i?(nt(s),nt(f)):rt(l,s)&&(i?(nt(l),nt(h)):(nt(s),nt(f)))}}function nt(t){t&&(t.ignore=!0)}function rt(t,e){var n=t&&t.getBoundingRect().clone(),r=e&&e.getBoundingRect().clone();if(n&&r){var i=N.yR([]);return N.U1(i,i,-t.rotation),n.applyTransform(N.dC([],i,t.getLocalTransform())),r.applyTransform(N.dC([],i,e.getLocalTransform())),n.intersect(r)}}function it(t){return"middle"===t||"center"===t}function ot(t,e,n,r,i){for(var o=[],a=[],s=[],l=0;l=0)&&n({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})}))},e.prototype.remove=function(t,e){Bt("axisPointer",e)},e.prototype.dispose=function(t,e){Bt("axisPointer",e)},e.type="axisPointer",e}(y.Z),Ft=Zt;function zt(t,e){var n,r=[],i=t.seriesIndex;if(null==i||!(n=e.getSeriesByIndex(i)))return{point:[]};var a=n.getData(),s=A.gO(a,t);if(null==s||s<0||o.kJ(s))return{point:[]};var l=a.getItemGraphicEl(s),u=n.coordinateSystem;if(n.getTooltipPosition)r=n.getTooltipPosition(s)||[];else if(u&&u.dataToPoint)if(t.isStacked){var c=u.getBaseAxis(),f=u.getOtherAxis(c),h=f.dim,d=c.dim,p="x"===h||"radius"===h?1:0,v=a.mapDimension(d),g=[];g[p]=a.get(v,s),g[1-p]=a.get(a.getCalculationInfo("stackResultDimension"),s),r=u.dataToPoint(g)||[]}else r=u.dataToPoint(a.getValues(o.UI(u.dimensions,(function(t){return a.mapDimension(t)})),s))||[];else if(l){var y=l.getBoundingRect().clone();y.applyTransform(l.transform),r=[y.x+y.width/2,y.y+y.height/2]}return{point:r,el:l}}var Nt=(0,A.Yf)();function Wt(t,e,n){var r=t.currTrigger,i=[t.x,t.y],a=t,s=t.dispatchAction||(0,o.ak)(n.dispatchAction,n),l=e.getComponent("axisPointer").coordSysAxesInfo;if(l){Kt(i)&&(i=zt({seriesIndex:a.seriesIndex,dataIndex:a.dataIndex},e).point);var u=Kt(i),c=a.axesInfo,f=l.axesInfo,h="leave"===r||Kt(i),d={},p={},v={list:[],map:{}},g={showPointer:(0,o.WA)(jt,p),showTooltip:(0,o.WA)(Ht,v)};(0,o.S6)(l.coordSysMap,(function(t,e){var n=u||t.containPoint(i);(0,o.S6)(l.coordSysAxesInfo[e],(function(t,e){var r=t.axis,o=Xt(c,t);if(!h&&n&&(!c||o)){var a=o&&o.value;null!=a||u||(a=r.pointToData(i)),null!=a&&Ut(t,a,g,!1,d)}}))}));var y={};return(0,o.S6)(f,(function(t,e){var n=t.linkGroup;n&&!p[e]&&(0,o.S6)(n.axesInfo,(function(e,r){var i=p[r];if(e!==t&&i){var o=i.value;n.mapper&&(o=t.axis.scale.parse(n.mapper(o,$t(e),$t(t)))),y[t.key]=o}}))})),(0,o.S6)(y,(function(t,e){Ut(f[e],t,g,!0,d)})),Gt(p,f,d),qt(v,i,t,s),Yt(f,s,n),d}}function Ut(t,e,n,r,i){var a=t.axis;if(!a.scale.isBlank()&&a.containData(e))if(t.involveSeries){var s=Vt(e,t),l=s.payloadBatch,u=s.snapToValue;l[0]&&null==i.seriesIndex&&(0,o.l7)(i,l[0]),!r&&t.snap&&a.containData(u)&&null!=u&&(e=u),n.showPointer(t,e,l),n.showTooltip(t,s,u)}else n.showPointer(t,e)}function Vt(t,e){var n=e.axis,r=n.dim,i=t,a=[],s=Number.MAX_VALUE,l=-1;return(0,o.S6)(e.seriesModels,(function(e,u){var c,f,h=e.getData().mapDimensionsAll(r);if(e.getAxisTooltipData){var d=e.getAxisTooltipData(h,t,n);f=d.dataIndices,c=d.nestestValue}else{if(f=e.getData().indicesOfNearest(h[0],t,"category"===n.type?.5:null),!f.length)return;c=e.getData().get(h[0],f[0])}if(null!=c&&isFinite(c)){var p=t-c,v=Math.abs(p);v<=s&&((v=0&&l<0)&&(s=v,l=p,i=c,a.length=0),(0,o.S6)(f,(function(t){a.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})})))}})),{payloadBatch:a,snapToValue:i}}function jt(t,e,n,r){t[e.key]={value:n,payloadBatch:r}}function Ht(t,e,n,r){var i=n.payloadBatch,o=e.axis,a=o.model,s=e.axisPointerModel;if(e.triggerTooltip&&i.length){var l=e.coordSys.model,u=g(l),c=t.map[u];c||(c=t.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(c)),c.dataByAxis.push({axisDim:o.dim,axisIndex:a.componentIndex,axisType:a.type,axisId:a.id,value:r,valueLabelOpt:{precision:s.get(["label","precision"]),formatter:s.get(["label","formatter"])},seriesDataIndices:i.slice()})}}function Gt(t,e,n){var r=n.axesInfo=[];(0,o.S6)(e,(function(e,n){var i=e.axisPointerModel.option,o=t[n];o?(!e.useHandle&&(i.status="show"),i.value=o.value,i.seriesDataIndices=(o.payloadBatch||[]).slice()):!e.useHandle&&(i.status="hide"),"show"===i.status&&r.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:i.value})}))}function qt(t,e,n,r){if(!Kt(e)&&t.list.length){var i=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};r({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:n.tooltipOption,position:n.position,dataIndexInside:i.dataIndexInside,dataIndex:i.dataIndex,seriesIndex:i.seriesIndex,dataByCoordSys:t.list})}else r({type:"hideTip"})}function Yt(t,e,n){var r=n.getZr(),i="axisPointerLastHighlights",a=Nt(r)[i]||{},s=Nt(r)[i]={};(0,o.S6)(t,(function(t,e){var n=t.axisPointerModel.option;"show"===n.status&&(0,o.S6)(n.seriesDataIndices,(function(t){var e=t.seriesIndex+" | "+t.dataIndex;s[e]=t}))}));var l=[],u=[];(0,o.S6)(a,(function(t,e){!s[e]&&u.push(t)})),(0,o.S6)(s,(function(t,e){!a[e]&&l.push(t)})),u.length&&n.dispatchAction({type:"downplay",escapeConnect:!0,notBlur:!0,batch:u}),l.length&&n.dispatchAction({type:"highlight",escapeConnect:!0,notBlur:!0,batch:l})}function Xt(t,e){for(var n=0;n<(t||[]).length;n++){var r=t[n];if(e.axis.dim===r.axisDim&&e.axis.model.componentIndex===r.axisIndex)return r}}function $t(t){var e=t.axis.model,n={},r=n.axisDim=t.axis.dim;return n.axisIndex=n[r+"AxisIndex"]=e.componentIndex,n.axisName=n[r+"AxisName"]=e.name,n.axisId=n[r+"AxisId"]=e.id,n}function Kt(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}function Jt(t){b.registerAxisPointerClass("CartesianAxisPointer",St),t.registerComponentModel(Tt),t.registerComponentView(Ft),t.registerPreprocessor((function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!(0,o.kJ)(e)&&(t.axisPointer.link=[e])}})),t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC,(function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=a(t,e)})),t.registerAction({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},Wt)}var Qt=n(8023),te=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return(0,r.ZT)(e,t),e.type="tooltip",e.dependencies=["axisPointer"],e.defaultOption={z:60,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",renderMode:"auto",confine:null,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"#fff",shadowBlur:10,shadowColor:"rgba(0, 0, 0, .2)",shadowOffsetX:1,shadowOffsetY:2,borderRadius:4,borderWidth:1,padding:null,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#666",fontSize:14}},e}(kt.Z),ee=te,ne=n(4602);function re(t){var e=t.get("confine");return null!=e?!!e:"richText"===t.get("renderMode")}function ie(t){if(At.Z.domSupported)for(var e=document.documentElement.style,n=0,r=t.length;n-1?(u+="top:50%",c+="translateY(-50%) rotate("+(a="left"===s?-225:-45)+"deg)"):(u+="left:50%",c+="translateX(-50%) rotate("+(a="top"===s?225:45)+"deg)");var f=a*Math.PI/180,h=l+i,d=h*Math.abs(Math.cos(f))+h*Math.abs(Math.sin(f)),p=Math.round(100*((d-Math.SQRT2*i)/2+Math.SQRT2*i-(d-h)/2))/100;u+=";"+s+":-"+p+"px";var v=e+" solid "+i+"px;",g=["position:absolute;width:"+l+"px;height:"+l+"px;",u+";"+c+";","border-bottom:"+v,"border-right:"+v,"background-color:"+r+";"];return'
'}function ve(t,e){var n="cubic-bezier(0.23,1,0.32,1)",r=" "+t/2+"s "+n,i="opacity"+r+",visibility"+r;return e||(r=" "+t+"s "+n,i+=At.Z.transformSupported?","+fe+r:",left"+r+",top"+r),ce+":"+i}function ge(t,e,n){var r=t.toFixed(0)+"px",i=e.toFixed(0)+"px";if(!At.Z.transformSupported)return n?"top:"+i+";left:"+r+";":[["top",i],["left",r]];var o=At.Z.transform3dSupported,a="translate"+(o?"3d":"")+"("+r+","+i+(o?",0":"")+")";return n?"top:0;left:0;"+fe+":"+a+";":[["top",0],["left",0],[oe,a]]}function ye(t){var e=[],n=t.get("fontSize"),r=t.getTextColor();r&&e.push("color:"+r),e.push("font:"+t.getFont()),n&&e.push("line-height:"+Math.round(3*n/2)+"px");var i=t.get("textShadowColor"),a=t.get("textShadowBlur")||0,s=t.get("textShadowOffsetX")||0,l=t.get("textShadowOffsetY")||0;return i&&a&&e.push("text-shadow:"+s+"px "+l+"px "+a+"px "+i),(0,o.S6)(["decoration","align"],(function(n){var r=t.get(n);r&&e.push("text-"+n+":"+r)})),e.join(";")}function me(t,e,n){var r=[],i=t.get("transitionDuration"),a=t.get("backgroundColor"),s=t.get("shadowBlur"),l=t.get("shadowColor"),u=t.get("shadowOffsetX"),c=t.get("shadowOffsetY"),f=t.getModel("textStyle"),h=(0,ue.d_)(t,"html"),d=u+"px "+c+"px "+s+"px "+l;return r.push("box-shadow:"+d),e&&i&&r.push(ve(i,n)),a&&r.push("background-color:"+a),(0,o.S6)(["width","color","radius"],(function(e){var n="border-"+e,i=(0,z.zW)(n),o=t.get(i);null!=o&&r.push(n+":"+o+("color"===e?"":"px"))})),r.push(ye(f)),null!=h&&r.push("padding:"+(0,z.MY)(h).join("px ")+"px"),r.join(";")+";"}function _e(t,e,n,r,i){var o=e&&e.painter;if(n){var a=o&&o.getViewportRoot();a&&(0,ne.YB)(t,a,document.body,r,i)}else{t[0]=r,t[1]=i;var s=o&&o.getViewportRootOffset();s&&(t[0]+=s.offsetLeft,t[1]+=s.offsetTop)}t[2]=t[0]/e.getWidth(),t[3]=t[1]/e.getHeight()}var be=function(){function t(t,e,n){if(this._show=!1,this._styleCoord=[0,0,0,0],this._enterable=!0,this._firstShow=!0,this._longHide=!0,At.Z.wxa)return null;var r=document.createElement("div");r.domBelongToZr=!0,this.el=r;var i=this._zr=e.getZr(),o=this._appendToBody=n&&n.appendToBody;_e(this._styleCoord,i,o,e.getWidth()/2,e.getHeight()/2),o?document.body.appendChild(r):t.appendChild(r),this._container=t;var a=this;r.onmouseenter=function(){a._enterable&&(clearTimeout(a._hideTimeout),a._show=!0),a._inContent=!0},r.onmousemove=function(t){if(t=t||window.event,!a._enterable){var e=i.handler,n=i.painter.getViewportRoot();(0,C.OD)(n,t,!0),e.dispatch("mousemove",t)}},r.onmouseleave=function(){a._inContent=!1,a._enterable&&a._show&&a.hideLater(a._hideDelay)}}return t.prototype.update=function(t){var e=this._container,n=le(e,"position"),r=e.style;"absolute"!==r.position&&"absolute"!==n&&(r.position="relative");var i=t.get("alwaysShowContent");i&&this._moveIfResized(),this.el.className=t.get("className")||""},t.prototype.show=function(t,e){clearTimeout(this._hideTimeout),clearTimeout(this._longHideTimeout);var n=this.el,r=n.style,i=this._styleCoord;n.innerHTML?r.cssText=he+me(t,!this._firstShow,this._longHide)+ge(i[0],i[1],!0)+"border-color:"+(0,z.Lz)(e)+";"+(t.get("extraCssText")||"")+";pointer-events:"+(this._enterable?"auto":"none"):r.display="none",this._show=!0,this._firstShow=!1,this._longHide=!1},t.prototype.setContent=function(t,e,n,r,i){var a=this.el;if(null!=t){var s="";if((0,o.HD)(i)&&"item"===n.get("trigger")&&!re(n)&&(s=pe(n,r,i)),(0,o.HD)(t))a.innerHTML=t+s;else if(t){a.innerHTML="",(0,o.kJ)(t)||(t=[t]);for(var l=0;l=0?this._tryShow(n,r):"leave"===t&&this._hide(r))}),this))},e.prototype._keepShow=function(){var t=this._tooltipModel,e=this._ecModel,n=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var r=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout((function(){!n.isDisposed()&&r.manuallyShowTip(t,e,n,{x:r._lastX,y:r._lastY,dataByCoordSys:r._lastDataByCoordSys})}))}},e.prototype.manuallyShowTip=function(t,e,n,r){if(r.from!==this.uid&&!At.Z.node&&n.getDom()){var i=Be(r,n);this._ticket="";var o=r.dataByCoordSys,a=We(r,e,n);if(a){var s=a.el.getBoundingRect().clone();s.applyTransform(a.el.transform),this._tryShow({offsetX:s.x+s.width/2,offsetY:s.y+s.height/2,target:a.el,position:r.position,positionDefault:"bottom"},i)}else if(r.tooltip&&null!=r.x&&null!=r.y){var l=Pe;l.x=r.x,l.y=r.y,l.update(),(0,H.A)(l).tooltipConfig={name:null,option:r.tooltip},this._tryShow({offsetX:r.x,offsetY:r.y,target:l},i)}else if(o)this._tryShow({offsetX:r.x,offsetY:r.y,position:r.position,dataByCoordSys:o,tooltipOption:r.tooltipOption},i);else if(null!=r.seriesIndex){if(this._manuallyAxisShowTip(t,e,n,r))return;var u=zt(r,e),c=u.point[0],f=u.point[1];null!=c&&null!=f&&this._tryShow({offsetX:c,offsetY:f,target:u.el,position:r.position,positionDefault:"bottom"},i)}else null!=r.x&&null!=r.y&&(n.dispatchAction({type:"updateAxisPointer",x:r.x,y:r.y}),this._tryShow({offsetX:r.x,offsetY:r.y,position:r.position,target:n.getZr().findHover(r.x,r.y).target},i))}},e.prototype.manuallyHideTip=function(t,e,n,r){var i=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&i.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=this._lastDataByCoordSys=null,r.from!==this.uid&&this._hide(Be(r,n))},e.prototype._manuallyAxisShowTip=function(t,e,n,r){var i=r.seriesIndex,o=r.dataIndex,a=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=i&&null!=o&&null!=a){var s=e.getSeriesByIndex(i);if(s){var l=s.getData(),u=Re([l.getItemModel(o),s,(s.coordinateSystem||{}).model],this._tooltipModel);if("axis"===u.get("trigger"))return n.dispatchAction({type:"updateAxisPointer",seriesIndex:i,dataIndex:o,position:r.position}),!0}}},e.prototype._tryShow=function(t,e){var n=t.target,r=this._tooltipModel;if(r){this._lastX=t.offsetX,this._lastY=t.offsetY;var i=t.dataByCoordSys;if(i&&i.length)this._showAxisTooltip(i,t);else if(n){var o,a;this._lastDataByCoordSys=null,(0,Ee.o)(n,(function(t){return null!=(0,H.A)(t).dataIndex?(o=t,!0):null!=(0,H.A)(t).tooltipConfig?(a=t,!0):void 0}),!0),o?this._showSeriesItemTooltip(t,o,e):a?this._showComponentItemTooltip(t,a,e):this._hide(e)}else this._lastDataByCoordSys=null,this._hide(e)}},e.prototype._showOrMove=function(t,e){var n=t.get("showDelay");e=(0,o.ak)(e,this),clearTimeout(this._showTimout),n>0?this._showTimout=setTimeout(e,n):e()},e.prototype._showAxisTooltip=function(t,e){var n=this._ecModel,r=this._tooltipModel,i=[e.offsetX,e.offsetY],a=Re([e.tooltipOption],r),s=this._renderMode,l=[],u=(0,ue.TX)("section",{blocks:[],noHeader:!0}),c=[],f=new ue.iv;(0,o.S6)(t,(function(t){(0,o.S6)(t.dataByAxis,(function(t){var e=n.getComponent(t.axisDim+"Axis",t.axisIndex),i=t.value;if(e&&null!=i){var a=dt(i,e.axis,n,t.seriesDataIndices,t.valueLabelOpt),h=(0,ue.TX)("section",{header:a,noHeader:!(0,o.fy)(a),sortBlocks:!0,blocks:[]});u.blocks.push(h),(0,o.S6)(t.seriesDataIndices,(function(u){var d=n.getSeriesByIndex(u.seriesIndex),p=u.dataIndexInside,v=d.getDataParams(p);if(!(v.dataIndex<0)){v.axisDim=t.axisDim,v.axisIndex=t.axisIndex,v.axisType=t.axisType,v.axisId=t.axisId,v.axisValue=W(e.axis,{value:i}),v.axisValueLabel=a,v.marker=f.makeTooltipMarker("item",(0,z.Lz)(v.color),s);var g=(0,Oe.f)(d.formatTooltip(p,!0,null)),y=g.frag;if(y){var m=Re([d],r).get("valueFormatter");h.blocks.push(m?(0,o.l7)({valueFormatter:m},y):y)}g.text&&c.push(g.text),l.push(v)}}))}}))})),u.blocks.reverse(),c.reverse();var h=e.position,d=a.get("order"),p=(0,ue.BY)(u,f,s,d,n.get("useUTC"),a.get("textStyle"));p&&c.unshift(p);var v="richText"===s?"\n\n":"
",g=c.join(v);this._showOrMove(a,(function(){this._updateContentNotChangedOnAxis(t,l)?this._updatePosition(a,h,i[0],i[1],this._tooltipContent,l):this._showTooltipContent(a,g,l,Math.random()+"",i[0],i[1],h,null,f)}))},e.prototype._showSeriesItemTooltip=function(t,e,n){var r=this._ecModel,i=(0,H.A)(e),a=i.seriesIndex,s=r.getSeriesByIndex(a),l=i.dataModel||s,u=i.dataIndex,c=i.dataType,f=l.getData(c),h=this._renderMode,d=t.positionDefault,p=Re([f.getItemModel(u),l,s&&(s.coordinateSystem||{}).model],this._tooltipModel,d?{position:d}:null),v=p.get("trigger");if(null==v||"item"===v){var g=l.getDataParams(u,c),y=new ue.iv;g.marker=y.makeTooltipMarker("item",(0,z.Lz)(g.color),h);var m=(0,Oe.f)(l.formatTooltip(u,!1,c)),_=p.get("order"),b=p.get("valueFormatter"),w=m.frag,x=w?(0,ue.BY)(b?(0,o.l7)({valueFormatter:b},w):w,y,h,_,r.get("useUTC"),p.get("textStyle")):m.text,S="item_"+l.name+"_"+u;this._showOrMove(p,(function(){this._showTooltipContent(p,x,g,S,t.offsetX,t.offsetY,t.position,t.target,y)})),n({type:"showTip",dataIndexInside:u,dataIndex:f.getRawIndex(u),seriesIndex:a,from:this.uid})}},e.prototype._showComponentItemTooltip=function(t,e,n){var r=(0,H.A)(e),i=r.tooltipConfig,a=i.option||{};if((0,o.HD)(a)){var s=a;a={content:s,formatter:s}}var l=[a],u=this._ecModel.getComponent(r.componentMainType,r.componentIndex);u&&l.push(u),l.push({formatter:a.content});var c=t.positionDefault,f=Re(l,this._tooltipModel,c?{position:c}:null),h=f.get("content"),d=Math.random()+"",p=new ue.iv;this._showOrMove(f,(function(){var n=(0,o.d9)(f.get("formatterParams")||{});this._showTooltipContent(f,h,n,d,t.offsetX,t.offsetY,t.position,e,p)})),n({type:"showTip",from:this.uid})},e.prototype._showTooltipContent=function(t,e,n,r,i,a,s,l,u){if(this._ticket="",t.get("showContent")&&t.get("show")){var c=this._tooltipContent,f=t.get("formatter");s=s||t.get("position");var h=e,d=this._getNearestPoint([i,a],n,t.get("trigger"),t.get("borderColor")),p=d.color;if(f)if((0,o.HD)(f)){var v=t.ecModel.get("useUTC"),g=(0,o.kJ)(n)?n[0]:n,y=g&&g.axisType&&g.axisType.indexOf("time")>=0;h=f,y&&(h=(0,De.WU)(g.axisValue,h,v)),h=(0,z.kF)(h,n,!0)}else if((0,o.mf)(f)){var m=(0,o.ak)((function(e,r){e===this._ticket&&(c.setContent(r,u,t,p,s),this._updatePosition(t,s,i,a,c,n,l))}),this);this._ticket=r,h=f(n,r,m)}else h=f;c.setContent(h,u,t,p,s),c.show(t,p),this._updatePosition(t,s,i,a,c,n,l)}},e.prototype._getNearestPoint=function(t,e,n,r){return"axis"===n||(0,o.kJ)(e)?{color:r||("html"===this._renderMode?"#fff":"none")}:(0,o.kJ)(e)?void 0:{color:r||e.color||e.borderColor}},e.prototype._updatePosition=function(t,e,n,r,i,a,s){var l=this._api.getWidth(),u=this._api.getHeight();e=e||t.get("position");var c=i.getSize(),f=t.get("align"),h=t.get("verticalAlign"),d=s&&s.getBoundingRect().clone();if(s&&d.applyTransform(s.transform),(0,o.mf)(e)&&(e=e([n,r],a,i.el,d,{viewSize:[l,u],contentSize:c.slice()})),(0,o.kJ)(e))n=(0,q.GM)(e[0],l),r=(0,q.GM)(e[1],u);else if((0,o.Kn)(e)){var p=e;p.width=c[0],p.height=c[1];var v=(0,Me.ME)(p,{width:l,height:u});n=v.x,r=v.y,f=null,h=null}else if((0,o.HD)(e)&&s){var g=ze(e,d,c,t.get("borderWidth"));n=g[0],r=g[1]}else{g=Ze(n,r,i,l,u,f?null:20,h?null:20);n=g[0],r=g[1]}if(f&&(n-=Ne(f)?c[0]/2:"right"===f?c[0]:0),h&&(r-=Ne(h)?c[1]/2:"bottom"===h?c[1]:0),re(t)){g=Fe(n,r,i,l,u);n=g[0],r=g[1]}i.moveTo(n,r)},e.prototype._updateContentNotChangedOnAxis=function(t,e){var n=this._lastDataByCoordSys,r=this._cbParamsList,i=!!n&&n.length===t.length;return i&&(0,o.S6)(n,(function(n,a){var s=n.dataByAxis||[],l=t[a]||{},u=l.dataByAxis||[];i=i&&s.length===u.length,i&&(0,o.S6)(s,(function(t,n){var a=u[n]||{},s=t.seriesDataIndices||[],l=a.seriesDataIndices||[];i=i&&t.value===a.value&&t.axisType===a.axisType&&t.axisId===a.axisId&&s.length===l.length,i&&(0,o.S6)(s,(function(t,e){var n=l[e];i=i&&t.seriesIndex===n.seriesIndex&&t.dataIndex===n.dataIndex})),r&&(0,o.S6)(t.seriesDataIndices,(function(t){var n=t.seriesIndex,o=e[n],a=r[n];o&&a&&a.data!==o.data&&(i=!1)}))}))})),this._lastDataByCoordSys=t,this._cbParamsList=e,!!i},e.prototype._hide=function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},e.prototype.dispose=function(t,e){!At.Z.node&&e.getDom()&&((0,T.ZH)(this,"_updatePosition"),this._tooltipContent.dispose(),Bt("itemTooltip",e))},e.type="tooltip",e}(y.Z);function Re(t,e,n){var r,a=e.ecModel;n?(r=new i.Z(n,a,a),r=new i.Z(e.option,r,a)):r=e;for(var s=t.length-1;s>=0;s--){var l=t[s];l&&(l instanceof i.Z&&(l=l.get("tooltip",!0)),(0,o.HD)(l)&&(l={formatter:l}),l&&(r=new i.Z(l,r,a)))}return r}function Be(t,e){return t.dispatchAction||(0,o.ak)(e.dispatchAction,e)}function Ze(t,e,n,r,i,o,a){var s=n.getSize(),l=s[0],u=s[1];return null!=o&&(t+l+o+2>r?t-=l+o:t+=o),null!=a&&(e+u+a>i?e-=u+a:e+=a),[t,e]}function Fe(t,e,n,r,i){var o=n.getSize(),a=o[0],s=o[1];return t=Math.min(t+a,r)-a,e=Math.min(e+s,i)-s,t=Math.max(t,0),e=Math.max(e,0),[t,e]}function ze(t,e,n,r){var i=n[0],o=n[1],a=Math.ceil(Math.SQRT2*r)+8,s=0,l=0,u=e.width,c=e.height;switch(t){case"inside":s=e.x+u/2-i/2,l=e.y+c/2-o/2;break;case"top":s=e.x+u/2-i/2,l=e.y-o-a;break;case"bottom":s=e.x+u/2-i/2,l=e.y+c+a;break;case"left":s=e.x-i-a,l=e.y+c/2-o/2;break;case"right":s=e.x+u+a,l=e.y+c/2-o/2}return[s,l]}function Ne(t){return"center"===t||"middle"===t}function We(t,e,n){var r=(0,A.zH)(t).queryOptionMap,i=r.keys()[0];if(i&&"series"!==i){var o=(0,A.HZ)(e,i,r.get(i),{useDefault:!1,enableAll:!1,enableNone:!1}),a=o.models[0];if(a){var s,l=n.getViewOfComponentModel(a);return l.group.traverse((function(e){var n=(0,H.A)(e).tooltipConfig;if(n&&n.name===t.name)return s=e,!0})),s?{componentMainType:i,componentIndex:a.componentIndex,el:s}:void 0}}}var Ue=Le;function Ve(t){(0,Qt.D)(Jt),t.registerComponentModel(ee),t.registerComponentView(Ue),t.registerAction({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},o.ZT),t.registerAction({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},o.ZT)}},5685:function(t,e,n){"use strict";n.d(e,{BY:function(){return y},TX:function(){return f},d_:function(){return C},iv:function(){return T},jT:function(){return k}});var r=n(8988),i=n(3051),o=n(8407),a=n(5669),s="line-height:1";function l(t,e){var n=t.color||"#6e7079",i=t.fontSize||12,o=t.fontWeight||"400",a=t.color||"#464646",s=t.fontSize||14,l=t.fontWeight||"900";return"html"===e?{nameStyle:"font-size:"+(0,r.F1)(i+"")+"px;color:"+(0,r.F1)(n)+";font-weight:"+(0,r.F1)(o+""),valueStyle:"font-size:"+(0,r.F1)(s+"")+"px;color:"+(0,r.F1)(a)+";font-weight:"+(0,r.F1)(l+"")}:{nameStyle:{fontSize:i,fill:n,fontWeight:o},valueStyle:{fontSize:s,fill:a,fontWeight:l}}}var u=[0,10,20,30],c=["","\n","\n\n","\n\n\n"];function f(t,e){return e.type=t,e}function h(t){return"section"===t.type}function d(t){return h(t)?v:g}function p(t){if(h(t)){var e=0,n=t.blocks.length,r=n>1||n>0&&!t.noHeader;return(0,i.S6)(t.blocks,(function(t){var n=p(t);n>=e&&(e=n+ +(r&&(!n||h(t)&&!t.noHeader)))})),e}return 0}function v(t,e,n,a){var u=e.noHeader,c=m(p(e)),f=[],h=e.blocks||[];(0,i.hu)(!h||(0,i.kJ)(h)),h=h||[];var v=t.orderMode;if(e.sortBlocks&&v){h=h.slice();var g={valueAsc:"asc",valueDesc:"desc"};if((0,i.RI)(g,v)){var y=new o.ID(g[v],null);h.sort((function(t,e){return y.evaluate(t.sortParam,e.sortParam)}))}else"seriesDesc"===v&&h.reverse()}(0,i.S6)(h,(function(n,r){var o=e.valueFormatter,s=d(n)(o?(0,i.l7)((0,i.l7)({},t),{valueFormatter:o}):t,n,r>0?c.html:0,a);null!=s&&f.push(s)}));var b="richText"===t.renderMode?f.join(c.richText):_(f.join(""),u?n:c.html);if(u)return b;var w=(0,r.uX)(e.header,"ordinal",t.useUTC),S=l(a,t.renderMode).nameStyle;return"richText"===t.renderMode?x(t,w,S)+c.richText+b:_('
'+(0,r.F1)(w)+"
"+b,n)}function g(t,e,n,o){var a=t.renderMode,s=e.noName,u=e.noValue,c=!e.markerType,f=e.name,h=t.useUTC,d=e.valueFormatter||t.valueFormatter||function(t){return t=(0,i.kJ)(t)?t:[t],(0,i.UI)(t,(function(t,e){return(0,r.uX)(t,(0,i.kJ)(g)?g[e]:g,h)}))};if(!s||!u){var p=c?"":t.markupStyleCreator.makeTooltipMarker(e.markerType,e.markerColor||"#333",a),v=s?"":(0,r.uX)(f,"ordinal",h),g=e.valueType,y=u?[]:d(e.value),m=!c||!s,k=!c&&s,C=l(o,a),T=C.nameStyle,A=C.valueStyle;return"richText"===a?(c?"":p)+(s?"":x(t,v,T))+(u?"":S(t,y,m,k,A)):_((c?"":p)+(s?"":b(v,!c,T))+(u?"":w(y,m,k,A)),n)}}function y(t,e,n,r,i,o){if(t){var a=d(t),s={useUTC:i,renderMode:n,orderMode:r,markupStyleCreator:e,valueFormatter:t.valueFormatter};return a(s,t,0,o)}}function m(t){return{html:u[t],richText:c[t]}}function _(t,e){var n='
',r="margin: "+e+"px 0 0";return'
'+t+n+"
"}function b(t,e,n){var i=e?"margin-left:2px":"";return''+(0,r.F1)(t)+""}function w(t,e,n,o){var a=n?"10px":"20px",s=e?"float:right;margin-left:"+a:"";return t=(0,i.kJ)(t)?t:[t],''+(0,i.UI)(t,(function(t){return(0,r.F1)(t)})).join("  ")+""}function x(t,e,n){return t.markupStyleCreator.wrapRichTextStyle(e,n)}function S(t,e,n,r,o){var a=[o],s=r?10:20;return n&&a.push({padding:[0,0,0,s],align:"right"}),t.markupStyleCreator.wrapRichTextStyle((0,i.kJ)(e)?e.join(" "):e,a)}function k(t,e){var n=t.getData().getItemVisual(e,"style"),i=n[t.visualDrawType];return(0,r.Lz)(i)}function C(t,e){var n=t.get("padding");return null!=n?n:"richText"===e?[8,10]:10}var T=function(){function t(){this.richTextStyles={},this._nextStyleNameId=(0,a.jj)()}return t.prototype._generateStyleName=function(){return"__EC_aUTo_"+this._nextStyleNameId++},t.prototype.makeTooltipMarker=function(t,e,n){var o="richText"===n?this._generateStyleName():null,a=(0,r.A0)({color:e,type:t,renderMode:n,markerId:o});return(0,i.HD)(a)?a:(this.richTextStyles[o]=a.style,a.content)},t.prototype.wrapRichTextStyle=function(t,e){var n={};(0,i.kJ)(e)?(0,i.S6)(e,(function(t){return(0,i.l7)(n,t)})):(0,i.l7)(n,e);var r=this._generateStyleName();return this.richTextStyles[r]=n,"{"+r+"|"+t+"}"},t}()},3243:function(t,e,n){"use strict";n.d(e,{Hr:function(){return pn},S1:function(){return sr},zl:function(){return vr},RS:function(){return gr},qR:function(){return yr},yn:function(){return wr},je:function(){return xr},sq:function(){return hr},Br:function(){return dr},ds:function(){return cr},Pu:function(){return fr},OB:function(){return Sr},YK:function(){return pr},Og:function(){return mr}});var r=n(8299),i=n(6641),o=n(3051),a=n(6387),s=n(9455),l=n(3510),u=n(2234),c=n(2312),f=n(8071),h="";"undefined"!==typeof navigator&&(h=navigator.platform||"");var d="rgba(0, 0, 0, 0.2)",p={darkMode:"auto",colorBy:"series",color:["#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#3ba272","#fc8452","#9a60b4","#ea7ccc"],gradientColor:["#f6efa6","#d88273","#bf444c"],aria:{decal:{decals:[{color:d,dashArrayX:[1,0],dashArrayY:[2,5],symbolSize:1,rotation:Math.PI/6},{color:d,symbol:"circle",dashArrayX:[[8,8],[0,8,8,0]],dashArrayY:[6,0],symbolSize:.8},{color:d,dashArrayX:[1,0],dashArrayY:[4,3],rotation:-Math.PI/4},{color:d,dashArrayX:[[6,6],[0,6,6,0]],dashArrayY:[6,0]},{color:d,dashArrayX:[[1,0],[1,6]],dashArrayY:[1,0,6,0],rotation:Math.PI/4},{color:d,symbol:"triangle",dashArrayX:[[9,9],[0,9,9,0]],dashArrayY:[7,2],symbolSize:.75}]}},textStyle:{fontFamily:h.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,stateAnimation:{duration:300,easing:"cubicOut"},animation:"auto",animationDuration:1e3,animationDurationUpdate:500,animationEasing:"cubicInOut",animationEasingUpdate:"cubicInOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1},v=n(1772),g=(0,o.kW)();function y(t,e,n){var r=g.get(e);if(!r)return n;var i=r(t);return i?n.concat(i):n}var m,_,b,w=n(5494),x="\0_ec_inner",S=1;var k=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return(0,r.ZT)(e,t),e.prototype.init=function(t,e,n,r,i,o){r=r||{},this.option=null,this._theme=new c.Z(r),this._locale=new c.Z(i),this._optionManager=o},e.prototype.setOption=function(t,e,n){var r=M(e);this._optionManager.setOption(t,n,r),this._resetOption(null,r)},e.prototype.resetOption=function(t,e){return this._resetOption(t,M(e))},e.prototype._resetOption=function(t,e){var n=!1,r=this._optionManager;if(!t||"recreate"===t){var i=r.mountOption("recreate"===t);0,this.option&&"recreate"!==t?(this.restoreData(),this._mergeOption(i,e)):b(this,i),n=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var a=r.getTimelineOption(this);a&&(n=!0,this._mergeOption(a,e))}if(!t||"recreate"===t||"media"===t){var s=r.getMediaOption(this);s.length&&(0,o.S6)(s,(function(t){n=!0,this._mergeOption(t,e)}),this)}return n},e.prototype.mergeOption=function(t){this._mergeOption(t,null)},e.prototype._mergeOption=function(t,e){var n=this.option,r=this._componentsMap,i=this._componentsCount,a=[],s=(0,o.kW)(),l=e&&e.replaceMergeMainTypeMap;function c(e){var a=y(this,e,u.kF(t[e])),s=r.get(e),c=s?l&&l.get(e)?"replaceMerge":"normalMerge":"replaceAll",h=u.ab(s,a,c);u.O0(h,e,f.Z),n[e]=null,r.set(e,null),i.set(e,0);var d,p=[],v=[],g=0;(0,o.S6)(h,(function(t,n){var r=t.existing,i=t.newOption;if(i){var a="series"===e,s=f.Z.getClass(e,t.keyInfo.subType,!a);if(!s)return;if("tooltip"===e){if(d)return void 0;d=!0}if(r&&r.constructor===s)r.name=t.keyInfo.name,r.mergeOption(i,this),r.optionUpdated(i,!1);else{var l=(0,o.l7)({componentIndex:n},t.keyInfo);r=new s(i,this,this,l),(0,o.l7)(r,l),t.brandNew&&(r.__requireNewView=!0),r.init(i,this,this),r.optionUpdated(null,!0)}}else r&&(r.mergeOption({},this),r.optionUpdated({},!1));r?(p.push(r.option),v.push(r),g++):(p.push(void 0),v.push(void 0))}),this),n[e]=p,r.set(e,v),i.set(e,g),"series"===e&&m(this)}(0,v.md)(this),(0,o.S6)(t,(function(t,e){null!=t&&(f.Z.hasClass(e)?e&&(a.push(e),s.set(e,!0)):n[e]=null==n[e]?(0,o.d9)(t):(0,o.TS)(n[e],t,!0))})),l&&l.each((function(t,e){f.Z.hasClass(e)&&!s.get(e)&&(a.push(e),s.set(e,!0))})),f.Z.topologicalTravel(a,f.Z.getAllClassMainTypes(),c,this),this._seriesIndices||m(this)},e.prototype.getOption=function(){var t=(0,o.d9)(this.option);return(0,o.S6)(t,(function(e,n){if(f.Z.hasClass(n)){for(var r=u.kF(e),i=r.length,o=!1,a=i-1;a>=0;a--)r[a]&&!u.lY(r[a])?o=!0:(r[a]=null,!o&&i--);r.length=i,t[n]=r}})),delete t[x],t},e.prototype.getTheme=function(){return this._theme},e.prototype.getLocaleModel=function(){return this._locale},e.prototype.setUpdatePayload=function(t){this._payload=t},e.prototype.getUpdatePayload=function(){return this._payload},e.prototype.getComponent=function(t,e){var n=this._componentsMap.get(t);if(n){var r=n[e||0];if(r)return r;if(null==e)for(var i=0;i=e:"max"===n?t<=e:t===e}function U(t,e){return t.join(",")===e.join(",")}var V=F,j=o.S6,H=o.Kn,G=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];function q(t){var e=t&&t.itemStyle;if(e)for(var n=0,r=G.length;n=0;p--){var v=t[p];if(s||(f=v.data.rawIndexOf(v.stackedByDimension,c)),f>=0){var g=v.data.getByRawIndex(v.stackResultDimension,f);if(h>=0&&g>0||h<=0&&g<0){h=(0,pt.S$)(h,g),d=g;break}}}return r[0]=h,r[1]=d,r}))}))}var yt=n(3392),mt=n(3166),_t=n(1422),bt=n(5293),wt=n(4535),xt=n(9266),St=n(5825),kt=n(106),Ct=n(6357),Tt=n(270),At=n(9066),It=n(9887),Mt=n(7515),Dt=(0,u.Yf)(),Ot={itemStyle:(0,At.Z)(It.t,!0),lineStyle:(0,At.Z)(Mt.v,!0)},Et={lineStyle:"stroke",itemStyle:"fill"};function Pt(t,e){var n=t.visualStyleMapper||Ot[e];return n||(console.warn("Unkown style type '"+e+"'."),Ot.itemStyle)}function Lt(t,e){var n=t.visualDrawType||Et[e];return n||(console.warn("Unkown style type '"+e+"'."),"fill")}var Rt={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var n=t.getData(),r=t.visualStyleAccessPath||"itemStyle",i=t.getModel(r),a=Pt(t,r),s=a(i),l=i.getShallow("decal");l&&(n.setVisual("decal",l),l.dirty=!0);var u=Lt(t,r),c=s[u],f=(0,o.mf)(c)?c:null,h="auto"===s.fill||"auto"===s.stroke;if(!s[u]||f||h){var d=t.getColorFromPalette(t.name,null,e.getSeriesCount());s[u]||(s[u]=d,n.setVisual("colorFromPalette",!0)),s.fill="auto"===s.fill||(0,o.mf)(s.fill)?d:s.fill,s.stroke="auto"===s.stroke||(0,o.mf)(s.stroke)?d:s.stroke}if(n.setVisual("style",s),n.setVisual("drawType",u),!e.isSeriesFiltered(t)&&f)return n.setVisual("colorFromPalette",!1),{dataEach:function(e,n){var r=t.getDataParams(n),i=(0,o.l7)({},s);i[u]=f(r),e.setItemVisual(n,"style",i)}}}},Bt=new c.Z,Zt={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){if(!t.ignoreStyleOnData&&!e.isSeriesFiltered(t)){var n=t.getData(),r=t.visualStyleAccessPath||"itemStyle",i=Pt(t,r),a=n.getVisual("drawType");return{dataEach:n.hasItemOption?function(t,e){var n=t.getRawDataItem(e);if(n&&n[r]){Bt.option=n[r];var s=i(Bt),l=t.ensureUniqueItemVisual(e,"style");(0,o.l7)(l,s),Bt.option.decal&&(t.setItemVisual(e,"decal",Bt.option.decal),Bt.option.decal.dirty=!0),a in s&&t.setItemVisual(e,"colorFromPalette",!1)}}:null}}}},Ft={performRawSeries:!0,overallReset:function(t){var e=(0,o.kW)();t.eachSeries((function(t){var n=t.getColorBy();if(!t.isColorBySeries()){var r=t.type+"-"+n,i=e.get(r);i||(i={},e.set(r,i)),Dt(t).scope=i}})),t.eachSeries((function(e){if(!e.isColorBySeries()&&!t.isSeriesFiltered(e)){var n=e.getRawData(),r={},i=e.getData(),o=Dt(e).scope,a=e.visualStyleAccessPath||"itemStyle",s=Lt(e,a);i.each((function(t){var e=i.getRawIndex(t);r[e]=t})),n.each((function(t){var a=r[t],l=i.getItemVisual(a,"colorFromPalette");if(l){var u=i.ensureUniqueItemVisual(a,"style"),c=n.getName(t)||t+"",f=n.count();u[s]=e.getColorFromPalette(c,o,f)}}))}}))}},zt=n(8154),Nt=n(9750),Wt=n(4826),Ut=Math.PI;function Vt(t,e){e=e||{},o.ce(e,{text:"loading",textColor:"#000",fontSize:12,fontWeight:"normal",fontStyle:"normal",fontFamily:"sans-serif",maskColor:"rgba(255, 255, 255, 0.8)",showSpinner:!0,color:"#5470c6",spinnerRadius:10,lineWidth:5,zlevel:0});var n=new zt.Z,r=new bt.Z({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4});n.add(r);var i,a=new Nt.ZP({style:{text:e.text,fill:e.textColor,fontSize:e.fontSize,fontWeight:e.fontWeight,fontStyle:e.fontStyle,fontFamily:e.fontFamily},zlevel:e.zlevel,z:10001}),s=new bt.Z({style:{fill:"none"},textContent:a,textConfig:{position:"right",distance:10},zlevel:e.zlevel,z:10001});return n.add(s),e.showSpinner&&(i=new Wt.Z({shape:{startAngle:-Ut/2,endAngle:-Ut/2+.1,r:e.spinnerRadius},style:{stroke:e.color,lineCap:"round",lineWidth:e.lineWidth},zlevel:e.zlevel,z:10001}),i.animateShape(!0).when(1e3,{endAngle:3*Ut/2}).start("circularInOut"),i.animateShape(!0).when(1e3,{startAngle:3*Ut/2}).delay(300).start("circularInOut"),n.add(i)),n.resize=function(){var n=a.getBoundingRect().width,o=e.showSpinner?e.spinnerRadius:0,l=(t.getWidth()-2*o-(e.showSpinner&&n?10:0)-n)/2-(e.showSpinner&&n?0:5+n/2)+(e.showSpinner?0:n/2)+(n?0:o),u=t.getHeight()/2;e.showSpinner&&i.setShape({cx:l,cy:u}),s.setShape({x:l-o,y:u-o,width:2*o,height:2*o}),r.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},n.resize(),n}var jt=n(4426),Ht=n(2151),Gt=function(){function t(t,e,n,r){this._stageTaskMap=(0,o.kW)(),this.ecInstance=t,this.api=e,n=this._dataProcessorHandlers=n.slice(),r=this._visualHandlers=r.slice(),this._allHandlers=n.concat(r)}return t.prototype.restoreData=function(t,e){t.restoreData(e),this._stageTaskMap.each((function(t){var e=t.overallTask;e&&e.dirty()}))},t.prototype.getPerformArgs=function(t,e){if(t.__pipeline){var n=this._pipelineMap.get(t.__pipeline.id),r=n.context,i=!e&&n.progressiveEnabled&&(!r||r.progressiveRender)&&t.__idxInPipeline>n.blockIndex,o=i?n.step:null,a=r&&r.modDataCount,s=null!=a?Math.ceil(a/o):null;return{step:o,modBy:s,modDataCount:a}}},t.prototype.getPipeline=function(t){return this._pipelineMap.get(t)},t.prototype.updateStreamModes=function(t,e){var n=this._pipelineMap.get(t.uid),r=t.getData(),i=r.count(),o=n.progressiveEnabled&&e.incrementalPrepareRender&&i>=n.threshold,a=t.get("large")&&i>=t.get("largeThreshold"),s="mod"===t.get("progressiveChunkMode")?i:null;t.pipelineContext=n.context={progressiveRender:o,modDataCount:s,large:a}},t.prototype.restorePipelines=function(t){var e=this,n=e._pipelineMap=(0,o.kW)();t.eachSeries((function(t){var r=t.getProgressive(),i=t.uid;n.set(i,{id:i,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:r&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(r||700),count:0}),e._pipe(t,t.dataTask)}))},t.prototype.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.api.getModel(),n=this.api;(0,o.S6)(this._allHandlers,(function(r){var i=t.get(r.uid)||t.set(r.uid,{}),a="";(0,o.hu)(!(r.reset&&r.overallReset),a),r.reset&&this._createSeriesStageTask(r,i,e,n),r.overallReset&&this._createOverallStageTask(r,i,e,n)}),this)},t.prototype.prepareView=function(t,e,n,r){var i=t.renderTask,o=i.context;o.model=e,o.ecModel=n,o.api=r,i.__block=!t.incrementalPrepareRender,this._pipe(e,i)},t.prototype.performDataProcessorTasks=function(t,e){this._performStageTasks(this._dataProcessorHandlers,t,e,{block:!0})},t.prototype.performVisualTasks=function(t,e,n){this._performStageTasks(this._visualHandlers,t,e,n)},t.prototype._performStageTasks=function(t,e,n,r){r=r||{};var i=!1,a=this;function s(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}(0,o.S6)(t,(function(t,o){if(!r.visualType||r.visualType===t.visualType){var l=a._stageTaskMap.get(t.uid),u=l.seriesTaskMap,c=l.overallTask;if(c){var f,h=c.agentStubMap;h.each((function(t){s(r,t)&&(t.dirty(),f=!0)})),f&&c.dirty(),a.updatePayload(c,n);var d=a.getPerformArgs(c,r.block);h.each((function(t){t.perform(d)})),c.perform(d)&&(i=!0)}else u&&u.each((function(o,l){s(r,o)&&o.dirty();var u=a.getPerformArgs(o,r.block);u.skip=!t.performRawSeries&&e.isSeriesFiltered(o.context.model),a.updatePayload(o,n),o.perform(u)&&(i=!0)}))}})),this.unfinished=i||this.unfinished},t.prototype.performSeriesTasks=function(t){var e;t.eachSeries((function(t){e=t.dataTask.perform()||e})),this.unfinished=e||this.unfinished},t.prototype.plan=function(){this._pipelineMap.each((function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}e=e.getUpstream()}while(e)}))},t.prototype.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},t.prototype._createSeriesStageTask=function(t,e,n,r){var i=this,a=e.seriesTaskMap,s=e.seriesTaskMap=(0,o.kW)(),l=t.seriesType,u=t.getTargetSeries;function c(e){var o=e.uid,l=s.set(o,a&&a.get(o)||(0,jt.v)({plan:Kt,reset:Jt,count:ee}));l.context={model:e,ecModel:n,api:r,useClearVisual:t.isVisual&&!t.isLayout,plan:t.plan,reset:t.reset,scheduler:i},i._pipe(e,l)}t.createOnAllSeries?n.eachRawSeries(c):l?n.eachRawSeriesByType(l,c):u&&u(n,r).each(c)},t.prototype._createOverallStageTask=function(t,e,n,r){var i=this,a=e.overallTask=e.overallTask||(0,jt.v)({reset:qt});a.context={ecModel:n,api:r,overallReset:t.overallReset,scheduler:i};var s=a.agentStubMap,l=a.agentStubMap=(0,o.kW)(),u=t.seriesType,c=t.getTargetSeries,f=!0,h=!1,d="";function p(t){var e=t.uid,n=l.set(e,s&&s.get(e)||(h=!0,(0,jt.v)({reset:Yt,onDirty:$t})));n.context={model:t,overallProgress:f},n.agent=a,n.__block=f,i._pipe(t,n)}(0,o.hu)(!t.createOnAllSeries,d),u?n.eachRawSeriesByType(u,p):c?c(n,r).each(p):(f=!1,(0,o.S6)(n.getSeries(),p)),h&&a.dirty()},t.prototype._pipe=function(t,e){var n=t.uid,r=this._pipelineMap.get(n);!r.head&&(r.head=e),r.tail&&r.tail.pipe(e),r.tail=e,e.__idxInPipeline=r.count++,e.__pipeline=r},t.wrapStageHandler=function(t,e){return(0,o.mf)(t)&&(t={overallReset:t,seriesType:ne(t)}),t.uid=(0,Ht.Kr)("stageHandler"),e&&(t.visualType=e),t},t}();function qt(t){t.overallReset(t.ecModel,t.api,t.payload)}function Yt(t){return t.overallProgress&&Xt}function Xt(){this.agent.dirty(),this.getDownstream().dirty()}function $t(){this.agent&&this.agent.dirty()}function Kt(t){return t.plan?t.plan(t.model,t.ecModel,t.api,t.payload):null}function Jt(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=(0,u.kF)(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?(0,o.UI)(e,(function(t,e){return te(e)})):Qt}var Qt=te(0);function te(t){return function(e,n){var r=n.data,i=n.resetDefines[t];if(i&&i.dataEach)for(var o=e.start;o0&&c===i.length-u.length){var f=i.slice(0,c);"data"!==f&&(e.mainType=f,e[u.toLowerCase()]=t,o=!0)}}s.hasOwnProperty(i)&&(n[i]=t,o=!0),o||(r[i]=t)}))}return{cptQuery:e,dataQuery:n,otherQuery:r}},t.prototype.filter=function(t,e){var n=this.eventInfo;if(!n)return!0;var r=n.targetEl,i=n.packedEvent,o=n.model,a=n.view;if(!o||!a)return!0;var s=e.cptQuery,l=e.dataQuery;return u(s,o,"mainType")&&u(s,o,"subType")&&u(s,o,"index","componentIndex")&&u(s,o,"name")&&u(s,o,"id")&&u(l,i,"name")&&u(l,i,"dataIndex")&&u(l,i,"dataType")&&(!a.filterForExposedEvent||a.filterForExposedEvent(t,e.otherQuery,r,i));function u(t,e,n,r){return null==t[n]||e[r||n]===t[n]}},t.prototype.afterTrigger=function(){this.eventInfo=null},t}(),me=["symbol","symbolSize","symbolRotate","symbolOffset"],_e=me.concat(["symbolKeepAspect"]),be={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var n=t.getData();if(t.legendIcon&&n.setVisual("legendIcon",t.legendIcon),t.hasSymbolVisual){for(var r={},i={},a=!1,s=0;s0&&t.unfinished);t.unfinished||this._zr.flush()}}},e.prototype.getDom=function(){return this._dom},e.prototype.getId=function(){return this.id},e.prototype.getZr=function(){return this._zr},e.prototype.isSSR=function(){return this._ssr},e.prototype.setOption=function(t,e,n){if(!this[vn])if(this._disposed)Xn(this.id);else{var r,i,a;if((0,o.Kn)(e)&&(n=e.lazyUpdate,r=e.silent,i=e.replaceMerge,a=e.transition,e=e.notMerge),this[vn]=!0,!this._model||e){var s=new V(this._api),l=this._theme,u=this._model=new D;u.scheduler=this._scheduler,u.ssr=this._ssr,u.init(null,null,null,l,this._locale,s)}this._model.setOption(t,{replaceMerge:i},Qn);var c={seriesTransition:a,optionChanged:!0};if(n)this[gn]={silent:r,updateParams:c},this[vn]=!1,this.getZr().wakeUp();else{try{Tn(this),Mn.update.call(this,null,c)}catch(f){throw this[gn]=null,this[vn]=!1,f}this._ssr||this._zr.flush(),this[gn]=null,this[vn]=!1,Pn.call(this,r),Ln.call(this,r)}}},e.prototype.setTheme=function(){(0,ke.Sh)("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},e.prototype.getModel=function(){return this._model},e.prototype.getOption=function(){return this._model&&this._model.getOption()},e.prototype.getWidth=function(){return this._zr.getWidth()},e.prototype.getHeight=function(){return this._zr.getHeight()},e.prototype.getDevicePixelRatio=function(){return this._zr.painter.dpr||$e&&window.devicePixelRatio||1},e.prototype.getRenderedCanvas=function(t){return this.renderToCanvas(t)},e.prototype.renderToCanvas=function(t){t=t||{};var e=this._zr.painter;return e.getRenderedCanvas({backgroundColor:t.backgroundColor||this._model.get("backgroundColor"),pixelRatio:t.pixelRatio||this.getDevicePixelRatio()})},e.prototype.renderToSVGString=function(t){t=t||{};var e=this._zr.painter;return e.renderToString({useViewBox:t.useViewBox})},e.prototype.getSvgDataURL=function(){if(a.Z.svgSupported){var t=this._zr,e=t.storage.getDisplayList();return(0,o.S6)(e,(function(t){t.stopAnimation(null,!0)})),t.painter.toDataURL()}},e.prototype.getDataURL=function(t){if(!this._disposed){t=t||{};var e=t.excludeComponents,n=this._model,r=[],i=this;(0,o.S6)(e,(function(t){n.eachComponent({mainType:t},(function(t){var e=i._componentsMap[t.__viewId];e.group.ignore||(r.push(e),e.group.ignore=!0)}))}));var a="svg"===this._zr.painter.getType()?this.getSvgDataURL():this.renderToCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return(0,o.S6)(r,(function(t){t.group.ignore=!1})),a}Xn(this.id)},e.prototype.getConnectedDataURL=function(t){if(!this._disposed){var e="svg"===t.type,n=this.group,r=Math.min,a=Math.max,s=1/0;if(ir[n]){var l=s,u=s,c=-s,f=-s,h=[],d=t&&t.pixelRatio||this.getDevicePixelRatio();(0,o.S6)(rr,(function(i,s){if(i.group===n){var d=e?i.getZr().painter.getSvgDom().innerHTML:i.renderToCanvas((0,o.d9)(t)),p=i.getDom().getBoundingClientRect();l=r(p.left,l),u=r(p.top,u),c=a(p.right,c),f=a(p.bottom,f),h.push({dom:d,left:p.left,top:p.top})}})),l*=d,u*=d,c*=d,f*=d;var p=c-l,v=f-u,g=Be.qW.createCanvas(),y=i.S1(g,{renderer:e?"svg":"canvas"});if(y.resize({width:p,height:v}),e){var m="";return(0,o.S6)(h,(function(t){var e=t.left-l,n=t.top-u;m+=''+t.dom+""})),y.painter.getSvgRoot().innerHTML=m,t.connectedBackgroundColor&&y.painter.setBackgroundColor(t.connectedBackgroundColor),y.refreshImmediately(),y.painter.toDataURL()}return t.connectedBackgroundColor&&y.add(new bt.Z({shape:{x:0,y:0,width:p,height:v},style:{fill:t.connectedBackgroundColor}})),(0,o.S6)(h,(function(t){var e=new wt.ZP({style:{x:t.left*d-l,y:t.top*d-u,image:t.dom}});y.add(e)})),y.refreshImmediately(),g.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}Xn(this.id)},e.prototype.convertToPixel=function(t,e){return Dn(this,"convertToPixel",t,e)},e.prototype.convertFromPixel=function(t,e){return Dn(this,"convertFromPixel",t,e)},e.prototype.containPixel=function(t,e){if(!this._disposed){var n,r=this._model,i=u.pm(r,t);return(0,o.S6)(i,(function(t,r){r.indexOf("Models")>=0&&(0,o.S6)(t,(function(t){var i=t.coordinateSystem;if(i&&i.containPoint)n=n||!!i.containPoint(e);else if("seriesModels"===r){var o=this._chartsMap[t.__viewId];o&&o.containPoint&&(n=n||o.containPoint(e,t))}else 0}),this)}),this),!!n}Xn(this.id)},e.prototype.getVisual=function(t,e){var n=this._model,r=u.pm(n,t,{defaultMainType:"series"}),i=r.seriesModel;var o=i.getData(),a=r.hasOwnProperty("dataIndexInside")?r.dataIndexInside:r.hasOwnProperty("dataIndex")?o.indexOfRawIndex(r.dataIndex):null;return null!=a?xe(o,a,e):Se(o,e)},e.prototype.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},e.prototype.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]},e.prototype._initEvents=function(){var t=this;(0,o.S6)(Yn,(function(e){var n=function(n){var r,i=t.getModel(),a=n.target,s="globalout"===e;if(s?r={}:a&&(0,Ie.o)(a,(function(t){var e=(0,kt.A)(t);if(e&&null!=e.dataIndex){var n=e.dataModel||i.getSeriesByIndex(e.seriesIndex);return r=n&&n.getDataParams(e.dataIndex,e.dataType)||{},!0}if(e.eventData)return r=(0,o.l7)({},e.eventData),!0}),!0),r){var l=r.componentType,u=r.componentIndex;"markLine"!==l&&"markPoint"!==l&&"markArea"!==l||(l="series",u=r.seriesIndex);var c=l&&null!=u&&i.getComponent(l,u),f=c&&t["series"===c.mainType?"_chartsMap":"_componentsMap"][c.__viewId];0,r.event=n,r.type=e,t._$eventProcessor.eventInfo={targetEl:a,packedEvent:r,model:c,view:f},t.trigger(e,r)}};n.zrEventfulCallAtLast=!0,t._zr.on(e,n,t)})),(0,o.S6)(Kn,(function(e,n){t._messageCenter.on(n,(function(t){this.trigger(n,t)}),t)})),(0,o.S6)(["selectchanged"],(function(e){t._messageCenter.on(e,(function(t){this.trigger(e,t)}),t)})),(0,Ce.s)(this._messageCenter,this,this._api)},e.prototype.isDisposed=function(){return this._disposed},e.prototype.clear=function(){this._disposed?Xn(this.id):this.setOption({series:[]},!0)},e.prototype.dispose=function(){if(this._disposed)Xn(this.id);else{this._disposed=!0;var t=this.getDom();t&&u.P$(this.getDom(),ar,"");var e=this,n=e._api,r=e._model;(0,o.S6)(e._componentsViews,(function(t){t.dispose(r,n)})),(0,o.S6)(e._chartsViews,(function(t){t.dispose(r,n)})),e._zr.dispose(),e._dom=e._model=e._chartsMap=e._componentsMap=e._chartsViews=e._componentsViews=e._scheduler=e._api=e._zr=e._throttledZrFlush=e._theme=e._coordSysMgr=e._messageCenter=null,delete rr[e.id]}},e.prototype.resize=function(t){if(!this[vn])if(this._disposed)Xn(this.id);else{this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var n=e.resetOption("media"),r=t&&t.silent;this[gn]&&(null==r&&(r=this[gn].silent),n=!0,this[gn]=null),this[vn]=!0;try{n&&Tn(this),Mn.update.call(this,{type:"resize",animation:(0,o.l7)({duration:0},t&&t.animation)})}catch(i){throw this[vn]=!1,i}this[vn]=!1,Pn.call(this,r),Ln.call(this,r)}}},e.prototype.showLoading=function(t,e){if(this._disposed)Xn(this.id);else if((0,o.Kn)(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),nr[t]){var n=nr[t](this._api,e),r=this._zr;this._loadingFX=n,r.add(n)}},e.prototype.hideLoading=function(){this._disposed?Xn(this.id):(this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null)},e.prototype.makeActionFromEvent=function(t){var e=(0,o.l7)({},t);return e.type=Kn[t.type],e},e.prototype.dispatchAction=function(t,e){if(this._disposed)Xn(this.id);else if((0,o.Kn)(e)||(e={silent:!!e}),$n[t.type]&&this._model)if(this[vn])this._pendingActions.push(t);else{var n=e.silent;En.call(this,t,n);var r=e.flush;r?this._zr.flush():!1!==r&&a.Z.browser.weChat&&this._throttledZrFlush(),Pn.call(this,n),Ln.call(this,n)}},e.prototype.updateLabelLayout=function(){Ye.trigger("series:layoutlabels",this._model,this._api,{updatedSeries:[]})},e.prototype.appendData=function(t){if(this._disposed)Xn(this.id);else{var e=t.seriesIndex,n=this.getModel(),r=n.getSeriesByIndex(e);0,r.appendData(t),this._scheduler.unfinished=!0,this.getZr().wakeUp()}},e.internalField=function(){function t(t){t.clearColorPalette(),t.eachSeries((function(t){t.clearColorPalette()}))}function e(t){var e=[],n=[],r=!1;if(t.eachComponent((function(t,i){var o=i.get("zlevel")||0,a=i.get("z")||0,s=i.getZLevelKey();r=r||!!s,("series"===t?n:e).push({zlevel:o,z:a,idx:i.componentIndex,type:t,key:s})})),r){var i,a,l=e.concat(n);(0,s.Z)(l,(function(t,e){return t.zlevel===e.zlevel?t.z-e.z:t.zlevel-e.zlevel})),(0,o.S6)(l,(function(e){var n=t.getComponent(e.type,e.idx),r=e.zlevel,o=e.key;null!=i&&(r=Math.max(i,r)),o?(r===i&&o!==a&&r++,a=o):a&&(r===i&&r++,a=""),i=r,n.setZLevel(r)}))}}function n(t){for(var e=[],n=t.currentStates,r=0;re.get("hoverLayerThreshold")&&!a.Z.node&&!a.Z.worker&&e.eachSeries((function(e){if(!e.preventUsingHoverLayer){var n=t._chartsMap[e.__viewId];n.__alive&&n.eachRendered((function(t){t.states.emphasis&&(t.states.emphasis.hoverLayer=!0)}))}}))}function l(t,e){var n=t.get("blendMode")||null;e.eachRendered((function(t){t.isGroup||(t.style.blend=n)}))}function c(t,e){if(!t.preventAutoZ){var n=t.get("z")||0,r=t.get("zlevel")||0;e.eachRendered((function(t){return f(t,n,r,-1/0),!0}))}}function f(t,e,n,r){var i=t.getTextContent(),o=t.getTextGuideLine(),a=t.isGroup;if(a)for(var s=t.childrenRef(),l=0;l0?{duration:o,delay:r.get("delay"),easing:r.get("easing")}:null;e.eachRendered((function(t){if(t.states&&t.states.emphasis){if(xt.eq(t))return;if(t instanceof St.ZP&&(0,Ct.e9)(t),t.__dirty){var e=t.prevStates;e&&t.useStates(e)}if(i){t.stateTransition=a;var r=t.getTextContent(),o=t.getTextGuideLine();r&&(r.stateTransition=a),o&&(o.stateTransition=a)}t.__dirty&&n(t)}}))}Tn=function(t){var e=t._scheduler;e.restorePipelines(t._model),e.prepareStageTasks(),An(t,!0),An(t,!1),e.plan()},An=function(t,e){for(var n=t._model,r=t._scheduler,i=e?t._componentsViews:t._chartsViews,o=e?t._componentsMap:t._chartsMap,a=t._zr,s=t._api,l=0;l=0)){_r.push(n);var a=se.wrapStageHandler(n,i);a.__prio=e,a.__raw=n,t.push(a)}}function wr(t,e){nr[t]=e}function xr(t,e,n){var r=(0,Xe.C)("registerMap");r&&r(t,e,n)}var Sr=Te.DA;mr(an,Rt),mr(un,Zt),mr(un,Ft),mr(an,be),mr(un,we),mr(dn,Ge),cr(dt),fr(Qe,vt),wr("default",Vt),vr({type:Ct.Ki,event:Ct.Ki,update:Ct.Ki},o.ZT),vr({type:Ct.yx,event:Ct.yx,update:Ct.yx},o.ZT),vr({type:Ct.Hg,event:Ct.Hg,update:Ct.Hg},o.ZT),vr({type:Ct.JQ,event:Ct.JQ,update:Ct.JQ},o.ZT),vr({type:Ct.iK,event:Ct.iK,update:Ct.iK},o.ZT),ur("light",ue),ur("dark",ve)},9428:function(t,e,n){"use strict";n.d(e,{C:function(){return o},M:function(){return i}});var r={};function i(t,e){r[t]=e}function o(t){return r[t]}},5212:function(t,e,n){"use strict";n.d(e,{sO:function(){return d},D0:function(){return v},Li:function(){return y},G8:function(){return g}});var r=n(2312),i=n(6387),o={time:{month:["January","February","March","April","May","June","July","August","September","October","November","December"],monthAbbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayOfWeekAbbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},legend:{selector:{all:"All",inverse:"Inv"}},toolbox:{brush:{title:{rect:"Box Select",polygon:"Lasso Select",lineX:"Horizontally Select",lineY:"Vertically Select",keep:"Keep Selections",clear:"Clear Selections"}},dataView:{title:"Data View",lang:["Data View","Close","Refresh"]},dataZoom:{title:{zoom:"Zoom",back:"Zoom Reset"}},magicType:{title:{line:"Switch to Line Chart",bar:"Switch to Bar Chart",stack:"Stack",tiled:"Tile"}},restore:{title:"Restore"},saveAsImage:{title:"Save as Image",lang:["Right Click to Save Image"]}},series:{typeNames:{pie:"Pie chart",bar:"Bar chart",line:"Line chart",scatter:"Scatter plot",effectScatter:"Ripple scatter plot",radar:"Radar chart",tree:"Tree",treemap:"Treemap",boxplot:"Boxplot",candlestick:"Candlestick",k:"K line chart",heatmap:"Heat map",map:"Map",parallel:"Parallel coordinate map",lines:"Line graph",graph:"Relationship graph",sankey:"Sankey diagram",funnel:"Funnel chart",gauge:"Gauge",pictorialBar:"Pictorial bar",themeRiver:"Theme River Map",sunburst:"Sunburst"}},aria:{general:{withTitle:'This is a chart about "{title}"',withoutTitle:"This is a chart"},series:{single:{prefix:"",withName:" with type {seriesType} named {seriesName}.",withoutName:" with type {seriesType}."},multiple:{prefix:". It consists of {seriesCount} series count.",withName:" The {seriesId} series is a {seriesType} representing {seriesName}.",withoutName:" The {seriesId} series is a {seriesType}.",separator:{middle:"",end:""}}},data:{allData:"The data is as follows: ",partialData:"The first {displayCnt} items are: ",withName:"the data for {name} is {value}",withoutName:"{value}",separator:{middle:", ",end:". "}}}},a={time:{month:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthAbbr:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayOfWeekAbbr:["日","一","二","三","四","五","六"]},legend:{selector:{all:"全选",inverse:"反选"}},toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}},s=n(3051),l="ZH",u="EN",c=u,f={},h={},d=i.Z.domSupported?function(){var t=(document.documentElement.lang||navigator.language||navigator.browserLanguage).toUpperCase();return t.indexOf(l)>-1?l:c}():c;function p(t,e){t=t.toUpperCase(),h[t]=new r.Z(e),f[t]=e}function v(t){if((0,s.HD)(t)){var e=f[t.toUpperCase()]||{};return t===l||t===u?(0,s.d9)(e):(0,s.TS)((0,s.d9)(e),(0,s.d9)(f[c]),!1)}return(0,s.TS)((0,s.d9)(t),(0,s.d9)(f[c]),!1)}function g(t){return h[t]}function y(){return h[c]}p(u,o),p(l,a)},4426:function(t,e,n){"use strict";n.d(e,{v:function(){return i}});var r=n(3051);function i(t){return new o(t)}var o=function(){function t(t){t=t||{},this._reset=t.reset,this._plan=t.plan,this._count=t.count,this._onDirty=t.onDirty,this._dirty=!0}return t.prototype.perform=function(t){var e,n=this._upstream,i=t&&t.skip;if(this._dirty&&n){var o=this.context;o.data=o.outputData=n.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this),this._plan&&!i&&(e=this._plan(this.context));var a,s=f(this._modBy),l=this._modDataCount||0,u=f(t&&t.modBy),c=t&&t.modDataCount||0;function f(t){return!(t>=1)&&(t=1),t}s===u&&l===c||(e="reset"),(this._dirty||"reset"===e)&&(this._dirty=!1,a=this._doReset(i)),this._modBy=u,this._modDataCount=c;var h=t&&t.step;if(this._dueEnd=n?n._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var d=this._dueIndex,p=Math.min(null!=h?this._dueIndex+h:1/0,this._dueEnd);if(!i&&(a||d1&&r>0?s:a}};return o;function a(){return e=t?null:o65535?l:u}function p(){return[1/0,-1/0]}function v(t){var e=t.constructor;return e===Array?t.slice():new e(t)}function g(t,e,n,r,i){var o=h[n||"float"];if(i){var a=t[e],s=a&&a.length;if(s!==r){for(var l=new o(r),u=0;uy[1]&&(y[1]=v)}return this._rawCount=this._count=l,{start:s,end:l}},t.prototype._initDataFromProvider=function(t,e,n){for(var r=this._provider,o=this._chunks,a=this._dimensions,s=a.length,l=this._rawExtent,u=(0,i.UI)(a,(function(t){return t.property})),c=0;c_[1]&&(_[1]=m)}}!r.persistent&&r.clean&&r.clean(),this._rawCount=this._count=e,this._extent=[]},t.prototype.count=function(){return this._count},t.prototype.get=function(t,e){if(!(e>=0&&e=0&&e=this._rawCount||t<0)return-1;if(!this._indices)return t;var e=this._indices,n=e[t];if(null!=n&&nt))return o;i=o-1}}return-1},t.prototype.indicesOfNearest=function(t,e,n){var r=this._chunks,i=r[t],o=[];if(!i)return o;null==n&&(n=1/0);for(var a=1/0,s=-1,l=0,u=0,c=this.count();u=0&&s<0)&&(a=d,s=h,l=0),h===s&&(o[l++]=u))}return o.length=l,o},t.prototype.getIndices=function(){var t,e=this._indices;if(e){var n=e.constructor,r=this._count;if(n===Array){t=new n(r);for(var i=0;i=f&&_<=h||isNaN(_))&&(l[u++]=g),g++}v=!0}else if(2===o){y=p[r[0]];var b=p[r[1]],w=t[r[1]][0],x=t[r[1]][1];for(m=0;m=f&&_<=h||isNaN(_))&&(S>=w&&S<=x||isNaN(S))&&(l[u++]=g),g++}v=!0}}if(!v)if(1===o)for(m=0;m=f&&_<=h||isNaN(_))&&(l[u++]=k)}else for(m=0;mt[A][1])&&(C=!1)}C&&(l[u++]=e.getRawIndex(m))}return uy[1]&&(y[1]=g)}}}},t.prototype.lttbDownSample=function(t,e){var n,r,i,o=this.clone([t],!0),a=o._chunks,s=a[t],l=this.count(),u=0,c=Math.floor(1/e),f=this.getRawIndex(0),h=new(d(this._rawCount))(Math.ceil(l/c)+2);h[u++]=f;for(var p=1;pn&&(n=r,i=b))}h[u++]=i,f=i}return h[u++]=this.getRawIndex(l-1),o._count=u,o._indices=h,o.getRawIndex=this._getRawIdx,o},t.prototype.downSample=function(t,e,n,r){for(var i=this.clone([t],!0),o=i._chunks,a=[],s=Math.floor(1/e),l=o[t],u=this.count(),c=i._rawExtent[t]=p(),f=new(d(this._rawCount))(Math.ceil(u/s)),h=0,v=0;vu-v&&(s=u-v,a.length=s);for(var g=0;gc[1]&&(c[1]=m),f[h++]=_}return i._count=h,i._indices=f,i._updateGetRawIdx(),i},t.prototype.each=function(t,e){if(this._count)for(var n=t.length,r=this._chunks,i=0,o=this.count();is&&(s=c)}return r=[a,s],this._extent[t]=r,r},t.prototype.getRawDataItem=function(t){var e=this.getRawIndex(t);if(this._provider.persistent)return this._provider.getItem(e);for(var n=[],r=this._chunks,i=0;i=0?this._indices[t]:-1},t.prototype._updateGetRawIdx=function(){this.getRawIndex=this._indices?this._getRawIdx:this._getRawIdxIdentity},t.internalField=function(){function t(t,e,n,r){return(0,o.yQ)(t[r],this._dimensions[r])}r={arrayRows:t,objectRows:function(t,e,n,r){return(0,o.yQ)(t[e],this._dimensions[r])},keyedColumns:t,original:function(t,e,n,r){var i=t&&(null==t.value?t:t.value);return(0,o.yQ)(i instanceof Array?i[r]:i,this._dimensions[r])},typedArray:function(t,e,n,r){return t[r]}}}(),t}();e["ZP"]=y},9574:function(t,e,n){"use strict";n.d(e,{Kp:function(){return h},Ld:function(){return l},ML:function(){return f},QY:function(){return y},_P:function(){return u},nx:function(){return c}});var r=n(3051),i=n(4279),o=n(2234),a=n(1772),s=function(){function t(t){this.data=t.data||(t.sourceFormat===i.hL?{}:[]),this.sourceFormat=t.sourceFormat||i.RA,this.seriesLayoutBy=t.seriesLayoutBy||i.fY,this.startIndex=t.startIndex||0,this.dimensionsDetectedCount=t.dimensionsDetectedCount,this.metaRawOption=t.metaRawOption;var e=this.dimensionsDefine=t.dimensionsDefine;if(e)for(var n=0;nu&&(u=d)}s[0]=l,s[1]=u}},r=function(){return this._data?this._data.length/this._dimSize:0};function i(t){for(var e=0;ee},gte:function(t,e){return t>=e}},l=(function(){function t(t,e){if(!(0,i.hj)(e)){var n="";0,(0,o._y)(n)}this._opFn=s[t],this._rvalFloat=(0,r.FK)(e)}t.prototype.evaluate=function(t){return(0,i.hj)(t)?this._opFn(t,this._rvalFloat):this._opFn((0,r.FK)(t),this._rvalFloat)}}(),function(){function t(t,e){var n="desc"===t;this._resultLT=n?1:-1,null==e&&(e=n?"min":"max"),this._incomparable="min"===e?-1/0:1/0}return t.prototype.evaluate=function(t,e){var n=(0,i.hj)(t)?t:(0,r.FK)(t),o=(0,i.hj)(e)?e:(0,r.FK)(e),a=isNaN(n),s=isNaN(o);if(a&&(n=this._incomparable),s&&(o=this._incomparable),a&&s){var l=(0,i.HD)(t),u=(0,i.HD)(e);l&&(n=u?t:0),u&&(o=l?e:0)}return no?-this._resultLT:0},t}());(function(){function t(t,e){this._rval=e,this._isEQ=t,this._rvalTypeof=typeof e,this._rvalFloat=(0,r.FK)(e)}t.prototype.evaluate=function(t){var e=t===this._rval;if(!e){var n=typeof t;n===this._rvalTypeof||"number"!==n&&"number"!==this._rvalTypeof||(e=(0,r.FK)(t)===this._rvalFloat)}return this._isEQ?e:!e}})()},1772:function(t,e,n){"use strict";n.d(e,{Dq:function(){return a},JT:function(){return f},Ss:function(){return u},Wd:function(){return c},md:function(){return l},u7:function(){return h}});var r=n(2234),i=n(3051),o=n(4279),a={Must:1,Might:2,Not:3},s=(0,r.Yf)();function l(t){s(t).datasetMap=(0,i.kW)()}function u(t,e,n){var r={},s=c(t);if(!s)return r;var l,u=e.sourceFormat,f=e.dimensionsDefine;u!==o.qb&&u!==o.hL||(0,i.S6)(f,(function(t,e){"name"===((0,i.Kn)(t)?t.name:t)&&(l=e)}));var h=function(){for(var t={},r={},i=[],o=0,s=Math.min(5,n);o=0||(f.push(t),(0,l.mf)(t)&&(t={install:t}),t.install(h))}},4162:function(t,e,n){"use strict";n.d(e,{GI:function(){return s},VT:function(){return o},yl:function(){return l}});var r=n(1587),i=n(479);function o(t){for(var e=[],n=0;n0&&o&&x(-f/a,0,a);var g,y,m=t[0],_=t[a-1];return b(),g<0&&S(-g,.8),y<0&&S(y,.8),b(),w(g,y,1),w(y,g,-1),b(),g<0&&k(-g),y<0&&k(y),u}function b(){g=m.rect[e]-r,y=i-_.rect[e]-_.rect[n]}function w(t,e,n){if(t<0){var r=Math.min(e,-t);if(r>0){x(r*n,0,a);var i=r+t;i<0&&S(-i*n,1)}else S(-t*n,1)}}function x(n,r,i){0!==n&&(u=!0);for(var o=r;o0)for(l=0;l0;l--){h=o[l-1]*f;x(-h,l,a)}}}function k(t){var e=t<0?-1:1;t=Math.abs(t);for(var n=Math.ceil(t/(a-1)),r=0;r0?x(n,0,r+1):x(-n,a-r-1,a),t-=n,t<=0)return}}function s(t,e,n,r){return a(t,"y","height",e,n,r)}function l(t){var e=[];t.sort((function(t,e){return e.priority-t.priority}));var n=new i.Z(0,0,0,0);function o(t){if(!t.ignore){var e=t.ensureState("emphasis");null==e.ignore&&(e.ignore=!1)}t.ignore=!0}for(var a=0;a=0;l--)a=i.TS(a,n[l],!0);e.defaultOption=a}return e.defaultOption},e.prototype.getReferringComponents=function(t,e){var n=t+"Index",r=t+"Id";return(0,l.HZ)(this.ecModel,t,{index:this.get(n,!0),id:this.get(r,!0)},e)},e.prototype.getBoxLayoutParams=function(){var t=this;return{left:t.get("left"),top:t.get("top"),right:t.get("right"),bottom:t.get("bottom"),width:t.get("width"),height:t.get("height")}},e.prototype.getZLevelKey=function(){return""},e.prototype.setZLevel=function(t){this.option.zlevel=t},e.protoInitialize=function(){var t=e.prototype;t.type="component",t.id="",t.name="",t.mainType="",t.subType="",t.componentIndex=0}(),e}(o.Z);function h(t){var e=[];return i.S6(f.getClassesByMainType(t),(function(t){e=e.concat(t.dependencies||t.prototype.dependencies||[])})),e=i.UI(e,(function(t){return(0,s.u9)(t).main})),"dataset"!==t&&i.cq(e,"dataset")<=0&&e.unshift("dataset"),e}(0,s.pw)(f,o.Z),(0,s.au)(f),a.cj(f),a.jS(f,h),e["Z"]=f},2312:function(t,e,n){"use strict";n.d(e,{Z:function(){return b}});var r=n(6387),i=n(4251),o=n(9066),a=[["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]],s=(0,o.Z)(a),l=function(){function t(){}return t.prototype.getAreaStyle=function(t,e){return s(this,t,e)},t}(),u=n(6006),c=n(9750),f=["textStyle","color"],h=["fontStyle","fontWeight","fontSize","fontFamily","padding","lineHeight","rich","width","height","overflow"],d=new c.ZP,p=function(){function t(){}return t.prototype.getTextColor=function(t){var e=this.ecModel;return this.getShallow("color")||(!t&&e?e.get(f):null)},t.prototype.getFont=function(){return(0,u.qT)({fontStyle:this.getShallow("fontStyle"),fontWeight:this.getShallow("fontWeight"),fontSize:this.getShallow("fontSize"),fontFamily:this.getShallow("fontFamily")},this.ecModel)},t.prototype.getTextRect=function(t){for(var e={text:t,verticalAlign:this.getShallow("verticalAlign")||this.getShallow("baseline")},n=0;n9e10&&(this._versionSignBase=0)},t.prototype._getVersionSign=function(){return this._sourceHost.uid+"_"+this._versionSignBase},t.prototype.prepareSource=function(){this._isDirty()&&(this._createSource(),this._dirty=!1)},t.prototype._createSource=function(){this._setLocalSource([],[]);var t,e,n=this._sourceHost,r=this._getUpstreamSourceManagers(),o=!!r.length;if(b(n)){var a=n,s=void 0,l=void 0,u=void 0;if(o){var c=r[0];c.prepareSource(),u=c.getSource(),s=u.data,l=u.sourceFormat,e=[c._getVersionSign()]}else s=a.get("data",!0),l=(0,i.fU)(s)?p.J5:p.cy,e=[];var f=this._getSourceMetaRawOption()||{},h=u&&u.metaRawOption||{},v=(0,i.pD)(f.seriesLayoutBy,h.seriesLayoutBy)||null,g=(0,i.pD)(f.sourceHeader,h.sourceHeader),y=(0,i.pD)(f.dimensions,h.dimensions),m=v!==h.seriesLayoutBy||!!g!==!!h.sourceHeader||y;t=m?[(0,d._P)(s,{seriesLayoutBy:v,sourceHeader:g,dimensions:y},l)]:[]}else{var _=n;if(o){var w=this._applyTransform(r);t=w.sourceList,e=w.upstreamSignList}else{var x=_.get("source",!0);t=[(0,d._P)(x,this._getSourceMetaRawOption(),null)],e=[]}}this._setLocalSource(t,e)},t.prototype._applyTransform=function(t){var e,n=this._sourceHost,r=n.get("transform",!0),o=n.get("fromTransformResult",!0);if(null!=o){var a="";1!==t.length&&w(a)}var s=[],l=[];return(0,i.S6)(t,(function(t){t.prepareSource();var e=t.getSource(o||0),n="";null==o||e||w(n),s.push(e),l.push(t._getVersionSign())})),r?e=(0,g.vK)(r,s,{datasetIndex:n.componentIndex}):null!=o&&(e=[(0,d.ML)(s[0])]),{sourceList:e,upstreamSignList:l}},t.prototype._isDirty=function(){if(this._dirty)return!0;for(var t=this._getUpstreamSourceManagers(),e=0;e1||p&&!h){var g=k(d,s,l,f,v);e=g.inlineValues,n=g.inlineValueTypes,r=g.blocks,o=g.inlineValues[0]}else if(h){var y=c.getDimensionInfo(f[0]);o=e=(0,m.hk)(c,l,f[0]),n=y.type}else o=e=p?d[0]:d;var _=(0,a.yu)(s),b=_&&s.name||"",w=c.getName(l),S=u?b:w;return(0,x.TX)("section",{header:b,noHeader:u||!_,sortParam:o,blocks:[(0,x.TX)("nameValue",{markerType:"item",markerColor:v,name:S,noName:!(0,i.fy)(S),value:e,valueType:n})].concat(r||[])})}function k(t,e,n,r,o){var a=e.getData(),s=(0,i.u4)(t,(function(t,e,n){var r=a.getDimensionInfo(n);return t||r&&!1!==r.tooltip&&null!=r.displayName}),!1),l=[],u=[],c=[];function f(t,e){var n=a.getDimensionInfo(e);n&&!1!==n.otherDims.tooltip&&(s?c.push((0,x.TX)("nameValue",{markerType:"subItem",markerColor:o,name:n.displayName,value:t,valueType:n.type})):(l.push(t),u.push(n.type)))}return r.length?(0,i.S6)(r,(function(t){f((0,m.hk)(a,n,t),t)})):(0,i.S6)(t,f),{inlineValues:l,inlineValueTypes:u,blocks:c}}var C=a.Yf();function T(t,e){return t.getName(e)||t.getId(e)}var A="__universalTransitionEnabled",I=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._selectedDataIndicesMap={},e}return(0,r.ZT)(e,t),e.prototype.init=function(t,e,n){this.seriesIndex=this.componentIndex,this.dataTask=(0,f.v)({count:O,reset:E}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(t,n);var r=C(this).sourceManager=new _(this);r.prepareSource();var i=this.getInitialData(t,n);L(i,this),this.dataTask.context.data=i,C(this).dataBeforeProcessed=i,M(this),this._initSelectedMapFromData(i)},e.prototype.mergeDefaultAndTheme=function(t,e){var n=(0,c.YD)(this),r=n?(0,c.tE)(t):{},o=this.subType;s.Z.hasClass(o)&&(o+="Series"),i.TS(t,e.getTheme().get(this.subType)),i.TS(t,this.getDefaultOption()),a.Cc(t,"label",["show"]),this.fillDataTextStyle(t.data),n&&(0,c.dt)(t,r,n)},e.prototype.mergeOption=function(t,e){t=i.TS(this.option,t,!0),this.fillDataTextStyle(t.data);var n=(0,c.YD)(this);n&&(0,c.dt)(this.option,t,n);var r=C(this).sourceManager;r.dirty(),r.prepareSource();var o=this.getInitialData(t,e);L(o,this),this.dataTask.dirty(),this.dataTask.context.data=o,C(this).dataBeforeProcessed=o,M(this),this._initSelectedMapFromData(o)},e.prototype.fillDataTextStyle=function(t){if(t&&!i.fU(t))for(var e=["show"],n=0;nthis.getShallow("animationThreshold")&&(e=!1),!!e},e.prototype.restoreData=function(){this.dataTask.dirty()},e.prototype.getColorFromPalette=function(t,e,n){var r=this.ecModel,i=l._.prototype.getColorFromPalette.call(this,t,e,n);return i||(i=r.getColorFromPalette(t,e,n)),i},e.prototype.coordDimToDataDim=function(t){return this.getRawData().mapDimensionsAll(t)},e.prototype.getProgressive=function(){return this.get("progressive")},e.prototype.getProgressiveThreshold=function(){return this.get("progressiveThreshold")},e.prototype.select=function(t,e){this._innerSelect(this.getData(e),t)},e.prototype.unselect=function(t,e){var n=this.option.selectedMap;if(n){var r=this.option.selectedMode,i=this.getData(e);if("series"===r||"all"===n)return this.option.selectedMap={},void(this._selectedDataIndicesMap={});for(var o=0;o=0&&n.push(o)}return n},e.prototype.isSelected=function(t,e){var n=this.option.selectedMap;if(!n)return!1;var r=this.getData(e);return("all"===n||n[T(r,t)])&&!r.getItemModel(t).get(["select","disabled"])},e.prototype.isUniversalTransitionEnabled=function(){if(this[A])return!0;var t=this.option.universalTransition;return!!t&&(!0===t||t&&t.enabled)},e.prototype._innerSelect=function(t,e){var n,r,o=this.option,a=o.selectedMode,s=e.length;if(a&&s)if("series"===a)o.selectedMap="all";else if("multiple"===a){i.Kn(o.selectedMap)||(o.selectedMap={});for(var l=o.selectedMap,u=0;u0&&this._innerSelect(t,e)}},e.registerClass=function(t){return s.Z.registerClass(t)},e.protoInitialize=function(){var t=e.prototype;t.type="series.__base__",t.seriesIndex=0,t.ignoreStyleOnData=!1,t.hasSymbolVisual=!1,t.defaultSymbol="circle",t.visualStyleAccessPath="itemStyle",t.visualDrawType="fill"}(),e}(s.Z);function M(t){var e=t.name;a.yu(t)||(t.name=D(t)||e)}function D(t){var e=t.getRawData(),n=e.mapDimensionsAll("seriesName"),r=[];return i.S6(n,(function(t){var n=e.getDimensionInfo(t);n.displayName&&r.push(n.displayName)})),r.join(" ")}function O(t){return t.model.getRawData().count()}function E(t){var e=t.model;return e.setData(e.getRawData().cloneShallow()),P}function P(t,e){e.outputData&&t.end>e.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function L(t,e){i.S6(i.WW(t.CHANGABLE_METHODS,t.DOWNSAMPLE_METHODS),(function(n){t.wrapMethod(n,i.WA(R,e))}))}function R(t,e){var n=B(t);return n&&n.setOutputEnd((e||this).count()),e}function B(t){var e=(t.ecModel||{}).scheduler,n=e&&e.getPipeline(t.uid);if(n){var r=n.currentTask;if(r){var i=r.agentStubMap;i&&(r=i.get(t.uid))}return r}}i.jB(I,u.X),i.jB(I,l._),(0,h.pw)(I,s.Z);var Z=I},1219:function(t,e,n){"use strict";n.d(e,{X:function(){return s},f:function(){return l}});var r=n(3051),i=n(8540),o=n(8988),a=/\{@(.+?)\}/g,s=function(){function t(){}return t.prototype.getDataParams=function(t,e){var n=this.getData(e),r=this.getRawValue(t,e),i=n.getRawIndex(t),o=n.getName(t),a=n.getRawDataItem(t),s=n.getItemVisual(t,"style"),l=s&&s[n.getItemVisual(t,"drawType")||"fill"],u=s&&s.stroke,c=this.mainType,f="series"===c,h=n.userOutput&&n.userOutput.get();return{componentType:c,componentSubType:this.subType,componentIndex:this.componentIndex,seriesType:f?this.subType:null,seriesIndex:this.seriesIndex,seriesId:f?this.id:null,seriesName:f?this.name:null,name:o,dataIndex:i,data:a,dataType:e,value:r,color:l,borderColor:u,dimensionNames:h?h.fullDimensions:null,encode:h?h.encode:null,$vars:["seriesName","name","value"]}},t.prototype.getFormattedLabel=function(t,e,n,s,l,u){e=e||"normal";var c=this.getData(n),f=this.getDataParams(t,n);if(u&&(f.value=u.interpolatedValue),null!=s&&r.kJ(f.value)&&(f.value=f.value[s]),!l){var h=c.getItemModel(t);l=h.get("normal"===e?["label","formatter"]:[e,"label","formatter"])}if(r.mf(l))return f.status=e,f.dimensionIndex=s,l(f);if(r.HD(l)){var d=(0,o.kF)(l,f);return d.replace(a,(function(e,n){var o=n.length,a=n;"["===a.charAt(0)&&"]"===a.charAt(o-1)&&(a=+a.slice(1,o-1));var s=(0,i.hk)(c,t,a);if(u&&r.kJ(u.interpolatedValue)){var l=c.getDimensionIndex(a);l>=0&&(s=u.interpolatedValue[l])}return null!=s?s+"":""}))}},t.prototype.getRawValue=function(t,e){return(0,i.hk)(this.getData(e),t)},t.prototype.formatTooltip=function(t,e,n){},t}();function l(t){var e,n;return r.Kn(t)?t.type&&(n=t):e=t,{text:e,frag:n}}},9887:function(t,e,n){"use strict";n.d(e,{D:function(){return a},t:function(){return i}});var r=n(9066),i=[["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["lineDash","borderType"],["lineDashOffset","borderDashOffset"],["lineCap","borderCap"],["lineJoin","borderJoin"],["miterLimit","borderMiterLimit"]],o=(0,r.Z)(i),a=function(){function t(){}return t.prototype.getItemStyle=function(t,e){return o(this,t,e)},t}()},7515:function(t,e,n){"use strict";n.d(e,{K:function(){return a},v:function(){return i}});var r=n(9066),i=[["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["lineDash","type"],["lineDashOffset","dashOffset"],["lineCap","cap"],["lineJoin","join"],["miterLimit"]],o=(0,r.Z)(i),a=function(){function t(){}return t.prototype.getLineStyle=function(t){return o(this,t)},t}()},9066:function(t,e,n){"use strict";n.d(e,{Z:function(){return i}});var r=n(3051);function i(t,e){for(var n=0;n=0||o&&r.cq(o,l)<0)){var u=n.getShallow(l,e);null!=u&&(a[t[s][0]]=u)}}return a}}},5494:function(t,e,n){"use strict";n.d(e,{_:function(){return o}});var r=n(2234),i=(0,r.Yf)(),o=((0,r.Yf)(),function(){function t(){}return t.prototype.getColorFromPalette=function(t,e,n){var o=(0,r.kF)(this.get("color",!0)),a=this.get("colorLayer",!0);return s(this,i,o,a,t,e,n)},t.prototype.clearColorPalette=function(){l(this,i)},t}());function a(t,e){for(var n=t.length,r=0;re)return t[r];return t[n-1]}function s(t,e,n,r,i,o,s){o=o||t;var l=e(o),u=l.paletteIdx||0,c=l.paletteNameMap=l.paletteNameMap||{};if(c.hasOwnProperty(i))return c[i];var f=null!=s&&r?a(r,s):n;if(f=f||n,f&&f.length){var h=f[u];return i&&(c[i]=h),l.paletteIdx=(u+1)%f.length,h}}function l(t,e){e(t).paletteIdx=0,e(t).paletteNameMap={}}},1416:function(t,e,n){"use strict";n.d(e,{N:function(){return C}});var r=n(4990),i=n(3051),o=n(4311),a=n(3510),s=n(7568),l=n(2653),u=n(479),c=n(4414),f=n(3132);function h(t,e,n){var r=f.qW.createCanvas(),i=e.getWidth(),o=e.getHeight(),a=r.style;return a&&(a.position="absolute",a.left="0",a.top="0",a.width=i+"px",a.height=o+"px",r.setAttribute("data-zr-dom-id",t)),r.width=i*n,r.height=o*n,r}var d=function(t){function e(e,n,o){var a,s=t.call(this)||this;s.motionBlur=!1,s.lastFrameAlpha=.7,s.dpr=1,s.virtual=!1,s.config={},s.incremental=!1,s.zlevel=0,s.maxRepaintRectCount=5,s.__dirty=!0,s.__firstTimePaint=!0,s.__used=!1,s.__drawIndex=0,s.__startIndex=0,s.__endIndex=0,s.__prevStartIndex=null,s.__prevEndIndex=null,o=o||r.KL,"string"===typeof e?a=h(e,n,o):i.Kn(e)&&(a=e,e=a.id),s.id=e,s.dom=a;var l=a.style;return l&&(i.$j(a),a.onselectstart=function(){return!1},l.padding="0",l.margin="0",l.borderWidth="0"),s.painter=n,s.dpr=o,s}return(0,o.ZT)(e,t),e.prototype.getElementCount=function(){return this.__endIndex-this.__startIndex},e.prototype.afterBrush=function(){this.__prevStartIndex=this.__startIndex,this.__prevEndIndex=this.__endIndex},e.prototype.initContext=function(){this.ctx=this.dom.getContext("2d"),this.ctx.dpr=this.dpr},e.prototype.setUnpainted=function(){this.__firstTimePaint=!0},e.prototype.createBackBuffer=function(){var t=this.dpr;this.domBack=h("back-"+this.id,this.painter,t),this.ctxBack=this.domBack.getContext("2d"),1!==t&&this.ctxBack.scale(t,t)},e.prototype.createRepaintRects=function(t,e,n,r){if(this.__firstTimePaint)return this.__firstTimePaint=!1,null;var i,o=[],a=this.maxRepaintRectCount,s=!1,l=new u.Z(0,0,0,0);function f(t){if(t.isFinite()&&!t.isZero())if(0===o.length){var e=new u.Z(0,0,0,0);e.copy(t),o.push(e)}else{for(var n=!1,r=1/0,i=0,c=0;c=a)}}for(var h=this.__startIndex;h15)break}}n.prevElClipPaths&&u.restore()};if(h)if(0===h.length)s=l.__endIndex;else for(var b=d.dpr,w=0;w0&&t>r[0]){for(s=0;st)break;a=n[r[s]]}if(r.splice(s+1,0,t),n[t]=e,!e.virtual)if(a){var l=a.dom;l.nextSibling?o.insertBefore(e.dom,l.nextSibling):o.appendChild(e.dom)}else o.firstChild?o.insertBefore(e.dom,o.firstChild):o.appendChild(e.dom);e.__painter=this}},t.prototype.eachLayer=function(t,e){for(var n=this._zlevelList,r=0;r0?_:0),this._needsManuallyCompositing),f.__builtin__||i.H("ZLevel "+u+" has been used by unkown layer "+f.id),f!==s&&(f.__used=!0,f.__startIndex!==a&&(f.__dirty=!0),f.__startIndex=a,f.incremental?f.__drawIndex=-1:f.__drawIndex=a,e(a),s=f),r.__dirty&c.YV&&!r.__inHover&&(f.__dirty=!0,f.incremental&&f.__drawIndex<0&&(f.__drawIndex=a))}e(a),this.eachBuiltinLayer((function(t,e){!t.__used&&t.getElementCount()>0&&(t.__dirty=!0,t.__startIndex=t.__endIndex=t.__drawIndex=0),t.__dirty&&t.__drawIndex<0&&(t.__drawIndex=t.__startIndex)}))},t.prototype.clear=function(){return this.eachBuiltinLayer(this._clearLayer),this},t.prototype._clearLayer=function(t){t.clear()},t.prototype.setBackgroundColor=function(t){this._backgroundColor=t,i.S6(this._layers,(function(t){t.setUnpainted()}))},t.prototype.configLayer=function(t,e){if(e){var n=this._layerConfig;n[t]?i.TS(n[t],e,!0):n[t]=e;for(var r=0;r=0&&n.push(t)})),n}t.topologicalTravel=function(t,e,i,o){if(t.length){var a=n(e),s=a.graph,l=a.noEntryList,u={};r.S6(t,(function(t){u[t]=!0}));while(l.length){var c=l.pop(),f=s[c],h=!!u[c];h&&(i.call(o,c,f.originalDeps.slice()),delete u[c]),r.S6(f.successor,h?p:d)}r.S6(u,(function(){var t="";throw new Error(t)}))}function d(t){s[t].entryCount--,0===s[t].entryCount&&l.push(t)}function p(t){u[t]=!0,d(t)}}}function u(t,e){return r.TS(r.TS({},t,!0),e,!0)}},8310:function(t,e,n){"use strict";function r(t,e,n){var r;while(t){if(e(t)&&(r=t,n))break;t=t.__hostTarget||t.parent}return r}n.d(e,{o:function(){return r}})},8988:function(t,e,n){"use strict";n.d(e,{A0:function(){return g},F1:function(){return f},Lz:function(){return y},MI:function(){return m},MY:function(){return l},kF:function(){return v},uX:function(){return h},zW:function(){return s}});var r=n(3051),i=n(5669),o=n(5015);function a(t){if(!(0,i.kE)(t))return r.HD(t)?t:"-";var e=(t+"").split(".");return e[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(e.length>1?"."+e[1]:"")}function s(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,(function(t,e){return e.toUpperCase()})),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t}var l=r.MY,u=/([&<>"'])/g,c={"&":"&","<":"<",">":">",'"':""","'":"'"};function f(t){return null==t?"":(t+"").replace(u,(function(t,e){return c[e]}))}function h(t,e,n){var s="{yyyy}-{MM}-{dd} {hh}:{mm}:{ss}";function l(t){return t&&r.fy(t)?t:"-"}function u(t){return!(null==t||isNaN(t)||!isFinite(t))}var c="time"===e,f=t instanceof Date;if(c||f){var h=c?(0,i.sG)(t):t;if(!isNaN(+h))return(0,o.WU)(h,s,n);if(f)return"-"}if("ordinal"===e)return r.cd(t)?l(t):r.hj(t)&&u(t)?t+"":"-";var d=(0,i.FK)(t);return u(d)?a(d):r.cd(t)?l(t):"boolean"===typeof t?t+"":"-"}var d=["a","b","c","d","e","f","g"],p=function(t,e){return"{"+t+(null==e?"":e)+"}"};function v(t,e,n){r.kJ(e)||(e=[e]);var i=e.length;if(!i)return"";for(var o=e[0].$vars||[],a=0;a':'';var s=n.markerId||"markerX";return{renderMode:a,content:"{"+s+"|} ",style:"subItem"===o?{width:4,height:4,borderRadius:2,backgroundColor:i}:{width:10,height:10,borderRadius:5,backgroundColor:i}}}function y(t,e){return e=e||"transparent",r.HD(t)?t:r.Kn(t)&&t.colorStops&&(t.colorStops[0]||{}).color||e}function m(t,e){if("_blank"===e||"blank"===e){var n=window.open();n.opener=null,n.location.href=t}else window.open(t,e)}},6315:function(t,e,n){"use strict";n.r(e),n.d(e,{Arc:function(){return nt.Z},BezierCurve:function(){return et},BoundingRect:function(){return ft.Z},Circle:function(){return R.Z},CompoundPath:function(){return it},Ellipse:function(){return F},Group:function(){return P.Z},Image:function(){return E.ZP},IncrementalDisplayable:function(){return yt},Line:function(){return X.Z},LinearGradient:function(){return lt},OrientedBoundingRect:function(){return ht.Z},Path:function(){return i.ZP},Point:function(){return dt.Z},Polygon:function(){return G},Polyline:function(){return q.Z},RadialGradient:function(){return ct},Rect:function(){return Y.Z},Ring:function(){return U},Sector:function(){return z.C},Text:function(){return L.ZP},applyTransform:function(){return Ft},clipPointsByRect:function(){return Vt},clipRectByRect:function(){return jt},createIcon:function(){return Ht},extendPath:function(){return Tt},extendShape:function(){return kt},getShapeClass:function(){return It},getTransform:function(){return Zt},groupTransition:function(){return Ut},initProps:function(){return bt.KZ},isElementRemoved:function(){return bt.eq},lineLineIntersect:function(){return qt},linePolygonIntersect:function(){return Gt},makeImage:function(){return Dt},makePath:function(){return Mt},mergePath:function(){return Et},registerShape:function(){return At},removeElement:function(){return bt.bX},removeElementWithFadeOut:function(){return bt.XD},resizePath:function(){return Pt},setTooltipConfig:function(){return $t},subPixelOptimize:function(){return Bt},subPixelOptimizeLine:function(){return Lt},subPixelOptimizeRect:function(){return Rt},transformDirection:function(){return zt},traverseElements:function(){return Jt},updateProps:function(){return bt.D}});var r=n(4311),i=n(5825),o=n(7442),a=n(5280),s=o.Z.CMD,l=[[],[],[]],u=Math.sqrt,c=Math.atan2;function f(t,e){if(e){var n,r,i,o,f,h,d=t.data,p=t.len(),v=s.M,g=s.C,y=s.L,m=s.R,_=s.A,b=s.Q;for(i=0,o=0;i1&&(a*=d(b),s*=d(b));var w=(i===o?-1:1)*d((a*a*(s*s)-a*a*(y*y)-s*s*(h*h))/(a*a*(y*y)+s*s*(h*h)))||0,x=w*a*y/s,S=w*-s*h/a,k=(t+n)/2+v(f)*x-p(f)*S,C=(e+r)/2+p(f)*x+v(f)*S,T=_([1,0],[(h-x)/a,(y-S)/s]),A=[(h-x)/a,(y-S)/s],I=[(-1*h-x)/a,(-1*y-S)/s],M=_(A,I);if(m(A,I)<=-1&&(M=g),m(A,I)>=1&&(M=0),M<0){var D=Math.round(M/g*1e6)/1e6;M=2*g+D%2*g}c.addData(u,k,C,a,s,T,M,f,o)}var w=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,x=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;function S(t){var e=new o.Z;if(!t)return e;var n,r=0,i=0,a=r,s=i,l=o.Z.CMD,u=t.match(w);if(!u)return e;for(var c=0;cMath.abs(o[1])?o[0]>0?"right":"left":o[1]>0?"bottom":"top"}function Nt(t){return!t.isGroup}function Wt(t){return null!=t.shape}function Ut(t,e,n){if(t&&e){var r=i(t);e.traverse((function(t){if(Nt(t)&&t.anid){var e=r[t.anid];if(e){var i=o(t);t.attr(o(e)),(0,bt.D)(t,i,n,(0,_t.A)(t).dataIndex)}}}))}function i(t){var e={};return t.traverse((function(t){Nt(t)&&t.anid&&(e[t.anid]=t)})),e}function o(t){var e={x:t.x,y:t.y,rotation:t.rotation};return Wt(t)&&(e.shape=(0,h.l7)({},t.shape)),e}}function Vt(t,e){return(0,h.UI)(t,(function(t){var n=t[0];n=wt(n,e.x),n=xt(n,e.x+e.width);var r=t[1];return r=wt(r,e.y),r=xt(r,e.y+e.height),[n,r]}))}function jt(t,e){var n=wt(t.x,e.x),r=xt(t.x+t.width,e.x+e.width),i=wt(t.y,e.y),o=xt(t.y+t.height,e.y+e.height);if(r>=n&&o>=i)return{x:n,y:i,width:r-n,height:o-i}}function Ht(t,e,n){var r=(0,h.l7)({rectHover:!0},e),i=r.style={strokeNoScale:!0};if(n=n||{x:-1,y:-1,width:2,height:2},t)return 0===t.indexOf("image://")?(i.image=t.slice(8),(0,h.ce)(i,n),new E.ZP(r)):Mt(t.replace("path://",""),r,n,"center")}function Gt(t,e,n,r,i){for(var o=0,a=i[i.length-1];o1)return!1;var g=Yt(d,p,c,f)/h;return!(g<0||g>1)}function Yt(t,e,n,r){return t*r-n*e}function Xt(t){return t<=1e-6&&t>=-1e-6}function $t(t){var e=t.itemTooltipOption,n=t.componentModel,r=t.itemName,i=(0,h.HD)(e)?{formatter:e}:e,o=n.mainType,a=n.componentIndex,s={componentType:o,name:r,$vars:["name"]};s[o+"Index"]=a;var l=t.formatterParamsExtra;l&&(0,h.S6)((0,h.XP)(l),(function(t){(0,h.RI)(s,t)||(s[t]=l[t],s.$vars.push(t))}));var u=(0,_t.A)(t.el);u.componentMainType=o,u.componentIndex=a,u.tooltipConfig={name:r,option:(0,h.ce)({content:r,formatterParams:s},i)}}function Kt(t,e){var n;t.isGroup&&(n=e(t)),n||t.traverse(e)}function Jt(t,e){if(t)if((0,h.kJ)(t))for(var n=0;nr||l.newline?(o=0,c=v,a+=s+n,s=h.height):s=Math.max(s,h.height)}else{var g=h.height+(p?-p.y+h.y:0);f=a+g,f>i||l.newline?(o+=s+n,a=0,f=g,s=h.width):s=Math.max(s,h.width)}l.newline||(l.x=o,l.y=a,l.markRedraw(),"horizontal"===t?o=c+n:a=f+n)}))}var f=c;r.WA(c,"vertical"),r.WA(c,"horizontal");function h(t,e,n){n=a.MY(n||0);var r=e.width,s=e.height,l=(0,o.GM)(t.left,r),u=(0,o.GM)(t.top,s),c=(0,o.GM)(t.right,r),f=(0,o.GM)(t.bottom,s),h=(0,o.GM)(t.width,r),d=(0,o.GM)(t.height,s),p=n[2]+n[0],v=n[1]+n[3],g=t.aspect;switch(isNaN(h)&&(h=r-c-v-l),isNaN(d)&&(d=s-f-p-u),null!=g&&(isNaN(h)&&isNaN(d)&&(g>r/s?h=.8*r:d=.8*s),isNaN(h)&&(h=g*d),isNaN(d)&&(d=h/g)),isNaN(l)&&(l=r-c-h-v),isNaN(u)&&(u=s-f-d-p),t.left||t.right){case"center":l=r/2-h/2-n[3];break;case"right":l=r-h-v;break}switch(t.top||t.bottom){case"middle":case"center":u=s/2-d/2-n[0];break;case"bottom":u=s-d-p;break}l=l||0,u=u||0,isNaN(h)&&(h=r-v-l-(c||0)),isNaN(d)&&(d=s-p-u-(f||0));var y=new i.Z(l+n[3],u+n[0],h,d);return y.margin=n,y}function d(t){var e=t.layoutMode||t.constructor.layoutMode;return r.Kn(e)?e:e?{type:e}:null}function p(t,e,n){var i=n&&n.ignoreSize;!r.kJ(i)&&(i=[i,i]);var o=l(u[0],0),a=l(u[1],1);function l(n,r){var o={},a=0,l={},u=0,h=2;if(s(n,(function(e){l[e]=t[e]})),s(n,(function(t){c(e,t)&&(o[t]=l[t]=e[t]),f(o,t)&&a++,f(l,t)&&u++})),i[r])return f(e,n[1])?l[n[2]]=null:f(e,n[2])&&(l[n[1]]=null),l;if(u!==h&&a){if(a>=h)return o;for(var d=0;d0){if(t<=i)return a;if(t>=o)return s}else{if(t>=i)return a;if(t<=o)return s}else{if(t===i)return a;if(t===o)return s}return(t-i)/l*u+a}function l(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%";break}return r.HD(t)?a(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t}function u(t,e,n){return null==e&&(e=10),e=Math.min(Math.max(0,e),o),t=(+t).toFixed(e),n?t:+t}function c(t){if(t=+t,isNaN(t))return 0;if(t>1e-14)for(var e=1,n=0;n<15;n++,e*=10)if(Math.round(t*e)/e===t)return n;return f(t)}function f(t){var e=t.toString().toLowerCase(),n=e.indexOf("e"),r=n>0?+e.slice(n+1):0,i=n>0?n:e.length,o=e.indexOf("."),a=o<0?0:i-1-o;return Math.max(0,a-r)}function h(t,e,n){if(!t[e])return 0;var i=r.u4(t,(function(t,e){return t+(isNaN(e)?0:e)}),0);if(0===i)return 0;var o=Math.pow(10,n),a=r.UI(t,(function(t){return(isNaN(t)?0:t)/i*o*100})),s=100*o,l=r.UI(a,(function(t){return Math.floor(t)})),u=r.u4(l,(function(t,e){return t+e}),0),c=r.UI(a,(function(t,e){return t-l[e]}));while(uf&&(f=c[d],h=d);++l[h],c[h]=0,++u}return l[e]/o}function d(t,e){var n=Math.max(c(t),c(e)),r=t+e;return n>o?r:u(r,n)}function p(t){var e=2*Math.PI;return(t%e+e)%e}function v(t){return t>-i&&t=0,a=!1;if(t instanceof l.ZP){var s=f(t),u=o&&s.selectFill||s.normalFill,c=o&&s.selectStroke||s.normalStroke;if(C(u)||C(c)){r=r||{};var h=r.style||{};"inherit"===h.fill?(a=!0,r=(0,i.l7)({},r),h=(0,i.l7)({},h),h.fill=u):!C(h.fill)&&C(u)?(a=!0,r=(0,i.l7)({},r),h=(0,i.l7)({},h),h.fill=A(u)):!C(h.stroke)&&C(c)&&(a||(r=(0,i.l7)({},r),h=(0,i.l7)({},h)),h.stroke=A(c)),r.style=h}}if(r&&null==r.z2){a||(r=(0,i.l7)({},r));var d=t.z2EmphasisLift;r.z2=t.z2+(null!=d?d:m)}return r}function z(t,e,n){if(n&&null==n.z2){n=(0,i.l7)({},n);var r=t.z2SelectLift;n.z2=t.z2+(null!=r?r:_)}return n}function N(t,e,n){var r=(0,i.cq)(t.currentStates,e)>=0,o=t.style.opacity,a=r?null:Z(t,["opacity"],e,{opacity:1});n=n||{};var s=n.style||{};return null==s.opacity&&(n=(0,i.l7)({},n),s=(0,i.l7)({opacity:r?o:.1*a.opacity},s),n.style=s),n}function W(t,e){var n=this.states[t];if(this.style){if("emphasis"===t)return F(this,t,e,n);if("blur"===t)return N(this,t,n);if("select"===t)return z(this,t,n)}return n}function U(t){t.stateProxy=W;var e=t.getTextContent(),n=t.getTextGuideLine();e&&(e.stateProxy=W),n&&(n.stateProxy=W)}function V(t,e){!K(t,e)&&!t.__highByOuter&&B(t,M)}function j(t,e){!K(t,e)&&!t.__highByOuter&&B(t,D)}function H(t,e){t.__highByOuter|=1<<(e||0),B(t,M)}function G(t,e){!(t.__highByOuter&=~(1<<(e||0)))&&B(t,D)}function q(t){B(t,O)}function Y(t){B(t,E)}function X(t){B(t,P)}function $(t){B(t,L)}function K(t,e){return t.__highDownSilentOnTouch&&e.zrByTouch}function J(t){var e=t.getModel();e.eachComponent((function(e,n){var r=h(n);if(r.isBlured){var i="series"===e?t.getViewOfSeriesModel(n):t.getViewOfComponentModel(n);i.group.traverse((function(t){E(t)}))}r.isBlured=!1}))}function Q(t,e,n,r){var o=r.getModel();function a(t,e){for(var n=0;n0){var o={dataIndex:i,seriesIndex:t.seriesIndex};null!=r&&(o.dataType=r),e.push(o)}}))})),e}function lt(t,e,n){vt(t,!0),B(t,U),ft(t,e,n)}function ut(t){vt(t,!1)}function ct(t,e,n,r){r?ut(t):lt(t,e,n)}function ft(t,e,n){var r=(0,o.A)(t);null!=e?(r.focus=e,r.blurScope=n):r.focus&&(r.focus=null)}var ht=["emphasis","blur","select"],dt={itemStyle:"getItemStyle",lineStyle:"getLineStyle",areaStyle:"getAreaStyle"};function pt(t,e,n,r){n=n||"itemStyle";for(var i=0;i=0?f():c=setTimeout(f,-i),l=r};return h.clear=function(){c&&(clearTimeout(c),c=null)},h.debounceNextCall=function(t){s=t},h}function s(t,e,n,s){var l=t[e];if(l){var u=l[r]||l,c=l[o],f=l[i];if(f!==n||c!==s){if(null==n||!s)return t[e]=u;l=t[e]=a(u,n,"debounce"===s),l[r]=u,l[o]=s,l[i]=n}return l}}function l(t,e){var n=t[e];n&&n[r]&&(n.clear&&n.clear(),t[e]=n[r])}},5015:function(t,e,n){"use strict";n.d(e,{WU:function(){return u}});var r=n(5669),i=n(5212),o=n(2312),a={year:"{yyyy}",month:"{MMM}",day:"{d}",hour:"{HH}:{mm}",minute:"{HH}:{mm}",second:"{HH}:{mm}:{ss}",millisecond:"{HH}:{mm}:{ss} {SSS}",none:"{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}"},s="{yyyy}-{MM}-{dd}";a.hour,a.minute,a.second,a.none;function l(t,e){return t+="","0000".substr(0,e-t.length)+t}function u(t,e,n,a){var s=r.sG(t),u=s[c(n)](),y=s[f(n)]()+1,m=Math.floor((y-1)/4)+1,_=s[h(n)](),b=s["get"+(n?"UTC":"")+"Day"](),w=s[d(n)](),x=(w-1)%12+1,S=s[p(n)](),k=s[v(n)](),C=s[g(n)](),T=a instanceof o.Z?a:(0,i.G8)(a||i.sO)||(0,i.Li)(),A=T.getModel("time"),I=A.get("month"),M=A.get("monthAbbr"),D=A.get("dayOfWeek"),O=A.get("dayOfWeekAbbr");return(e||"").replace(/{yyyy}/g,u+"").replace(/{yy}/g,u%100+"").replace(/{Q}/g,m+"").replace(/{MMMM}/g,I[y-1]).replace(/{MMM}/g,M[y-1]).replace(/{MM}/g,l(y,2)).replace(/{M}/g,y+"").replace(/{dd}/g,l(_,2)).replace(/{d}/g,_+"").replace(/{eeee}/g,D[b]).replace(/{ee}/g,O[b]).replace(/{e}/g,b+"").replace(/{HH}/g,l(w,2)).replace(/{H}/g,w+"").replace(/{hh}/g,l(x+"",2)).replace(/{h}/g,x+"").replace(/{mm}/g,l(S,2)).replace(/{m}/g,S+"").replace(/{ss}/g,l(k,2)).replace(/{s}/g,k+"").replace(/{SSS}/g,l(C,3)).replace(/{S}/g,C+"")}function c(t){return t?"getUTCFullYear":"getFullYear"}function f(t){return t?"getUTCMonth":"getMonth"}function h(t){return t?"getUTCDate":"getDate"}function d(t){return t?"getUTCHours":"getHours"}function p(t){return t?"getUTCMinutes":"getMinutes"}function v(t){return t?"getUTCSeconds":"getSeconds"}function g(t){return t?"getUTCMilliseconds":"getMilliseconds"}},4279:function(t,e,n){"use strict";n.d(e,{J5:function(){return u},RA:function(){return c},Wc:function(){return h},XD:function(){return a},cy:function(){return o},f7:function(){return i},fY:function(){return f},hL:function(){return l},qb:function(){return s}});var r=n(3051),i=(0,r.kW)(["tooltip","label","itemName","itemId","itemGroupId","seriesName"]),o="original",a="arrayRows",s="objectRows",l="keyedColumns",u="typedArray",c="unknown",f="column",h="row"},1422:function(t,e,n){"use strict";n.d(e,{Z:function(){return b}});var r=n(3051),i=n(8154),o=n(2151),a=n(4251),s=n(2234),l=n(6357),u=n(4426);function c(){var t=(0,s.Yf)();return function(e){var n=t(e),r=e.pipelineContext,i=!!n.large,o=!!n.progressiveRender,a=n.large=!(!r||!r.large),s=n.progressiveRender=!(!r||!r.progressiveRender);return!(i===a&&o===s)&&"reset"}}var f=n(6315),h=s.Yf(),d=c(),p=function(){function t(){this.group=new i.Z,this.uid=o.Kr("viewChart"),this.renderTask=(0,u.v)({plan:y,reset:m}),this.renderTask.context={view:this}}return t.prototype.init=function(t,e){},t.prototype.render=function(t,e,n,r){0},t.prototype.highlight=function(t,e,n,r){var i=t.getData(r&&r.dataType);i&&g(i,r,"emphasis")},t.prototype.downplay=function(t,e,n,r){var i=t.getData(r&&r.dataType);i&&g(i,r,"normal")},t.prototype.remove=function(t,e){this.group.removeAll()},t.prototype.dispose=function(t,e){},t.prototype.updateView=function(t,e,n,r){this.render(t,e,n,r)},t.prototype.updateLayout=function(t,e,n,r){this.render(t,e,n,r)},t.prototype.updateVisual=function(t,e,n,r){this.render(t,e,n,r)},t.prototype.eachRendered=function(t){(0,f.traverseElements)(this.group,t)},t.markUpdateMethod=function(t,e){h(t).updateMethod=e},t.protoInitialize=function(){var e=t.prototype;e.type="chart"}(),t}();function v(t,e,n){t&&(0,l.Av)(t)&&("emphasis"===e?l.fD:l.Mh)(t,n)}function g(t,e,n){var i=s.gO(t,e),o=e&&null!=e.highlightKey?(0,l.RW)(e.highlightKey):null;null!=i?(0,r.S6)(s.kF(i),(function(e){v(t.getItemGraphicEl(e),n,o)})):t.eachItemGraphicEl((function(t){v(t,n,o)}))}function y(t){return d(t.model)}function m(t){var e=t.model,n=t.ecModel,r=t.api,i=t.payload,o=e.pipelineContext.progressiveRender,a=t.view,s=i&&h(i).updateMethod,l=o?"incrementalPrepareRender":s&&a[s]?s:"render";return"render"!==l&&a[l](e,n,r,i),_[l]}a.dm(p,["dispose"]),a.au(p);var _={incrementalPrepareRender:{progress:function(t,e){e.view.incrementalRender(t,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(t,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},b=p},3166:function(t,e,n){"use strict";var r=n(8154),i=n(2151),o=n(4251),a=function(){function t(){this.group=new r.Z,this.uid=i.Kr("viewComponent")}return t.prototype.init=function(t,e){},t.prototype.render=function(t,e,n,r){},t.prototype.dispose=function(t,e){},t.prototype.updateView=function(t,e,n,r){},t.prototype.updateLayout=function(t,e,n,r){},t.prototype.updateVisual=function(t,e,n,r){},t.prototype.blurSeries=function(t,e){},t.prototype.eachRendered=function(t){var e=this.group;e&&e.traverse(t)},t}();o.dm(a),o.au(a),e["Z"]=a},8299:function(t,e,n){"use strict";n.d(e,{ZT:function(){return i}}); +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +var r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)};function i(t,e){if("function"!==typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}Object.create;Object.create},2100:function(t,e,n){"use strict";t.exports=n(9482)},9482:function(t,e,n){"use strict";var r=e;function i(){r.util._configure(),r.Writer._configure(r.BufferWriter),r.Reader._configure(r.BufferReader)}r.build="minimal",r.Writer=n(1173),r.BufferWriter=n(3155),r.Reader=n(1408),r.BufferReader=n(593),r.util=n(9693),r.rpc=n(5994),r.roots=n(5054),r.configure=i,i()},1408:function(t,e,n){"use strict";t.exports=l;var r,i=n(9693),o=i.LongBits,a=i.utf8;function s(t,e){return RangeError("index out of range: "+t.pos+" + "+(e||1)+" > "+t.len)}function l(t){this.buf=t,this.pos=0,this.len=t.length}var u="undefined"!==typeof Uint8Array?function(t){if(t instanceof Uint8Array||Array.isArray(t))return new l(t);throw Error("illegal buffer")}:function(t){if(Array.isArray(t))return new l(t);throw Error("illegal buffer")},c=function(){return i.Buffer?function(t){return(l.create=function(t){return i.Buffer.isBuffer(t)?new r(t):u(t)})(t)}:u};function f(){var t=new o(0,0),e=0;if(!(this.len-this.pos>4)){for(;e<3;++e){if(this.pos>=this.len)throw s(this);if(t.lo=(t.lo|(127&this.buf[this.pos])<<7*e)>>>0,this.buf[this.pos++]<128)return t}return t.lo=(t.lo|(127&this.buf[this.pos++])<<7*e)>>>0,t}for(;e<4;++e)if(t.lo=(t.lo|(127&this.buf[this.pos])<<7*e)>>>0,this.buf[this.pos++]<128)return t;if(t.lo=(t.lo|(127&this.buf[this.pos])<<28)>>>0,t.hi=(t.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return t;if(e=0,this.len-this.pos>4){for(;e<5;++e)if(t.hi=(t.hi|(127&this.buf[this.pos])<<7*e+3)>>>0,this.buf[this.pos++]<128)return t}else for(;e<5;++e){if(this.pos>=this.len)throw s(this);if(t.hi=(t.hi|(127&this.buf[this.pos])<<7*e+3)>>>0,this.buf[this.pos++]<128)return t}throw Error("invalid varint encoding")}function h(t,e){return(t[e-4]|t[e-3]<<8|t[e-2]<<16|t[e-1]<<24)>>>0}function d(){if(this.pos+8>this.len)throw s(this,8);return new o(h(this.buf,this.pos+=4),h(this.buf,this.pos+=4))}l.create=c(),l.prototype._slice=i.Array.prototype.subarray||i.Array.prototype.slice,l.prototype.uint32=function(){var t=4294967295;return function(){if(t=(127&this.buf[this.pos])>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<7)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<14)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<21)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(15&this.buf[this.pos])<<28)>>>0,this.buf[this.pos++]<128)return t;if((this.pos+=5)>this.len)throw this.pos=this.len,s(this,10);return t}}(),l.prototype.int32=function(){return 0|this.uint32()},l.prototype.sint32=function(){var t=this.uint32();return t>>>1^-(1&t)|0},l.prototype.bool=function(){return 0!==this.uint32()},l.prototype.fixed32=function(){if(this.pos+4>this.len)throw s(this,4);return h(this.buf,this.pos+=4)},l.prototype.sfixed32=function(){if(this.pos+4>this.len)throw s(this,4);return 0|h(this.buf,this.pos+=4)},l.prototype.float=function(){if(this.pos+4>this.len)throw s(this,4);var t=i.float.readFloatLE(this.buf,this.pos);return this.pos+=4,t},l.prototype.double=function(){if(this.pos+8>this.len)throw s(this,4);var t=i.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,t},l.prototype.bytes=function(){var t=this.uint32(),e=this.pos,n=this.pos+t;if(n>this.len)throw s(this,t);return this.pos+=t,Array.isArray(this.buf)?this.buf.slice(e,n):e===n?new this.buf.constructor(0):this._slice.call(this.buf,e,n)},l.prototype.string=function(){var t=this.bytes();return a.read(t,0,t.length)},l.prototype.skip=function(t){if("number"===typeof t){if(this.pos+t>this.len)throw s(this,t);this.pos+=t}else do{if(this.pos>=this.len)throw s(this)}while(128&this.buf[this.pos++]);return this},l.prototype.skipType=function(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:while(4!==(t=7&this.uint32()))this.skipType(t);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+t+" at offset "+this.pos)}return this},l._configure=function(t){r=t,l.create=c(),r._configure();var e=i.Long?"toLong":"toNumber";i.merge(l.prototype,{int64:function(){return f.call(this)[e](!1)},uint64:function(){return f.call(this)[e](!0)},sint64:function(){return f.call(this).zzDecode()[e](!1)},fixed64:function(){return d.call(this)[e](!0)},sfixed64:function(){return d.call(this)[e](!1)}})}},593:function(t,e,n){"use strict";t.exports=o;var r=n(1408);(o.prototype=Object.create(r.prototype)).constructor=o;var i=n(9693);function o(t){r.call(this,t)}o._configure=function(){i.Buffer&&(o.prototype._slice=i.Buffer.prototype.slice)},o.prototype.string=function(){var t=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+t,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+t,this.len))},o._configure()},5054:function(t){"use strict";t.exports={}},5994:function(t,e,n){"use strict";var r=e;r.Service=n(7948)},7948:function(t,e,n){"use strict";t.exports=i;var r=n(9693);function i(t,e,n){if("function"!==typeof t)throw TypeError("rpcImpl must be a function");r.EventEmitter.call(this),this.rpcImpl=t,this.requestDelimited=Boolean(e),this.responseDelimited=Boolean(n)}(i.prototype=Object.create(r.EventEmitter.prototype)).constructor=i,i.prototype.rpcCall=function t(e,n,i,o,a){if(!o)throw TypeError("request must be specified");var s=this;if(!a)return r.asPromise(t,s,e,n,i,o);if(s.rpcImpl)try{return s.rpcImpl(e,n[s.requestDelimited?"encodeDelimited":"encode"](o).finish(),(function(t,n){if(t)return s.emit("error",t,e),a(t);if(null!==n){if(!(n instanceof i))try{n=i[s.responseDelimited?"decodeDelimited":"decode"](n)}catch(t){return s.emit("error",t,e),a(t)}return s.emit("data",n,e),a(null,n)}s.end(!0)}))}catch(l){return s.emit("error",l,e),void setTimeout((function(){a(l)}),0)}else setTimeout((function(){a(Error("already ended"))}),0)},i.prototype.end=function(t){return this.rpcImpl&&(t||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}},1945:function(t,e,n){"use strict";t.exports=i;var r=n(9693);function i(t,e){this.lo=t>>>0,this.hi=e>>>0}var o=i.zero=new i(0,0);o.toNumber=function(){return 0},o.zzEncode=o.zzDecode=function(){return this},o.length=function(){return 1};var a=i.zeroHash="\0\0\0\0\0\0\0\0";i.fromNumber=function(t){if(0===t)return o;var e=t<0;e&&(t=-t);var n=t>>>0,r=(t-n)/4294967296>>>0;return e&&(r=~r>>>0,n=~n>>>0,++n>4294967295&&(n=0,++r>4294967295&&(r=0))),new i(n,r)},i.from=function(t){if("number"===typeof t)return i.fromNumber(t);if(r.isString(t)){if(!r.Long)return i.fromNumber(parseInt(t,10));t=r.Long.fromString(t)}return t.low||t.high?new i(t.low>>>0,t.high>>>0):o},i.prototype.toNumber=function(t){if(!t&&this.hi>>>31){var e=1+~this.lo>>>0,n=~this.hi>>>0;return e||(n=n+1>>>0),-(e+4294967296*n)}return this.lo+4294967296*this.hi},i.prototype.toLong=function(t){return r.Long?new r.Long(0|this.lo,0|this.hi,Boolean(t)):{low:0|this.lo,high:0|this.hi,unsigned:Boolean(t)}};var s=String.prototype.charCodeAt;i.fromHash=function(t){return t===a?o:new i((s.call(t,0)|s.call(t,1)<<8|s.call(t,2)<<16|s.call(t,3)<<24)>>>0,(s.call(t,4)|s.call(t,5)<<8|s.call(t,6)<<16|s.call(t,7)<<24)>>>0)},i.prototype.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},i.prototype.zzEncode=function(){var t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this},i.prototype.zzDecode=function(){var t=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this},i.prototype.length=function(){var t=this.lo,e=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return 0===n?0===e?t<16384?t<128?1:2:t<2097152?3:4:e<16384?e<128?5:6:e<2097152?7:8:n<128?9:10}},9693:function(t,e,n){"use strict";var r=e;function i(t,e,n){for(var r=Object.keys(e),i=0;i0)},r.Buffer=function(){try{var t=r.inquire("buffer").Buffer;return t.prototype.utf8Write?t:null}catch(e){return null}}(),r._Buffer_from=null,r._Buffer_allocUnsafe=null,r.newBuffer=function(t){return"number"===typeof t?r.Buffer?r._Buffer_allocUnsafe(t):new r.Array(t):r.Buffer?r._Buffer_from(t):"undefined"===typeof Uint8Array?t:new Uint8Array(t)},r.Array="undefined"!==typeof Uint8Array?Uint8Array:Array,r.Long=r.global.dcodeIO&&r.global.dcodeIO.Long||r.global.Long||r.inquire("long"),r.key2Re=/^true|false|0|1$/,r.key32Re=/^-?(?:0|[1-9][0-9]*)$/,r.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,r.longToHash=function(t){return t?r.LongBits.from(t).toHash():r.LongBits.zeroHash},r.longFromHash=function(t,e){var n=r.LongBits.fromHash(t);return r.Long?r.Long.fromBits(n.lo,n.hi,e):n.toNumber(Boolean(e))},r.merge=i,r.lcFirst=function(t){return t.charAt(0).toLowerCase()+t.substring(1)},r.newError=o,r.ProtocolError=o("ProtocolError"),r.oneOfGetter=function(t){for(var e={},n=0;n-1;--n)if(1===e[t[n]]&&void 0!==this[t[n]]&&null!==this[t[n]])return t[n]}},r.oneOfSetter=function(t){return function(e){for(var n=0;n127)e[n++]=127&t|128,t>>>=7;e[n]=t}function v(t,e){this.len=t,this.next=void 0,this.val=e}function g(t,e,n){while(t.hi)e[n++]=127&t.lo|128,t.lo=(t.lo>>>7|t.hi<<25)>>>0,t.hi>>>=7;while(t.lo>127)e[n++]=127&t.lo|128,t.lo=t.lo>>>7;e[n++]=t.lo}function y(t,e,n){e[n]=255&t,e[n+1]=t>>>8&255,e[n+2]=t>>>16&255,e[n+3]=t>>>24}f.create=h(),f.alloc=function(t){return new i.Array(t)},i.Array!==Array&&(f.alloc=i.pool(f.alloc,i.Array.prototype.subarray)),f.prototype._push=function(t,e,n){return this.tail=this.tail.next=new l(t,e,n),this.len+=e,this},v.prototype=Object.create(l.prototype),v.prototype.fn=p,f.prototype.uint32=function(t){return this.len+=(this.tail=this.tail.next=new v((t>>>=0)<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)).len,this},f.prototype.int32=function(t){return t<0?this._push(g,10,o.fromNumber(t)):this.uint32(t)},f.prototype.sint32=function(t){return this.uint32((t<<1^t>>31)>>>0)},f.prototype.uint64=function(t){var e=o.from(t);return this._push(g,e.length(),e)},f.prototype.int64=f.prototype.uint64,f.prototype.sint64=function(t){var e=o.from(t).zzEncode();return this._push(g,e.length(),e)},f.prototype.bool=function(t){return this._push(d,1,t?1:0)},f.prototype.fixed32=function(t){return this._push(y,4,t>>>0)},f.prototype.sfixed32=f.prototype.fixed32,f.prototype.fixed64=function(t){var e=o.from(t);return this._push(y,4,e.lo)._push(y,4,e.hi)},f.prototype.sfixed64=f.prototype.fixed64,f.prototype.float=function(t){return this._push(i.float.writeFloatLE,4,t)},f.prototype.double=function(t){return this._push(i.float.writeDoubleLE,8,t)};var m=i.Array.prototype.set?function(t,e,n){e.set(t,n)}:function(t,e,n){for(var r=0;r>>0;if(!e)return this._push(d,1,0);if(i.isString(t)){var n=f.alloc(e=a.length(t));a.decode(t,n,0),t=n}return this.uint32(e)._push(m,e,t)},f.prototype.string=function(t){var e=s.length(t);return e?this.uint32(e)._push(s.write,e,t):this._push(d,1,0)},f.prototype.fork=function(){return this.states=new c(this),this.head=this.tail=new l(u,0,0),this.len=0,this},f.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new l(u,0,0),this.len=0),this},f.prototype.ldelim=function(){var t=this.head,e=this.tail,n=this.len;return this.reset().uint32(n),n&&(this.tail.next=t.next,this.tail=e,this.len+=n),this},f.prototype.finish=function(){var t=this.head.next,e=this.constructor.alloc(this.len),n=0;while(t)t.fn(t.val,e,n),n+=t.len,t=t.next;return e},f._configure=function(t){r=t,f.create=h(),r._configure()}},3155:function(t,e,n){"use strict";t.exports=o;var r=n(1173);(o.prototype=Object.create(r.prototype)).constructor=o;var i=n(9693);function o(){r.call(this)}function a(t,e,n){t.length<40?i.utf8.write(t,e,n):e.utf8Write?e.utf8Write(t,n):e.write(t,n)}o._configure=function(){o.alloc=i._Buffer_allocUnsafe,o.writeBytesBuffer=i.Buffer&&i.Buffer.prototype instanceof Uint8Array&&"set"===i.Buffer.prototype.set.name?function(t,e,n){e.set(t,n)}:function(t,e,n){if(t.copy)t.copy(e,n,0,t.length);else for(var r=0;r>>0;return this.uint32(e),e&&this._push(o.writeBytesBuffer,e,t),this},o.prototype.string=function(t){var e=i.Buffer.byteLength(t);return this.uint32(e),e&&this._push(a,e,t),this},o._configure()},5666:function(t){var e=function(t){"use strict";var e,n=Object.prototype,r=n.hasOwnProperty,i="function"===typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function l(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(E){l=function(t,e,n){return t[e]=n}}function u(t,e,n,r){var i=e&&e.prototype instanceof g?e:g,o=Object.create(i.prototype),a=new M(r||[]);return o._invoke=C(t,n,a),o}function c(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(E){return{type:"throw",arg:E}}}t.wrap=u;var f="suspendedStart",h="suspendedYield",d="executing",p="completed",v={};function g(){}function y(){}function m(){}var _={};l(_,o,(function(){return this}));var b=Object.getPrototypeOf,w=b&&b(b(D([])));w&&w!==n&&r.call(w,o)&&(_=w);var x=m.prototype=g.prototype=Object.create(_);function S(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function k(t,e){function n(i,o,a,s){var l=c(t[i],t,o);if("throw"!==l.type){var u=l.arg,f=u.value;return f&&"object"===typeof f&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){n("next",t,a,s)}),(function(t){n("throw",t,a,s)})):e.resolve(f).then((function(t){u.value=t,a(u)}),(function(t){return n("throw",t,a,s)}))}s(l.arg)}var i;function o(t,r){function o(){return new e((function(e,i){n(t,r,e,i)}))}return i=i?i.then(o,o):o()}this._invoke=o}function C(t,e,n){var r=f;return function(i,o){if(r===d)throw new Error("Generator is already running");if(r===p){if("throw"===i)throw o;return O()}n.method=i,n.arg=o;while(1){var a=n.delegate;if(a){var s=T(a,n);if(s){if(s===v)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===f)throw r=p,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=d;var l=c(t,e,n);if("normal"===l.type){if(r=n.done?p:h,l.arg===v)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r=p,n.method="throw",n.arg=l.arg)}}}function T(t,n){var r=t.iterator[n.method];if(r===e){if(n.delegate=null,"throw"===n.method){if(t.iterator["return"]&&(n.method="return",n.arg=e,T(t,n),"throw"===n.method))return v;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return v}var i=c(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,v;var o=i.arg;return o?o.done?(n[t.resultName]=o.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,v):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function A(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function I(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function M(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(A,this),this.reset(!0)}function D(t){if(t){var n=t[o];if(n)return n.call(t);if("function"===typeof t.next)return t;if(!isNaN(t.length)){var i=-1,a=function n(){while(++i=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var l=r.call(a,"catchLoc"),u=r.call(a,"finallyLoc");if(l&&u){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),I(n),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;I(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:D(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},t}(t.exports);try{regeneratorRuntime=e}catch(n){"object"===typeof globalThis?globalThis.regeneratorRuntime=e:Function("r","regeneratorRuntime = r")(e)}},487:function(t,e,n){"use strict";n.d(e,{bw:function(){return B},ZP:function(){return F}});var r=void 0;var i=n(6252),o=n(2262),a=n(3243),s=n(270),l=null;function u(t){return l||(l=(window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(t){return setTimeout(t,16)}).bind(window)),l(t)}var c=null;function f(t){c||(c=(window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||function(t){clearTimeout(t)}).bind(window)),c(t)}function h(t){var e=document.createElement("style");return e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t)),(document.querySelector("head")||document.body).appendChild(e),e}function d(t,e){void 0===e&&(e={});var n=document.createElement(t);return Object.keys(e).forEach((function(t){n[t]=e[t]})),n}function p(t,e,n){var r=window.getComputedStyle(t,n||null)||{display:"none"};return r[e]}function v(t){if(!document.documentElement.contains(t))return{detached:!0,rendered:!1};var e=t;while(e!==document){if("none"===p(e,"display"))return{detached:!1,rendered:!1};e=e.parentNode}return{detached:!1,rendered:!0}}var g='.resize-triggers{visibility:hidden;opacity:0;pointer-events:none}.resize-contract-trigger,.resize-contract-trigger:before,.resize-expand-trigger,.resize-triggers{content:"";position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden}.resize-contract-trigger,.resize-expand-trigger{background:#eee;overflow:auto}.resize-contract-trigger:before{width:200%;height:200%}',y=0,m=null;function _(t,e){t.__resize_mutation_handler__||(t.__resize_mutation_handler__=x.bind(t));var n=t.__resize_listeners__;if(!n)if(t.__resize_listeners__=[],window.ResizeObserver){var r=t.offsetWidth,i=t.offsetHeight,o=new ResizeObserver((function(){(t.__resize_observer_triggered__||(t.__resize_observer_triggered__=!0,t.offsetWidth!==r||t.offsetHeight!==i))&&k(t)})),a=v(t),s=a.detached,l=a.rendered;t.__resize_observer_triggered__=!1===s&&!1===l,t.__resize_observer__=o,o.observe(t)}else if(t.attachEvent&&t.addEventListener)t.__resize_legacy_resize_handler__=function(){k(t)},t.attachEvent("onresize",t.__resize_legacy_resize_handler__),document.addEventListener("DOMSubtreeModified",t.__resize_mutation_handler__);else if(y||(m=h(g)),C(t),t.__resize_rendered__=v(t).rendered,window.MutationObserver){var u=new MutationObserver(t.__resize_mutation_handler__);u.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0}),t.__resize_mutation_observer__=u}t.__resize_listeners__.push(e),y++}function b(t,e){var n=t.__resize_listeners__;if(n){if(e&&n.splice(n.indexOf(e),1),!n.length||!e){if(t.detachEvent&&t.removeEventListener)return t.detachEvent("onresize",t.__resize_legacy_resize_handler__),void document.removeEventListener("DOMSubtreeModified",t.__resize_mutation_handler__);t.__resize_observer__?(t.__resize_observer__.unobserve(t),t.__resize_observer__.disconnect(),t.__resize_observer__=null):(t.__resize_mutation_observer__&&(t.__resize_mutation_observer__.disconnect(),t.__resize_mutation_observer__=null),t.removeEventListener("scroll",S),t.removeChild(t.__resize_triggers__.triggers),t.__resize_triggers__=null),t.__resize_listeners__=null}!--y&&m&&m.parentNode.removeChild(m)}}function w(t){var e=t.__resize_last__,n=e.width,r=e.height,i=t.offsetWidth,o=t.offsetHeight;return i!==n||o!==r?{width:i,height:o}:null}function x(){var t=v(this),e=t.rendered,n=t.detached;e!==this.__resize_rendered__&&(!n&&this.__resize_triggers__&&(T(this),this.addEventListener("scroll",S,!0)),this.__resize_rendered__=e,k(this))}function S(){var t=this;T(this),this.__resize_raf__&&f(this.__resize_raf__),this.__resize_raf__=u((function(){var e=w(t);e&&(t.__resize_last__=e,k(t))}))}function k(t){t&&t.__resize_listeners__&&t.__resize_listeners__.forEach((function(e){e.call(t,t)}))}function C(t){var e=p(t,"position");e&&"static"!==e||(t.style.position="relative"),t.__resize_old_position__=e,t.__resize_last__={};var n=d("div",{className:"resize-triggers"}),r=d("div",{className:"resize-expand-trigger"}),i=d("div"),o=d("div",{className:"resize-contract-trigger"});r.appendChild(i),n.appendChild(r),n.appendChild(o),t.appendChild(n),t.__resize_triggers__={triggers:n,expand:r,expandChild:i,contract:o},T(t),t.addEventListener("scroll",S,!0),t.__resize_last__={width:t.offsetWidth,height:t.offsetHeight}}function T(t){var e=t.__resize_triggers__,n=e.expand,r=e.expandChild,i=e.contract,o=i.scrollWidth,a=i.scrollHeight,s=n.offsetWidth,l=n.offsetHeight,u=n.scrollWidth,c=n.scrollHeight;i.scrollLeft=o,i.scrollTop=a,r.style.width=s+1+"px",r.style.height=l+1+"px",n.scrollLeft=u,n.scrollTop=c}var A=function(){return(A=Object.assign||function(t){for(var e,n=1,r=arguments.length;n2})).forEach((function(t){var e=t.charAt(2).toLowerCase()+t.slice(3);s[e]=n[t]}))),Object.keys(s).forEach((function(t){var e=s[t];e&&(0===t.indexOf("zr:")?o.getZr().on(t.slice(3).toLowerCase(),e):o.on(t.toLowerCase(),e))})),v.value?(0,i.Y3)((function(){!function(){if(o&&!o.isDisposed())try{o.resize()}catch(e){if("Cannot read property 'get' of undefined"===e.message)return;throw e}}(),c()})):c()}function c(){o.setOption(e||w.value,k.value)}}function I(){u.value&&(u.value.dispose(),u.value=void 0)}var D=null;(0,i.YP)(g,(function(e){"function"==typeof D&&(D(),D=null),e||(D=(0,i.YP)((function(){return t.option}),(function(t){t&&(u.value?u.value.setOption(t,k.value):T())}),{deep:!0}))}),{immediate:!0}),(0,i.YP)([x,S],(function(){I(),T()}),{deep:!0}),(0,i.m0)((function(){t.group&&u.value&&(u.value.group=t.group)}));var O=M(u,T);return function(t,e,n){var r=(0,i.f3)("ecLoadingOptions",{}),a=(0,i.Fl)((function(){return A(A({},(0,o.SU)(r)),null==n?void 0:n.value)}));(0,i.m0)((function(){var n=t.value;n&&(e.value?n.showLoading(a.value):n.hideLoading())}))}(u,y,m),function(t,e,n){var r=null;(0,i.YP)([n,t,e],(function(t,e,n){var i=t[0],o=t[1],a=t[2];i&&o&&a&&(r=(0,s.P2)((function(){o.resize()}),100),_(i,r)),n((function(){r&&i&&b(i,r)}))}))}(u,v,l),(0,i.bv)((function(){t.option&&T()})),(0,i.Ah)(I),A({chart:u,root:l,setOption:function(e,n){t.manualUpdate&&(c.value=e),u.value?u.value.setOption(e,n||{}):T(e)},nonEventAttrs:C},O)},render:function(){var t=A({},this.nonEventAttrs);return t.ref="root",t.class=t.class?["echarts"].concat(t.class):"echarts",(0,i.h)("x-vue-echarts",t)}}),F=Z},3744:function(t,e){"use strict";e.Z=(t,e)=>{const n=t.__vccOpts||t;for(const[r,i]of e)n[r]=i;return n}},2119:function(t,e,n){"use strict";n.d(e,{PO:function(){return H},p7:function(){return te}});var r=n(6252),i=n(2262); +/*! + * vue-router v4.0.10 + * (c) 2021 Eduardo San Martin Morote + * @license MIT + */ +const o="function"===typeof Symbol&&"symbol"===typeof Symbol.toStringTag,a=t=>o?Symbol(t):"_vr_"+t,s=a("rvlm"),l=a("rvd"),u=a("r"),c=a("rl"),f=a("rvl"),h="undefined"!==typeof window;function d(t){return t.__esModule||o&&"Module"===t[Symbol.toStringTag]}const p=Object.assign;function v(t,e){const n={};for(const r in e){const i=e[r];n[r]=Array.isArray(i)?i.map(t):t(i)}return n}let g=()=>{};const y=/\/$/,m=t=>t.replace(y,"");function _(t,e,n="/"){let r,i={},o="",a="";const s=e.indexOf("?"),l=e.indexOf("#",s>-1?s:0);return s>-1&&(r=e.slice(0,s),o=e.slice(s+1,l>-1?l:e.length),i=t(o)),l>-1&&(r=r||e.slice(0,l),a=e.slice(l,e.length)),r=A(null!=r?r:e,n),{fullPath:r+(o&&"?")+o+a,path:r,query:i,hash:a}}function b(t,e){let n=e.query?t(e.query):"";return e.path+(n&&"?")+n+(e.hash||"")}function w(t,e){return e&&t.toLowerCase().startsWith(e.toLowerCase())?t.slice(e.length)||"/":t}function x(t,e,n){let r=e.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&S(e.matched[r],n.matched[i])&&k(e.params,n.params)&&t(e.query)===t(n.query)&&e.hash===n.hash}function S(t,e){return(t.aliasOf||t)===(e.aliasOf||e)}function k(t,e){if(Object.keys(t).length!==Object.keys(e).length)return!1;for(let n in t)if(!C(t[n],e[n]))return!1;return!0}function C(t,e){return Array.isArray(t)?T(t,e):Array.isArray(e)?T(e,t):t===e}function T(t,e){return Array.isArray(e)?t.length===e.length&&t.every(((t,n)=>t===e[n])):1===t.length&&t[0]===e}function A(t,e){if(t.startsWith("/"))return t;if(!t)return e;const n=e.split("/"),r=t.split("/");let i,o,a=n.length-1;for(i=0;i({left:window.pageXOffset,top:window.pageYOffset});function R(t){let e;if("el"in t){let n=t.el;const r="string"===typeof n&&n.startsWith("#");0;const i="string"===typeof n?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;e=P(i,t)}else e=t;"scrollBehavior"in document.documentElement.style?window.scrollTo(e):window.scrollTo(null!=e.left?e.left:window.pageXOffset,null!=e.top?e.top:window.pageYOffset)}function B(t,e){const n=history.state?history.state.position-e:-1;return n+t}const Z=new Map;function F(t,e){Z.set(t,e)}function z(t){const e=Z.get(t);return Z.delete(t),e}let N=()=>location.protocol+"//"+location.host;function W(t,e){const{pathname:n,search:r,hash:i}=e,o=t.indexOf("#");if(o>-1){let e=i.includes(t.slice(o))?t.slice(o).length:1,n=i.slice(e);return"/"!==n[0]&&(n="/"+n),w(n,"")}const a=w(n,t);return a+r+i}function U(t,e,n,r){let i=[],o=[],a=null;const s=({state:o})=>{const s=W(t,location),l=n.value,u=e.value;let c=0;if(o){if(n.value=s,e.value=o,a&&a===l)return void(a=null);c=u?o.position-u.position:0}else r(s);i.forEach((t=>{t(n.value,l,{delta:c,type:I.pop,direction:c?c>0?M.forward:M.back:M.unknown})}))};function l(){a=n.value}function u(t){i.push(t);const e=()=>{const e=i.indexOf(t);e>-1&&i.splice(e,1)};return o.push(e),e}function c(){const{history:t}=window;t.state&&t.replaceState(p({},t.state,{scroll:L()}),"")}function f(){for(const t of o)t();o=[],window.removeEventListener("popstate",s),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",s),window.addEventListener("beforeunload",c),{pauseListeners:l,listen:u,destroy:f}}function V(t,e,n,r=!1,i=!1){return{back:t,current:e,forward:n,replaced:r,position:window.history.length,scroll:i?L():null}}function j(t){const{history:e,location:n}=window;let r={value:W(t,n)},i={value:e.state};function o(r,o,a){const s=t.indexOf("#"),l=s>-1?(n.host&&document.querySelector("base")?t:t.slice(s))+r:N()+t+r;try{e[a?"replaceState":"pushState"](o,"",l),i.value=o}catch(u){console.error(u),n[a?"replace":"assign"](l)}}function a(t,n){const a=p({},e.state,V(i.value.back,t,i.value.forward,!0),n,{position:i.value.position});o(t,a,!0),r.value=t}function s(t,n){const a=p({},i.value,e.state,{forward:t,scroll:L()});o(a.current,a,!0);const s=p({},V(r.value,t,null),{position:a.position+1},n);o(t,s,!1),r.value=t}return i.value||o(r.value,{back:null,current:r.value,forward:null,position:e.length-1,replaced:!0,scroll:null},!0),{location:r,state:i,push:s,replace:a}}function H(t){t=D(t);const e=j(t),n=U(t,e.state,e.location,e.replace);function r(t,e=!0){e||n.pauseListeners(),history.go(t)}const i=p({location:"",base:t,go:r,createHref:E.bind(null,t)},e,n);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>e.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>e.state.value}),i}function G(t){return"string"===typeof t||t&&"object"===typeof t}function q(t){return"string"===typeof t||"symbol"===typeof t}const Y={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},X=a("nf");var $;(function(t){t[t["aborted"]=4]="aborted",t[t["cancelled"]=8]="cancelled",t[t["duplicated"]=16]="duplicated"})($||($={}));function K(t,e){return p(new Error,{type:t,[X]:!0},e)}function J(t,e){return t instanceof Error&&X in t&&(null==e||!!(t.type&e))}const Q="[^/]+?",tt={sensitive:!1,strict:!1,start:!0,end:!0},et=/[.+*?^${}()[\]/\\]/g;function nt(t,e){const n=p({},tt,e);let r=[],i=n.start?"^":"";const o=[];for(const c of t){const t=c.length?[]:[90];n.strict&&!c.length&&(i+="/");for(let e=0;ee.length?1===e.length&&80===e[0]?1:-1:0}function it(t,e){let n=0;const r=t.score,i=e.score;while(n1&&("*"===s||"+"===s)&&e(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:u,regexp:c,repeatable:"*"===s||"+"===s,optional:"*"===s||"?"===s})):e("Invalid state to consume buffer"),u="")}function h(){u+=s}while(l{a(h)}:g}function a(t){if(q(t)){const e=r.get(t);e&&(r.delete(t),n.splice(n.indexOf(e),1),e.children.forEach(a),e.alias.forEach(a))}else{let e=n.indexOf(t);e>-1&&(n.splice(e,1),t.record.name&&r.delete(t.record.name),t.children.forEach(a),t.alias.forEach(a))}}function s(){return n}function l(t){let e=0;while(e=0)e++;n.splice(e,0,t),t.record.name&&!dt(t)&&r.set(t.record.name,t)}function u(t,e){let i,o,a,s={};if("name"in t&&t.name){if(i=r.get(t.name),!i)throw K(1,{location:t});a=i.record.name,s=p(ct(e.params,i.keys.filter((t=>!t.optional)).map((t=>t.name))),t.params),o=i.stringify(s)}else if("path"in t)o=t.path,i=n.find((t=>t.re.test(o))),i&&(s=i.parse(o),a=i.record.name);else{if(i=e.name?r.get(e.name):n.find((t=>t.re.test(e.path))),!i)throw K(1,{location:t,currentLocation:e});a=i.record.name,s=p({},e.params,t.params),o=i.stringify(s)}const l=[];let u=i;while(u)l.unshift(u.record),u=u.parent;return{name:a,path:o,params:s,matched:l,meta:pt(l)}}return e=vt({strict:!1,end:!0,sensitive:!1},e),t.forEach((t=>o(t))),{addRoute:o,resolve:u,removeRoute:a,getRoutes:s,getRecordMatcher:i}}function ct(t,e){let n={};for(let r of e)r in t&&(n[r]=t[r]);return n}function ft(t){return{path:t.path,redirect:t.redirect,name:t.name,meta:t.meta||{},aliasOf:void 0,beforeEnter:t.beforeEnter,props:ht(t),children:t.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in t?t.components||{}:{default:t.component}}}function ht(t){const e={},n=t.props||!1;if("component"in t)e.default=n;else for(let r in t.components)e[r]="boolean"===typeof n?n:n[r];return e}function dt(t){while(t){if(t.record.aliasOf)return!0;t=t.parent}return!1}function pt(t){return t.reduce(((t,e)=>p(t,e.meta)),{})}function vt(t,e){let n={};for(let r in t)n[r]=r in e?e[r]:t[r];return n}const gt=/#/g,yt=/&/g,mt=/\//g,_t=/=/g,bt=/\?/g,wt=/\+/g,xt=/%5B/g,St=/%5D/g,kt=/%5E/g,Ct=/%60/g,Tt=/%7B/g,At=/%7C/g,It=/%7D/g,Mt=/%20/g;function Dt(t){return encodeURI(""+t).replace(At,"|").replace(xt,"[").replace(St,"]")}function Ot(t){return Dt(t).replace(Tt,"{").replace(It,"}").replace(kt,"^")}function Et(t){return Dt(t).replace(wt,"%2B").replace(Mt,"+").replace(gt,"%23").replace(yt,"%26").replace(Ct,"`").replace(Tt,"{").replace(It,"}").replace(kt,"^")}function Pt(t){return Et(t).replace(_t,"%3D")}function Lt(t){return Dt(t).replace(gt,"%23").replace(bt,"%3F")}function Rt(t){return Lt(t).replace(mt,"%2F")}function Bt(t){try{return decodeURIComponent(""+t)}catch(e){}return""+t}function Zt(t){const e={};if(""===t||"?"===t)return e;const n="?"===t[0],r=(n?t.slice(1):t).split("&");for(let i=0;it&&Et(t))):[r&&Et(r)];i.forEach((t=>{void 0!==t&&(e+=(e.length?"&":"")+n,null!=t&&(e+="="+t))}))}return e}function zt(t){const e={};for(let n in t){let r=t[n];void 0!==r&&(e[n]=Array.isArray(r)?r.map((t=>null==t?null:""+t)):null==r?r:""+r)}return e}function Nt(){let t=[];function e(e){return t.push(e),()=>{const n=t.indexOf(e);n>-1&&t.splice(n,1)}}function n(){t=[]}return{add:e,list:()=>t,reset:n}}function Wt(t,e,n,r,i){const o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise(((a,s)=>{const l=t=>{!1===t?s(K(4,{from:n,to:e})):t instanceof Error?s(t):G(t)?s(K(2,{from:e,to:t})):(o&&r.enterCallbacks[i]===o&&"function"===typeof t&&o.push(t),a())},u=t.call(r&&r.instances[i],e,n,l);let c=Promise.resolve(u);t.length<3&&(c=c.then(l)),c.catch((t=>s(t)))}))}function Ut(t,e,n,r){const i=[];for(const o of t)for(const t in o.components){let a=o.components[t];if("beforeRouteEnter"===e||o.instances[t])if(Vt(a)){let s=a.__vccOpts||a;const l=s[e];l&&i.push(Wt(l,n,r,o,t))}else{let s=a();0,i.push((()=>s.then((i=>{if(!i)return Promise.reject(new Error(`Couldn't resolve component "${t}" at "${o.path}"`));const a=d(i)?i.default:i;o.components[t]=a;let s=a.__vccOpts||a;const l=s[e];return l&&Wt(l,n,r,o,t)()}))))}}return i}function Vt(t){return"object"===typeof t||"displayName"in t||"props"in t||"__vccOpts"in t}function jt(t){const e=(0,r.f3)(u),n=(0,r.f3)(c),o=(0,r.Fl)((()=>e.resolve((0,i.SU)(t.to)))),a=(0,r.Fl)((()=>{let{matched:t}=o.value,{length:e}=t;const r=t[e-1];let i=n.matched;if(!r||!i.length)return-1;let a=i.findIndex(S.bind(null,r));if(a>-1)return a;let s=Xt(t[e-2]);return e>1&&Xt(r)===s&&i[i.length-1].path!==s?i.findIndex(S.bind(null,t[e-2])):a})),s=(0,r.Fl)((()=>a.value>-1&&Yt(n.params,o.value.params))),l=(0,r.Fl)((()=>a.value>-1&&a.value===n.matched.length-1&&k(n.params,o.value.params)));function f(n={}){return qt(n)?e[(0,i.SU)(t.replace)?"replace":"push"]((0,i.SU)(t.to)).catch(g):Promise.resolve()}return{route:o,href:(0,r.Fl)((()=>o.value.href)),isActive:s,isExactActive:l,navigate:f}}const Ht=(0,r.aZ)({name:"RouterLink",props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:jt,setup(t,{slots:e}){const n=(0,i.qj)(jt(t)),{options:o}=(0,r.f3)(u),a=(0,r.Fl)((()=>({[$t(t.activeClass,o.linkActiveClass,"router-link-active")]:n.isActive,[$t(t.exactActiveClass,o.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive})));return()=>{const i=e.default&&e.default(n);return t.custom?i:(0,r.h)("a",{"aria-current":n.isExactActive?t.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:a.value},i)}}}),Gt=Ht;function qt(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&!t.defaultPrevented&&(void 0===t.button||0===t.button)){if(t.currentTarget&&t.currentTarget.getAttribute){const e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function Yt(t,e){for(let n in e){let r=e[n],i=t[n];if("string"===typeof r){if(r!==i)return!1}else if(!Array.isArray(i)||i.length!==r.length||r.some(((t,e)=>t!==i[e])))return!1}return!0}function Xt(t){return t?t.aliasOf?t.aliasOf.path:t.path:""}const $t=(t,e,n)=>null!=t?t:null!=e?e:n,Kt=(0,r.aZ)({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},setup(t,{attrs:e,slots:n}){const o=(0,r.f3)(f),a=(0,r.Fl)((()=>t.route||o.value)),u=(0,r.f3)(l,0),c=(0,r.Fl)((()=>a.value.matched[u]));(0,r.JJ)(l,u+1),(0,r.JJ)(s,c),(0,r.JJ)(f,a);const h=(0,i.iH)();return(0,r.YP)((()=>[h.value,c.value,t.name]),(([t,e,n],[r,i,o])=>{e&&(e.instances[n]=t,i&&i!==e&&t&&t===r&&(e.leaveGuards.size||(e.leaveGuards=i.leaveGuards),e.updateGuards.size||(e.updateGuards=i.updateGuards))),!t||!e||i&&S(e,i)&&r||(e.enterCallbacks[n]||[]).forEach((e=>e(t)))}),{flush:"post"}),()=>{const i=a.value,o=c.value,s=o&&o.components[t.name],l=t.name;if(!s)return Jt(n.default,{Component:s,route:i});const u=o.props[t.name],f=u?!0===u?i.params:"function"===typeof u?u(i):u:null,d=t=>{t.component.isUnmounted&&(o.instances[l]=null)},v=(0,r.h)(s,p({},f,e,{onVnodeUnmounted:d,ref:h}));return Jt(n.default,{Component:v,route:i})||v}}});function Jt(t,e){if(!t)return null;const n=t(e);return 1===n.length?n[0]:n}const Qt=Kt;function te(t){const e=ut(t.routes,t);let n=t.parseQuery||Zt,o=t.stringifyQuery||Ft,a=t.history;const s=Nt(),l=Nt(),d=Nt(),y=(0,i.XI)(Y);let m=Y;h&&t.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const w=v.bind(null,(t=>""+t)),S=v.bind(null,Rt),k=v.bind(null,Bt);function C(t,n){let r,i;return q(t)?(r=e.getRecordMatcher(t),i=n):i=t,e.addRoute(i,r)}function T(t){let n=e.getRecordMatcher(t);n&&e.removeRoute(n)}function A(){return e.getRoutes().map((t=>t.record))}function M(t){return!!e.getRecordMatcher(t)}function D(t,r){if(r=p({},r||y.value),"string"===typeof t){let i=_(n,t,r.path),o=e.resolve({path:i.path},r),s=a.createHref(i.fullPath);return p(i,o,{params:k(o.params),hash:Bt(i.hash),redirectedFrom:void 0,href:s})}let i;"path"in t?i=p({},t,{path:_(n,t.path,r.path).path}):(i=p({},t,{params:S(t.params)}),r.params=S(r.params));let s=e.resolve(i,r);const l=t.hash||"";s.params=w(k(s.params));const u=b(o,p({},t,{hash:Ot(l),path:s.path}));let c=a.createHref(u);return p({fullPath:u,hash:l,query:o===Ft?zt(t.query):t.query},s,{redirectedFrom:void 0,href:c})}function O(t){return"string"===typeof t?_(n,t,y.value.path):p({},t)}function E(t,e){if(m!==t)return K(8,{from:e,to:t})}function P(t){return W(t)}function Z(t){return P(p(O(t),{replace:!0}))}function N(t){const e=t.matched[t.matched.length-1];if(e&&e.redirect){const{redirect:n}=e;let r="function"===typeof n?n(t):n;return"string"===typeof r&&(r=r.includes("?")||r.includes("#")?r=O(r):{path:r},r.params={}),p({query:t.query,hash:t.hash,params:t.params},r)}}function W(t,e){const n=m=D(t),r=y.value,i=t.state,a=t.force,s=!0===t.replace,l=N(n);if(l)return W(p(O(l),{state:i,force:a,replace:s}),e||n);const u=n;let c;return u.redirectedFrom=e,!a&&x(o,r,n)&&(c=K(16,{to:u,from:r}),it(r,r,!0,!1)),(c?Promise.resolve(c):V(u,r)).catch((t=>J(t)?t:et(t,u,r))).then((t=>{if(t){if(J(t,2))return W(p(O(t.to),{state:i,force:a,replace:s}),e||u)}else t=H(u,r,!0,s,i);return j(u,r,t),t}))}function U(t,e){const n=E(t,e);return n?Promise.reject(n):Promise.resolve()}function V(t,e){let n;const[r,i,o]=ne(t,e);n=Ut(r.reverse(),"beforeRouteLeave",t,e);for(const s of r)s.leaveGuards.forEach((r=>{n.push(Wt(r,t,e))}));const a=U.bind(null,t,e);return n.push(a),ee(n).then((()=>{n=[];for(const r of s.list())n.push(Wt(r,t,e));return n.push(a),ee(n)})).then((()=>{n=Ut(i,"beforeRouteUpdate",t,e);for(const r of i)r.updateGuards.forEach((r=>{n.push(Wt(r,t,e))}));return n.push(a),ee(n)})).then((()=>{n=[];for(const r of t.matched)if(r.beforeEnter&&!e.matched.includes(r))if(Array.isArray(r.beforeEnter))for(const i of r.beforeEnter)n.push(Wt(i,t,e));else n.push(Wt(r.beforeEnter,t,e));return n.push(a),ee(n)})).then((()=>(t.matched.forEach((t=>t.enterCallbacks={})),n=Ut(o,"beforeRouteEnter",t,e),n.push(a),ee(n)))).then((()=>{n=[];for(const r of l.list())n.push(Wt(r,t,e));return n.push(a),ee(n)})).catch((t=>J(t,8)?t:Promise.reject(t)))}function j(t,e,n){for(const r of d.list())r(t,e,n)}function H(t,e,n,r,i){const o=E(t,e);if(o)return o;const s=e===Y,l=h?history.state:{};n&&(r||s?a.replace(t.fullPath,p({scroll:s&&l&&l.scroll},i)):a.push(t.fullPath,i)),y.value=t,it(t,e,n,s),rt()}let G;function X(){G=a.listen(((t,e,n)=>{let r=D(t);const i=N(r);if(i)return void W(p(i,{replace:!0}),r).catch(g);m=r;const o=y.value;h&&F(B(o.fullPath,n.delta),L()),V(r,o).catch((t=>J(t,12)?t:J(t,2)?(W(t.to,r).then((t=>{J(t,20)&&!n.delta&&n.type===I.pop&&a.go(-1,!1)})).catch(g),Promise.reject()):(n.delta&&a.go(-n.delta,!1),et(t,r,o)))).then((t=>{t=t||H(r,o,!1),t&&(n.delta?a.go(-n.delta,!1):n.type===I.pop&&J(t,20)&&a.go(-1,!1)),j(r,o,t)})).catch(g)}))}let $,Q=Nt(),tt=Nt();function et(t,e,n){rt(t);const r=tt.list();return r.length?r.forEach((r=>r(t,e,n))):console.error(t),Promise.reject(t)}function nt(){return $&&y.value!==Y?Promise.resolve():new Promise(((t,e)=>{Q.add([t,e])}))}function rt(t){$||($=!0,X(),Q.list().forEach((([e,n])=>t?n(t):e())),Q.reset())}function it(e,n,i,o){const{scrollBehavior:a}=t;if(!h||!a)return Promise.resolve();let s=!i&&z(B(e.fullPath,0))||(o||!i)&&history.state&&history.state.scroll||null;return(0,r.Y3)().then((()=>a(e,n,s))).then((t=>t&&R(t))).catch((t=>et(t,e,n)))}const ot=t=>a.go(t);let at;const st=new Set,lt={currentRoute:y,addRoute:C,removeRoute:T,hasRoute:M,getRoutes:A,resolve:D,options:t,push:P,replace:Z,go:ot,back:()=>ot(-1),forward:()=>ot(1),beforeEach:s.add,beforeResolve:l.add,afterEach:d.add,onError:tt.add,isReady:nt,install(t){const e=this;t.component("RouterLink",Gt),t.component("RouterView",Qt),t.config.globalProperties.$router=e,Object.defineProperty(t.config.globalProperties,"$route",{enumerable:!0,get:()=>(0,i.SU)(y)}),h&&!at&&y.value===Y&&(at=!0,P(a.location).catch((t=>{0})));const n={};for(let i in Y)n[i]=(0,r.Fl)((()=>y.value[i]));t.provide(u,e),t.provide(c,(0,i.qj)(n)),t.provide(f,y);let o=t.unmount;st.add(t),t.unmount=function(){st.delete(t),st.size<1&&(G(),y.value=Y,at=!1,$=!1),o()}}};return lt}function ee(t){return t.reduce(((t,e)=>t.then((()=>e()))),Promise.resolve())}function ne(t,e){const n=[],r=[],i=[],o=Math.max(e.matched.length,t.matched.length);for(let a=0;aS(t,o)))?r.push(o):n.push(o));const s=t.matched[a];s&&(e.matched.find((t=>S(t,s)))||i.push(s))}return[n,r,i]}},8410:function(t,e,n){"use strict";n.d(e,{MT:function(){return q}});var r=n(6252),i=n(2262);function o(){return a().__VUE_DEVTOOLS_GLOBAL_HOOK__}function a(){return"undefined"!==typeof navigator?window:"undefined"!==typeof n.g?n.g:{}}const s="devtools-plugin:setup";function l(t,e){const n=o();if(n)n.emit(s,t,e);else{const n=a(),r=n.__VUE_DEVTOOLS_PLUGINS__=n.__VUE_DEVTOOLS_PLUGINS__||[];r.push({pluginDescriptor:t,setupFn:e})}} +/*! + * vuex v4.0.2 + * (c) 2021 Evan You + * @license MIT + */ +var u="store";function c(t,e){Object.keys(t).forEach((function(n){return e(t[n],n)}))}function f(t){return null!==t&&"object"===typeof t}function h(t){return t&&"function"===typeof t.then}function d(t,e){return function(){return t(e)}}function p(t,e,n){return e.indexOf(t)<0&&(n&&n.prepend?e.unshift(t):e.push(t)),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}function v(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;y(t,n,[],t._modules.root,!0),g(t,n,e)}function g(t,e,n){var r=t._state;t.getters={},t._makeLocalGettersCache=Object.create(null);var o=t._wrappedGetters,a={};c(o,(function(e,n){a[n]=d(e,t),Object.defineProperty(t.getters,n,{get:function(){return a[n]()},enumerable:!0})})),t._state=(0,i.qj)({data:e}),t.strict&&S(t),r&&n&&t._withCommit((function(){r.data=null}))}function y(t,e,n,r,i){var o=!n.length,a=t._modules.getNamespace(n);if(r.namespaced&&(t._modulesNamespaceMap[a],t._modulesNamespaceMap[a]=r),!o&&!i){var s=k(e,n.slice(0,-1)),l=n[n.length-1];t._withCommit((function(){s[l]=r.state}))}var u=r.context=m(t,a,n);r.forEachMutation((function(e,n){var r=a+n;b(t,r,e,u)})),r.forEachAction((function(e,n){var r=e.root?n:a+n,i=e.handler||e;w(t,r,i,u)})),r.forEachGetter((function(e,n){var r=a+n;x(t,r,e,u)})),r.forEachChild((function(r,o){y(t,e,n.concat(o),r,i)}))}function m(t,e,n){var r=""===e,i={dispatch:r?t.dispatch:function(n,r,i){var o=C(n,r,i),a=o.payload,s=o.options,l=o.type;return s&&s.root||(l=e+l),t.dispatch(l,a)},commit:r?t.commit:function(n,r,i){var o=C(n,r,i),a=o.payload,s=o.options,l=o.type;s&&s.root||(l=e+l),t.commit(l,a,s)}};return Object.defineProperties(i,{getters:{get:r?function(){return t.getters}:function(){return _(t,e)}},state:{get:function(){return k(t.state,n)}}}),i}function _(t,e){if(!t._makeLocalGettersCache[e]){var n={},r=e.length;Object.keys(t.getters).forEach((function(i){if(i.slice(0,r)===e){var o=i.slice(r);Object.defineProperty(n,o,{get:function(){return t.getters[i]},enumerable:!0})}})),t._makeLocalGettersCache[e]=n}return t._makeLocalGettersCache[e]}function b(t,e,n,r){var i=t._mutations[e]||(t._mutations[e]=[]);i.push((function(e){n.call(t,r.state,e)}))}function w(t,e,n,r){var i=t._actions[e]||(t._actions[e]=[]);i.push((function(e){var i=n.call(t,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:t.getters,rootState:t.state},e);return h(i)||(i=Promise.resolve(i)),t._devtoolHook?i.catch((function(e){throw t._devtoolHook.emit("vuex:error",e),e})):i}))}function x(t,e,n,r){t._wrappedGetters[e]||(t._wrappedGetters[e]=function(t){return n(r.state,r.getters,t.state,t.getters)})}function S(t){(0,r.YP)((function(){return t._state.data}),(function(){0}),{deep:!0,flush:"sync"})}function k(t,e){return e.reduce((function(t,e){return t[e]}),t)}function C(t,e,n){return f(t)&&t.type&&(n=e,e=t,t=t.type),{type:t,payload:e,options:n}}var T="vuex bindings",A="vuex:mutations",I="vuex:actions",M="vuex",D=0;function O(t,e){l({id:"org.vuejs.vuex",app:t,label:"Vuex",homepage:"https://next.vuex.vuejs.org/",logo:"https://vuejs.org/images/icons/favicon-96x96.png",packageName:"vuex",componentStateTypes:[T]},(function(n){n.addTimelineLayer({id:A,label:"Vuex Mutations",color:E}),n.addTimelineLayer({id:I,label:"Vuex Actions",color:E}),n.addInspector({id:M,label:"Vuex",icon:"storage",treeFilterPlaceholder:"Filter stores..."}),n.on.getInspectorTree((function(n){if(n.app===t&&n.inspectorId===M)if(n.filter){var r=[];F(r,e._modules.root,n.filter,""),n.rootNodes=r}else n.rootNodes=[Z(e._modules.root,"")]})),n.on.getInspectorState((function(n){if(n.app===t&&n.inspectorId===M){var r=n.nodeId;_(e,r),n.state=z(W(e._modules,r),"root"===r?e.getters:e._makeLocalGettersCache,r)}})),n.on.editInspectorState((function(n){if(n.app===t&&n.inspectorId===M){var r=n.nodeId,i=n.path;"root"!==r&&(i=r.split("/").filter(Boolean).concat(i)),e._withCommit((function(){n.set(e._state.data,i,n.state.value)}))}})),e.subscribe((function(t,e){var r={};t.payload&&(r.payload=t.payload),r.state=e,n.notifyComponentUpdate(),n.sendInspectorTree(M),n.sendInspectorState(M),n.addTimelineEvent({layerId:A,event:{time:Date.now(),title:t.type,data:r}})})),e.subscribeAction({before:function(t,e){var r={};t.payload&&(r.payload=t.payload),t._id=D++,t._time=Date.now(),r.state=e,n.addTimelineEvent({layerId:I,event:{time:t._time,title:t.type,groupId:t._id,subtitle:"start",data:r}})},after:function(t,e){var r={},i=Date.now()-t._time;r.duration={_custom:{type:"duration",display:i+"ms",tooltip:"Action duration",value:i}},t.payload&&(r.payload=t.payload),r.state=e,n.addTimelineEvent({layerId:I,event:{time:Date.now(),title:t.type,groupId:t._id,subtitle:"end",data:r}})}})}))}var E=8702998,P=6710886,L=16777215,R={label:"namespaced",textColor:L,backgroundColor:P};function B(t){return t&&"root"!==t?t.split("/").slice(-2,-1)[0]:"Root"}function Z(t,e){return{id:e||"root",label:B(e),tags:t.namespaced?[R]:[],children:Object.keys(t._children).map((function(n){return Z(t._children[n],e+n+"/")}))}}function F(t,e,n,r){r.includes(n)&&t.push({id:r||"root",label:r.endsWith("/")?r.slice(0,r.length-1):r||"Root",tags:e.namespaced?[R]:[]}),Object.keys(e._children).forEach((function(i){F(t,e._children[i],n,r+i+"/")}))}function z(t,e,n){e="root"===n?e:e[n];var r=Object.keys(e),i={state:Object.keys(t.state).map((function(e){return{key:e,editable:!0,value:t.state[e]}}))};if(r.length){var o=N(e);i.getters=Object.keys(o).map((function(t){return{key:t.endsWith("/")?B(t):t,editable:!1,value:U((function(){return o[t]}))}}))}return i}function N(t){var e={};return Object.keys(t).forEach((function(n){var r=n.split("/");if(r.length>1){var i=e,o=r.pop();r.forEach((function(t){i[t]||(i[t]={_custom:{value:{},display:t,tooltip:"Module",abstract:!0}}),i=i[t]._custom.value})),i[o]=U((function(){return t[n]}))}else e[n]=U((function(){return t[n]}))})),e}function W(t,e){var n=e.split("/").filter((function(t){return t}));return n.reduce((function(t,r,i){var o=t[r];if(!o)throw new Error('Missing module "'+r+'" for path "'+e+'".');return i===n.length-1?o:o._children}),"root"===e?t:t.root._children)}function U(t){try{return t()}catch(e){return e}}var V=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var n=t.state;this.state=("function"===typeof n?n():n)||{}},j={namespaced:{configurable:!0}};j.namespaced.get=function(){return!!this._rawModule.namespaced},V.prototype.addChild=function(t,e){this._children[t]=e},V.prototype.removeChild=function(t){delete this._children[t]},V.prototype.getChild=function(t){return this._children[t]},V.prototype.hasChild=function(t){return t in this._children},V.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},V.prototype.forEachChild=function(t){c(this._children,t)},V.prototype.forEachGetter=function(t){this._rawModule.getters&&c(this._rawModule.getters,t)},V.prototype.forEachAction=function(t){this._rawModule.actions&&c(this._rawModule.actions,t)},V.prototype.forEachMutation=function(t){this._rawModule.mutations&&c(this._rawModule.mutations,t)},Object.defineProperties(V.prototype,j);var H=function(t){this.register([],t,!1)};function G(t,e,n){if(e.update(n),n.modules)for(var r in n.modules){if(!e.getChild(r))return void 0;G(t.concat(r),e.getChild(r),n.modules[r])}}H.prototype.get=function(t){return t.reduce((function(t,e){return t.getChild(e)}),this.root)},H.prototype.getNamespace=function(t){var e=this.root;return t.reduce((function(t,n){return e=e.getChild(n),t+(e.namespaced?n+"/":"")}),"")},H.prototype.update=function(t){G([],this.root,t)},H.prototype.register=function(t,e,n){var r=this;void 0===n&&(n=!0);var i=new V(e,n);if(0===t.length)this.root=i;else{var o=this.get(t.slice(0,-1));o.addChild(t[t.length-1],i)}e.modules&&c(e.modules,(function(e,i){r.register(t.concat(i),e,n)}))},H.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1],r=e.getChild(n);r&&r.runtime&&e.removeChild(n)},H.prototype.isRegistered=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1];return!!e&&e.hasChild(n)};function q(t){return new Y(t)}var Y=function(t){var e=this;void 0===t&&(t={});var n=t.plugins;void 0===n&&(n=[]);var r=t.strict;void 0===r&&(r=!1);var i=t.devtools;this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new H(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._makeLocalGettersCache=Object.create(null),this._devtools=i;var o=this,a=this,s=a.dispatch,l=a.commit;this.dispatch=function(t,e){return s.call(o,t,e)},this.commit=function(t,e,n){return l.call(o,t,e,n)},this.strict=r;var u=this._modules.root.state;y(this,u,[],this._modules.root),g(this,u),n.forEach((function(t){return t(e)}))},X={state:{configurable:!0}};Y.prototype.install=function(t,e){t.provide(e||u,this),t.config.globalProperties.$store=this;var n=void 0!==this._devtools&&this._devtools;n&&O(t,this)},X.state.get=function(){return this._state.data},X.state.set=function(t){0},Y.prototype.commit=function(t,e,n){var r=this,i=C(t,e,n),o=i.type,a=i.payload,s=(i.options,{type:o,payload:a}),l=this._mutations[o];l&&(this._withCommit((function(){l.forEach((function(t){t(a)}))})),this._subscribers.slice().forEach((function(t){return t(s,r.state)})))},Y.prototype.dispatch=function(t,e){var n=this,r=C(t,e),i=r.type,o=r.payload,a={type:i,payload:o},s=this._actions[i];if(s){try{this._actionSubscribers.slice().filter((function(t){return t.before})).forEach((function(t){return t.before(a,n.state)}))}catch(u){0}var l=s.length>1?Promise.all(s.map((function(t){return t(o)}))):s[0](o);return new Promise((function(t,e){l.then((function(e){try{n._actionSubscribers.filter((function(t){return t.after})).forEach((function(t){return t.after(a,n.state)}))}catch(u){0}t(e)}),(function(t){try{n._actionSubscribers.filter((function(t){return t.error})).forEach((function(e){return e.error(a,n.state,t)}))}catch(u){0}e(t)}))}))}},Y.prototype.subscribe=function(t,e){return p(t,this._subscribers,e)},Y.prototype.subscribeAction=function(t,e){var n="function"===typeof t?{before:t}:t;return p(n,this._actionSubscribers,e)},Y.prototype.watch=function(t,e,n){var i=this;return(0,r.YP)((function(){return t(i.state,i.getters)}),e,Object.assign({},n))},Y.prototype.replaceState=function(t){var e=this;this._withCommit((function(){e._state.data=t}))},Y.prototype.registerModule=function(t,e,n){void 0===n&&(n={}),"string"===typeof t&&(t=[t]),this._modules.register(t,e),y(this,this.state,t,this._modules.get(t),n.preserveState),g(this,this.state)},Y.prototype.unregisterModule=function(t){var e=this;"string"===typeof t&&(t=[t]),this._modules.unregister(t),this._withCommit((function(){var n=k(e.state,t.slice(0,-1));delete n[t[t.length-1]]})),v(this)},Y.prototype.hasModule=function(t){return"string"===typeof t&&(t=[t]),this._modules.isRegistered(t)},Y.prototype.hotUpdate=function(t){this._modules.update(t),v(this,!0)},Y.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(Y.prototype,X);J((function(t,e){var n={};return $(e).forEach((function(e){var r=e.key,i=e.val;n[r]=function(){var e=this.$store.state,n=this.$store.getters;if(t){var r=Q(this.$store,"mapState",t);if(!r)return;e=r.context.state,n=r.context.getters}return"function"===typeof i?i.call(this,e,n):e[i]},n[r].vuex=!0})),n})),J((function(t,e){var n={};return $(e).forEach((function(e){var r=e.key,i=e.val;n[r]=function(){var e=[],n=arguments.length;while(n--)e[n]=arguments[n];var r=this.$store.commit;if(t){var o=Q(this.$store,"mapMutations",t);if(!o)return;r=o.context.commit}return"function"===typeof i?i.apply(this,[r].concat(e)):r.apply(this.$store,[i].concat(e))}})),n})),J((function(t,e){var n={};return $(e).forEach((function(e){var r=e.key,i=e.val;i=t+i,n[r]=function(){if(!t||Q(this.$store,"mapGetters",t))return this.$store.getters[i]},n[r].vuex=!0})),n})),J((function(t,e){var n={};return $(e).forEach((function(e){var r=e.key,i=e.val;n[r]=function(){var e=[],n=arguments.length;while(n--)e[n]=arguments[n];var r=this.$store.dispatch;if(t){var o=Q(this.$store,"mapActions",t);if(!o)return;r=o.context.dispatch}return"function"===typeof i?i.apply(this,[r].concat(e)):r.apply(this.$store,[i].concat(e))}})),n}));function $(t){return K(t)?Array.isArray(t)?t.map((function(t){return{key:t,val:t}})):Object.keys(t).map((function(e){return{key:e,val:t[e]}})):[]}function K(t){return Array.isArray(t)||f(t)}function J(t){return function(e,n){return"string"!==typeof e?(n=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,n)}}function Q(t,e,n){var r=t._modulesNamespaceMap[n];return r}},5823:function(t,e,n){"use strict";var r=n(7411),i=n(5024),o=n(479),a=n(3510),s=n(423),l=n(3051),u=n(4990),c=n(1092),f=n(4414),h="__zr_normal__",d=r.dN.concat(["ignore"]),p=(0,l.u4)(r.dN,(function(t,e){return t[e]=!0,t}),{ignore:!1}),v={},g=new o.Z(0,0,0,0),y=function(){function t(t){this.id=(0,l.M8)(),this.animators=[],this.currentStates=[],this.states={},this._init(t)}return t.prototype._init=function(t){this.attr(t)},t.prototype.drift=function(t,e,n){switch(this.draggable){case"horizontal":e=0;break;case"vertical":t=0;break}var r=this.transform;r||(r=this.transform=[1,0,0,1,0,0]),r[4]+=t,r[5]+=e,this.decomposeTransform(),this.markRedraw()},t.prototype.beforeUpdate=function(){},t.prototype.afterUpdate=function(){},t.prototype.update=function(){this.updateTransform(),this.__dirty&&this.updateInnerText()},t.prototype.updateInnerText=function(t){var e=this._textContent;if(e&&(!e.ignore||t)){this.textConfig||(this.textConfig={});var n=this.textConfig,r=n.local,i=e.innerTransformable,o=void 0,a=void 0,l=!1;i.parent=r?this:null;var u=!1;if(i.copyTransform(e),null!=n.position){var c=g;n.layoutRect?c.copy(n.layoutRect):c.copy(this.getBoundingRect()),r||c.applyTransform(this.transform),this.calculateTextPosition?this.calculateTextPosition(v,n,c):(0,s.wI)(v,n,c),i.x=v.x,i.y=v.y,o=v.align,a=v.verticalAlign;var h=n.origin;if(h&&null!=n.rotation){var d=void 0,p=void 0;"center"===h?(d=.5*c.width,p=.5*c.height):(d=(0,s.GM)(h[0],c.width),p=(0,s.GM)(h[1],c.height)),u=!0,i.originX=-i.x+d+(r?0:c.x),i.originY=-i.y+p+(r?0:c.y)}}null!=n.rotation&&(i.rotation=n.rotation);var y=n.offset;y&&(i.x+=y[0],i.y+=y[1],u||(i.originX=-y[0],i.originY=-y[1]));var m=null==n.inside?"string"===typeof n.position&&n.position.indexOf("inside")>=0:n.inside,_=this._innerTextDefaultStyle||(this._innerTextDefaultStyle={}),b=void 0,w=void 0,x=void 0;m&&this.canBeInsideText()?(b=n.insideFill,w=n.insideStroke,null!=b&&"auto"!==b||(b=this.getInsideTextFill()),null!=w&&"auto"!==w||(w=this.getInsideTextStroke(b),x=!0)):(b=n.outsideFill,w=n.outsideStroke,null!=b&&"auto"!==b||(b=this.getOutsideFill()),null!=w&&"auto"!==w||(w=this.getOutsideStroke(b),x=!0)),b=b||"#000",b===_.fill&&w===_.stroke&&x===_.autoStroke&&o===_.align&&a===_.verticalAlign||(l=!0,_.fill=b,_.stroke=w,_.autoStroke=x,_.align=o,_.verticalAlign=a,e.setDefaultTextStyle(_)),e.__dirty|=f.YV,l&&e.dirtyStyle(!0)}},t.prototype.canBeInsideText=function(){return!0},t.prototype.getInsideTextFill=function(){return"#fff"},t.prototype.getInsideTextStroke=function(t){return"#000"},t.prototype.getOutsideFill=function(){return this.__zr&&this.__zr.isDarkMode()?u.GD:u.vU},t.prototype.getOutsideStroke=function(t){var e=this.__zr&&this.__zr.getBackgroundColor(),n="string"===typeof e&&(0,c.Qc)(e);n||(n=[255,255,255,1]);for(var r=n[3],i=this.__zr.isDarkMode(),o=0;o<3;o++)n[o]=n[o]*r+(i?0:255)*(1-r);return n[3]=1,(0,c.Pz)(n,"rgba")},t.prototype.traverse=function(t,e){},t.prototype.attrKV=function(t,e){"textConfig"===t?this.setTextConfig(e):"textContent"===t?this.setTextContent(e):"clipPath"===t?this.setClipPath(e):"extra"===t?(this.extra=this.extra||{},(0,l.l7)(this.extra,e)):this[t]=e},t.prototype.hide=function(){this.ignore=!0,this.markRedraw()},t.prototype.show=function(){this.ignore=!1,this.markRedraw()},t.prototype.attr=function(t,e){if("string"===typeof t)this.attrKV(t,e);else if((0,l.Kn)(t))for(var n=t,r=(0,l.XP)(n),i=0;i0},t.prototype.getState=function(t){return this.states[t]},t.prototype.ensureState=function(t){var e=this.states;return e[t]||(e[t]={}),e[t]},t.prototype.clearStates=function(t){this.useState(h,!1,t)},t.prototype.useState=function(t,e,n,r){var i=t===h,o=this.hasState();if(o||!i){var a=this.currentStates,s=this.stateTransition;if(!((0,l.cq)(a,t)>=0)||!e&&1!==a.length){var u;if(this.stateProxy&&!i&&(u=this.stateProxy(t)),u||(u=this.states&&this.states[t]),u||i){i||this.saveCurrentToNormalState(u);var c=!!(u&&u.hoverLayer||r);c&&this._toggleHoverLayerFlag(!0),this._applyStateObj(t,u,this._normalState,e,!n&&!this.__inHover&&s&&s.duration>0,s);var d=this._textContent,p=this._textGuide;return d&&d.useState(t,e,n,c),p&&p.useState(t,e,n,c),i?(this.currentStates=[],this._normalState={}):e?this.currentStates.push(t):this.currentStates=[t],this._updateAnimationTargets(),this.markRedraw(),!c&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=~f.YV),u}(0,l.H)("State "+t+" not exists.")}}},t.prototype.useStates=function(t,e,n){if(t.length){var r=[],i=this.currentStates,o=t.length,a=o===i.length;if(a)for(var s=0;s0,p);var v=this._textContent,g=this._textGuide;v&&v.useStates(t,e,h),g&&g.useStates(t,e,h),this._updateAnimationTargets(),this.currentStates=t.slice(),this.markRedraw(),!h&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=~f.YV)}else this.clearStates()},t.prototype._updateAnimationTargets=function(){for(var t=0;t=0){var n=this.currentStates.slice();n.splice(e,1),this.useStates(n)}},t.prototype.replaceState=function(t,e,n){var r=this.currentStates.slice(),i=(0,l.cq)(r,t),o=(0,l.cq)(r,e)>=0;i>=0?o?r.splice(i,1):r[i]=e:n&&!o&&r.push(e),this.useStates(r)},t.prototype.toggleState=function(t,e){e?this.useState(t,!0):this.removeState(t)},t.prototype._mergeStates=function(t){for(var e,n={},r=0;r=0&&e.splice(n,1)})),this.animators.push(t),n&&n.animation.addAnimator(t),n&&n.wakeUp()},t.prototype.updateDuringAnimation=function(t){this.markRedraw()},t.prototype.stopAnimation=function(t,e){for(var n=this.animators,r=n.length,i=[],o=0;o0&&n.during&&o[0].during((function(t,e){n.during(e)}));for(var h=0;h0||o.force&&!s.length){var M=void 0,D=void 0,O=void 0;if(u){D={},p&&(M={});for(C=0;C=1?1:(0,a.kD)(0,r,l,1,t,c)&&(0,a.af)(0,i,u,1,c[0])}}}var u=function(){function t(t){this._inited=!1,this._startTime=0,this._pausedTime=0,this._paused=!1,this._life=t.life||1e3,this._delay=t.delay||0,this.loop=t.loop||!1,this.onframe=t.onframe||o.ZT,this.ondestroy=t.ondestroy||o.ZT,this.onrestart=t.onrestart||o.ZT,t.easing&&this.setEasing(t.easing)}return t.prototype.step=function(t,e){if(this._inited||(this._startTime=t+this._delay,this._inited=!0),!this._paused){var n=this._life,r=t-this._startTime-this._pausedTime,i=r/n;i<0&&(i=0),i=Math.min(i,1);var o=this.easingFunc,a=o?o(i):i;if(this.onframe(a),1===i){if(!this.loop)return!0;var s=r%n;this._startTime=t-s,this._pausedTime=0,this.onrestart()}return!1}this._pausedTime+=e},t.prototype.pause=function(){this._paused=!0},t.prototype.resume=function(){this._paused=!1},t.prototype.setEasing=function(t){this.easing=t,this.easingFunc=(0,o.mf)(t)?t:i[t]||l(t)},t}(),c=u,f=n(1092),h=n(6387);Math.round;function d(t){return"linear"===t.type}function p(t){return"radial"===t.type}(function(){h.Z.hasGlobalWindow&&(0,o.mf)(window.btoa)})();var v=Array.prototype.slice;function g(t,e,n){return(e-t)*n+t}function y(t,e,n,r){for(var i=e.length,o=0;or?e:t,o=Math.min(n,r),a=i[o-1]||{color:[0,0,0,0],offset:0},s=o;sa;if(s)r.length=a;else for(var l=o;l=1},t.prototype.getAdditiveTrack=function(){return this._additiveTrack},t.prototype.addKeyframe=function(t,e,n){this._needsSort=!0;var r=this.keyframes,a=r.length,s=!1,u=E,c=e;if((0,o.zG)(e)){var h=C(e);u=h,(1===h&&!(0,o.hj)(e[0])||2===h&&!(0,o.hj)(e[0][0]))&&(s=!0)}else if((0,o.hj)(e)&&!(0,o.Bu)(e))u=T;else if((0,o.HD)(e))if(isNaN(+e)){var v=f.Qc(e);v&&(c=v,u=M)}else u=T;else if((0,o.Qq)(e)){var g=(0,o.l7)({},c);g.colorStops=(0,o.UI)(e.colorStops,(function(t){return{offset:t.offset,color:f.Qc(t.color)}})),d(e)?u=D:p(e)&&(u=O),c=g}0===a?this.valType=u:u===this.valType&&u!==E||(s=!0),this.discrete=this.discrete||s;var y={time:t,value:c,rawValue:e,percent:0};return n&&(y.easing=n,y.easingFunc=(0,o.mf)(n)?n:i[n]||l(n)),r.push(y),y},t.prototype.prepare=function(t,e){var n=this.keyframes;this._needsSort&&n.sort((function(t,e){return t.time-e.time}));for(var r=this.valType,i=n.length,o=n[i-1],a=this.discrete,s=L(r),l=P(r),u=0;u=0;n--)if(u[n].percent<=e)break;n=p(n,c-2)}else{for(n=d;ne)break;n=p(n-1,c-2)}i=u[n+1],r=u[n]}if(r&&i){this._lastFr=n,this._lastFrP=e;var _=i.percent-r.percent,b=0===_?1:p((e-r.percent)/_,1);i.easingFunc&&(b=i.easingFunc(b));var w=a?this._additiveValue:h?R:t[f];if(!L(l)&&!h||w||(w=this._additiveValue=[]),this.discrete)t[f]=b<1?r.rawValue:i.rawValue;else if(L(l))l===A?y(w,r[s],i[s],b):m(w,r[s],i[s],b);else if(P(l)){var x=r[s],S=i[s],C=l===D;t[f]={type:C?"linear":"radial",x:g(x.x,S.x,b),y:g(x.y,S.y,b),colorStops:(0,o.UI)(x.colorStops,(function(t,e){var n=S.colorStops[e];return{offset:g(t.offset,n.offset,b),color:k(y([],t.color,n.color,b))}})),global:S.global},C?(t[f].x2=g(x.x2,S.x2,b),t[f].y2=g(x.y2,S.y2,b)):t[f].r=g(x.r,S.r,b)}else if(h)y(w,r[s],i[s],b),a||(t[f]=k(w));else{var T=g(r[s],i[s],b);a?this._additiveValue=T:t[f]=T}a&&this._addToTarget(t)}}},t.prototype._addToTarget=function(t){var e=this.valType,n=this.propName,r=this._additiveValue;e===T?t[n]=t[n]+r:e===M?(f.Qc(t[n],R),_(R,R,r,1),t[n]=k(R)):e===A?_(t[n],t[n],r,1):e===I&&b(t[n],t[n],r,1)},t}(),Z=function(){function t(t,e,n,r){this._tracks={},this._trackKeys=[],this._maxTime=0,this._started=0,this._clip=null,this._target=t,this._loop=e,e&&r?(0,o.H)("Can' use additive animation on looped animation."):(this._additiveAnimators=r,this._allowDiscrete=n)}return t.prototype.getMaxTime=function(){return this._maxTime},t.prototype.getDelay=function(){return this._delay},t.prototype.getLoop=function(){return this._loop},t.prototype.getTarget=function(){return this._target},t.prototype.changeTarget=function(t){this._target=t},t.prototype.when=function(t,e,n){return this.whenWithKeys(t,e,(0,o.XP)(e),n)},t.prototype.whenWithKeys=function(t,e,n,r){for(var i=this._tracks,o=0;o0&&s.addKeyframe(0,S(l),r),this._trackKeys.push(a)}s.addKeyframe(t,S(e[a]),r)}return this._maxTime=Math.max(this._maxTime,t),this},t.prototype.pause=function(){this._clip.pause(),this._paused=!0},t.prototype.resume=function(){this._clip.resume(),this._paused=!1},t.prototype.isPaused=function(){return!!this._paused},t.prototype.duration=function(t){return this._maxTime=t,this._force=!0,this},t.prototype._doneCallback=function(){this._setTracksFinished(),this._clip=null;var t=this._doneCbs;if(t)for(var e=t.length,n=0;n0)){this._started=1;for(var e=this,n=[],r=this._maxTime||0,i=0;i1){var s=a.pop();i.addKeyframe(s.time,t[r]),i.prepare(this._maxTime,i.getAdditiveTrack())}}}},t}(),F=Z},2795:function(t,e,n){"use strict";var r,i=n(6387);r=i.Z.hasGlobalWindow&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(t){return setTimeout(t,16)},e["Z"]=r},2653:function(t,e,n){"use strict";n.d(e,{Dm:function(){return W},RV:function(){return N},RZ:function(){return w}});var r=n(7719),i=n(7442),o=n(8007),a=n(7568),s=n(5825),l=n(4535),u=n(1505),c=n(3051);function f(t,e){return t&&"solid"!==t&&e>0?"dashed"===t?[4*e,2*e]:"dotted"===t?[e]:(0,c.hj)(t)?[t]:(0,c.kJ)(t)?t:null:null}function h(t){var e=t.style,n=e.lineDash&&e.lineWidth>0&&f(e.lineDash,e.lineWidth),r=e.lineDashOffset;if(n){var i=e.strokeNoScale&&t.getLineScale?t.getLineScale():1;i&&1!==i&&(n=(0,c.UI)(n,(function(t){return t/i})),r/=i)}return[n,r]}var d=n(4414),p=n(3132),v=new i.Z(!0);function g(t){var e=t.stroke;return!(null==e||"none"===e||!(t.lineWidth>0))}function y(t){return"string"===typeof t&&"none"!==t}function m(t){var e=t.fill;return null!=e&&"none"!==e}function _(t,e){if(null!=e.fillOpacity&&1!==e.fillOpacity){var n=t.globalAlpha;t.globalAlpha=e.fillOpacity*e.opacity,t.fill(),t.globalAlpha=n}else t.fill()}function b(t,e){if(null!=e.strokeOpacity&&1!==e.strokeOpacity){var n=t.globalAlpha;t.globalAlpha=e.strokeOpacity*e.opacity,t.stroke(),t.globalAlpha=n}else t.stroke()}function w(t,e,n){var r=(0,o.Gq)(e.image,e.__image,n);if((0,o.v5)(r)){var i=t.createPattern(r,e.repeat||"repeat");if("function"===typeof DOMMatrix&&i&&i.setTransform){var a=new DOMMatrix;a.translateSelf(e.x||0,e.y||0),a.rotateSelf(0,0,(e.rotation||0)*c.I3),a.scaleSelf(e.scaleX||1,e.scaleY||1),i.setTransform(a)}return i}}function x(t,e,n,r){var i,o=g(n),s=m(n),l=n.strokePercent,u=l<1,c=!e.path;e.silent&&!u||!c||e.createPathProxy();var f=e.path||v,p=e.__dirty;if(!r){var y=n.fill,x=n.stroke,S=s&&!!y.colorStops,k=o&&!!x.colorStops,C=s&&!!y.image,T=o&&!!x.image,A=void 0,I=void 0,M=void 0,D=void 0,O=void 0;(S||k)&&(O=e.getBoundingRect()),S&&(A=p?(0,a.ZF)(t,y,O):e.__canvasFillGradient,e.__canvasFillGradient=A),k&&(I=p?(0,a.ZF)(t,x,O):e.__canvasStrokeGradient,e.__canvasStrokeGradient=I),C&&(M=p||!e.__canvasFillPattern?w(t,y,e):e.__canvasFillPattern,e.__canvasFillPattern=M),T&&(D=p||!e.__canvasStrokePattern?w(t,x,e):e.__canvasStrokePattern,e.__canvasStrokePattern=M),S?t.fillStyle=A:C&&(M?t.fillStyle=M:s=!1),k?t.strokeStyle=I:T&&(D?t.strokeStyle=D:o=!1)}var E,P,L=e.getGlobalScale();f.setScale(L[0],L[1],e.segmentIgnoreThreshold),t.setLineDash&&n.lineDash&&(i=h(e),E=i[0],P=i[1]);var R=!0;(c||p&d.RH)&&(f.setDPR(t.dpr),u?f.setContext(null):(f.setContext(t),R=!1),f.reset(),e.buildPath(f,e.shape,r),f.toStatic(),e.pathUpdated()),R&&f.rebuildPath(t,u?l:1),E&&(t.setLineDash(E),t.lineDashOffset=P),r||(n.strokeFirst?(o&&b(t,n),s&&_(t,n)):(s&&_(t,n),o&&b(t,n))),E&&t.setLineDash([])}function S(t,e,n){var r=e.__image=(0,o.Gq)(n.image,e.__image,e,e.onload);if(r&&(0,o.v5)(r)){var i=n.x||0,a=n.y||0,s=e.getWidth(),l=e.getHeight(),u=r.width/r.height;if(null==s&&null!=l?s=l*u:null==l&&null!=s?l=s/u:null==s&&null==l&&(s=r.width,l=r.height),n.sWidth&&n.sHeight){var c=n.sx||0,f=n.sy||0;t.drawImage(r,c,f,n.sWidth,n.sHeight,i,a,s,l)}else if(n.sx&&n.sy){c=n.sx,f=n.sy;var h=s-c,d=l-f;t.drawImage(r,c,f,h,d,i,a,s,l)}else t.drawImage(r,i,a,s,l)}}function k(t,e,n){var r,i=n.text;if(null!=i&&(i+=""),i){t.font=n.font||p.Uo,t.textAlign=n.textAlign,t.textBaseline=n.textBaseline;var o=void 0,a=void 0;t.setLineDash&&n.lineDash&&(r=h(e),o=r[0],a=r[1]),o&&(t.setLineDash(o),t.lineDashOffset=a),n.strokeFirst?(g(n)&&t.strokeText(i,n.x,n.y),m(n)&&t.fillText(i,n.x,n.y)):(m(n)&&t.fillText(i,n.x,n.y),g(n)&&t.strokeText(i,n.x,n.y)),o&&t.setLineDash([])}}var C=["shadowBlur","shadowOffsetX","shadowOffsetY"],T=[["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]];function A(t,e,n,i,o){var a=!1;if(!i&&(n=n||{},e===n))return!1;if(i||e.opacity!==n.opacity){F(t,o),a=!0;var s=Math.max(Math.min(e.opacity,1),0);t.globalAlpha=isNaN(s)?r.tj.opacity:s}(i||e.blend!==n.blend)&&(a||(F(t,o),a=!0),t.globalCompositeOperation=e.blend||r.tj.blend);for(var l=0;l=0?parseFloat(t)/100*e:parseFloat(t):t}function p(t,e,n){var r=e.position||"inside",i=null!=e.distance?e.distance:5,o=n.height,a=n.width,s=o/2,l=n.x,u=n.y,c="left",f="top";if(r instanceof Array)l+=d(r[0],n.width),u+=d(r[1],n.height),c=null,f=null;else switch(r){case"left":l-=i,u+=s,c="right",f="middle";break;case"right":l+=i+a,u+=s,f="middle";break;case"top":l+=a/2,u-=i,c="center",f="bottom";break;case"bottom":l+=a/2,u+=o+i,c="center";break;case"inside":l+=a/2,u+=s,c="center",f="middle";break;case"insideLeft":l+=i,u+=s,f="middle";break;case"insideRight":l+=a-i,u+=s,c="right",f="middle";break;case"insideTop":l+=a/2,u+=i,c="center";break;case"insideBottom":l+=a/2,u+=o-i,c="center",f="bottom";break;case"insideTopLeft":l+=i,u+=i;break;case"insideTopRight":l+=a-i,u+=i,c="right";break;case"insideBottomLeft":l+=i,u+=o-i,f="bottom";break;case"insideBottomRight":l+=a-i,u+=o-i,c="right",f="bottom";break}return t=t||{},t.x=l,t.y=u,t.align=c,t.verticalAlign=f,t}},479:function(t,e,n){"use strict";var r=n(2892),i=n(1610),o=Math.min,a=Math.max,s=new i.Z,l=new i.Z,u=new i.Z,c=new i.Z,f=new i.Z,h=new i.Z,d=function(){function t(t,e,n,r){n<0&&(t+=n,n=-n),r<0&&(e+=r,r=-r),this.x=t,this.y=e,this.width=n,this.height=r}return t.prototype.union=function(t){var e=o(t.x,this.x),n=o(t.y,this.y);isFinite(this.x)&&isFinite(this.width)?this.width=a(t.x+t.width,this.x+this.width)-e:this.width=t.width,isFinite(this.y)&&isFinite(this.height)?this.height=a(t.y+t.height,this.y+this.height)-n:this.height=t.height,this.x=e,this.y=n},t.prototype.applyTransform=function(e){t.applyTransform(this,this,e)},t.prototype.calculateTransform=function(t){var e=this,n=t.width/e.width,i=t.height/e.height,o=r.Ue();return r.Iu(o,o,[-e.x,-e.y]),r.bA(o,o,[n,i]),r.Iu(o,o,[t.x,t.y]),o},t.prototype.intersect=function(e,n){if(!e)return!1;e instanceof t||(e=t.create(e));var r=this,o=r.x,a=r.x+r.width,s=r.y,l=r.y+r.height,u=e.x,c=e.x+e.width,d=e.y,p=e.y+e.height,v=!(ay&&(y=x,m<_?i.Z.set(h,-m,0):i.Z.set(h,_,0)):xy&&(y=S,b=n.x&&t<=n.x+n.width&&e>=n.y&&e<=n.y+n.height},t.prototype.clone=function(){return new t(this.x,this.y,this.width,this.height)},t.prototype.copy=function(e){t.copy(this,e)},t.prototype.plain=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},t.prototype.isFinite=function(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)},t.prototype.isZero=function(){return 0===this.width||0===this.height},t.create=function(e){return new t(e.x,e.y,e.width,e.height)},t.copy=function(t,e){t.x=e.x,t.y=e.y,t.width=e.width,t.height=e.height},t.applyTransform=function(e,n,r){if(r){if(r[1]<1e-5&&r[1]>-1e-5&&r[2]<1e-5&&r[2]>-1e-5){var i=r[0],f=r[3],h=r[4],d=r[5];return e.x=n.x*i+h,e.y=n.y*f+d,e.width=n.width*i,e.height=n.height*f,e.width<0&&(e.x+=e.width,e.width=-e.width),void(e.height<0&&(e.y+=e.height,e.height=-e.height))}s.x=u.x=n.x,s.y=c.y=n.y,l.x=c.x=n.x+n.width,l.y=u.y=n.y+n.height,s.transform(r),c.transform(r),l.transform(r),u.transform(r),e.x=o(s.x,l.x,u.x,c.x),e.y=o(s.y,l.y,u.y,c.y);var p=a(s.x,l.x,u.x,c.x),v=a(s.y,l.y,u.y,c.y);e.width=p-e.x,e.height=v-e.y}else e!==n&&t.copy(e,n)},t}();e["Z"]=d},3510:function(t,e){"use strict";var n=function(){function t(t){t&&(this._$eventProcessor=t)}return t.prototype.on=function(t,e,n,r){this._$handlers||(this._$handlers={});var i=this._$handlers;if("function"===typeof e&&(r=n,n=e,e=null),!n||!t)return this;var o=this._$eventProcessor;null!=e&&o&&o.normalizeQuery&&(e=o.normalizeQuery(e)),i[t]||(i[t]=[]);for(var a=0;a=this._maxSize&&a>0){var l=n.head;n.remove(l),delete i[l.key],o=l.value,this._lastRemovedEntry=l}s?s.value=e:s=new r(e),s.key=t,n.insertEntry(s),i[t]=s}return o},t.prototype.get=function(t){var e=this._map[t],n=this._list;if(null!=e)return e!==n.tail&&(n.remove(e),n.insertEntry(e)),e.value},t.prototype.clear=function(){this._list.clear(),this._map={}},t.prototype.len=function(){return this._list.len()},t}();e["ZP"]=o},1587:function(t,e,n){"use strict";var r=n(1610),i=[0,0],o=[0,0],a=new r.Z,s=new r.Z,l=function(){function t(t,e){this._corners=[],this._axes=[],this._origin=[0,0];for(var n=0;n<4;n++)this._corners[n]=new r.Z;for(n=0;n<2;n++)this._axes[n]=new r.Z;t&&this.fromBoundingRect(t,e)}return t.prototype.fromBoundingRect=function(t,e){var n=this._corners,i=this._axes,o=t.x,a=t.y,s=o+t.width,l=a+t.height;if(n[0].set(o,a),n[1].set(s,a),n[2].set(s,l),n[3].set(o,l),e)for(var u=0;u<4;u++)n[u].transform(e);r.Z.sub(i[0],n[1],n[0]),r.Z.sub(i[1],n[3],n[0]),i[0].normalize(),i[1].normalize();for(u=0;u<2;u++)this._origin[u]=i[u].dot(n[0])},t.prototype.intersect=function(t,e){var n=!0,i=!e;return a.set(1/0,1/0),s.set(0,0),!this._intersectCheckOneSide(this,t,a,s,i,1)&&(n=!1,i)||!this._intersectCheckOneSide(t,this,a,s,i,-1)&&(n=!1,i)||i||r.Z.copy(e,n?a:s),n},t.prototype._intersectCheckOneSide=function(t,e,n,a,s,l){for(var u=!0,c=0;c<2;c++){var f=this._axes[c];if(this._getProjMinMaxOnAxis(c,t._corners,i),this._getProjMinMaxOnAxis(c,e._corners,o),i[1]o[1]){if(u=!1,s)return u;var h=Math.abs(o[0]-i[1]),d=Math.abs(i[0]-o[1]);Math.min(h,d)>a.len()&&(h1e-4)return l[0]=t-n,l[1]=e-i,v[0]=t+n,void(v[1]=e+i);if(h[0]=c(o)*n+t,h[1]=u(o)*i+e,d[0]=c(a)*n+t,d[1]=u(a)*i+e,g(l,h,d),y(v,h,d),o%=f,o<0&&(o+=f),a%=f,a<0&&(a+=f),o>a&&!s?a+=f:oo&&(p[0]=c(b)*n+t,p[1]=u(b)*i+e,g(l,p,l),y(v,p,v))}var w={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},x=[],S=[],k=[],C=[],T=[],A=[],I=Math.min,M=Math.max,D=Math.cos,O=Math.sin,E=Math.abs,P=Math.PI,L=2*P,R="undefined"!==typeof Float32Array,B=[];function Z(t){var e=Math.round(t/P*1e8)/1e8;return e%2*P}function F(t,e){var n=Z(t[0]);n<0&&(n+=L);var r=n-t[0],i=t[1];i+=r,!e&&i-n>=L?i=n+L:e&&n-i>=L?i=n-L:!e&&n>i?i=n+(L-Z(n-i)):e&&n0&&(this._ux=E(n/o.KL/t)||0,this._uy=E(n/o.KL/e)||0)},t.prototype.setDPR=function(t){this.dpr=t},t.prototype.setContext=function(t){this._ctx=t},t.prototype.getContext=function(){return this._ctx},t.prototype.beginPath=function(){return this._ctx&&this._ctx.beginPath(),this.reset(),this},t.prototype.reset=function(){this._saveData&&(this._len=0),this._pathSegLen&&(this._pathSegLen=null,this._pathLen=0),this._version++},t.prototype.moveTo=function(t,e){return this._drawPendingPt(),this.addData(w.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},t.prototype.lineTo=function(t,e){var n=E(t-this._xi),r=E(e-this._yi),i=n>this._ux||r>this._uy;if(this.addData(w.L,t,e),this._ctx&&i&&this._ctx.lineTo(t,e),i)this._xi=t,this._yi=e,this._pendingPtDist=0;else{var o=n*n+r*r;o>this._pendingPtDist&&(this._pendingPtX=t,this._pendingPtY=e,this._pendingPtDist=o)}return this},t.prototype.bezierCurveTo=function(t,e,n,r,i,o){return this._drawPendingPt(),this.addData(w.C,t,e,n,r,i,o),this._ctx&&this._ctx.bezierCurveTo(t,e,n,r,i,o),this._xi=i,this._yi=o,this},t.prototype.quadraticCurveTo=function(t,e,n,r){return this._drawPendingPt(),this.addData(w.Q,t,e,n,r),this._ctx&&this._ctx.quadraticCurveTo(t,e,n,r),this._xi=n,this._yi=r,this},t.prototype.arc=function(t,e,n,r,i,o){this._drawPendingPt(),B[0]=r,B[1]=i,F(B,o),r=B[0],i=B[1];var a=i-r;return this.addData(w.A,t,e,n,n,r,a,0,o?0:1),this._ctx&&this._ctx.arc(t,e,n,r,i,o),this._xi=D(i)*n+t,this._yi=O(i)*n+e,this},t.prototype.arcTo=function(t,e,n,r,i){return this._drawPendingPt(),this._ctx&&this._ctx.arcTo(t,e,n,r,i),this},t.prototype.rect=function(t,e,n,r){return this._drawPendingPt(),this._ctx&&this._ctx.rect(t,e,n,r),this.addData(w.R,t,e,n,r),this},t.prototype.closePath=function(){this._drawPendingPt(),this.addData(w.Z);var t=this._ctx,e=this._x0,n=this._y0;return t&&t.closePath(),this._xi=e,this._yi=n,this},t.prototype.fill=function(t){t&&t.fill(),this.toStatic()},t.prototype.stroke=function(t){t&&t.stroke(),this.toStatic()},t.prototype.len=function(){return this._len},t.prototype.setData=function(t){var e=t.length;this.data&&this.data.length===e||!R||(this.data=new Float32Array(e));for(var n=0;nu.length&&(this._expandData(),u=this.data);for(var c=0;c0&&(this._ctx&&this._ctx.lineTo(this._pendingPtX,this._pendingPtY),this._pendingPtDist=0)},t.prototype._expandData=function(){if(!(this.data instanceof Array)){for(var t=[],e=0;e11&&(this.data=new Float32Array(t)))}},t.prototype.getBoundingRect=function(){k[0]=k[1]=T[0]=T[1]=Number.MAX_VALUE,C[0]=C[1]=A[0]=A[1]=-Number.MAX_VALUE;var t,e=this.data,n=0,o=0,a=0,s=0;for(t=0;tn||E(_)>r||h===e-1)&&(v=Math.sqrt(m*m+_*_),i=g,o=y);break;case w.C:var b=t[h++],x=t[h++],S=(g=t[h++],y=t[h++],t[h++]),k=t[h++];v=(0,a.Ci)(i,o,b,x,g,y,S,k,10),i=S,o=k;break;case w.Q:b=t[h++],x=t[h++],g=t[h++],y=t[h++];v=(0,a.wQ)(i,o,b,x,g,y,10),i=g,o=y;break;case w.A:var C=t[h++],T=t[h++],A=t[h++],P=t[h++],R=t[h++],B=t[h++],Z=B+R;h+=1;t[h++];p&&(s=D(R)*A+C,l=O(R)*P+T),v=M(A,P)*I(L,Math.abs(B)),i=D(Z)*A+C,o=O(Z)*P+T;break;case w.R:s=i=t[h++],l=o=t[h++];var F=t[h++],z=t[h++];v=2*F+2*z;break;case w.Z:m=s-i,_=l-o;v=Math.sqrt(m*m+_*_),i=s,o=l;break}v>=0&&(u[f++]=v,c+=v)}return this._pathLen=c,c},t.prototype.rebuildPath=function(t,e){var n,r,i,o,s,l,u,c,f,h,d,p=this.data,v=this._ux,g=this._uy,y=this._len,m=e<1,_=0,b=0,k=0;if(!m||(this._pathSegLen||this._calculateLength(),u=this._pathSegLen,c=this._pathLen,f=e*c,f))t:for(var C=0;C0&&(t.lineTo(h,d),k=0),T){case w.M:n=i=p[C++],r=o=p[C++],t.moveTo(i,o);break;case w.L:s=p[C++],l=p[C++];var P=E(s-i),L=E(l-o);if(P>v||L>g){if(m){var R=u[b++];if(_+R>f){var B=(f-_)/R;t.lineTo(i*(1-B)+s*B,o*(1-B)+l*B);break t}_+=R}t.lineTo(s,l),i=s,o=l,k=0}else{var Z=P*P+L*L;Z>k&&(h=s,d=l,k=Z)}break;case w.C:var F=p[C++],z=p[C++],N=p[C++],W=p[C++],U=p[C++],V=p[C++];if(m){R=u[b++];if(_+R>f){B=(f-_)/R;(0,a.Vz)(i,F,N,U,B,x),(0,a.Vz)(o,z,W,V,B,S),t.bezierCurveTo(x[1],S[1],x[2],S[2],x[3],S[3]);break t}_+=R}t.bezierCurveTo(F,z,N,W,U,V),i=U,o=V;break;case w.Q:F=p[C++],z=p[C++],N=p[C++],W=p[C++];if(m){R=u[b++];if(_+R>f){B=(f-_)/R;(0,a.Lx)(i,F,N,B,x),(0,a.Lx)(o,z,W,B,S),t.quadraticCurveTo(x[1],S[1],x[2],S[2]);break t}_+=R}t.quadraticCurveTo(F,z,N,W),i=N,o=W;break;case w.A:var j=p[C++],H=p[C++],G=p[C++],q=p[C++],Y=p[C++],X=p[C++],$=p[C++],K=!p[C++],J=G>q?G:q,Q=E(G-q)>.001,tt=Y+X,et=!1;if(m){R=u[b++];_+R>f&&(tt=Y+X*(f-_)/R,et=!0),_+=R}if(Q&&t.ellipse?t.ellipse(j,H,G,q,$,Y,tt,K):t.arc(j,H,J,Y,tt,K),et)break t;A&&(n=D(Y)*G+j,r=O(Y)*q+H),i=D(tt)*G+j,o=O(tt)*q+H;break;case w.R:n=i=p[C],r=o=p[C+1],s=p[C++],l=p[C++];var nt=p[C++],rt=p[C++];if(m){R=u[b++];if(_+R>f){var it=f-_;t.moveTo(s,l),t.lineTo(s+I(it,nt),l),it-=nt,it>0&&t.lineTo(s+nt,l+I(it,rt)),it-=rt,it>0&&t.lineTo(s+M(nt-it,0),l+rt),it-=nt,it>0&&t.lineTo(s,l+M(rt-it,0));break t}_+=R}t.rect(s,l,nt,rt);break;case w.Z:if(m){R=u[b++];if(_+R>f){B=(f-_)/R;t.lineTo(i*(1-B)+n*B,o*(1-B)+r*B);break t}_+=R}t.closePath(),i=n,o=r}}},t.prototype.clone=function(){var e=new t,n=this.data;return e.data=n.slice?n.slice():Array.prototype.slice.call(n),e._len=this._len,e},t.CMD=w,t.initDefaultProps=function(){var e=t.prototype;e._saveData=!0,e._ux=0,e._uy=0,e._pendingPtDist=0,e._version=0}(),t}(),N=z},1610:function(t,e){"use strict";var n=function(){function t(t,e){this.x=t||0,this.y=e||0}return t.prototype.copy=function(t){return this.x=t.x,this.y=t.y,this},t.prototype.clone=function(){return new t(this.x,this.y)},t.prototype.set=function(t,e){return this.x=t,this.y=e,this},t.prototype.equal=function(t){return t.x===this.x&&t.y===this.y},t.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this},t.prototype.scale=function(t){this.x*=t,this.y*=t},t.prototype.scaleAndAdd=function(t,e){this.x+=t.x*e,this.y+=t.y*e},t.prototype.sub=function(t){return this.x-=t.x,this.y-=t.y,this},t.prototype.dot=function(t){return this.x*t.x+this.y*t.y},t.prototype.len=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},t.prototype.lenSquare=function(){return this.x*this.x+this.y*this.y},t.prototype.normalize=function(){var t=this.len();return this.x/=t,this.y/=t,this},t.prototype.distance=function(t){var e=this.x-t.x,n=this.y-t.y;return Math.sqrt(e*e+n*n)},t.prototype.distanceSquare=function(t){var e=this.x-t.x,n=this.y-t.y;return e*e+n*n},t.prototype.negate=function(){return this.x=-this.x,this.y=-this.y,this},t.prototype.transform=function(t){if(t){var e=this.x,n=this.y;return this.x=t[0]*e+t[2]*n+t[4],this.y=t[1]*e+t[3]*n+t[5],this}},t.prototype.toArray=function(t){return t[0]=this.x,t[1]=this.y,t},t.prototype.fromArray=function(t){this.x=t[0],this.y=t[1]},t.set=function(t,e,n){t.x=e,t.y=n},t.copy=function(t,e){t.x=e.x,t.y=e.y},t.len=function(t){return Math.sqrt(t.x*t.x+t.y*t.y)},t.lenSquare=function(t){return t.x*t.x+t.y*t.y},t.dot=function(t,e){return t.x*e.x+t.y*e.y},t.add=function(t,e,n){t.x=e.x+n.x,t.y=e.y+n.y},t.sub=function(t,e,n){t.x=e.x-n.x,t.y=e.y-n.y},t.scale=function(t,e,n){t.x=e.x*n,t.y=e.y*n},t.scaleAndAdd=function(t,e,n,r){t.x=e.x+n.x*r,t.y=e.y+n.y*r},t.lerp=function(t,e,n,r){var i=1-r;t.x=i*e.x+r*n.x,t.y=i*e.y+r*n.y},t}();e["Z"]=n},7411:function(t,e,n){"use strict";n.d(e,{dN:function(){return d}});var r=n(2892),i=n(5280),o=r.yR,a=5e-5;function s(t){return t>a||t<-a}var l=[],u=[],c=r.Ue(),f=Math.abs,h=function(){function t(){}return t.prototype.getLocalTransform=function(e){return t.getLocalTransform(this,e)},t.prototype.setPosition=function(t){this.x=t[0],this.y=t[1]},t.prototype.setScale=function(t){this.scaleX=t[0],this.scaleY=t[1]},t.prototype.setSkew=function(t){this.skewX=t[0],this.skewY=t[1]},t.prototype.setOrigin=function(t){this.originX=t[0],this.originY=t[1]},t.prototype.needLocalTransform=function(){return s(this.rotation)||s(this.x)||s(this.y)||s(this.scaleX-1)||s(this.scaleY-1)||s(this.skewX)||s(this.skewY)},t.prototype.updateTransform=function(){var t=this.parent&&this.parent.transform,e=this.needLocalTransform(),n=this.transform;e||t?(n=n||r.Ue(),e?this.getLocalTransform(n):o(n),t&&(e?r.dC(n,t,n):r.JG(n,t)),this.transform=n,this._resolveGlobalScaleRatio(n)):n&&o(n)},t.prototype._resolveGlobalScaleRatio=function(t){var e=this.globalScaleRatio;if(null!=e&&1!==e){this.getGlobalScale(l);var n=l[0]<0?-1:1,i=l[1]<0?-1:1,o=((l[0]-n)*e+n)/l[0]||0,a=((l[1]-i)*e+i)/l[1]||0;t[0]*=o,t[1]*=o,t[2]*=a,t[3]*=a}this.invTransform=this.invTransform||r.Ue(),r.U_(this.invTransform,t)},t.prototype.getComputedTransform=function(){var t=this,e=[];while(t)e.push(t),t=t.parent;while(t=e.pop())t.updateTransform();return this.transform},t.prototype.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],n=t[2]*t[2]+t[3]*t[3],r=Math.atan2(t[1],t[0]),i=Math.PI/2+r-Math.atan2(t[3],t[2]);n=Math.sqrt(n)*Math.cos(i),e=Math.sqrt(e),this.skewX=i,this.skewY=0,this.rotation=-r,this.x=+t[4],this.y=+t[5],this.scaleX=e,this.scaleY=n,this.originX=0,this.originY=0}},t.prototype.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(r.dC(u,t.invTransform,e),e=u);var n=this.originX,i=this.originY;(n||i)&&(c[4]=n,c[5]=i,r.dC(u,e,c),u[4]-=n,u[5]-=i,e=u),this.setLocalTransform(e)}},t.prototype.getGlobalScale=function(t){var e=this.transform;return t=t||[],e?(t[0]=Math.sqrt(e[0]*e[0]+e[1]*e[1]),t[1]=Math.sqrt(e[2]*e[2]+e[3]*e[3]),e[0]<0&&(t[0]=-t[0]),e[3]<0&&(t[1]=-t[1]),t):(t[0]=1,t[1]=1,t)},t.prototype.transformCoordToLocal=function(t,e){var n=[t,e],r=this.invTransform;return r&&i.Ne(n,n,r),n},t.prototype.transformCoordToGlobal=function(t,e){var n=[t,e],r=this.transform;return r&&i.Ne(n,n,r),n},t.prototype.getLineScale=function(){var t=this.transform;return t&&f(t[0]-1)>1e-10&&f(t[3]-1)>1e-10?Math.sqrt(f(t[0]*t[3]-t[2]*t[1])):1},t.prototype.copyTransform=function(t){p(this,t)},t.getLocalTransform=function(t,e){e=e||[];var n=t.originX||0,i=t.originY||0,o=t.scaleX,a=t.scaleY,s=t.anchorX,l=t.anchorY,u=t.rotation||0,c=t.x,f=t.y,h=t.skewX?Math.tan(t.skewX):0,d=t.skewY?Math.tan(-t.skewY):0;if(n||i||s||l){var p=n+s,v=i+l;e[4]=-p*o-h*v*a,e[5]=-v*a-d*p*o}else e[4]=e[5]=0;return e[0]=o,e[3]=a,e[1]=d*o,e[2]=h*a,u&&r.U1(e,e,u),e[4]+=n+c,e[5]+=i+f,e},t.initDefaultProps=function(){var e=t.prototype;e.scaleX=e.scaleY=e.globalScaleRatio=1,e.x=e.y=e.originX=e.originY=e.skewX=e.skewY=e.rotation=e.anchorX=e.anchorY=0}(),t}(),d=["x","y","originX","originY","anchorX","anchorY","rotation","scaleX","scaleY","skewX","skewY"];function p(t,e){for(var n=0;n-a&&ta||t<-a}function v(t,e,n,r,i){var o=1-i;return o*o*(o*t+3*i*e)+i*i*(i*r+3*o*n)}function g(t,e,n,r,i){var o=1-i;return 3*(((e-t)*o+2*(n-e)*i)*o+(r-n)*i*i)}function y(t,e,n,r,a,s){var c=r+3*(e-n)-t,f=3*(n-2*e+t),h=3*(e-t),p=t-a,v=f*f-3*c*h,g=f*h-9*c*p,y=h*h-3*f*p,m=0;if(d(v)&&d(g))if(d(f))s[0]=0;else{var _=-h/f;_>=0&&_<=1&&(s[m++]=_)}else{var b=g*g-4*v*y;if(d(b)){var w=g/v,x=(_=-f/c+w,-w/2);_>=0&&_<=1&&(s[m++]=_),x>=0&&x<=1&&(s[m++]=x)}else if(b>0){var S=o(b),k=v*f+1.5*c*(-g+S),C=v*f+1.5*c*(-g-S);k=k<0?-i(-k,u):i(k,u),C=C<0?-i(-C,u):i(C,u);_=(-f-(k+C))/(3*c);_>=0&&_<=1&&(s[m++]=_)}else{var T=(2*v*f-3*c*g)/(2*o(v*v*v)),A=Math.acos(T)/3,I=o(v),M=Math.cos(A),D=(_=(-f-2*I*M)/(3*c),x=(-f+I*(M+l*Math.sin(A)))/(3*c),(-f+I*(M-l*Math.sin(A)))/(3*c));_>=0&&_<=1&&(s[m++]=_),x>=0&&x<=1&&(s[m++]=x),D>=0&&D<=1&&(s[m++]=D)}}return m}function m(t,e,n,r,i){var a=6*n-12*e+6*t,s=9*e+3*r-3*t-9*n,l=3*e-3*t,u=0;if(d(s)){if(p(a)){var c=-l/a;c>=0&&c<=1&&(i[u++]=c)}}else{var f=a*a-4*s*l;if(d(f))i[0]=-a/(2*s);else if(f>0){var h=o(f),v=(c=(-a+h)/(2*s),(-a-h)/(2*s));c>=0&&c<=1&&(i[u++]=c),v>=0&&v<=1&&(i[u++]=v)}}return u}function _(t,e,n,r,i,o){var a=(e-t)*i+t,s=(n-e)*i+e,l=(r-n)*i+n,u=(s-a)*i+a,c=(l-s)*i+s,f=(c-u)*i+u;o[0]=t,o[1]=a,o[2]=u,o[3]=f,o[4]=f,o[5]=c,o[6]=l,o[7]=r}function b(t,e,n,i,a,l,u,d,p,g,y){var m,_,b,w,x,S=.005,k=1/0;c[0]=p,c[1]=g;for(var C=0;C<1;C+=.05)f[0]=v(t,n,a,u,C),f[1]=v(e,i,l,d,C),w=(0,r.WU)(c,f),w=0&&w=0&&c<=1&&(i[u++]=c)}}else{var f=s*s-4*a*l;if(d(f)){c=-s/(2*a);c>=0&&c<=1&&(i[u++]=c)}else if(f>0){var h=o(f),v=(c=(-s+h)/(2*a),(-s-h)/(2*a));c>=0&&c<=1&&(i[u++]=c),v>=0&&v<=1&&(i[u++]=v)}}return u}function C(t,e,n){var r=t+n-2*e;return 0===r?.5:(t-e)/r}function T(t,e,n,r,i){var o=(e-t)*r+t,a=(n-e)*r+e,s=(a-o)*r+o;i[0]=t,i[1]=o,i[2]=s,i[3]=s,i[4]=a,i[5]=n}function A(t,e,n,i,a,l,u,d,p){var v,g=.005,y=1/0;c[0]=u,c[1]=d;for(var m=0;m<1;m+=.05){f[0]=x(t,n,a,m),f[1]=x(e,i,l,m);var _=(0,r.WU)(c,f);_=0&&_>1)%2;s.cssText=["position: absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","user-select: none","width:0","height:0",r[l]+":0",i[u]+":0",r[1-l]+":auto",i[1-u]+":auto",""].join("!important;"),t.appendChild(a),n.push(a)}return n}function h(t,e,n){for(var r=n?"invTrans":"trans",i=e[r],o=e.srcCoords,s=[],l=[],u=!0,c=0;c<4;c++){var f=t[c].getBoundingClientRect(),h=2*c,d=f.left,p=f.top;s.push(d,p),u=u&&o&&d===o[h]&&p===o[h+1],l.push(t[c].offsetLeft,t[c].offsetTop)}return u&&i?i:(e.srcCoords=s,e[r]=n?a(l,s):a(s,l))}function d(t){return"CANVAS"===t.nodeName.toUpperCase()}},6387:function(t,e){"use strict";var n=function(){function t(){this.firefox=!1,this.ie=!1,this.edge=!1,this.newEdge=!1,this.weChat=!1}return t}(),r=function(){function t(){this.browser=new n,this.node=!1,this.wxa=!1,this.worker=!1,this.svgSupported=!1,this.touchEventsSupported=!1,this.pointerEventsSupported=!1,this.domSupported=!1,this.transformSupported=!1,this.transform3dSupported=!1,this.hasGlobalWindow="undefined"!==typeof window}return t}(),i=new r;function o(t,e){var n=e.browser,r=t.match(/Firefox\/([\d.]+)/),i=t.match(/MSIE\s([\d.]+)/)||t.match(/Trident\/.+?rv:(([\d.]+))/),o=t.match(/Edge?\/([\d.]+)/),a=/micromessenger/i.test(t);r&&(n.firefox=!0,n.version=r[1]),i&&(n.ie=!0,n.version=i[1]),o&&(n.edge=!0,n.version=o[1],n.newEdge=+o[1].split(".")[0]>18),a&&(n.weChat=!0),e.svgSupported="undefined"!==typeof SVGRect,e.touchEventsSupported="ontouchstart"in window&&!n.ie&&!n.edge,e.pointerEventsSupported="onpointerdown"in window&&(n.edge||n.ie&&+n.version>=11),e.domSupported="undefined"!==typeof document;var s=document.documentElement.style;e.transform3dSupported=(n.ie&&"transition"in s||n.edge||"WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix||"MozPerspective"in s)&&!("OTransition"in s),e.transformSupported=e.transform3dSupported||n.ie&&+n.version>=9}"object"===typeof wx&&"function"===typeof wx.getSystemInfoSync?(i.wxa=!0,i.touchEventsSupported=!0):"undefined"===typeof document&&"undefined"!==typeof self?i.worker=!0:"undefined"===typeof navigator?(i.node=!0,i.svgSupported=!0):o(navigator.userAgent,i),e["Z"]=i},1158:function(t,e,n){"use strict";n.d(e,{OD:function(){return f},Oo:function(){return d},eV:function(){return l},iP:function(){return c},sT:function(){return v},xg:function(){return p}});var r=n(6387),i=n(4602),o=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,a=[],s=r.Z.browser.firefox&&+r.Z.browser.version.split(".")[0]<39;function l(t,e,n,r){return n=n||{},r?u(t,e,n):s&&null!=e.layerX&&e.layerX!==e.offsetX?(n.zrX=e.layerX,n.zrY=e.layerY):null!=e.offsetX?(n.zrX=e.offsetX,n.zrY=e.offsetY):u(t,e,n),n}function u(t,e,n){if(r.Z.domSupported&&t.getBoundingClientRect){var o=e.clientX,s=e.clientY;if((0,i.UK)(t)){var l=t.getBoundingClientRect();return n.zrX=o-l.left,void(n.zrY=s-l.top)}if((0,i.A4)(a,t,o,s))return n.zrX=a[0],void(n.zrY=a[1])}n.zrX=n.zrY=0}function c(t){return t||window.event}function f(t,e,n){if(e=c(e),null!=e.zrX)return e;var r=e.type,i=r&&r.indexOf("touch")>=0;if(i){var a="touchend"!==r?e.targetTouches[0]:e.changedTouches[0];a&&l(t,a,e,n)}else{l(t,e,e,n);var s=h(e);e.zrDelta=s?s/120:-(e.detail||0)/3}var u=e.button;return null==e.which&&void 0!==u&&o.test(e.type)&&(e.which=1&u?1:2&u?3:4&u?2:0),e}function h(t){var e=t.wheelDelta;if(e)return e;var n=t.deltaX,r=t.deltaY;if(null==n||null==r)return e;var i=0!==r?Math.abs(r):Math.abs(n),o=r>0?-1:r<0?1:n>0?-1:1;return 3*i*o}function d(t,e,n,r){t.addEventListener(e,n,r)}function p(t,e,n,r){t.removeEventListener(e,n,r)}var v=function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0}},2892:function(t,e,n){"use strict";function r(){return[1,0,0,1,0,0]}function i(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function o(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function a(t,e,n){var r=e[0]*n[0]+e[2]*n[1],i=e[1]*n[0]+e[3]*n[1],o=e[0]*n[2]+e[2]*n[3],a=e[1]*n[2]+e[3]*n[3],s=e[0]*n[4]+e[2]*n[5]+e[4],l=e[1]*n[4]+e[3]*n[5]+e[5];return t[0]=r,t[1]=i,t[2]=o,t[3]=a,t[4]=s,t[5]=l,t}function s(t,e,n){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+n[0],t[5]=e[5]+n[1],t}function l(t,e,n){var r=e[0],i=e[2],o=e[4],a=e[1],s=e[3],l=e[5],u=Math.sin(n),c=Math.cos(n);return t[0]=r*c+a*u,t[1]=-r*u+a*c,t[2]=i*c+s*u,t[3]=-i*u+c*s,t[4]=c*o+u*l,t[5]=c*l-u*o,t}function u(t,e,n){var r=n[0],i=n[1];return t[0]=e[0]*r,t[1]=e[1]*i,t[2]=e[2]*r,t[3]=e[3]*i,t[4]=e[4]*r,t[5]=e[5]*i,t}function c(t,e){var n=e[0],r=e[2],i=e[4],o=e[1],a=e[3],s=e[5],l=n*a-o*r;return l?(l=1/l,t[0]=a*l,t[1]=-o*l,t[2]=-r*l,t[3]=n*l,t[4]=(r*s-a*i)*l,t[5]=(o*i-n*s)*l,t):null}n.d(e,{Iu:function(){return s},JG:function(){return o},U1:function(){return l},U_:function(){return c},Ue:function(){return r},bA:function(){return u},dC:function(){return a},yR:function(){return i}})},3132:function(t,e,n){"use strict";n.d(e,{Uo:function(){return o},n5:function(){return r},qW:function(){return f}});var r=12,i="sans-serif",o=r+"px "+i,a=20,s=100,l="007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N";function u(t){var e={};if("undefined"===typeof JSON)return e;for(var n=0;n=0)u=l*n.length;else for(var h=0;h=r)e|=1&t,t>>=1;return t+e}function a(t,e,n,r){var i=e+1;if(i===n)return 1;if(r(t[i++],t[e])<0){while(i=0)i++;return i-e}function s(t,e,n){n--;while(e>>1,i(a,t[o])<0?l=o:s=o+1;var u=r-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:while(u>0)t[s+u]=t[s+u-1],u--}t[s]=a}}function u(t,e,n,r,i,o){var a=0,s=0,l=1;if(o(t,e[n+i])>0){s=r-i;while(l0)a=l,l=1+(l<<1),l<=0&&(l=s);l>s&&(l=s),a+=i,l+=i}else{s=i+1;while(ls&&(l=s);var u=a;a=i-l,l=i-u}a++;while(a>>1);o(t,e[n+c])>0?a=c+1:l=c}return l}function c(t,e,n,r,i,o){var a=0,s=0,l=1;if(o(t,e[n+i])<0){s=i+1;while(ls&&(l=s);var u=a;a=i-l,l=i-u}else{s=r-i;while(l=0)a=l,l=1+(l<<1),l<=0&&(l=s);l>s&&(l=s),a+=i,l+=i}a++;while(a>>1);o(t,e[n+c])<0?l=c:a=c+1}return l}function f(t,e){var n,r,o=i,a=0,s=0;a=t.length;var l=[];function f(t,e){n[s]=t,r[s]=e,s+=1}function h(){while(s>1){var t=s-2;if(t>=1&&r[t-1]<=r[t]+r[t+1]||t>=2&&r[t-2]<=r[t]+r[t-1])r[t-1]r[t+1])break;p(t)}}function d(){while(s>1){var t=s-2;t>0&&r[t-1]=i||g>=i);if(y)break;m<0&&(m=0),m+=2}if(o=m,o<1&&(o=1),1===r){for(f=0;f=0;f--)t[g+f]=t[v+f];if(0===r){b=!0;break}}if(t[p--]=l[d--],1===--s){b=!0;break}if(_=s-u(t[h],l,0,s,s-1,e),0!==_){for(p-=_,d-=_,s-=_,g=p+1,v=d+1,f=0;f<_;f++)t[g+f]=l[v+f];if(s<=1){b=!0;break}}if(t[p--]=t[h--],0===--r){b=!0;break}y--}while(m>=i||_>=i);if(b)break;y<0&&(y=0),y+=2}if(o=y,o<1&&(o=1),1===s){for(p-=r,h-=r,g=p+1,v=h+1,f=r-1;f>=0;f--)t[g+f]=t[v+f];t[p]=l[d]}else{if(0===s)throw new Error;for(v=p-(s-1),f=0;f=0;f--)t[g+f]=t[v+f];t[p]=l[d]}else for(v=p-(s-1),f=0;fh&&(d=h),l(t,n,n+d,n+u,e),u=d}c.pushRun(n,u),c.mergeRuns(),s-=u,n+=u}while(0!==s);c.forceMergeRuns()}}},3051:function(t,e,n){"use strict";n.d(e,{$j:function(){return at},Bu:function(){return H},H:function(){return y},HD:function(){return B},I3:function(){return ut},Jv:function(){return G},Kn:function(){return z},M8:function(){return g},MY:function(){return $},Mh:function(){return U},Qq:function(){return V},R1:function(){return Y},RI:function(){return st},S6:function(){return T},TS:function(){return _},UI:function(){return A},WA:function(){return P},WW:function(){return it},XP:function(){return D},XW:function(){return S},ZT:function(){return lt},ak:function(){return E},cd:function(){return Z},ce:function(){return w},cq:function(){return x},d9:function(){return m},dL:function(){return j},fU:function(){return W},fy:function(){return J},hX:function(){return M},hj:function(){return F},hu:function(){return K},jB:function(){return k},kJ:function(){return L},kW:function(){return rt},l7:function(){return b},mf:function(){return R},nW:function(){return ot},pD:function(){return q},s7:function(){return tt},tP:function(){return X},u4:function(){return I},zG:function(){return C}});var r=n(3132),i=I(["Function","RegExp","Date","Error","CanvasGradient","CanvasPattern","Image","Canvas"],(function(t,e){return t["[object "+e+"]"]=!0,t}),{}),o=I(["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64"],(function(t,e){return t["[object "+e+"Array]"]=!0,t}),{}),a=Object.prototype.toString,s=Array.prototype,l=s.forEach,u=s.filter,c=s.slice,f=s.map,h=function(){}.constructor,d=h?h.prototype:null,p="__proto__",v=2311;function g(){return v++}function y(){for(var t=[],e=0;e=0&&(n.splice(r,0,t),this._doAdd(t))}return this},e.prototype.replace=function(t,e){var n=i.cq(this._children,t);return n>=0&&this.replaceAt(e,n),this},e.prototype.replaceAt=function(t,e){var n=this._children,r=n[e];if(t&&t!==this&&t.parent!==this&&t!==r){n[e]=t,r.parent=null;var i=this.__zr;i&&r.removeSelfFromZr(i),this._doAdd(t)}return this},e.prototype._doAdd=function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__zr;e&&e!==t.__zr&&t.addSelfToZr(e),e&&e.refresh()},e.prototype.remove=function(t){var e=this.__zr,n=this._children,r=i.cq(n,t);return r<0||(n.splice(r,1),t.parent=null,e&&t.removeSelfFromZr(e),e&&e.refresh()),this},e.prototype.removeAll=function(){for(var t=this._children,e=this.__zr,n=0;ne+s&&a>r+s||at+s&&o>n+s||oe+h&&f>r+h&&f>o+h&&f>l+h||ft+h&&c>n+h&&c>i+h&&c>a+h||ce+c&&u>r+c&&u>o+c||ut+c&&l>n+c&&l>i+c||ln||c+ui&&(i+=h);var p=Math.atan2(l,s);return p<0&&(p+=h),p>=r&&p<=i||p+h>=r&&p+h<=i}function p(t,e,n,r,i,o){if(o>e&&o>r||oi?s:0}var v=o.Z.CMD,g=2*Math.PI,y=1e-4;function m(t,e){return Math.abs(t-e)e&&c>r&&c>o&&c>l||c1&&w(),p=s.af(e,r,o,l,b[0]),d>1&&(v=s.af(e,r,o,l,b[1]))),2===d?ye&&l>r&&l>o||l=0&&c<=1){for(var f=0,h=s.Zm(e,r,o,c),d=0;dn||s<-n)return 0;var l=Math.sqrt(n*n-s*s);_[0]=-l,_[1]=l;var u=Math.abs(r-i);if(u<1e-4)return 0;if(u>=g-1e-4){r=0,i=g;var c=o?1:-1;return a>=_[0]+t&&a<=_[1]+t?c:0}if(r>i){var f=r;r=i,i=f}r<0&&(r+=g,i+=g);for(var h=0,d=0;d<2;d++){var p=_[d];if(p+t>a){var v=Math.atan2(s,p);c=o?1:-1;v<0&&(v=g+v),(v>=r&&v<=i||v+g>=r&&v+g<=i)&&(v>Math.PI/2&&v<1.5*Math.PI&&(c=-c),h+=c)}}return h}function C(t,e,n,r,i){for(var o,s,c=t.data,f=t.len(),h=0,g=0,y=0,_=0,b=0,w=0;w1&&(n||(h+=p(g,y,_,b,r,i))),T&&(g=c[w],y=c[w+1],_=g,b=y),C){case v.M:_=c[w++],b=c[w++],g=_,y=b;break;case v.L:if(n){if(a(g,y,c[w],c[w+1],e,r,i))return!0}else h+=p(g,y,c[w],c[w+1],r,i)||0;g=c[w++],y=c[w++];break;case v.C:if(n){if(l(g,y,c[w++],c[w++],c[w++],c[w++],c[w],c[w+1],e,r,i))return!0}else h+=x(g,y,c[w++],c[w++],c[w++],c[w++],c[w],c[w+1],r,i)||0;g=c[w++],y=c[w++];break;case v.Q:if(n){if(u(g,y,c[w++],c[w++],c[w],c[w+1],e,r,i))return!0}else h+=S(g,y,c[w++],c[w++],c[w],c[w+1],r,i)||0;g=c[w++],y=c[w++];break;case v.A:var A=c[w++],I=c[w++],M=c[w++],D=c[w++],O=c[w++],E=c[w++];w+=1;var P=!!(1-c[w++]);o=Math.cos(O)*M+A,s=Math.sin(O)*D+I,T?(_=o,b=s):h+=p(g,y,o,s,r,i);var L=(r-A)*D/M+A;if(n){if(d(A,I,D,O,O+E,P,e,L,i))return!0}else h+=k(A,I,D,O,O+E,P,L,i);g=Math.cos(O+E)*M+A,y=Math.sin(O+E)*D+I;break;case v.R:_=g=c[w++],b=y=c[w++];var R=c[w++],B=c[w++];if(o=_+R,s=b+B,n){if(a(_,b,o,b,e,r,i)||a(o,b,o,s,e,r,i)||a(o,s,_,s,e,r,i)||a(_,s,_,b,e,r,i))return!0}else h+=p(o,b,o,s,r,i),h+=p(_,s,_,b,r,i);break;case v.Z:if(n){if(a(g,y,_,b,e,r,i))return!0}else h+=p(g,y,_,b,r,i);g=_,y=b;break}}return n||m(y,b)||(h+=p(g,y,_,b,r,i)||0),0!==h}function T(t,e,n){return C(t,0,!1,e,n)}function A(t,e,n,r){return C(t,e,!0,n,r)}var I=n(3051),M=n(1092),D=n(4990),O=n(4414),E=n(7411),P=(0,I.ce)({fill:"#000",stroke:null,strokePercent:1,fillOpacity:1,strokeOpacity:1,lineDashOffset:0,lineWidth:1,lineCap:"butt",miterLimit:10,strokeNoScale:!1,strokeFirst:!1},i.tj),L={style:(0,I.ce)({fill:!0,stroke:!0,strokePercent:!0,fillOpacity:!0,strokeOpacity:!0,lineDashOffset:!0,lineWidth:!0,miterLimit:!0},i.ik.style)},R=E.dN.concat(["invisible","culling","z","z2","zlevel","parent"]),B=function(t){function e(e){return t.call(this,e)||this}return(0,r.ZT)(e,t),e.prototype.update=function(){var n=this;t.prototype.update.call(this);var r=this.style;if(r.decal){var i=this._decalEl=this._decalEl||new e;i.buildPath===e.prototype.buildPath&&(i.buildPath=function(t){n.buildPath(t,n.shape)}),i.silent=!0;var o=i.style;for(var a in r)o[a]!==r[a]&&(o[a]=r[a]);o.fill=r.fill?r.decal:null,o.decal=null,o.shadowColor=null,r.strokeFirst&&(o.stroke=null);for(var s=0;s.5?D.vU:e>.2?D.iv:D.GD}if(t)return D.GD}return D.vU},e.prototype.getInsideTextStroke=function(t){var e=this.style.fill;if((0,I.HD)(e)){var n=this.__zr,r=!(!n||!n.isDarkMode()),i=(0,M.L0)(t,0)0))},e.prototype.hasFill=function(){var t=this.style,e=t.fill;return null!=e&&"none"!==e},e.prototype.getBoundingRect=function(){var t=this._rect,e=this.style,n=!t;if(n){var r=!1;this.path||(r=!0,this.createPathProxy());var i=this.path;(r||this.__dirty&O.RH)&&(i.beginPath(),this.buildPath(i,this.shape,!1),this.pathUpdated()),t=i.getBoundingRect()}if(this._rect=t,this.hasStroke()&&this.path&&this.path.len()>0){var o=this._rectStroke||(this._rectStroke=t.clone());if(this.__dirty||n){o.copy(t);var a=e.strokeNoScale?this.getLineScale():1,s=e.lineWidth;if(!this.hasFill()){var l=this.strokeContainThreshold;s=Math.max(s,null==l?4:l)}a>1e-10&&(o.width+=s/a,o.height+=s/a,o.x-=s/a/2,o.y-=s/a/2)}return o}return t},e.prototype.contain=function(t,e){var n=this.transformCoordToLocal(t,e),r=this.getBoundingRect(),i=this.style;if(t=n[0],e=n[1],r.contain(t,e)){var o=this.path;if(this.hasStroke()){var a=i.lineWidth,s=i.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(this.hasFill()||(a=Math.max(a,this.strokeContainThreshold)),A(o,a/s,t,e)))return!0}if(this.hasFill())return T(o,t,e)}return!1},e.prototype.dirtyShape=function(){this.__dirty|=O.RH,this._rect&&(this._rect=null),this._decalEl&&this._decalEl.dirtyShape(),this.markRedraw()},e.prototype.dirty=function(){this.dirtyStyle(),this.dirtyShape()},e.prototype.animateShape=function(t){return this.animate("shape",t)},e.prototype.updateDuringAnimation=function(t){"style"===t?this.dirtyStyle():"shape"===t?this.dirtyShape():this.markRedraw()},e.prototype.attrKV=function(e,n){"shape"===e?this.setShape(n):t.prototype.attrKV.call(this,e,n)},e.prototype.setShape=function(t,e){var n=this.shape;return n||(n=this.shape={}),"string"===typeof t?n[t]=e:(0,I.l7)(n,t),this.dirtyShape(),this},e.prototype.shapeChanged=function(){return!!(this.__dirty&O.RH)},e.prototype.createStyle=function(t){return(0,I.nW)(P,t)},e.prototype._innerSaveToNormal=function(e){t.prototype._innerSaveToNormal.call(this,e);var n=this._normalState;e.shape&&!n.shape&&(n.shape=(0,I.l7)({},this.shape))},e.prototype._applyStateObj=function(e,n,r,i,o,a){t.prototype._applyStateObj.call(this,e,n,r,i,o,a);var s,l=!(n&&i);if(n&&n.shape?o?i?s=n.shape:(s=(0,I.l7)({},r.shape),(0,I.l7)(s,n.shape)):(s=(0,I.l7)({},i?this.shape:r.shape),(0,I.l7)(s,n.shape)):l&&(s=r.shape),s)if(o){this.shape=(0,I.l7)({},this.shape);for(var u={},c=(0,I.XP)(s),f=0;f0},e.prototype.hasFill=function(){var t=this.style,e=t.fill;return null!=e&&"none"!==e},e.prototype.createStyle=function(t){return(0,s.nW)(u,t)},e.prototype.setBoundingRect=function(t){this._rect=t},e.prototype.getBoundingRect=function(){var t=this.style;if(!this._rect){var e=t.text;null!=e?e+="":e="";var n=(0,o.lP)(e,t.font,t.textAlign,t.textBaseline);if(n.x+=t.x||0,n.y+=t.y||0,this.hasStroke()){var r=t.lineWidth;n.x-=r/2,n.y-=r/2,n.width+=r,n.height+=r}this._rect=n}return this._rect},e.initDefaultProps=function(){var t=e.prototype;t.dirtyRectTolerance=10}(),e}(i.ZP);c.prototype.type="tspan",e["Z"]=c},9750:function(t,e,n){"use strict";n.d(e,{ZP:function(){return H}});var r=n(4311),i=n(8007),o=n(3051),a=n(423),s=/\{([a-zA-Z0-9_]+)\|([^}]*)\}/g;function l(t,e,n,r,i){if(!e)return"";var o=(t+"").split("\n");i=u(e,n,r,i);for(var a=0,s=o.length;a=l;c++)u-=l;var f=(0,a.dz)(n,e);return f>u&&(n="",f=0),u=t-f,i.ellipsis=n,i.ellipsisWidth=f,i.contentWidth=u,i.containerWidth=t,i}function c(t,e){var n=e.containerWidth,r=e.font,i=e.contentWidth;if(!n)return"";var o=(0,a.dz)(t,r);if(o<=n)return t;for(var s=0;;s++){if(o<=i||s>=e.maxIterations){t+=e.ellipsis;break}var l=0===s?f(t,i,e.ascCharWidth,e.cnCharWidth):o>0?Math.floor(t.length*i/o):0;t=t.substr(0,l),o=(0,a.dz)(t,r)}return""===t&&(t=e.placeholder),t}function f(t,e,n,r){for(var i=0,o=0,a=t.length;oy&&p){var m=Math.floor(y/h);n=n.slice(0,m)}if(t&&l&&null!=v)for(var _=u(v,s,e.ellipsis,{minChar:e.truncateMinChar,placeholder:e.placeholder}),b=0;bd&&y(n,t.substring(d,p),e,h),y(n,r[2],e,h,r[1]),d=s.lastIndex}dc){I>0?(C.tokens=C.tokens.slice(0,I),S(C,A,T),n.lines=n.lines.slice(0,k+1)):n.lines=n.lines.slice(0,k);break t}var R=D.width,B=null==R||"auto"===R;if("string"===typeof R&&"%"===R.charAt(R.length-1))M.percentWidth=R,g.push(M),M.contentWidth=(0,a.dz)(M.text,P);else{if(B){var Z=D.backgroundColor,F=Z&&Z.image;F&&(F=i.ko(F),i.v5(F)&&(M.width=Math.max(M.width,F.width*L/F.height)))}var z=w&&null!=u?u-A:null;null!=z&&z0&&y+r.accumWidth>r.width&&(o=e.split("\n"),h=!0),r.accumWidth=y}else{var m=w(e,f,r.width,r.breakAll,r.accumWidth);r.accumWidth=m.accumWidth+g,s=m.linesWidths,o=m.lines}}else o=e.split("\n");for(var _=0;_=33&&e<=383}var _=(0,o.u4)(",&?/;] ".split(""),(function(t,e){return t[e]=!0,t}),{});function b(t){return!m(t)||!!_[t]}function w(t,e,n,r,i){for(var o=[],s=[],l="",u="",c=0,f=0,h=0;hn:i+f+p>n)?f?(l||u)&&(v?(l||(l=u,u="",c=0,f=c),o.push(l),s.push(f-c),u+=d,c+=p,l="",f=c):(u&&(l+=u,u="",c=0),o.push(l),s.push(f),l=d,f=p)):v?(o.push(u),s.push(c),u=d,c=p):(o.push(d),s.push(p)):(f+=p,v?(u+=d,c+=p):(u&&(l+=u,u="",c=0),l+=d))}else u&&(l+=u,f+=c),o.push(l),s.push(f),l="",u="",c=0,f=0}return o.length||l||(l=t,u="",c=0),u&&(l+=u),l&&(o.push(l),s.push(f)),1===o.length&&(f+=i),{accumWidth:f,lines:o,linesWidths:s}}var x=n(1505),S=n(4535),k=n(5293),C=n(479),T=n(7719),A=n(3132),I={fill:"#000"},M=2,D={style:(0,o.ce)({fill:!0,stroke:!0,fillOpacity:!0,strokeOpacity:!0,lineWidth:!0,fontSize:!0,lineHeight:!0,width:!0,height:!0,textShadowColor:!0,textShadowBlur:!0,textShadowOffsetX:!0,textShadowOffsetY:!0,backgroundColor:!0,padding:!0,borderColor:!0,borderWidth:!0,borderRadius:!0},T.ik.style)},O=function(t){function e(e){var n=t.call(this)||this;return n.type="text",n._children=[],n._defaultStyle=I,n.attr(e),n}return(0,r.ZT)(e,t),e.prototype.childrenRef=function(){return this._children},e.prototype.update=function(){t.prototype.update.call(this),this.styleChanged()&&this._updateSubTexts();for(var e=0;e0,E=null!=t.width&&("truncate"===t.overflow||"break"===t.overflow||"breakAll"===t.overflow),P=i.calculatedLineHeight,L=0;L=0&&(D=x[M],"right"===D.align))this._placeToken(D,t,k,y,I,"right",_),C-=D.width,I-=D.width,M--;A+=(r-(A-v)-(m-I)-C)/2;while(T<=M)D=x[T],this._placeToken(D,t,k,y,A+D.width/2,"center",_),A+=D.width,T++;y+=k}},e.prototype._placeToken=function(t,e,n,r,i,s,l){var u=e.rich[t.styleName]||{};u.text=t.text;var c=t.verticalAlign,f=r+n/2;"top"===c?f=r+t.height/2:"bottom"===c&&(f=r+n-t.height/2);var h=!t.isLineHolder&&j(u);h&&this._renderBackground(u,e,"right"===s?i-t.width:"center"===s?i-t.width/2:i,f-t.height/2,t.width,t.height);var d=!!u.backgroundColor,p=t.textPadding;p&&(i=U(i,s,p),f-=t.height/2-p[0]-t.innerHeight/2);var v=this._getOrCreateChild(x.Z),g=v.createStyle();v.useStyle(g);var y=this._defaultStyle,m=!1,_=0,b=W("fill"in u?u.fill:"fill"in e?e.fill:(m=!0,y.fill)),w=N("stroke"in u?u.stroke:"stroke"in e?e.stroke:d||l||y.autoStroke&&!m?null:(_=M,y.stroke)),S=u.textShadowBlur>0||e.textShadowBlur>0;g.text=t.text,g.x=i,g.y=f,S&&(g.shadowBlur=u.textShadowBlur||e.textShadowBlur||0,g.shadowColor=u.textShadowColor||e.textShadowColor||"transparent",g.shadowOffsetX=u.textShadowOffsetX||e.textShadowOffsetX||0,g.shadowOffsetY=u.textShadowOffsetY||e.textShadowOffsetY||0),g.textAlign=s,g.textBaseline="middle",g.font=t.font||A.Uo,g.opacity=(0,o.R1)(u.opacity,e.opacity,1),B(g,u),w&&(g.lineWidth=(0,o.R1)(u.lineWidth,e.lineWidth,_),g.lineDash=(0,o.pD)(u.lineDash,e.lineDash),g.lineDashOffset=e.lineDashOffset||0,g.stroke=w),b&&(g.fill=b);var k=t.contentWidth,T=t.contentHeight;v.setBoundingRect(new C.Z((0,a.M3)(g.x,k,g.textAlign),(0,a.mU)(g.y,T,g.textBaseline),k,T))},e.prototype._renderBackground=function(t,e,n,r,i,a){var s,l,u=t.backgroundColor,c=t.borderWidth,f=t.borderColor,h=u&&u.image,d=u&&!h,p=t.borderRadius,v=this;if(d||t.lineHeight||c&&f){s=this._getOrCreateChild(k.Z),s.useStyle(s.createStyle()),s.style.fill=null;var g=s.shape;g.x=n,g.y=r,g.width=i,g.height=a,g.r=p,s.dirtyShape()}if(d){var y=s.style;y.fill=u||null,y.fillOpacity=(0,o.pD)(t.fillOpacity,1)}else if(h){l=this._getOrCreateChild(S.ZP),l.onload=function(){v.dirtyStyle()};var m=l.style;m.image=u.image,m.x=n,m.y=r,m.width=i,m.height=a}if(c&&f){y=s.style;y.lineWidth=c,y.stroke=f,y.strokeOpacity=(0,o.pD)(t.strokeOpacity,1),y.lineDash=t.borderDash,y.lineDashOffset=t.borderDashOffset||0,s.strokeContainThreshold=0,s.hasFill()&&s.hasStroke()&&(y.strokeFirst=!0,y.lineWidth*=2)}var _=(s||l).style;_.shadowBlur=t.shadowBlur||0,_.shadowColor=t.shadowColor||"transparent",_.shadowOffsetX=t.shadowOffsetX||0,_.shadowOffsetY=t.shadowOffsetY||0,_.opacity=(0,o.R1)(t.opacity,e.opacity,1)},e.makeFont=function(t){var e="";return Z(t)&&(e=[t.fontStyle,t.fontWeight,R(t.fontSize),t.fontFamily||"sans-serif"].join(" ")),e&&(0,o.fy)(e)||t.textFont||t.font},e}(T.ZP),E={left:!0,right:1,center:1},P={top:1,bottom:1,middle:1},L=["fontStyle","fontWeight","fontSize","fontFamily"];function R(t){return"string"!==typeof t||-1===t.indexOf("px")&&-1===t.indexOf("rem")&&-1===t.indexOf("em")?isNaN(+t)?A.n5+"px":t+"px":t}function B(t,e){for(var n=0;n=2){if(r){var a=i(o,r,n,e.smoothConstraint);t.moveTo(o[0][0],o[0][1]);for(var s=o.length,l=0;l<(n?s:s-1);l++){var u=a[2*l],c=a[2*l+1],f=o[(l+1)%s];t.bezierCurveTo(u[0],u[1],c[0],c[1],f[0],f[1])}}else{t.moveTo(o[0][0],o[0][1]);l=1;for(var h=o.length;lu&&(a=n+r,n*=u/a,r*=u/a),i+o>u&&(a=i+o,i*=u/a,o*=u/a),r+i>c&&(a=r+i,r*=c/a,i*=c/a),n+o>c&&(a=n+o,n*=c/a,o*=c/a),t.moveTo(s+n,l),t.lineTo(s+u-r,l),0!==r&&t.arc(s+u-r,l+r,r,-Math.PI/2,0),t.lineTo(s+u,l+c-i),0!==i&&t.arc(s+u-i,l+c-i,i,0,Math.PI/2),t.lineTo(s+o,l+c),0!==o&&t.arc(s+o,l+c-o,o,Math.PI/2,Math.PI),t.lineTo(s,l+n),0!==n&&t.arc(s+n,l+n,n,Math.PI,1.5*Math.PI)}var a=n(4111),s=function(){function t(){this.x=0,this.y=0,this.width=0,this.height=0}return t}(),l={},u=function(t){function e(e){return t.call(this,e)||this}return(0,r.ZT)(e,t),e.prototype.getDefaultShape=function(){return new s},e.prototype.buildPath=function(t,e){var n,r,i,s;if(this.subPixelOptimize){var u=(0,a.Pw)(l,e,this.style);n=u.x,r=u.y,i=u.width,s=u.height,u.r=e.r,e=u}else n=e.x,r=e.y,i=e.width,s=e.height;e.r?o(t,e):t.rect(n,r,i,s)},e.prototype.isZeroArea=function(){return!this.shape.width||!this.shape.height},e}(i.ZP);u.prototype.type="rect";var c=u},7782:function(t,e,n){"use strict";n.d(e,{C:function(){return S}});var r=n(4311),i=n(5825),o=n(3051),a=Math.PI,s=2*a,l=Math.sin,u=Math.cos,c=Math.acos,f=Math.atan2,h=Math.abs,d=Math.sqrt,p=Math.max,v=Math.min,g=1e-4;function y(t,e,n,r,i,o,a,s){var l=n-t,u=r-e,c=a-i,f=s-o,h=f*l-c*u;if(!(h*hE*E+P*P&&(T=I,A=M),{cx:T,cy:A,x0:-c,y0:-f,x1:T*(i/S-1),y1:A*(i/S-1)}}function _(t){var e;if((0,o.kJ)(t)){var n=t.length;if(!n)return t;e=1===n?[t[0],t[0],0,0]:2===n?[t[0],t[0],t[1],t[1]]:3===n?t.concat(t[2]):t}else e=[t,t,t,t];return e}function b(t,e){var n,r=p(e.r,0),i=p(e.r0||0,0),o=r>0,b=i>0;if(o||b){if(o||(r=i,i=0),i>r){var w=r;r=i,i=w}var x=e.startAngle,S=e.endAngle;if(!isNaN(x)&&!isNaN(S)){var k=e.cx,C=e.cy,T=!!e.clockwise,A=h(S-x),I=A>s&&A%s;if(I>g&&(A=I),r>g)if(A>s-g)t.moveTo(k+r*u(x),C+r*l(x)),t.arc(k,C,r,x,S,!T),i>g&&(t.moveTo(k+i*u(S),C+i*l(S)),t.arc(k,C,i,S,x,T));else{var M=void 0,D=void 0,O=void 0,E=void 0,P=void 0,L=void 0,R=void 0,B=void 0,Z=void 0,F=void 0,z=void 0,N=void 0,W=void 0,U=void 0,V=void 0,j=void 0,H=r*u(x),G=r*l(x),q=i*u(S),Y=i*l(S),X=A>g;if(X){var $=e.cornerRadius;$&&(n=_($),M=n[0],D=n[1],O=n[2],E=n[3]);var K=h(r-i)/2;if(P=v(K,O),L=v(K,E),R=v(K,M),B=v(K,D),z=Z=p(P,L),N=F=p(R,B),(Z>g||F>g)&&(W=r*u(S),U=r*l(S),V=i*u(x),j=i*l(x),Ag){var ot=v(O,z),at=v(E,z),st=m(V,j,H,G,r,ot,T),lt=m(W,U,q,Y,r,at,T);t.moveTo(k+st.cx+st.x0,C+st.cy+st.y0),z0&&t.arc(k+st.cx,C+st.cy,ot,f(st.y0,st.x0),f(st.y1,st.x1),!T),t.arc(k,C,r,f(st.cy+st.y1,st.cx+st.x1),f(lt.cy+lt.y1,lt.cx+lt.x1),!T),at>0&&t.arc(k+lt.cx,C+lt.cy,at,f(lt.y1,lt.x1),f(lt.y0,lt.x0),!T))}else t.moveTo(k+H,C+G),t.arc(k,C,r,x,S,!T);else t.moveTo(k+H,C+G);if(i>g&&X)if(N>g){ot=v(M,N),at=v(D,N),st=m(q,Y,W,U,i,-at,T),lt=m(H,G,V,j,i,-ot,T);t.lineTo(k+st.cx+st.x0,C+st.cy+st.y0),N0&&t.arc(k+st.cx,C+st.cy,at,f(st.y0,st.x0),f(st.y1,st.x1),!T),t.arc(k,C,i,f(st.cy+st.y1,st.cx+st.x1),f(lt.cy+lt.y1,lt.cx+lt.x1),T),ot>0&&t.arc(k+lt.cx,C+lt.cy,ot,f(lt.y1,lt.x1),f(lt.y0,lt.x0),!T))}else t.lineTo(k+q,C+Y),t.arc(k,C,i,S,x,T);else t.lineTo(k+q,C+Y)}else t.moveTo(k,C);t.closePath()}}}var w=function(){function t(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0,this.cornerRadius=0}return t}(),x=function(t){function e(e){return t.call(this,e)||this}return(0,r.ZT)(e,t),e.prototype.getDefaultShape=function(){return new w},e.prototype.buildPath=function(t,e){b(t,e)},e.prototype.isZeroArea=function(){return this.shape.startAngle===this.shape.endAngle||this.shape.r===this.shape.r0},e}(i.ZP);x.prototype.type="sector";var S=x},1092:function(t,e,n){"use strict";n.d(e,{L0:function(){return _},Pz:function(){return m},Qc:function(){return v},xb:function(){return y}});var r=n(2528),i={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function o(t){return t=Math.round(t),t<0?0:t>255?255:t}function a(t){return t<0?0:t>1?1:t}function s(t){var e=t;return e.length&&"%"===e.charAt(e.length-1)?o(parseFloat(e)/100*255):o(parseInt(e,10))}function l(t){var e=t;return e.length&&"%"===e.charAt(e.length-1)?a(parseFloat(e)/100):a(parseFloat(e))}function u(t,e,n){return n<0?n+=1:n>1&&(n-=1),6*n<1?t+(e-t)*n*6:2*n<1?e:3*n<2?t+(e-t)*(2/3-n)*6:t}function c(t,e,n,r,i){return t[0]=e,t[1]=n,t[2]=r,t[3]=i,t}function f(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}var h=new r.ZP(20),d=null;function p(t,e){d&&f(d,e),d=h.put(t,d||e.slice())}function v(t,e){if(t){e=e||[];var n=h.get(t);if(n)return f(e,n);t+="";var r=t.replace(/ /g,"").toLowerCase();if(r in i)return f(e,i[r]),p(t,e),e;var o=r.length;if("#"!==r.charAt(0)){var a=r.indexOf("("),u=r.indexOf(")");if(-1!==a&&u+1===o){var d=r.substr(0,a),v=r.substr(a+1,u-(a+1)).split(","),y=1;switch(d){case"rgba":if(4!==v.length)return 3===v.length?c(e,+v[0],+v[1],+v[2],1):c(e,0,0,0,1);y=l(v.pop());case"rgb":return 3!==v.length?void c(e,0,0,0,1):(c(e,s(v[0]),s(v[1]),s(v[2]),y),p(t,e),e);case"hsla":return 4!==v.length?void c(e,0,0,0,1):(v[3]=l(v[3]),g(v,e),p(t,e),e);case"hsl":return 3!==v.length?void c(e,0,0,0,1):(g(v,e),p(t,e),e);default:return}}c(e,0,0,0,1)}else{if(4===o||5===o){var m=parseInt(r.slice(1,4),16);return m>=0&&m<=4095?(c(e,(3840&m)>>4|(3840&m)>>8,240&m|(240&m)>>4,15&m|(15&m)<<4,5===o?parseInt(r.slice(4),16)/15:1),p(t,e),e):void c(e,0,0,0,1)}if(7===o||9===o){m=parseInt(r.slice(1,7),16);return m>=0&&m<=16777215?(c(e,(16711680&m)>>16,(65280&m)>>8,255&m,9===o?parseInt(r.slice(7),16)/255:1),p(t,e),e):void c(e,0,0,0,1)}}}}function g(t,e){var n=(parseFloat(t[0])%360+360)%360/360,r=l(t[1]),i=l(t[2]),a=i<=.5?i*(r+1):i+r-i*r,s=2*i-a;return e=e||[],c(e,o(255*u(s,a,n+1/3)),o(255*u(s,a,n)),o(255*u(s,a,n-1/3)),1),4===t.length&&(e[3]=t[3]),e}function y(t,e){var n=v(t);if(n){for(var r=0;r<3;r++)n[r]=e<0?n[r]*(1-e)|0:(255-n[r])*e+n[r]|0,n[r]>255?n[r]=255:n[r]<0&&(n[r]=0);return m(n,4===n.length?"rgba":"rgb")}}function m(t,e){if(t&&t.length){var n=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(n+=","+t[3]),e+"("+n+")"}}function _(t,e){var n=v(t);return n?(.299*n[0]+.587*n[1]+.114*n[2])*n[3]/255+(1-n[3])*e:0}},6641:function(t,e,n){"use strict";n.d(e,{S1:function(){return ht},wm:function(){return dt}});var r=n(6387),i=n(3051),o=n(4311),a=n(5280),s=function(){function t(t,e){this.target=t,this.topTarget=e&&e.topTarget}return t}(),l=function(){function t(t){this.handler=t,t.on("mousedown",this._dragStart,this),t.on("mousemove",this._drag,this),t.on("mouseup",this._dragEnd,this)}return t.prototype._dragStart=function(t){var e=t.target;while(e&&!e.draggable)e=e.parent||e.__hostTarget;e&&(this._draggingTarget=e,e.dragging=!0,this._x=t.offsetX,this._y=t.offsetY,this.handler.dispatchToElement(new s(e,t),"dragstart",t.event))},t.prototype._drag=function(t){var e=this._draggingTarget;if(e){var n=t.offsetX,r=t.offsetY,i=n-this._x,o=r-this._y;this._x=n,this._y=r,e.drift(i,o,t),this.handler.dispatchToElement(new s(e,t),"drag",t.event);var a=this.handler.findHover(n,r,e).target,l=this._dropTarget;this._dropTarget=a,e!==a&&(l&&a!==l&&this.handler.dispatchToElement(new s(l,t),"dragleave",t.event),a&&a!==l&&this.handler.dispatchToElement(new s(a,t),"dragenter",t.event))}},t.prototype._dragEnd=function(t){var e=this._draggingTarget;e&&(e.dragging=!1),this.handler.dispatchToElement(new s(e,t),"dragend",t.event),this._dropTarget&&this.handler.dispatchToElement(new s(this._dropTarget,t),"drop",t.event),this._draggingTarget=null,this._dropTarget=null},t}(),u=l,c=n(3510),f=n(1158),h=function(){function t(){this._track=[]}return t.prototype.recognize=function(t,e,n){return this._doTrack(t,e,n),this._recognize(t)},t.prototype.clear=function(){return this._track.length=0,this},t.prototype._doTrack=function(t,e,n){var r=t.touches;if(r){for(var i={points:[],touches:[],target:e,event:t},o=0,a=r.length;o1&&r&&r.length>1){var o=d(r)/d(i);!isFinite(o)&&(o=1),e.pinchScale=o;var a=p(r);return e.pinchX=a[0],e.pinchY=a[1],{type:"pinch",target:t[0].target,event:e}}}}},g="silent";function y(t,e,n){return{type:t,event:n,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:n.zrX,offsetY:n.zrY,gestureEvent:n.gestureEvent,pinchX:n.pinchX,pinchY:n.pinchY,pinchScale:n.pinchScale,wheelDelta:n.zrDelta,zrByTouch:n.zrByTouch,which:n.which,stop:m}}function m(){f.sT(this.event)}var _=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.handler=null,e}return(0,o.ZT)(e,t),e.prototype.dispose=function(){},e.prototype.setCursor=function(){},e}(c.Z),b=function(){function t(t,e){this.x=t,this.y=e}return t}(),w=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],x=function(t){function e(e,n,r,i){var o=t.call(this)||this;return o._hovered=new b(0,0),o.storage=e,o.painter=n,o.painterRoot=i,r=r||new _,o.proxy=null,o.setHandlerProxy(r),o._draggingMgr=new u(o),o}return(0,o.ZT)(e,t),e.prototype.setHandlerProxy=function(t){this.proxy&&this.proxy.dispose(),t&&(i.S6(w,(function(e){t.on&&t.on(e,this[e],this)}),this),t.handler=this),this.proxy=t},e.prototype.mousemove=function(t){var e=t.zrX,n=t.zrY,r=k(this,e,n),i=this._hovered,o=i.target;o&&!o.__zr&&(i=this.findHover(i.x,i.y),o=i.target);var a=this._hovered=r?new b(e,n):this.findHover(e,n),s=a.target,l=this.proxy;l.setCursor&&l.setCursor(s?s.cursor:"default"),o&&s!==o&&this.dispatchToElement(i,"mouseout",t),this.dispatchToElement(a,"mousemove",t),s&&s!==o&&this.dispatchToElement(a,"mouseover",t)},e.prototype.mouseout=function(t){var e=t.zrEventControl;"only_globalout"!==e&&this.dispatchToElement(this._hovered,"mouseout",t),"no_globalout"!==e&&this.trigger("globalout",{type:"globalout",event:t})},e.prototype.resize=function(){this._hovered=new b(0,0)},e.prototype.dispatch=function(t,e){var n=this[t];n&&n.call(this,e)},e.prototype.dispose=function(){this.proxy.dispose(),this.storage=null,this.proxy=null,this.painter=null},e.prototype.setCursorStyle=function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},e.prototype.dispatchToElement=function(t,e,n){t=t||{};var r=t.target;if(!r||!r.silent){var i="on"+e,o=y(e,t,n);while(r)if(r[i]&&(o.cancelBubble=!!r[i].call(r,o)),r.trigger(e,o),r=r.__hostTarget?r.__hostTarget:r.parent,o.cancelBubble)break;o.cancelBubble||(this.trigger(e,o),this.painter&&this.painter.eachOtherLayer&&this.painter.eachOtherLayer((function(t){"function"===typeof t[i]&&t[i].call(t,o),t.trigger&&t.trigger(e,o)})))}},e.prototype.findHover=function(t,e,n){for(var r=this.storage.getDisplayList(),i=new b(t,e),o=r.length-1;o>=0;o--){var a=void 0;if(r[o]!==n&&!r[o].ignore&&(a=S(r[o],t,e))&&(!i.topTarget&&(i.topTarget=r[o]),a!==g)){i.target=r[o];break}}return i},e.prototype.processGesture=function(t,e){this._gestureMgr||(this._gestureMgr=new h);var n=this._gestureMgr;"start"===e&&n.clear();var r=n.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&n.clear(),r){var i=r.type;t.gestureEvent=i;var o=new b;o.target=r.target,this.dispatchToElement(o,i,r.event)}},e}(c.Z);function S(t,e,n){if(t[t.rectHover?"rectContain":"contain"](e,n)){var r=t,i=void 0,o=!1;while(r){if(r.ignoreClip&&(o=!0),!o){var a=r.getClipPath();if(a&&!a.contain(e,n))return!1;r.silent&&(i=!0)}var s=r.__hostTarget;r=s||r.parent}return!i||g}return!1}function k(t,e,n){var r=t.painter;return e<0||e>r.getWidth()||n<0||n>r.getHeight()}i.S6(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],(function(t){x.prototype[t]=function(e){var n,r,i=e.zrX,o=e.zrY,s=k(this,i,o);if("mouseup"===t&&s||(n=this.findHover(i,o),r=n.target),"mousedown"===t)this._downEl=r,this._downPoint=[e.zrX,e.zrY],this._upEl=r;else if("mouseup"===t)this._upEl=r;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||a.TK(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(n,t,e)}}));var C=x,T=n(9455),A=n(4414),I=!1;function M(){I||(I=!0,console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"))}function D(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}var O=function(){function t(){this._roots=[],this._displayList=[],this._displayListLen=0,this.displayableSortFunc=D}return t.prototype.traverse=function(t,e){for(var n=0;n0&&(u.__clipPaths=[]),isNaN(u.z)&&(M(),u.z=0),isNaN(u.z2)&&(M(),u.z2=0),isNaN(u.zlevel)&&(M(),u.zlevel=0),this._displayList[this._displayListLen++]=u}var c=t.getDecalElement&&t.getDecalElement();c&&this._updateAndAddDisplayable(c,e,n);var f=t.getTextGuideLine();f&&this._updateAndAddDisplayable(f,e,n);var h=t.getTextContent();h&&this._updateAndAddDisplayable(h,e,n)}},t.prototype.addRoot=function(t){t.__zr&&t.__zr.storage===this||this._roots.push(t)},t.prototype.delRoot=function(t){if(t instanceof Array)for(var e=0,n=t.length;e=0&&this._roots.splice(r,1)}},t.prototype.delAllRoots=function(){this._roots=[],this._displayList=[],this._displayListLen=0},t.prototype.getRoots=function(){return this._roots},t.prototype.dispose=function(){this._displayList=null,this._roots=null},t}(),E=O,P=n(2795),L=n(5024);function R(){return(new Date).getTime()}var B=function(t){function e(e){var n=t.call(this)||this;return n._running=!1,n._time=0,n._pausedTime=0,n._pauseStart=0,n._paused=!1,e=e||{},n.stage=e.stage||{},n}return(0,o.ZT)(e,t),e.prototype.addClip=function(t){t.animation&&this.removeClip(t),this._head?(this._tail.next=t,t.prev=this._tail,t.next=null,this._tail=t):this._head=this._tail=t,t.animation=this},e.prototype.addAnimator=function(t){t.animation=this;var e=t.getClip();e&&this.addClip(e)},e.prototype.removeClip=function(t){if(t.animation){var e=t.prev,n=t.next;e?e.next=n:this._head=n,n?n.prev=e:this._tail=e,t.next=t.prev=t.animation=null}},e.prototype.removeAnimator=function(t){var e=t.getClip();e&&this.removeClip(e),t.animation=null},e.prototype.update=function(t){var e=R()-this._pausedTime,n=e-this._time,r=this._head;while(r){var i=r.next,o=r.step(e,n);o?(r.ondestroy(),this.removeClip(r),r=i):r=i}this._time=e,t||(this.trigger("frame",n),this.stage.update&&this.stage.update())},e.prototype._startLoop=function(){var t=this;function e(){t._running&&((0,P.Z)(e),!t._paused&&t.update())}this._running=!0,(0,P.Z)(e)},e.prototype.start=function(){this._running||(this._time=R(),this._pausedTime=0,this._startLoop())},e.prototype.stop=function(){this._running=!1},e.prototype.pause=function(){this._paused||(this._pauseStart=R(),this._paused=!0)},e.prototype.resume=function(){this._paused&&(this._pausedTime+=R()-this._pauseStart,this._paused=!1)},e.prototype.clear=function(){var t=this._head;while(t){var e=t.next;t.prev=t.next=t.animation=null,t=e}this._head=this._tail=null},e.prototype.isFinished=function(){return null==this._head},e.prototype.animate=function(t,e){e=e||{},this.start();var n=new L.Z(t,e.loop);return this.addAnimator(n),n},e}(c.Z),Z=B,F=300,z=r.Z.domSupported,N=function(){var t=["click","dblclick","mousewheel","wheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],e=["touchstart","touchend","touchmove"],n={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},r=i.UI(t,(function(t){var e=t.replace("mouse","pointer");return n.hasOwnProperty(e)?e:t}));return{mouse:t,touch:e,pointer:r}}(),W={mouse:["mousemove","mouseup"],pointer:["pointermove","pointerup"]},U=!1;function V(t){var e=t.pointerType;return"pen"===e||"touch"===e}function j(t){t.touching=!0,null!=t.touchTimer&&(clearTimeout(t.touchTimer),t.touchTimer=null),t.touchTimer=setTimeout((function(){t.touching=!1,t.touchTimer=null}),700)}function H(t){t&&(t.zrByTouch=!0)}function G(t,e){return(0,f.OD)(t.dom,new Y(t,e),!0)}function q(t,e){var n=e,r=!1;while(n&&9!==n.nodeType&&!(r=n.domBelongToZr||n!==e&&n===t.painterRoot))n=n.parentNode;return r}var Y=function(){function t(t,e){this.stopPropagation=i.ZT,this.stopImmediatePropagation=i.ZT,this.preventDefault=i.ZT,this.type=e.type,this.target=this.currentTarget=t.dom,this.pointerType=e.pointerType,this.clientX=e.clientX,this.clientY=e.clientY}return t}(),X={mousedown:function(t){t=(0,f.OD)(this.dom,t),this.__mayPointerCapture=[t.zrX,t.zrY],this.trigger("mousedown",t)},mousemove:function(t){t=(0,f.OD)(this.dom,t);var e=this.__mayPointerCapture;!e||t.zrX===e[0]&&t.zrY===e[1]||this.__togglePointerCapture(!0),this.trigger("mousemove",t)},mouseup:function(t){t=(0,f.OD)(this.dom,t),this.__togglePointerCapture(!1),this.trigger("mouseup",t)},mouseout:function(t){t=(0,f.OD)(this.dom,t);var e=t.toElement||t.relatedTarget;q(this,e)||(this.__pointerCapturing&&(t.zrEventControl="no_globalout"),this.trigger("mouseout",t))},wheel:function(t){U=!0,t=(0,f.OD)(this.dom,t),this.trigger("mousewheel",t)},mousewheel:function(t){U||(t=(0,f.OD)(this.dom,t),this.trigger("mousewheel",t))},touchstart:function(t){t=(0,f.OD)(this.dom,t),H(t),this.__lastTouchMoment=new Date,this.handler.processGesture(t,"start"),X.mousemove.call(this,t),X.mousedown.call(this,t)},touchmove:function(t){t=(0,f.OD)(this.dom,t),H(t),this.handler.processGesture(t,"change"),X.mousemove.call(this,t)},touchend:function(t){t=(0,f.OD)(this.dom,t),H(t),this.handler.processGesture(t,"end"),X.mouseup.call(this,t),+new Date-+this.__lastTouchMoment0&&(this._stillFrameAccum++,this._stillFrameAccum>this._sleepAfterStill&&this.animation.stop())},t.prototype.setSleepAfterStill=function(t){this._sleepAfterStill=t},t.prototype.wakeUp=function(){this.animation.start(),this._stillFrameAccum=0},t.prototype.refreshHover=function(){this._needsRefreshHover=!0},t.prototype.refreshHoverImmediately=function(){this._needsRefreshHover=!1,this.painter.refreshHover&&"canvas"===this.painter.getType()&&this.painter.refreshHover()},t.prototype.resize=function(t){t=t||{},this.painter.resize(t.width,t.height),this.handler.resize()},t.prototype.clearAnimation=function(){this.animation.clear()},t.prototype.getWidth=function(){return this.painter.getWidth()},t.prototype.getHeight=function(){return this.painter.getHeight()},t.prototype.setCursorStyle=function(t){this.handler.setCursorStyle(t)},t.prototype.findHover=function(t,e){return this.handler.findHover(t,e)},t.prototype.on=function(t,e,n){return this.handler.on(t,e,n),this},t.prototype.off=function(t,e){this.handler.off(t,e)},t.prototype.trigger=function(t,e){this.handler.trigger(t,e)},t.prototype.clear=function(){for(var t=this.storage.getRoots(),e=0;e{if("function"==typeof URL.createObjectURL){const t=(()=>{const t=[];for(let ft=0;ft<256;ft++){let e=ft;for(let t=0;t<8;t++)1&e?e=e>>>1^3988292384:e>>>=1;t[ft]=e}class e{constructor(t){this.crc=t||-1}append(e){let n=0|this.crc;for(let r=0,i=0|e.length;r>>8^t[255&(n^e[r])];this.crc=n}get(){return~this.crc}}const n={concat(t,e){if(0===t.length||0===e.length)return t.concat(e);const r=t[t.length-1],i=n.getPartial(r);return 32===i?t.concat(e):n._shiftRight(e,i,0|r,t.slice(0,t.length-1))},bitLength(t){const e=t.length;if(0===e)return 0;const r=t[e-1];return 32*(e-1)+n.getPartial(r)},clamp(t,e){if(32*t.length0&&e&&(t[r-1]=n.partial(e,t[r-1]&2147483648>>e-1,1)),t},partial:(t,e,n)=>32===t?e:(n?0|e:e<<32-t)+1099511627776*t,getPartial:t=>Math.round(t/1099511627776)||32,_shiftRight(t,e,r,i){for(void 0===i&&(i=[]);e>=32;e-=32)i.push(r),r=0;if(0===e)return i.concat(t);for(let n=0;n>>e),r=t[n]<<32-e;const o=t.length?t[t.length-1]:0,a=n.getPartial(o);return i.push(n.partial(e+a&31,e+a>32?r:i.pop(),1)),i}},r={bytes:{fromBits(t){const e=n.bitLength(t)/8,r=new Uint8Array(e);let i;for(let n=0;n>>24,i<<=8;return r},toBits(t){const e=[];let r,i=0;for(r=0;r9007199254740991)throw new Error("Cannot hash more than 2^53 - 1 bits");const s=new Uint32Array(i);let l=0;for(let n=e.blockSize+o-(e.blockSize+o&e.blockSize-1);n<=a;n+=e.blockSize)e._block(s.subarray(16*l,16*(l+1))),l+=1;return i.splice(0,16*l),e},finalize:function(){const t=this;let e=t._buffer;const r=t._h;e=n.concat(e,[n.partial(1,1)]);for(let n=e.length+2;15&n;n++)e.push(0);for(e.push(Math.floor(t._length/4294967296)),e.push(0|t._length);e.length;)t._block(e.splice(0,16));return t.reset(),r},_init:[1732584193,4023233417,2562383102,271733878,3285377520],_key:[1518500249,1859775393,2400959708,3395469782],_f:function(t,e,n,r){return t<=19?e&n|~e&r:t<=39?e^n^r:t<=59?e&n|e&r|n&r:t<=79?e^n^r:void 0},_S:function(t,e){return e<>>32-t},_block:function(t){const e=this,n=e._h,r=Array(80);for(let u=0;u<16;u++)r[u]=t[u];let i=n[0],o=n[1],a=n[2],s=n[3],l=n[4];for(let u=0;u<=79;u++){u>=16&&(r[u]=e._S(1,r[u-3]^r[u-8]^r[u-14]^r[u-16]));const t=e._S(5,i)+e._f(u,o,a,s)+l+r[u]+e._key[Math.floor(u/20)]|0;l=s,s=a,a=e._S(30,o),o=i,i=t}n[0]=n[0]+i|0,n[1]=n[1]+o|0,n[2]=n[2]+a|0,n[3]=n[3]+s|0,n[4]=n[4]+l|0}};const o=class{constructor(t){const e=this;e._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],e._tables[0][0][0]||e._precompute();const n=e._tables[0][4],r=e._tables[1],i=t.length;let o,a,s,l=1;if(4!==i&&6!==i&&8!==i)throw new Error("invalid aes key size");for(e._key=[a=t.slice(0),s=[]],o=i;o<4*i+28;o++){let t=a[o-1];(o%i==0||8===i&&o%i==4)&&(t=n[t>>>24]<<24^n[t>>16&255]<<16^n[t>>8&255]<<8^n[255&t],o%i==0&&(t=t<<8^t>>>24^l<<24,l=l<<1^283*(l>>7))),a[o]=a[o-i]^t}for(let u=0;o;u++,o--){const t=a[3&u?o:o-4];s[u]=o<=4||u<4?t:r[0][n[t>>>24]]^r[1][n[t>>16&255]]^r[2][n[t>>8&255]]^r[3][n[255&t]]}}encrypt(t){return this._crypt(t,0)}decrypt(t){return this._crypt(t,1)}_precompute(){const t=this._tables[0],e=this._tables[1],n=t[4],r=e[4],i=[],o=[];let a,s,l,u;for(let c=0;c<256;c++)o[(i[c]=c<<1^283*(c>>7))^c]=c;for(let c=a=0;!n[c];c^=s||1,a=o[a]||1){let o=a^a<<1^a<<2^a<<3^a<<4;o=o>>8^255&o^99,n[c]=o,r[o]=c,u=i[l=i[s=i[c]]];let f=16843009*u^65537*l^257*s^16843008*c,h=257*i[o]^16843008*o;for(let n=0;n<4;n++)t[n][c]=h=h<<24^h>>>8,e[n][o]=f=f<<24^f>>>8}for(let c=0;c<5;c++)t[c]=t[c].slice(0),e[c]=e[c].slice(0)}_crypt(t,e){if(4!==t.length)throw new Error("invalid aes block size");const n=this._key[e],r=n.length/4-2,i=[0,0,0,0],o=this._tables[e],a=o[0],s=o[1],l=o[2],u=o[3],c=o[4];let f,h,d,p=t[0]^n[0],v=t[e?3:1]^n[1],g=t[2]^n[2],y=t[e?1:3]^n[3],m=4;for(let _=0;_>>24]^s[v>>16&255]^l[g>>8&255]^u[255&y]^n[m],h=a[v>>>24]^s[g>>16&255]^l[y>>8&255]^u[255&p]^n[m+1],d=a[g>>>24]^s[y>>16&255]^l[p>>8&255]^u[255&v]^n[m+2],y=a[y>>>24]^s[p>>16&255]^l[v>>8&255]^u[255&g]^n[m+3],m+=4,p=f,v=h,g=d;for(let _=0;_<4;_++)i[e?3&-_:_]=c[p>>>24]<<24^c[v>>16&255]<<16^c[g>>8&255]<<8^c[255&y]^n[m++],f=p,p=v,v=g,g=y,y=f;return i}},a=class{constructor(t,e){this._prf=t,this._initIv=e,this._iv=e}reset(){this._iv=this._initIv}update(t){return this.calculate(this._prf,t,this._iv)}incWord(t){if(255==(t>>24&255)){let e=t>>16&255,n=t>>8&255,r=255&t;255===e?(e=0,255===n?(n=0,255===r?r=0:++r):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=r}else t+=1<<24;return t}incCounter(t){0===(t[0]=this.incWord(t[0]))&&(t[1]=this.incWord(t[1]))}calculate(t,e,r){let i;if(!(i=e.length))return[];const o=n.bitLength(e);for(let n=0;no&&(t=n.hash(t));for(let i=0;it.length){const n=t;(t=new Uint8Array(e)).set(n,0)}return t}(n,a-a%16)),s=0;s<=a-16;s+=16){const i=g.toBits(C(e,s,s+16));o&&t.hmac.update(i);const a=t.aesCtrGladman.update(i);o||t.hmac.update(a),n.set(g.fromBits(a),s+r)}return t.pendingInput=C(e,s),n}async function S(t,e,n){const r=(new TextEncoder).encode(e),i=await v.importKey("raw",r,u,!1,f),o=await v.deriveBits(Object.assign({salt:n},c),i,8*(2*d[t.strength]+2)),a=new Uint8Array(o);t.keys={key:g.toBits(C(a,0,d[t.strength])),authentication:g.toBits(C(a,d[t.strength],2*d[t.strength])),passwordVerification:C(a,2*d[t.strength])}}function k(t,e){let n=t;return t.length+e.length&&(n=new Uint8Array(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function C(t,e,n){return t.subarray(e,n)}class T{constructor(t,e){Object.assign(this,{password:t,passwordVerification:e}),D(this,t)}async append(t){const e=this;if(e.password){const n=I(e,t.subarray(0,12));if(e.password=null,n[11]!=e.passwordVerification)throw new Error("Invalid pasword");t=t.subarray(12)}return I(e,t)}async flush(){return{valid:!0,data:new Uint8Array(0)}}}class A{constructor(t,e){Object.assign(this,{password:t,passwordVerification:e}),D(this,t)}async append(t){const e=this;let n,r;if(e.password){e.password=null;const i=crypto.getRandomValues(new Uint8Array(12));i[11]=e.passwordVerification,n=new Uint8Array(t.length+i.length),n.set(M(e,i),0),r=12}else n=new Uint8Array(t.length),r=0;return n.set(M(e,t),r),n}async flush(){return{data:new Uint8Array(0)}}}function I(t,e){const n=new Uint8Array(e.length);for(let r=0;r>>24]),t.keys[2]=~t.crcKey2.get()}function E(t){const e=2|t.keys[2];return P(Math.imul(e,1^e)>>>8)}function P(t){return 255&t}function L(t){return 4294967295&t}class R{constructor(t,{signature:n,password:r,signed:i,compressed:o,zipCrypto:a,passwordVerification:s,encryptionStrength:l},{chunkSize:u}){const c=Boolean(r);Object.assign(this,{signature:n,encrypted:c,signed:i,compressed:o,inflate:o&&new t({chunkSize:u}),crc32:i&&new e,zipCrypto:a,decrypt:c&&a?new T(r,s):new b(r,i,l)})}async append(t){const e=this;return e.encrypted&&t.length&&(t=await e.decrypt.append(t)),e.compressed&&t.length&&(t=await e.inflate.append(t)),(!e.encrypted||e.zipCrypto)&&e.signed&&t.length&&e.crc32.append(t),t}async flush(){const t=this;let e,n=new Uint8Array(0);if(t.encrypted){const e=await t.decrypt.flush();if(!e.valid)throw new Error("Invalid signature");n=e.data}if((!t.encrypted||t.zipCrypto)&&t.signed){const n=new DataView(new Uint8Array(4).buffer);if(e=t.crc32.get(),n.setUint32(0,e),t.signature!=n.getUint32(0,!1))throw new Error("Invalid signature")}return t.compressed&&(n=await t.inflate.append(n)||new Uint8Array(0),await t.inflate.flush()),{data:n,signature:e}}}class B{constructor(t,{encrypted:n,signed:r,compressed:i,level:o,zipCrypto:a,password:s,passwordVerification:l,encryptionStrength:u},{chunkSize:c}){Object.assign(this,{encrypted:n,signed:r,compressed:i,deflate:i&&new t({level:o||5,chunkSize:c}),crc32:r&&new e,zipCrypto:a,encrypt:n&&a?new A(s,l):new w(s,u)})}async append(t){const e=this;let n=t;return e.compressed&&t.length&&(n=await e.deflate.append(t)),e.encrypted&&n.length&&(n=await e.encrypt.append(n)),(!e.encrypted||e.zipCrypto)&&e.signed&&t.length&&e.crc32.append(t),n}async flush(){const t=this;let e,n=new Uint8Array(0);if(t.compressed&&(n=await t.deflate.flush()||new Uint8Array(0)),t.encrypted){n=await t.encrypt.append(n);const r=await t.encrypt.flush();e=r.signature;const i=new Uint8Array(n.length+r.data.length);i.set(n,0),i.set(r.data,n.length),n=i}return t.encrypted&&!t.zipCrypto||!t.signed||(e=t.crc32.get()),{data:n,signature:e}}}const Z={init(t){t.scripts&&t.scripts.length&&importScripts.apply(void 0,t.scripts);const e=t.options;let n;self.initCodec&&self.initCodec(),e.codecType.startsWith("deflate")?n=self.Deflate:e.codecType.startsWith("inflate")&&(n=self.Inflate),F=function(t,e,n){return e.codecType.startsWith("deflate")?new B(t,e,n):e.codecType.startsWith("inflate")?new R(t,e,n):void 0}(n,e,t.config)},append:async t=>({data:await F.append(t.data)}),flush:()=>F.flush()};let F;function z(t){return t.map((([t,e])=>new Array(t).fill(e,0,t))).flat()}addEventListener("message",(async t=>{const e=t.data,n=e.type,r=Z[n];if(r)try{e.data&&(e.data=new Uint8Array(e.data));const t=await r(e)||{};if(t.type=n,t.data)try{t.data=t.data.buffer,postMessage(t,[t.data])}catch(e){postMessage(t)}else postMessage(t)}catch(t){postMessage({type:n,error:{message:t.message,stack:t.stack}})}}));const N=[0,1,2,3].concat(...z([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function W(){const t=this;function e(t,e){let n=0;do{n|=1&t,t>>>=1,n<<=1}while(--e>0);return n>>>1}t.build_tree=function(n){const r=t.dyn_tree,i=t.stat_desc.static_tree,o=t.stat_desc.elems;let a,s,l,u=-1;for(n.heap_len=0,n.heap_max=573,a=0;a=1;a--)n.pqdownheap(r,a);l=o;do{a=n.heap[1],n.heap[1]=n.heap[n.heap_len--],n.pqdownheap(r,1),s=n.heap[1],n.heap[--n.heap_max]=a,n.heap[--n.heap_max]=s,r[2*l]=r[2*a]+r[2*s],n.depth[l]=Math.max(n.depth[a],n.depth[s])+1,r[2*a+1]=r[2*s+1]=l,n.heap[1]=l++,n.pqdownheap(r,1)}while(n.heap_len>=2);n.heap[--n.heap_max]=n.heap[1],function(e){const n=t.dyn_tree,r=t.stat_desc.static_tree,i=t.stat_desc.extra_bits,o=t.stat_desc.extra_base,a=t.stat_desc.max_length;let s,l,u,c,f,h,d=0;for(c=0;c<=15;c++)e.bl_count[c]=0;for(n[2*e.heap[e.heap_max]+1]=0,s=e.heap_max+1;s<573;s++)l=e.heap[s],c=n[2*n[2*l+1]+1]+1,c>a&&(c=a,d++),n[2*l+1]=c,l>t.max_code||(e.bl_count[c]++,f=0,l>=o&&(f=i[l-o]),h=n[2*l],e.opt_len+=h*(c+f),r&&(e.static_len+=h*(r[2*l+1]+f)));if(0!==d){do{for(c=a-1;0===e.bl_count[c];)c--;e.bl_count[c]--,e.bl_count[c+1]+=2,e.bl_count[a]--,d-=2}while(d>0);for(c=a;0!==c;c--)for(l=e.bl_count[c];0!==l;)u=e.heap[--s],u>t.max_code||(n[2*u+1]!=c&&(e.opt_len+=(c-n[2*u+1])*n[2*u],n[2*u+1]=c),l--)}}(n),function(t,n,r){const i=[];let o,a,s,l=0;for(o=1;o<=15;o++)i[o]=l=l+r[o-1]<<1;for(a=0;a<=n;a++)s=t[2*a+1],0!==s&&(t[2*a]=e(i[s]++,s))}(r,t.max_code,n.bl_count)}}function U(t,e,n,r,i){const o=this;o.static_tree=t,o.extra_bits=e,o.extra_base=n,o.elems=r,o.max_length=i}function V(t,e,n,r,i){const o=this;o.good_length=t,o.max_lazy=e,o.nice_length=n,o.max_chain=r,o.func=i}W._length_code=[0,1,2,3,4,5,6,7].concat(...z([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]])),W.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0],W.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576],W.d_code=function(t){return t<256?N[t]:N[256+(t>>>7)]},W.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],W.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],W.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],W.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],U.static_ltree=[12,8,140,8,76,8,204,8,44,8,172,8,108,8,236,8,28,8,156,8,92,8,220,8,60,8,188,8,124,8,252,8,2,8,130,8,66,8,194,8,34,8,162,8,98,8,226,8,18,8,146,8,82,8,210,8,50,8,178,8,114,8,242,8,10,8,138,8,74,8,202,8,42,8,170,8,106,8,234,8,26,8,154,8,90,8,218,8,58,8,186,8,122,8,250,8,6,8,134,8,70,8,198,8,38,8,166,8,102,8,230,8,22,8,150,8,86,8,214,8,54,8,182,8,118,8,246,8,14,8,142,8,78,8,206,8,46,8,174,8,110,8,238,8,30,8,158,8,94,8,222,8,62,8,190,8,126,8,254,8,1,8,129,8,65,8,193,8,33,8,161,8,97,8,225,8,17,8,145,8,81,8,209,8,49,8,177,8,113,8,241,8,9,8,137,8,73,8,201,8,41,8,169,8,105,8,233,8,25,8,153,8,89,8,217,8,57,8,185,8,121,8,249,8,5,8,133,8,69,8,197,8,37,8,165,8,101,8,229,8,21,8,149,8,85,8,213,8,53,8,181,8,117,8,245,8,13,8,141,8,77,8,205,8,45,8,173,8,109,8,237,8,29,8,157,8,93,8,221,8,61,8,189,8,125,8,253,8,19,9,275,9,147,9,403,9,83,9,339,9,211,9,467,9,51,9,307,9,179,9,435,9,115,9,371,9,243,9,499,9,11,9,267,9,139,9,395,9,75,9,331,9,203,9,459,9,43,9,299,9,171,9,427,9,107,9,363,9,235,9,491,9,27,9,283,9,155,9,411,9,91,9,347,9,219,9,475,9,59,9,315,9,187,9,443,9,123,9,379,9,251,9,507,9,7,9,263,9,135,9,391,9,71,9,327,9,199,9,455,9,39,9,295,9,167,9,423,9,103,9,359,9,231,9,487,9,23,9,279,9,151,9,407,9,87,9,343,9,215,9,471,9,55,9,311,9,183,9,439,9,119,9,375,9,247,9,503,9,15,9,271,9,143,9,399,9,79,9,335,9,207,9,463,9,47,9,303,9,175,9,431,9,111,9,367,9,239,9,495,9,31,9,287,9,159,9,415,9,95,9,351,9,223,9,479,9,63,9,319,9,191,9,447,9,127,9,383,9,255,9,511,9,0,7,64,7,32,7,96,7,16,7,80,7,48,7,112,7,8,7,72,7,40,7,104,7,24,7,88,7,56,7,120,7,4,7,68,7,36,7,100,7,20,7,84,7,52,7,116,7,3,8,131,8,67,8,195,8,35,8,163,8,99,8,227,8],U.static_dtree=[0,5,16,5,8,5,24,5,4,5,20,5,12,5,28,5,2,5,18,5,10,5,26,5,6,5,22,5,14,5,30,5,1,5,17,5,9,5,25,5,5,5,21,5,13,5,29,5,3,5,19,5,11,5,27,5,7,5,23,5],U.static_l_desc=new U(U.static_ltree,W.extra_lbits,257,286,15),U.static_d_desc=new U(U.static_dtree,W.extra_dbits,0,30,15),U.static_bl_desc=new U(null,W.extra_blbits,0,19,7);const j=[new V(0,0,0,0,0),new V(4,4,8,4,1),new V(4,5,16,8,1),new V(4,6,32,32,1),new V(4,4,16,16,2),new V(8,16,32,32,2),new V(8,16,128,128,2),new V(8,32,128,256,2),new V(32,128,258,1024,2),new V(32,258,258,4096,2)],H=["need dictionary","stream end","","","stream error","data error","","buffer error","",""];function G(t,e,n,r){const i=t[2*e],o=t[2*n];return i>>8&255)}function tt(t,e){let n;const r=e;X>16-r?(n=t,Y|=n<>>16-X,X+=r-16):(Y|=t<=8&&(J(255&Y),Y>>>=8,X-=8)}function it(e,n){let r,i,o;if(t.pending_buf[N+2*z]=e>>>8&255,t.pending_buf[N+2*z+1]=255&e,t.pending_buf[Z+z]=255&n,z++,0===e?O[2*n]++:(V++,e--,O[2*(W._length_code[n]+256+1)]++,E[2*W.d_code(e)]++),0==(8191&z)&&A>2){for(r=8*z,i=w-y,o=0;o<30;o++)r+=E[2*o]*(5+W.extra_dbits[o]);if(r>>>=3,V8?Q(Y):X>0&&J(255&Y),Y=0,X=0}function st(e,n,r){tt(0+(r?1:0),3),function(e,n,r){at(),q=8,Q(n),Q(~n),t.pending_buf.set(l.subarray(e,e+n),t.pending),t.pending+=n}(e,n)}function lt(e,n,r){let i,o,a=0;A>0?(L.build_tree(t),R.build_tree(t),a=function(){let e;for(K(O,L.max_code),K(E,R.max_code),B.build_tree(t),e=18;e>=3&&0===P[2*W.bl_order[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(),i=t.opt_len+3+7>>>3,o=t.static_len+3+7>>>3,o<=i&&(i=o)):i=o=n+5,n+4<=i&&-1!=e?st(e,n,r):o==i?(tt(2+(r?1:0),3),ot(U.static_ltree,U.static_dtree)):(tt(4+(r?1:0),3),function(t,e,n){let r;for(tt(t-257,5),tt(e-1,5),tt(n-4,4),r=0;r=0?y:-1,w-y,t),y=w,e.flush_pending()}function ct(){let t,n,r,i;do{if(i=u-S-w,0===i&&0===w&&0===S)i=o;else if(-1==i)i--;else if(w>=o+o-262){l.set(l.subarray(o,o+o),0),x-=o,w-=o,y-=o,t=d,r=t;do{n=65535&f[--r],f[r]=n>=o?n-o:0}while(0!=--t);t=o,r=t;do{n=65535&c[--r],c[r]=n>=o?n-o:0}while(0!=--t);i+=o}if(0===e.avail_in)return;t=e.read_buf(l,w+S,i),S+=t,S>=3&&(h=255&l[w],h=(h<o-262?w-(o-262):0;let f=D;const h=s,d=w+258;let p=l[i+a-1],v=l[i+a];k>=M&&(r>>=2),f>S&&(f=S);do{if(e=t,l[e+a]==v&&l[e+a-1]==p&&l[e]==l[i]&&l[++e]==l[i+1]){i+=2,e++;do{}while(l[++i]==l[++e]&&l[++i]==l[++e]&&l[++i]==l[++e]&&l[++i]==l[++e]&&l[++i]==l[++e]&&l[++i]==l[++e]&&l[++i]==l[++e]&&l[++i]==l[++e]&&ia){if(x=t,a=n,n>=f)break;p=l[i+a-1],v=l[i+a]}}}while((t=65535&c[t&h])>u&&0!=--r);return a<=S?a:S}function ht(e){return e.total_in=e.total_out=0,e.msg=null,t.pending=0,t.pending_out=0,n=113,i=0,L.dyn_tree=O,L.stat_desc=U.static_l_desc,R.dyn_tree=E,R.stat_desc=U.static_d_desc,B.dyn_tree=P,B.stat_desc=U.static_bl_desc,Y=0,X=0,q=8,$(),function(){u=2*o,f[d-1]=0;for(let t=0;t9||8!=u||i<9||i>15||n<0||n>9||y<0||y>2?-2:(e.dstate=t,a=i,o=1<9||n<0||n>2?-2:(j[A].func!=j[e].func&&0!==t.total_in&&(r=t.deflate(1)),A!=e&&(A=e,T=j[A].max_lazy,M=j[A].good_length,D=j[A].nice_length,C=j[A].max_chain),I=n,r)},t.deflateSetDictionary=function(t,e,r){let i,a=r,u=0;if(!e||42!=n)return-2;if(a<3)return 0;for(a>o-262&&(a=o-262,u=r-a),l.set(e.subarray(u,u+a),0),w=a,y=a,h=255&l[0],h=(h<4||p<0)return-2;if(!u.next_out||!u.next_in&&0!==u.avail_in||666==n&&4!=p)return u.msg=H[4],-2;if(0===u.avail_out)return u.msg=H[7],-5;var P;if(e=u,O=i,i=p,42==n&&(M=8+(a-8<<4)<<8,D=(A-1&255)>>1,D>3&&(D=3),M|=D<<6,0!==w&&(M|=32),M+=31-M%31,n=113,J((P=M)>>8&255),J(255&P)),0!==t.pending){if(e.flush_pending(),0===e.avail_out)return i=-1,0}else if(0===e.avail_in&&p<=O&&4!=p)return e.msg=H[7],-5;if(666==n&&0!==e.avail_in)return u.msg=H[7],-5;if(0!==e.avail_in||0!==S||0!=p&&666!=n){switch(E=-1,j[A].func){case 0:E=function(t){let n,i=65535;for(i>r-5&&(i=r-5);;){if(S<=1){if(ct(),0===S&&0==t)return 0;if(0===S)break}if(w+=S,S=0,n=y+i,(0===w||w>=n)&&(S=w-n,w=n,ut(!1),0===e.avail_out))return 0;if(w-y>=o-262&&(ut(!1),0===e.avail_out))return 0}return ut(4==t),0===e.avail_out?4==t?2:0:4==t?3:1}(p);break;case 1:E=function(t){let n,r=0;for(;;){if(S<262){if(ct(),S<262&&0==t)return 0;if(0===S)break}if(S>=3&&(h=(h<=3)if(n=it(w-x,m-3),S-=m,m<=T&&S>=3){m--;do{w++,h=(h<=3&&(h=(h<4096)&&(m=2)),k>=3&&m<=k){r=w+S-3,n=it(w-1-_,k-3),S-=k-1,k-=2;do{++w<=r&&(h=(h<0&&e.next_in_index!=s&&(r(e.next_in_index),s=e.next_in_index)}while(e.avail_in>0||0===e.avail_out);return c.length>1?(a=new Uint8Array(u),c.forEach((function(t){a.set(t,l),l+=t.length}))):a=c[0]||new Uint8Array(0),a}},this.flush=function(){let t,r,o=0,a=0;const s=[];do{if(e.next_out_index=0,e.avail_out=n,t=e.deflate(4),1!=t&&0!=t)throw new Error("deflating: "+e.msg);n-e.avail_out>0&&s.push(i.slice(0,e.next_out_index)),a+=e.next_out_index}while(e.avail_in>0||0===e.avail_out);return e.deflateEnd(),r=new Uint8Array(a),s.forEach((function(t){r.set(t,o),o+=t.length})),r}}Y.prototype={deflateInit:function(t,e){const n=this;return n.dstate=new q,e||(e=15),n.dstate.deflateInit(n,t,e)},deflate:function(t){const e=this;return e.dstate?e.dstate.deflate(e,t):-2},deflateEnd:function(){const t=this;if(!t.dstate)return-2;const e=t.dstate.deflateEnd();return t.dstate=null,e},deflateParams:function(t,e){const n=this;return n.dstate?n.dstate.deflateParams(n,t,e):-2},deflateSetDictionary:function(t,e){const n=this;return n.dstate?n.dstate.deflateSetDictionary(n,t,e):-2},read_buf:function(t,e,n){const r=this;let i=r.avail_in;return i>n&&(i=n),0===i?0:(r.avail_in-=i,t.set(r.next_in.subarray(r.next_in_index,r.next_in_index+i),e),r.next_in_index+=i,r.total_in+=i,i)},flush_pending:function(){const t=this;let e=t.dstate.pending;e>t.avail_out&&(e=t.avail_out),0!==e&&(t.next_out.set(t.dstate.pending_buf.subarray(t.dstate.pending_out,t.dstate.pending_out+e),t.next_out_index),t.next_out_index+=e,t.dstate.pending_out+=e,t.total_out+=e,t.avail_out-=e,t.dstate.pending-=e,0===t.dstate.pending&&(t.dstate.pending_out=0))}};const $=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],K=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],J=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],Q=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],tt=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],et=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],nt=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];function rt(){let t,e,n,r,i,o;function a(t,e,a,s,l,u,c,f,h,d,p){let v,g,y,m,_,b,w,x,S,k,C,T,A,I,M;k=0,_=a;do{n[t[e+k]]++,k++,_--}while(0!==_);if(n[0]==a)return c[0]=-1,f[0]=0,0;for(x=f[0],b=1;b<=15&&0===n[b];b++);for(w=b,x_&&(x=_),f[0]=x,I=1<T+x;){if(m++,T+=x,M=y-T,M=M>x?x:M,(g=1<<(b=w-T))>v+1&&(g-=v+1,A=w,b1440)return-3;i[m]=C=d[0],d[0]+=M,0!==m?(o[m]=_,r[0]=b,r[1]=x,b=_>>>T-x,r[2]=C-i[m-1]-b,h.set(r,3*(i[m-1]+b))):c[0]=C}for(r[1]=w-T,k>=a?r[0]=192:p[k]>>T;b>>=1)_^=b;for(_^=b,S=(1<257?(-3==d?h.msg="oversubscribed distance tree":-5==d?(h.msg="incomplete distance tree",d=-3):-4!=d&&(h.msg="empty distance tree with lengths",d=-3),d):0)}}function it(){const t=this;let e,n,r,i,o=0,a=0,s=0,l=0,u=0,c=0,f=0,h=0,d=0,p=0;function v(t,e,n,r,i,o,a,s){let l,u,c,f,h,d,p,v,g,y,m,_,b,w,x,S;p=s.next_in_index,v=s.avail_in,h=a.bitb,d=a.bitk,g=a.write,y=g>=u[S+1],d-=u[S+1],0!=(16&f)){for(f&=15,b=u[S+2]+(h&$[f]),h>>=f,d-=f;d<15;)v--,h|=(255&s.read_byte(p++))<>=u[S+1],d-=u[S+1],0!=(16&f)){for(f&=15;d>=f,d-=f,y-=b,g>=w)x=g-w,g-x>0&&2>g-x?(a.window[g++]=a.window[x++],a.window[g++]=a.window[x++],b-=2):(a.window.set(a.window.subarray(x,x+2),g),g+=2,x+=2,b-=2);else{x=g-w;do{x+=a.end}while(x<0);if(f=a.end-x,b>f){if(b-=f,g-x>0&&f>g-x)do{a.window[g++]=a.window[x++]}while(0!=--f);else a.window.set(a.window.subarray(x,x+f),g),g+=f,x+=f,f=0;x=0}}if(g-x>0&&b>g-x)do{a.window[g++]=a.window[x++]}while(0!=--b);else a.window.set(a.window.subarray(x,x+b),g),g+=b,x+=b,b=0;break}if(0!=(64&f))return s.msg="invalid distance code",b=s.avail_in-v,b=d>>3>3:b,v+=b,p-=b,d-=b<<3,a.bitb=h,a.bitk=d,s.avail_in=v,s.total_in+=p-s.next_in_index,s.next_in_index=p,a.write=g,-3;l+=u[S+2],l+=h&$[f],S=3*(c+l),f=u[S]}break}if(0!=(64&f))return 0!=(32&f)?(b=s.avail_in-v,b=d>>3>3:b,v+=b,p-=b,d-=b<<3,a.bitb=h,a.bitk=d,s.avail_in=v,s.total_in+=p-s.next_in_index,s.next_in_index=p,a.write=g,1):(s.msg="invalid literal/length code",b=s.avail_in-v,b=d>>3>3:b,v+=b,p-=b,d-=b<<3,a.bitb=h,a.bitk=d,s.avail_in=v,s.total_in+=p-s.next_in_index,s.next_in_index=p,a.write=g,-3);if(l+=u[S+2],l+=h&$[f],S=3*(c+l),0===(f=u[S])){h>>=u[S+1],d-=u[S+1],a.window[g++]=u[S+2],y--;break}}else h>>=u[S+1],d-=u[S+1],a.window[g++]=u[S+2],y--}while(y>=258&&v>=10);return b=s.avail_in-v,b=d>>3>3:b,v+=b,p-=b,d-=b<<3,a.bitb=h,a.bitk=d,s.avail_in=v,s.total_in+=p-s.next_in_index,s.next_in_index=p,a.write=g,0}t.init=function(t,o,a,s,l,u){e=0,f=t,h=o,r=a,d=s,i=l,p=u,n=null},t.proc=function(t,g,y){let m,_,b,w,x,S,k,C=0,T=0,A=0;for(A=g.next_in_index,w=g.avail_in,C=t.bitb,T=t.bitk,x=t.write,S=x=258&&w>=10&&(t.bitb=C,t.bitk=T,g.avail_in=w,g.total_in+=A-g.next_in_index,g.next_in_index=A,t.write=x,y=v(f,h,r,d,i,p,t,g),A=g.next_in_index,w=g.avail_in,C=t.bitb,T=t.bitk,x=t.write,S=x>>=n[_+1],T-=n[_+1],b=n[_],0===b){l=n[_+2],e=6;break}if(0!=(16&b)){u=15&b,o=n[_+2],e=2;break}if(0==(64&b)){s=b,a=_/3+n[_+2];break}if(0!=(32&b)){e=7;break}return e=9,g.msg="invalid literal/length code",y=-3,t.bitb=C,t.bitk=T,g.avail_in=w,g.total_in+=A-g.next_in_index,g.next_in_index=A,t.write=x,t.inflate_flush(g,y);case 2:for(m=u;T>=m,T-=m,s=h,n=i,a=p,e=3;case 3:for(m=s;T>=n[_+1],T-=n[_+1],b=n[_],0!=(16&b)){u=15&b,c=n[_+2],e=4;break}if(0==(64&b)){s=b,a=_/3+n[_+2];break}return e=9,g.msg="invalid distance code",y=-3,t.bitb=C,t.bitk=T,g.avail_in=w,g.total_in+=A-g.next_in_index,g.next_in_index=A,t.write=x,t.inflate_flush(g,y);case 4:for(m=u;T>=m,T-=m,e=5;case 5:for(k=x-c;k<0;)k+=t.end;for(;0!==o;){if(0===S&&(x==t.end&&0!==t.read&&(x=0,S=x7&&(T-=8,w++,A--),t.write=x,y=t.inflate_flush(g,y),x=t.write,S=xt.avail_out&&(r=t.avail_out),0!==r&&-5==e&&(e=0),t.avail_out-=r,t.total_out+=r,t.next_out.set(n.window.subarray(o,o+r),i),i+=r,o+=r,o==n.end&&(o=0,n.write==n.end&&(n.write=0),r=n.write-o,r>t.avail_out&&(r=t.avail_out),0!==r&&-5==e&&(e=0),t.avail_out-=r,t.total_out+=r,t.next_out.set(n.window.subarray(o,o+r),i),i+=r,o+=r),t.next_out_index=i,n.read=o,e},n.proc=function(t,e){let p,v,g,y,m,_,b,w;for(y=t.next_in_index,m=t.avail_in,v=n.bitb,g=n.bitk,_=n.write,b=_>>1){case 0:v>>>=3,g-=3,p=7&g,v>>>=p,g-=p,i=1;break;case 1:x=[],S=[],k=[[]],C=[[]],rt.inflate_trees_fixed(x,S,k,C),c.init(x[0],S[0],k[0],0,C[0],0),v>>>=3,g-=3,i=6;break;case 2:v>>>=3,g-=3,i=3;break;case 3:return v>>>=3,g-=3,i=9,t.msg="invalid block type",e=-3,n.bitb=v,n.bitk=g,t.avail_in=m,t.total_in+=y-t.next_in_index,t.next_in_index=y,n.write=_,n.inflate_flush(t,e)}break;case 1:for(;g<32;){if(0===m)return n.bitb=v,n.bitk=g,t.avail_in=m,t.total_in+=y-t.next_in_index,t.next_in_index=y,n.write=_,n.inflate_flush(t,e);e=0,m--,v|=(255&t.read_byte(y++))<>>16&65535)!=(65535&v))return i=9,t.msg="invalid stored block lengths",e=-3,n.bitb=v,n.bitk=g,t.avail_in=m,t.total_in+=y-t.next_in_index,t.next_in_index=y,n.write=_,n.inflate_flush(t,e);o=65535&v,v=g=0,i=0!==o?2:0!==f?7:0;break;case 2:if(0===m)return n.bitb=v,n.bitk=g,t.avail_in=m,t.total_in+=y-t.next_in_index,t.next_in_index=y,n.write=_,n.inflate_flush(t,e);if(0===b&&(_==n.end&&0!==n.read&&(_=0,b=_m&&(p=m),p>b&&(p=b),n.window.set(t.read_buf(y,p),_),y+=p,m-=p,_+=p,b-=p,0!=(o-=p))break;i=0!==f?7:0;break;case 3:for(;g<14;){if(0===m)return n.bitb=v,n.bitk=g,t.avail_in=m,t.total_in+=y-t.next_in_index,t.next_in_index=y,n.write=_,n.inflate_flush(t,e);e=0,m--,v|=(255&t.read_byte(y++))<29||(p>>5&31)>29)return i=9,t.msg="too many length or distance symbols",e=-3,n.bitb=v,n.bitk=g,t.avail_in=m,t.total_in+=y-t.next_in_index,t.next_in_index=y,n.write=_,n.inflate_flush(t,e);if(p=258+(31&p)+(p>>5&31),!r||r.length>>=14,g-=14,s=0,i=4;case 4:for(;s<4+(a>>>10);){for(;g<3;){if(0===m)return n.bitb=v,n.bitk=g,t.avail_in=m,t.total_in+=y-t.next_in_index,t.next_in_index=y,n.write=_,n.inflate_flush(t,e);e=0,m--,v|=(255&t.read_byte(y++))<>>=3,g-=3}for(;s<19;)r[ot[s++]]=0;if(l[0]=7,p=d.inflate_trees_bits(r,l,u,h,t),0!=p)return-3==(e=p)&&(r=null,i=9),n.bitb=v,n.bitk=g,t.avail_in=m,t.total_in+=y-t.next_in_index,t.next_in_index=y,n.write=_,n.inflate_flush(t,e);s=0,i=5;case 5:for(;p=a,!(s>=258+(31&p)+(p>>5&31));){let o,c;for(p=l[0];g>>=p,g-=p,r[s++]=c;else{for(w=18==c?7:c-14,o=18==c?11:3;g>>=p,g-=p,o+=v&$[w],v>>>=w,g-=w,w=s,p=a,w+o>258+(31&p)+(p>>5&31)||16==c&&w<1)return r=null,i=9,t.msg="invalid bit length repeat",e=-3,n.bitb=v,n.bitk=g,t.avail_in=m,t.total_in+=y-t.next_in_index,t.next_in_index=y,n.write=_,n.inflate_flush(t,e);c=16==c?r[w-1]:0;do{r[w++]=c}while(0!=--o);s=w}}if(u[0]=-1,T=[],A=[],I=[],M=[],T[0]=9,A[0]=6,p=a,p=d.inflate_trees_dynamic(257+(31&p),1+(p>>5&31),r,T,A,I,M,h,t),0!=p)return-3==p&&(r=null,i=9),e=p,n.bitb=v,n.bitk=g,t.avail_in=m,t.total_in+=y-t.next_in_index,t.next_in_index=y,n.write=_,n.inflate_flush(t,e);c.init(T[0],A[0],h,I[0],h,M[0]),i=6;case 6:if(n.bitb=v,n.bitk=g,t.avail_in=m,t.total_in+=y-t.next_in_index,t.next_in_index=y,n.write=_,1!=(e=c.proc(n,t,e)))return n.inflate_flush(t,e);if(e=0,c.free(t),y=t.next_in_index,m=t.avail_in,v=n.bitb,g=n.bitk,_=n.write,b=_15?(t.inflateEnd(n),-2):(t.wbits=r,n.istate.blocks=new at(n,1<>4)>i.wbits){i.mode=13,t.msg="invalid window size",i.marker=5;break}i.mode=1;case 1:if(0===t.avail_in)return n;if(n=e,t.avail_in--,t.total_in++,r=255&t.read_byte(t.next_in_index++),((i.method<<8)+r)%31!=0){i.mode=13,t.msg="incorrect header check",i.marker=5;break}if(0==(32&r)){i.mode=7;break}i.mode=2;case 2:if(0===t.avail_in)return n;n=e,t.avail_in--,t.total_in++,i.need=(255&t.read_byte(t.next_in_index++))<<24&4278190080,i.mode=3;case 3:if(0===t.avail_in)return n;n=e,t.avail_in--,t.total_in++,i.need+=(255&t.read_byte(t.next_in_index++))<<16&16711680,i.mode=4;case 4:if(0===t.avail_in)return n;n=e,t.avail_in--,t.total_in++,i.need+=(255&t.read_byte(t.next_in_index++))<<8&65280,i.mode=5;case 5:return 0===t.avail_in?n:(n=e,t.avail_in--,t.total_in++,i.need+=255&t.read_byte(t.next_in_index++),i.mode=6,2);case 6:return i.mode=13,t.msg="need dictionary",i.marker=0,-2;case 7:if(n=i.blocks.proc(t,n),-3==n){i.mode=13,i.marker=0;break}if(0==n&&(n=e),1!=n)return n;n=e,i.blocks.reset(t,i.was),i.mode=12;case 12:return 1;case 13:return-3;default:return-2}},t.inflateSetDictionary=function(t,e,n){let r=0,i=n;if(!t||!t.istate||6!=t.istate.mode)return-2;const o=t.istate;return i>=1<0&&e.next_in_index!=u&&(o(e.next_in_index),u=e.next_in_index)}while(e.avail_in>0||0===e.avail_out);return a.length>1?(l=new Uint8Array(f),a.forEach((function(t){l.set(t,c),c+=t.length}))):l=a[0]||new Uint8Array(0),l}},this.flush=function(){e.inflateEnd()}}ut.prototype={inflateInit:function(t){const e=this;return e.istate=new lt,t||(t=15),e.istate.inflateInit(e,t)},inflate:function(t){const e=this;return e.istate?e.istate.inflate(e,t):-2},inflateEnd:function(){const t=this;if(!t.istate)return-2;const e=t.istate.inflateEnd(t);return t.istate=null,e},inflateSync:function(){const t=this;return t.istate?t.istate.inflateSync(t):-2},inflateSetDictionary:function(t,e){const n=this;return n.istate?n.istate.inflateSetDictionary(n,t,e):-2},read_byte:function(t){return this.next_in[t]},read_buf:function(t,e){return this.next_in.subarray(t,t+e)}},self.initCodec=()=>{self.Deflate=X,self.Inflate=ct}}).toString(),e=URL.createObjectURL(new Blob(["("+t+")()"],{type:"text/javascript"}));i({workerScripts:{inflate:[e],deflate:[e]}})}};function a(){return"application/octet-stream"}var s=(t,e={},n)=>({Deflate:l(t.Deflate,e.deflate,n),Inflate:l(t.Inflate,e.inflate,n)});function l(t,e,n){return class{constructor(r){const i=this,o=t=>{if(i.pendingData){const e=i.pendingData;i.pendingData=new Uint8Array(e.length+t.length),i.pendingData.set(e,0),i.pendingData.set(t,e.length)}else i.pendingData=new Uint8Array(t)};i.codec=new t(Object.assign({},e,r)),n(i.codec,o)}async append(t){return this.codec.push(t),r(this)}async flush(){return this.codec.push(new Uint8Array(0),!0),r(this)}};function r(t){if(t.pendingData){const e=t.pendingData;return t.pendingData=null,e}return new Uint8Array(0)}}const u=[];for(let jn=0;jn<256;jn++){let t=jn;for(let e=0;e<8;e++)1&t?t=t>>>1^3988292384:t>>>=1;u[jn]=t}class c{constructor(t){this.crc=t||-1}append(t){let e=0|this.crc;for(let n=0,r=0|t.length;n>>8^u[255&(e^t[n])];this.crc=e}get(){return~this.crc}}const f={concat(t,e){if(0===t.length||0===e.length)return t.concat(e);const n=t[t.length-1],r=f.getPartial(n);return 32===r?t.concat(e):f._shiftRight(e,r,0|n,t.slice(0,t.length-1))},bitLength(t){const e=t.length;if(0===e)return 0;const n=t[e-1];return 32*(e-1)+f.getPartial(n)},clamp(t,e){if(32*t.length0&&e&&(t[n-1]=f.partial(e,t[n-1]&2147483648>>e-1,1)),t},partial(t,e,n){return 32===t?e:(n?0|e:e<<32-t)+1099511627776*t},getPartial(t){return Math.round(t/1099511627776)||32},_shiftRight(t,e,n,r){for(void 0===r&&(r=[]);e>=32;e-=32)r.push(n),n=0;if(0===e)return r.concat(t);for(let a=0;a>>e),n=t[a]<<32-e;const i=t.length?t[t.length-1]:0,o=f.getPartial(i);return r.push(f.partial(e+o&31,e+o>32?n:r.pop(),1)),r}},h={bytes:{fromBits(t){const e=f.bitLength(t),n=e/8,r=new Uint8Array(n);let i;for(let o=0;o>>24,i<<=8;return r},toBits(t){const e=[];let n,r=0;for(n=0;n9007199254740991)throw new Error("Cannot hash more than 2^53 - 1 bits");const o=new Uint32Array(n);let a=0;for(let s=e.blockSize+r-(e.blockSize+r&e.blockSize-1);s<=i;s+=e.blockSize)e._block(o.subarray(16*a,16*(a+1))),a+=1;return n.splice(0,16*a),e},finalize:function(){const t=this;let e=t._buffer;const n=t._h;e=f.concat(e,[f.partial(1,1)]);for(let r=e.length+2;15&r;r++)e.push(0);e.push(Math.floor(t._length/4294967296)),e.push(0|t._length);while(e.length)t._block(e.splice(0,16));return t.reset(),n},_init:[1732584193,4023233417,2562383102,271733878,3285377520],_key:[1518500249,1859775393,2400959708,3395469782],_f:function(t,e,n,r){return t<=19?e&n|~e&r:t<=39?e^n^r:t<=59?e&n|e&r|n&r:t<=79?e^n^r:void 0},_S:function(t,e){return e<>>32-t},_block:function(t){const e=this,n=e._h,r=Array(80);for(let u=0;u<16;u++)r[u]=t[u];let i=n[0],o=n[1],a=n[2],s=n[3],l=n[4];for(let u=0;u<=79;u++){u>=16&&(r[u]=e._S(1,r[u-3]^r[u-8]^r[u-14]^r[u-16]));const t=e._S(5,i)+e._f(u,o,a,s)+l+r[u]+e._key[Math.floor(u/20)]|0;l=s,s=a,a=e._S(30,o),o=i,i=t}n[0]=n[0]+i|0,n[1]=n[1]+o|0,n[2]=n[2]+a|0,n[3]=n[3]+s|0,n[4]=n[4]+l|0}};const p={aes:class{constructor(t){const e=this;e._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],e._tables[0][0][0]||e._precompute();const n=e._tables[0][4],r=e._tables[1],i=t.length;let o,a,s,l=1;if(4!==i&&6!==i&&8!==i)throw new Error("invalid aes key size");for(e._key=[a=t.slice(0),s=[]],o=i;o<4*i+28;o++){let t=a[o-1];(o%i===0||8===i&&o%i===4)&&(t=n[t>>>24]<<24^n[t>>16&255]<<16^n[t>>8&255]<<8^n[255&t],o%i===0&&(t=t<<8^t>>>24^l<<24,l=l<<1^283*(l>>7))),a[o]=a[o-i]^t}for(let u=0;o;u++,o--){const t=a[3&u?o:o-4];s[u]=o<=4||u<4?t:r[0][n[t>>>24]]^r[1][n[t>>16&255]]^r[2][n[t>>8&255]]^r[3][n[255&t]]}}encrypt(t){return this._crypt(t,0)}decrypt(t){return this._crypt(t,1)}_precompute(){const t=this._tables[0],e=this._tables[1],n=t[4],r=e[4],i=[],o=[];let a,s,l,u;for(let c=0;c<256;c++)o[(i[c]=c<<1^283*(c>>7))^c]=c;for(let c=a=0;!n[c];c^=s||1,a=o[a]||1){let o=a^a<<1^a<<2^a<<3^a<<4;o=o>>8^255&o^99,n[c]=o,r[o]=c,u=i[l=i[s=i[c]]];let f=16843009*u^65537*l^257*s^16843008*c,h=257*i[o]^16843008*o;for(let n=0;n<4;n++)t[n][c]=h=h<<24^h>>>8,e[n][o]=f=f<<24^f>>>8}for(let c=0;c<5;c++)t[c]=t[c].slice(0),e[c]=e[c].slice(0)}_crypt(t,e){if(4!==t.length)throw new Error("invalid aes block size");const n=this._key[e],r=n.length/4-2,i=[0,0,0,0],o=this._tables[e],a=o[0],s=o[1],l=o[2],u=o[3],c=o[4];let f,h,d,p=t[0]^n[0],v=t[e?3:1]^n[1],g=t[2]^n[2],y=t[e?1:3]^n[3],m=4;for(let _=0;_>>24]^s[v>>16&255]^l[g>>8&255]^u[255&y]^n[m],h=a[v>>>24]^s[g>>16&255]^l[y>>8&255]^u[255&p]^n[m+1],d=a[g>>>24]^s[y>>16&255]^l[p>>8&255]^u[255&v]^n[m+2],y=a[y>>>24]^s[p>>16&255]^l[v>>8&255]^u[255&g]^n[m+3],m+=4,p=f,v=h,g=d;for(let _=0;_<4;_++)i[e?3&-_:_]=c[p>>>24]<<24^c[v>>16&255]<<16^c[g>>8&255]<<8^c[255&y]^n[m++],f=p,p=v,v=g,g=y,y=f;return i}}},v={ctrGladman:class{constructor(t,e){this._prf=t,this._initIv=e,this._iv=e}reset(){this._iv=this._initIv}update(t){return this.calculate(this._prf,t,this._iv)}incWord(t){if(255===(t>>24&255)){let e=t>>16&255,n=t>>8&255,r=255&t;255===e?(e=0,255===n?(n=0,255===r?r=0:++r):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=r}else t+=1<<24;return t}incCounter(t){0===(t[0]=this.incWord(t[0]))&&(t[1]=this.incWord(t[1]))}calculate(t,e,n){let r;if(!(r=e.length))return[];const i=f.bitLength(e);for(let o=0;oi&&(t=n.hash(t));for(let o=0;ot.length){const n=t;t=new Uint8Array(e),t.set(n,0)}return t}function V(t,e,n){return t.subarray(e,n)}const j=12;class H{constructor(t,e){const n=this;Object.assign(n,{password:t,passwordVerification:e}),X(n,t)}async append(t){const e=this;if(e.password){const n=q(e,t.subarray(0,j));if(e.password=null,n[j-1]!=e.passwordVerification)throw new Error(y);t=t.subarray(j)}return q(e,t)}async flush(){return{valid:!0,data:new Uint8Array(0)}}}class G{constructor(t,e){const n=this;Object.assign(n,{password:t,passwordVerification:e}),X(n,t)}async append(t){const e=this;let n,r;if(e.password){e.password=null;const i=crypto.getRandomValues(new Uint8Array(j));i[j-1]=e.passwordVerification,n=new Uint8Array(t.length+i.length),n.set(Y(e,i),0),r=j}else n=new Uint8Array(t.length),r=0;return n.set(Y(e,t),r),n}async flush(){return{data:new Uint8Array(0)}}}function q(t,e){const n=new Uint8Array(e.length);for(let r=0;r>>24]),t.keys[2]=~t.crcKey2.get()}function K(t){const e=2|t.keys[2];return J(Math.imul(e,1^e)>>>8)}function J(t){return 255&t}function Q(t){return 4294967295&t}const tt="deflate",et="inflate",nt="Invalid signature";class rt{constructor(t,{signature:e,password:n,signed:r,compressed:i,zipCrypto:o,passwordVerification:a,encryptionStrength:s},{chunkSize:l}){const u=Boolean(n);Object.assign(this,{signature:e,encrypted:u,signed:r,compressed:i,inflate:i&&new t({chunkSize:l}),crc32:r&&new c,zipCrypto:o,decrypt:u&&o?new H(n,a):new R(n,r,s)})}async append(t){const e=this;return e.encrypted&&t.length&&(t=await e.decrypt.append(t)),e.compressed&&t.length&&(t=await e.inflate.append(t)),(!e.encrypted||e.zipCrypto)&&e.signed&&t.length&&e.crc32.append(t),t}async flush(){const t=this;let e,n=new Uint8Array(0);if(t.encrypted){const e=await t.decrypt.flush();if(!e.valid)throw new Error(nt);n=e.data}if((!t.encrypted||t.zipCrypto)&&t.signed){const n=new DataView(new Uint8Array(4).buffer);if(e=t.crc32.get(),n.setUint32(0,e),t.signature!=n.getUint32(0,!1))throw new Error(nt)}return t.compressed&&(n=await t.inflate.append(n)||new Uint8Array(0),await t.inflate.flush()),{data:n,signature:e}}}class it{constructor(t,{encrypted:e,signed:n,compressed:r,level:i,zipCrypto:o,password:a,passwordVerification:s,encryptionStrength:l},{chunkSize:u}){Object.assign(this,{encrypted:e,signed:n,compressed:r,deflate:r&&new t({level:i||5,chunkSize:u}),crc32:n&&new c,zipCrypto:o,encrypt:e&&o?new G(a,s):new B(a,l)})}async append(t){const e=this;let n=t;return e.compressed&&t.length&&(n=await e.deflate.append(t)),e.encrypted&&n.length&&(n=await e.encrypt.append(n)),(!e.encrypted||e.zipCrypto)&&e.signed&&t.length&&e.crc32.append(t),n}async flush(){const t=this;let e,n=new Uint8Array(0);if(t.compressed&&(n=await t.deflate.flush()||new Uint8Array(0)),t.encrypted){n=await t.encrypt.append(n);const r=await t.encrypt.flush();e=r.signature;const i=new Uint8Array(n.length+r.data.length);i.set(n,0),i.set(r.data,n.length),n=i}return t.encrypted&&!t.zipCrypto||!t.signed||(e=t.crc32.get()),{data:n,signature:e}}}function ot(t,e,n){return e.codecType.startsWith(tt)?new it(t,e,n):e.codecType.startsWith(et)?new rt(t,e,n):void 0}const at="init",st="append",lt="flush",ut="message";var ct=(t,e,n,r,i,o,a)=>(Object.assign(t,{busy:!0,codecConstructor:e,options:Object.assign({},n),scripts:a,terminate(){t.worker&&!t.busy&&(t.worker.terminate(),t.interface=null)},onTaskFinished(){t.busy=!1,i(t)}}),o?ht(t,r):ft(t,r));function ft(t,e){const n=ot(t.codecConstructor,t.options,e);return{async append(e){try{return await n.append(e)}catch(r){throw t.onTaskFinished(),r}},async flush(){try{return await n.flush()}finally{t.onTaskFinished()}}}}function ht(t,e){let n;return t.interface||(t.worker=new Worker(new URL(t.scripts[0],"undefined"===typeof document?new(require("url").URL)("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("zip.js",document.baseURI).href)),t.worker.addEventListener(ut,o,!1),t.interface={append(t){return r({type:st,data:t})},flush(){return r({type:lt})}}),t.interface;async function r(r){if(!n){const n=t.options,r=t.scripts.slice(1);await i({scripts:r,type:at,options:n,config:{chunkSize:e.chunkSize}})}return i(r)}function i(e){const r=t.worker,i=new Promise(((t,e)=>n={resolve:t,reject:e}));try{if(e.data)try{e.data=e.data.buffer,r.postMessage(e,[e.data])}catch(o){r.postMessage(e)}else r.postMessage(e)}catch(o){n.reject(o),n=null,t.onTaskFinished()}return i}function o(e){const r=e.data;if(n){const e=r.error,i=r.type;if(e){const r=new Error(e.message);r.stack=e.stack,n.reject(r),n=null,t.onTaskFinished()}else if(i==at||i==lt||i==st){const e=r.data;i==lt?(n.resolve({data:new Uint8Array(e),signature:r.signature}),n=null,t.onTaskFinished()):n.resolve(e&&new Uint8Array(e))}}}}let dt=[],pt=[];function vt(t,e,n){const r=!e.compressed&&!e.signed&&!e.encrypted,i=!r&&(e.useWebWorkers||void 0===e.useWebWorkers&&n.useWebWorkers),o=i&&n.workerScripts?n.workerScripts[e.codecType]:[];if(dt.length!t.busy));return r?(gt(r),ct(r,t,e,n,a,i,o)):new Promise((n=>pt.push({resolve:n,codecConstructor:t,options:e,webWorker:i,scripts:o})))}function a(t){if(pt.length){const[{resolve:e,codecConstructor:r,options:i,webWorker:o,scripts:s}]=pt.splice(0,1);e(ct(t,r,i,n,a,o,s))}else t.worker?(gt(t),Number.isFinite(n.terminateWorkerTimeout)&&n.terminateWorkerTimeout>=0&&(t.terminateTimeout=setTimeout((()=>{dt=dt.filter((e=>e!=t)),t.terminate()}),n.terminateWorkerTimeout))):dt=dt.filter((e=>e!=t))}}function gt(t){t.terminateTimeout&&(clearTimeout(t.terminateTimeout),t.terminateTimeout=null)}function yt(){dt.forEach((t=>t.terminate()))}const mt=64,_t="Abort error";async function bt(t,e,n,r,i,o,a){const s=Math.max(o.chunkSize,mt);return l();async function l(o=0,u=0){const c=a.signal;if(o{t.onload=t=>e(t.target.result),t.onerror=()=>n(t.error),t.readAsText(this.blob,this.encoding)}))}}class Zt extends Pt{constructor(t){super(),this.dataURI=t;let e=t.length;while("="==t.charAt(e-1))e--;this.dataStart=t.indexOf(",")+1,this.size=Math.floor(.75*(e-this.dataStart))}async readUint8Array(t,e){const n=new Uint8Array(e),r=4*Math.floor(t/3),i=atob(this.dataURI.substring(r+this.dataStart,4*Math.ceil((t+e)/3)+this.dataStart)),o=t-3*Math.floor(r/4);for(let a=o;a2?this.data+=btoa(n):this.pending=n}getData(){return this.data+btoa(this.pending)}}class zt extends Pt{constructor(t){super(),this.blob=t,this.size=t.size}async readUint8Array(t,e){const n=new FileReader;return new Promise(((r,i)=>{n.onload=t=>r(new Uint8Array(t.target.result)),n.onerror=()=>i(n.error),n.readAsArrayBuffer(this.blob.slice(t,t+e))}))}}class Nt extends Lt{constructor(t){super(),this.offset=0,this.contentType=t,this.blob=new Blob([],{type:t})}async writeUint8Array(t){super.writeUint8Array(t),this.blob=new Blob([this.blob,t.buffer],{type:this.contentType}),this.offset=this.blob.size}getData(){return this.blob}}class Wt extends Pt{constructor(t,e){super(),this.url=t,this.preventHeadRequest=e.preventHeadRequest,this.useRangeHeader=e.useRangeHeader,this.forceRangeRequests=e.forceRangeRequests,this.options=Object.assign({},e),delete this.options.preventHeadRequest,delete this.options.useRangeHeader,delete this.options.forceRangeRequests,delete this.options.useXHR}async init(){if(super.init(),Kt(this.url)&&!this.preventHeadRequest){const t=await Vt(Mt,this.url,this.options);if(this.size=Number(t.headers.get(Tt)),!this.forceRangeRequests&&this.useRangeHeader&&t.headers.get(At)!=Ot)throw new Error(kt);void 0===this.size&&await Ut(this,this.options)}else await Ut(this,this.options)}async readUint8Array(t,e){if(this.useRangeHeader){const n=await Vt(Dt,this.url,this.options,Object.assign({},this.options.headers,{HEADER_RANGE:Ot+"="+t+"-"+(t+e-1)}));if(206!=n.status)throw new Error(kt);return new Uint8Array(await n.arrayBuffer())}return this.data||await Ut(this,this.options),new Uint8Array(this.data.subarray(t,t+e))}}async function Ut(t,e){const n=await Vt(Dt,t.url,e);t.data=new Uint8Array(await n.arrayBuffer()),t.size||(t.size=t.data.length)}async function Vt(t,e,n,r){r=Object.assign({},n.headers,r);const i=await fetch(e,Object.assign({},n,{method:t,headers:r}));if(i.status<400)return i;throw new Error(St+(i.statusText||i.status))}class jt extends Pt{constructor(t,e){super(),this.url=t,this.preventHeadRequest=e.preventHeadRequest,this.useRangeHeader=e.useRangeHeader,this.forceRangeRequests=e.forceRangeRequests}async init(){if(super.init(),Kt(this.url)&&!this.preventHeadRequest)return new Promise(((t,e)=>Gt(Mt,this.url,(n=>{this.size=Number(n.getResponseHeader(Tt)),this.useRangeHeader?this.forceRangeRequests||n.getResponseHeader(At)==Ot?t():e(new Error(kt)):void 0===this.size?Ht(this,this.url).then((()=>t())).catch(e):t()}),e)));await Ht(this,this.url)}async readUint8Array(t,e){if(!this.useRangeHeader)return this.data||await Ht(this,this.url),new Uint8Array(this.data.subarray(t,t+e));{const n=await new Promise(((n,r)=>Gt(Dt,this.url,(t=>n(new Uint8Array(t.response))),r,[[It,Ot+"="+t+"-"+(t+e-1)]])));if(206!=n.status)throw new Error(kt)}}}function Ht(t,e){return new Promise(((n,r)=>Gt(Dt,e,(e=>{t.data=new Uint8Array(e.response),t.size||(t.size=t.data.length),n()}),r)))}function Gt(t,e,n,r,i=[]){const o=new XMLHttpRequest;return o.addEventListener("load",(()=>{o.status<400?n(o):r(St+(o.statusText||o.status))}),!1),o.addEventListener("error",r,!1),o.open(t,e),i.forEach((t=>o.setRequestHeader(t[0],t[1]))),o.responseType="arraybuffer",o.send(),o}class qt extends Pt{constructor(t,e={}){super(),this.url=t,e.useXHR?this.reader=new jt(t,e):this.reader=new Wt(t,e)}set size(t){}get size(){return this.reader.size}async init(){super.init(),await this.reader.init()}async readUint8Array(t,e){return this.reader.readUint8Array(t,e)}}class Yt extends qt{constructor(t,e={}){e.useRangeHeader=!0,super(t,e)}}class Xt extends Pt{constructor(t){super(),this.array=t,this.size=t.length}async readUint8Array(t,e){return this.array.slice(t,t+e)}}class $t extends Lt{constructor(){super(),this.array=new Uint8Array(0)}async writeUint8Array(t){super.writeUint8Array(t);const e=this.array;this.array=new Uint8Array(e.length+t.length),this.array.set(e),this.array.set(t,e.length)}getData(){return this.array}}function Kt(t){if("undefined"!=typeof document){const e=document.createElement("a");return e.href=t,"http:"==e.protocol||"https:"==e.protocol}return/^https?:\/\//i.test(t)}const Jt=4294967295,Qt=65535,te=8,ee=0,ne=99,re=67324752,ie=134695760,oe=33639248,ae=101010256,se=101075792,le=117853008,ue=22,ce=20,fe=56,he=ue+ce+fe,de=1,pe=1,ve=39169,ge=10,ye=1,me=21589,_e=28789,be=25461,we=1,xe=6,Se=8,ke=2048,Ce=16,Te=20,Ae=45,Ie=51,Me="/",De=new Date(2107,11,31),Oe=new Date(1980,0,1),Ee="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");var Pe=t=>{let e="";for(let n=0;nthis[e]=t[e]))}}const Be="File format is not recognized",Ze="End of central directory not found",Fe="End of Zip64 central directory not found",ze="End of Zip64 central directory locator not found",Ne="Central directory header not found",We="Local file header not found",Ue="Zip64 extra field not found",Ve="File contains encrypted entry",je="Encryption method not supported",He="Compression method not supported",Ge="utf-8",qe=["uncompressedSize","compressedSize","offset"];class Ye{constructor(t,e={}){Object.assign(this,{reader:t,options:e,config:r()})}async getEntries(t={}){const e=this,n=e.reader;if(n.initialized||await n.init(),n.size=n.size)throw new Error(Be);let u=0,c=await vn(n,a,n.size-a),f=pn(c);const h=r.offset-o;if(fn(f,u)!=oe&&a!=h){const t=a;a=h,l=a-t,c=await vn(n,a,n.size-a),f=pn(c)}if(a<0||a>=n.size)throw new Error(Be);const d=[];for(let v=0;vr.getData(t,_,e),d.push(_),u=m,t.onprogress)try{t.onprogress(v+1,s,new Re(r))}catch(p){}}return d}async close(){}}class Xe{constructor(t,e,n){Object.assign(this,{reader:t,config:e,options:n})}async getData(t,e,n={}){const r=this,{reader:i,offset:o,extraFieldAES:a,compressionMethod:s,config:l,bitFlag:u,signature:c,rawLastModDate:f,compressedSize:h}=r,d=r.localDirectory={};i.initialized||await i.init();let p=await vn(i,o,30);const v=pn(p);let g=on(r,n,"password");if(g=g&&g.length&&g,a&&a.originalCompressionMethod!=ne)throw new Error(He);if(s!=ee&&s!=te)throw new Error(He);if(fn(v,0)!=re)throw new Error(We);$e(d,v,4),p=await vn(i,o,30+d.filenameLength+d.extraFieldLength),d.rawExtraField=p.subarray(30+d.filenameLength),Ke(r,d,v,4),e.lastAccessDate=d.lastAccessDate,e.creationDate=d.creationDate;const y=r.encrypted&&d.encrypted,m=y&&!a;if(y){if(!m&&void 0===a.strength)throw new Error(je);if(!g)throw new Error(Ve)}const _=await vt(l.Inflate,{codecType:et,password:g,zipCrypto:m,encryptionStrength:a&&a.strength,signed:on(r,n,"checkSignature"),passwordVerification:m&&(u.dataDescriptor?f>>>8&255:c>>>24&255),signature:c,compressed:0!=s,encrypted:y,useWebWorkers:on(r,n,"useWebWorkers")},l);t.initialized||await t.init();const b=on(r,n,"signal"),w=o+30+d.filenameLength+d.extraFieldLength;return await bt(_,i,t,w,h,l,{onprogress:n.onprogress,signal:b}),t.getData()}}function $e(t,e,n){const r=t.rawBitFlag=cn(e,n+2),i=(r&we)==we,o=fn(e,n+6);Object.assign(t,{encrypted:i,version:cn(e,n),bitFlag:{level:(r&xe)>>1,dataDescriptor:(r&Se)==Se,languageEncodingFlag:(r&ke)==ke},rawLastModDate:o,lastModDate:sn(o),filenameLength:cn(e,n+22),extraFieldLength:cn(e,n+24)})}function Ke(t,e,n,r){const i=e.rawExtraField,o=e.extraField=new Map,a=pn(new Uint8Array(i));let s=0;try{while(se[t]==Jt));for(let i=0;i{if(e[n]==Jt){if(void 0===t[n])throw new Error(Ue);e[n]=t[n]}}))}function Qe(t,e,n,r,i){const o=pn(t.data);t.version=un(o,0),t.signature=fn(o,1);const a=new c;a.append(i[n]);const s=pn(new Uint8Array(4));s.setUint32(0,a.get(),!0),t[e]=(new TextDecoder).decode(t.data.subarray(5)),t.valid=!i.bitFlag.languageEncodingFlag&&t.signature==fn(s,0),t.valid&&(r[e]=t[e],r[e+"UTF8"]=!0)}function tn(t,e,n){const r=pn(t.data);t.vendorVersion=un(r,0),t.vendorId=un(r,2);const i=un(r,4);t.strength=i,t.originalCompressionMethod=n,e.compressionMethod=t.compressionMethod=cn(r,5)}function en(t,e){const n=pn(t.data);let r,i=4;try{while(i{if(t.data.length>=a+4){const s=fn(n,a);e[r]=t[r]=new Date(1e3*s);const l=o[i];t[l]=s}a+=4}))}async function rn(t,e,n,r,i){const o=new Uint8Array(4),a=pn(o);dn(a,0,e);const s=r+i;return await l(r)||await l(Math.min(s,n));async function l(e){const i=n-e,a=await vn(t,i,e);for(let t=a.length-r;t>=0;t--)if(a[t]==o[0]&&a[t+1]==o[1]&&a[t+2]==o[2]&&a[t+3]==o[3])return{offset:i+t,buffer:a.slice(t,t+r).buffer}}}function on(t,e,n){return void 0===e[n]?t.options[n]:e[n]}function an(t,e){return e&&"cp437"!=e.trim().toLowerCase()?new TextDecoder(e).decode(t):Pe(t)}function sn(t){const e=(4294901760&t)>>16,n=65535&t;try{return new Date(1980+((65024&e)>>9),((480&e)>>5)-1,31&e,(63488&n)>>11,(2016&n)>>5,2*(31&n),0)}catch(r){}}function ln(t){return new Date(Number(t/10000n-11644473600000n))}function un(t,e){return t.getUint8(e)}function cn(t,e){return t.getUint16(e,!0)}function fn(t,e){return t.getUint32(e,!0)}function hn(t,e){return Number(t.getBigUint64(e,!0))}function dn(t,e,n){t.setUint32(e,n,!0)}function pn(t){return new DataView(t.buffer)}function vn(t,e,n){return t.readUint8Array(e,n)}const gn="File already exists",yn="Zip file comment exceeds 64KB",mn="File entry comment exceeds 64KB",_n="File entry name exceeds 64KB",bn="Version exceeds 65535",wn="The strength must equal 1, 2, or 3",xn="Extra field type exceeds 65535",Sn="Extra field data exceeds 64KB",kn="Zip64 is not supported",Cn=new Uint8Array([7,0,2,0,65,69,3,0,0]),Tn=24;let An=0;class In{constructor(t,e={}){Object.assign(this,{writer:t,options:e,config:r(),files:new Map,offset:t.size,pendingCompressedSize:0,pendingEntries:[]})}async add(t="",e,n={}){const r=this;if(!(Anr.pendingEntries.push({name:t,reader:e,options:n,resolve:i,reject:o})));An++;try{return await Mn(r,t,e,n)}finally{An--;const t=r.pendingEntries.shift();t&&r.add(t.name,t.reader,t.options).then(t.resolve).catch(t.reject)}}async close(t=new Uint8Array(0),e={}){return await En(this,t,e),this.writer.getData()}}async function Mn(t,e,n,r){if(e=e.trim(),r.directory&&!e.endsWith(Me)?e+=Me:r.directory=e.endsWith(Me),t.files.has(e))throw new Error(gn);const i=(new TextEncoder).encode(e);if(i.length>Qt)throw new Error(_n);const o=r.comment||"",a=(new TextEncoder).encode(o);if(a.length>Qt)throw new Error(mn);const s=t.options.version||r.version||0;if(s>Qt)throw new Error(bn);const l=t.options.versionMadeBy||r.versionMadeBy||20;if(l>Qt)throw new Error(bn);const u=Bn(t,r,"lastModDate")||new Date,c=Bn(t,r,"lastAccessDate"),f=Bn(t,r,"creationDate"),h=Bn(t,r,"password"),d=Bn(t,r,"encryptionStrength")||3,p=Bn(t,r,"zipCrypto");if(void 0!==h&&void 0!==d&&(d<1||d>3))throw new Error(wn);let v=new Uint8Array(0);const g=r.extraField;if(g){let t=0,e=0;g.forEach((e=>t+=4+e.length)),v=new Uint8Array(t),g.forEach(((t,n)=>{if(n>Qt)throw new Error(xn);if(t.length>Qt)throw new Error(Sn);Un(v,new Uint16Array([n]),e),Un(v,new Uint16Array([t.length]),e+2),Un(v,t,e+4),e+=4+t.length}))}let y=Bn(t,r,"extendedTimestamp");void 0===y&&(y=!0);let m=0,_=Bn(t,r,"keepOrder");void 0===_&&(_=!0);let b=0,w=Bn(t,r,"msDosCompatible");void 0===w&&(w=!0);const x=Bn(t,r,"internalFileAttribute")||0,S=Bn(t,r,"externalFileAttribute")||0;n&&(n.initialized||await n.init(),b=n.size,m=Zn(b));let k=r.zip64||t.options.zip64||!1;if(t.offset+t.pendingCompressedSize>=Jt||b>=Jt||m>=Jt){if(!1===r.zip64||!1===t.options.zip64||!_)throw new Error(kn);k=!0}t.pendingCompressedSize+=m,await Promise.resolve();const C=Bn(t,r,"level"),T=Bn(t,r,"useWebWorkers"),A=Bn(t,r,"bufferedWrite");let I=Bn(t,r,"dataDescriptor");const M=Bn(t,r,"signal");void 0===I&&(I=!0);const D=await Dn(t,e,n,Object.assign({},r,{rawFilename:i,rawComment:a,version:s,versionMadeBy:l,lastModDate:u,lastAccessDate:c,creationDate:f,rawExtraField:v,zip64:k,password:h,level:C,useWebWorkers:T,encryptionStrength:d,extendedTimestamp:y,zipCrypto:p,bufferedWrite:A,keepOrder:_,dataDescriptor:I,signal:M,msDosCompatible:w,internalFileAttribute:x,externalFileAttribute:S}));return m&&(t.pendingCompressedSize-=m),Object.assign(D,{name:e,comment:o,extraField:g}),new Re(D)}async function Dn(t,e,n,r){const i=t.files,o=t.writer,a=Array.from(i.values()).pop();let s,l,u,c={};i.set(e,c);try{let f,h,d;if(r.keepOrder&&(f=a&&a.lock),c.lock=d=new Promise((t=>u=t)),r.bufferedWrite||t.lockWrite||!r.dataDescriptor?(h=new Nt,h.init(),s=!0):(t.lockWrite=new Promise((t=>l=t)),o.initialized||await o.init(),h=o),c=await On(n,h,t.config,r),c.lock=d,i.set(e,c),c.filename=e,s){let e=0;const n=h.getData();let a;await Promise.all([t.lockWrite,f]);do{a=Array.from(i.values()).find((t=>t.writingBufferedData)),a&&await a.lock}while(a&&a.lock);if(c.writingBufferedData=!0,!r.dataDescriptor){const t=26,i=await Pn(n,0,t),a=new DataView(i);c.encrypted&&!r.zipCrypto||Nn(a,14,c.signature),c.zip64?(Nn(a,18,Jt),Nn(a,22,Jt)):(Nn(a,18,c.compressedSize),Nn(a,22,c.uncompressedSize)),await o.writeUint8Array(new Uint8Array(i)),e=t}await Ln(o,n,e),delete c.writingBufferedData}if(c.offset=t.offset,c.zip64){const t=Vn(c.rawExtraFieldZip64);Wn(t,20,BigInt(c.offset))}else if(c.offset>=Jt)throw new Error(kn);return t.offset+=c.length,c}catch(f){throw(s&&c.writingBufferedData||!s&&c.dataWritten)&&(f.corruptedEntry=t.hasCorruptedEntries=!0,c.uncompressedSize&&(t.offset+=c.uncompressedSize)),i.delete(e),f}finally{u(),l&&l()}}async function On(t,e,n,r){const{rawFilename:i,lastAccessDate:o,creationDate:a,password:s,level:l,zip64:u,zipCrypto:c,dataDescriptor:f,directory:h,version:d,versionMadeBy:p,rawComment:v,rawExtraField:g,useWebWorkers:y,onprogress:m,signal:_,encryptionStrength:b,extendedTimestamp:w,msDosCompatible:x,internalFileAttribute:S,externalFileAttribute:k}=r,C=Boolean(s&&s.length),T=0!==l&&!h;let A,I,M;if(C&&!c){A=new Uint8Array(Cn.length+2);const t=Vn(A);zn(t,0,ve),Un(A,Cn,2),Fn(t,8,b)}else A=new Uint8Array(0);if(w){M=new Uint8Array(9+(o?4:0)+(a?4:0));const t=Vn(M);zn(t,0,me),zn(t,2,M.length-4);const e=1+(o?2:0)+(a?4:0);Fn(t,4,e),Nn(t,5,Math.floor(r.lastModDate.getTime()/1e3)),o&&Nn(t,9,Math.floor(o.getTime()/1e3)),a&&Nn(t,13,Math.floor(a.getTime()/1e3));try{I=new Uint8Array(36);const t=Vn(I),e=Rn(r.lastModDate);zn(t,0,ge),zn(t,2,32),zn(t,8,ye),zn(t,10,24),Wn(t,12,e),Wn(t,20,Rn(o)||e),Wn(t,28,Rn(a)||e)}catch(Y){I=new Uint8Array(0)}}else I=M=new Uint8Array(0);const D={version:d||Te,versionMadeBy:p,zip64:u,directory:Boolean(h),filenameUTF8:!0,rawFilename:i,commentUTF8:!0,rawComment:v,rawExtraFieldZip64:u?new Uint8Array(Tn+4):new Uint8Array(0),rawExtraFieldExtendedTimestamp:M,rawExtraFieldNTFS:I,rawExtraFieldAES:A,rawExtraField:g,extendedTimestamp:w,msDosCompatible:x,internalFileAttribute:S,externalFileAttribute:k};let O=D.uncompressedSize=0,E=ke;f&&(E|=Se);let P=ee;T&&(P=te),u&&(D.version=D.version>Ae?D.version:Ae),C&&(E|=we,c||(D.version=D.version>Ie?D.version:Ie,P=ne,T&&(D.rawExtraFieldAES[9]=te))),D.compressionMethod=P;const L=D.headerArray=new Uint8Array(26),R=Vn(L);zn(R,0,D.version),zn(R,2,E),zn(R,4,P);const B=new Uint32Array(1),Z=Vn(B);let F;F=r.lastModDateDe?De:r.lastModDate,zn(Z,0,(F.getHours()<<6|F.getMinutes())<<5|F.getSeconds()/2),zn(Z,2,(F.getFullYear()-1980<<4|F.getMonth()+1)<<5|F.getDate());const z=B[0];Nn(R,6,z),zn(R,22,i.length);const N=A.length+M.length+I.length+D.rawExtraField.length;zn(R,24,N);const W=new Uint8Array(30+i.length+N),U=Vn(W);let V;Nn(U,0,re),Un(W,L,4),Un(W,i,30),Un(W,A,30+i.length),Un(W,M,30+i.length+A.length),Un(W,I,30+i.length+A.length+M.length),Un(W,D.rawExtraField,30+i.length+A.length+M.length+I.length);let j=0;if(t){O=D.uncompressedSize=t.size;const r=await vt(n.Deflate,{codecType:tt,level:l,password:s,encryptionStrength:b,zipCrypto:C&&c,passwordVerification:C&&c&&z>>8&255,signed:!0,compressed:T,encrypted:C,useWebWorkers:y},n);await e.writeUint8Array(W),D.dataWritten=!0,V=await bt(r,t,e,0,O,n,{onprogress:m,signal:_}),j=V.length}else await e.writeUint8Array(W),D.dataWritten=!0;let H,G=new Uint8Array(0);if(f&&(G=new Uint8Array(u?24:16),H=Vn(G),Nn(H,0,ie)),t){const t=V.signature;if(C&&!c||void 0===t||(Nn(R,10,t),D.signature=t,f&&Nn(H,4,t)),u){const t=Vn(D.rawExtraFieldZip64);zn(t,0,pe),zn(t,2,Tn),Nn(R,14,Jt),Wn(t,12,BigInt(j)),Nn(R,18,Jt),Wn(t,4,BigInt(O)),f&&(Wn(H,8,BigInt(j)),Wn(H,16,BigInt(O)))}else Nn(R,14,j),Nn(R,18,O),f&&(Nn(H,8,j),Nn(H,12,O))}f&&await e.writeUint8Array(G);const q=W.length+j+G.length;return Object.assign(D,{compressedSize:j,lastModDate:F,rawLastModDate:z,creationDate:a,lastAccessDate:o,encrypted:C,length:q}),D}async function En(t,e,n){const r=t.writer,i=t.files;let o=0,a=0,s=t.offset,l=i.size;for(const[,d]of i)a+=46+d.rawFilename.length+d.rawComment.length+d.rawExtraFieldZip64.length+d.rawExtraFieldAES.length+d.rawExtraFieldExtendedTimestamp.length+d.rawExtraFieldNTFS.length+d.rawExtraField.length;let u=n.zip64||t.options.zip64||!1;if(s>=Jt||a>=Jt||l>=Qt){if(!1===n.zip64||!1===t.options.zip64)throw new Error(kn);u=!0}const c=new Uint8Array(a+(u?he:ue)),f=Vn(c);if(e&&e.length){if(!(e.length<=Qt))throw new Error(yn);zn(f,o+20,e.length)}for(const[d,p]of Array.from(i.values()).entries()){const{rawFilename:t,rawExtraFieldZip64:e,rawExtraFieldAES:r,rawExtraField:a,rawComment:s,versionMadeBy:l,headerArray:u,directory:v,zip64:g,msDosCompatible:y,internalFileAttribute:m,externalFileAttribute:_}=p;let b,w;if(p.extendedTimestamp){w=p.rawExtraFieldNTFS,b=new Uint8Array(9);const t=Vn(b);zn(t,0,me),zn(t,2,b.length-4),Fn(t,4,1),Nn(t,5,Math.floor(p.lastModDate.getTime()/1e3))}else w=b=new Uint8Array(0);const x=e.length+r.length+b.length+w.length+a.length;if(Nn(f,o,oe),zn(f,o+4,l),Un(c,u,o+6),zn(f,o+30,x),zn(f,o+32,s.length),Nn(f,o+34,m),_?Nn(f,o+38,_):v&&y&&Fn(f,o+38,Ce),Nn(f,o+42,g?Jt:p.offset),Un(c,t,o+46),Un(c,e,o+46+t.length),Un(c,r,o+46+t.length+e.length),Un(c,b,o+46+t.length+e.length+r.length),Un(c,w,o+46+t.length+e.length+r.length+b.length),Un(c,a,o+46+t.length+e.length+r.length+b.length+w.length),Un(c,s,o+46+t.length+x),o+=46+t.length+x+s.length,n.onprogress)try{n.onprogress(d+1,i.size,new Re(p))}catch(h){}}u&&(Nn(f,o,se),Wn(f,o+4,BigInt(44)),zn(f,o+12,45),zn(f,o+14,45),Wn(f,o+24,BigInt(l)),Wn(f,o+32,BigInt(l)),Wn(f,o+40,BigInt(a)),Wn(f,o+48,BigInt(s)),Nn(f,o+56,le),Wn(f,o+64,BigInt(s)+BigInt(a)),Nn(f,o+72,de),l=Qt,s=Jt,a=Jt,o+=76),Nn(f,o,ae),zn(f,o+8,l),zn(f,o+10,l),Nn(f,o+12,a),Nn(f,o+16,s),await r.writeUint8Array(c),e&&e.length&&await r.writeUint8Array(e)}function Pn(t,e,n){const r=new FileReader;return new Promise(((i,o)=>{r.onload=t=>i(t.target.result),r.onerror=()=>o(r.error),r.readAsArrayBuffer(e||n?t.slice(e,n):t)}))}async function Ln(t,e,n=0){const r=536870912;async function i(){if(nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,l=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){l=!0,a=t},f:function(){try{s||null==n["return"]||n["return"]()}finally{if(l)throw a}}}}},6356:function(t,e,n){"use strict";n.d(e,{Z:function(){return l}});n(2419),n(1539),n(1299);var r=n(1753),i=n(6490),o=n(4402),a=n(8143);function s(t,e){if(e&&("object"===(0,o.Z)(e)||"function"===typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return(0,a.Z)(t)}function l(t){var e=(0,i.Z)();return function(){var n,i=(0,r.Z)(t);if(e){var o=(0,r.Z)(this).constructor;n=Reflect.construct(i,arguments,o)}else n=i.apply(this,arguments);return s(this,n)}}},6951:function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n.d(e,{Z:function(){return r}})},1238:function(t,e,n){"use strict";n.d(e,{Z:function(){return o}});n(1539),n(1299),n(4819),n(5003);var r=n(1753);function i(t,e){while(!Object.prototype.hasOwnProperty.call(t,e))if(t=(0,r.Z)(t),null===t)break;return t}function o(){return o="undefined"!==typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,e,n){var r=i(t,e);if(r){var o=Object.getOwnPropertyDescriptor(r,e);return o.get?o.get.call(arguments.length<3?t:n):o.value}},o.apply(this,arguments)}},1753:function(t,e,n){"use strict";n.d(e,{Z:function(){return r}});n(489);function r(t){return r=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},r(t)}},7554:function(t,e,n){"use strict";n.d(e,{Z:function(){return i}});var r=n(9829);function i(t,e){if("function"!==typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&(0,r.Z)(t,e)}},6490:function(t,e,n){"use strict";n.d(e,{Z:function(){return r}});n(1539),n(1299),n(2419);function r(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}},4141:function(t,e,n){"use strict";n.d(e,{Z:function(){return o}});n(7941),n(2526),n(7327),n(1539),n(5003),n(4747),n(9337);var r=n(6951);function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function o(t){for(var e=1;e=0||(i[n]=t[n]);return i}function D(t,e){if(null==t)return{};var n,r,i=M(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(i[n]=t[n])}return i}var O=n(9963),E=["transition"],P=["component"],L=(0,f.U)({transition:{type:[Boolean,String,Object],default:"fade-transition",validator:function(t){return!0!==t}}},"transition"),R=function(t,e){var n,r=e.slots,o=t.transition,a=D(t,E);if(!o||"boolean"===typeof o)return null==(n=r.default)?void 0:n.call(r);var s="object"===(0,S.Z)(o)?o:{},l=s.component,u=void 0===l?O.uT:l,c=D(s,P);return(0,i.h)(u,(0,i.dG)("string"===typeof o?{name:o}:c,a),r)},B=n(5191);function Z(t){var e=(0,i.FN)();e.render=t}var F=(0,b.a)({name:"VImg",directives:{intersect:I.Z},props:(0,r.Z)({aspectRatio:[String,Number],alt:String,cover:Boolean,eager:Boolean,lazySrc:String,options:{type:Object,default:function(){return{root:void 0,rootMargin:void 0,threshold:void 0}}},position:{type:String,default:"center center"},sizes:String,src:{type:[String,Object],default:""},srcset:String},L()),emits:["loadstart","load","error"],setup:function(t,e){var n=e.emit,r=e.slots,o=(0,c.iH)(""),a=(0,c.iH)(),s=(0,c.iH)(t.eager?"loading":"idle"),l=(0,c.iH)(),u=(0,c.iH)(),f=(0,i.Fl)((function(){return t.src&&"object"===(0,S.Z)(t.src)?{src:t.src.src,srcset:t.srcset||t.src.srcset,lazySrc:t.lazySrc||t.src.lazySrc,aspect:Number(t.aspectRatio||t.src.aspect)}:{src:t.src,srcset:t.srcset,lazySrc:t.lazySrc,aspect:Number(t.aspectRatio||0)}})),h=(0,i.Fl)((function(){return f.value.aspect||l.value/u.value||0}));function d(e){if((!t.eager||!e)&&(!B.cu||e||t.eager)&&(s.value="loading",(0,i.Y3)((function(){var t,e;if(n("loadstart",(null==(t=a.value)?void 0:t.currentSrc)||f.value.src),null!=(e=a.value)&&e.complete){if(a.value.naturalWidth||v(),"error"===s.value)return;h.value||y(a.value,null),p()}else h.value||y(a.value),g()})),f.value.lazySrc)){var r=new Image;r.src=f.value.lazySrc,y(r,null)}}function p(){var t;g(),s.value="loaded",n("load",(null==(t=a.value)?void 0:t.currentSrc)||f.value.src)}function v(){var t;s.value="error",n("error",(null==(t=a.value)?void 0:t.currentSrc)||f.value.src)}function g(){var t=a.value;t&&(o.value=t.currentSrc||t.src)}function y(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100,n=function n(){var r=t.naturalHeight,i=t.naturalWidth;r||i?(l.value=i,u.value=r):t.complete||"loading"!==s.value||null==e?(t.currentSrc.endsWith(".svg")||t.currentSrc.startsWith("data:image/svg+xml"))&&(l.value=1,u.value=1):setTimeout(n,e)};n()}(0,i.YP)((function(){return t.src}),(function(){d("idle"!==s.value)})),(0,i.wF)((function(){return d()}));var m=(0,i.Fl)((function(){return{"v-img__img--cover":t.cover,"v-img__img--contain":!t.cover}})),_=(0,i.Fl)((function(){var e;if(f.value.src&&"idle"!==s.value){var n=(0,i.h)("img",{class:["v-img__img",m.value],src:f.value.src,srcset:f.value.srcset,sizes:t.sizes,ref:a,onLoad:p,onError:v}),o=null==(e=r.sources)?void 0:e.call(r);return(0,i.Wm)(R,{transition:t.transition,appear:!0},{default:function(){return[(0,i.wy)(o?(0,i.Wm)("picture",{class:"v-img__picture"},[o,n]):n,[[O.F8,"loaded"===s.value]])]},_:2},8,["transition","appear"])}})),b=(0,i.Fl)((function(){return(0,i.Wm)(R,{transition:t.transition},{default:function(){return[f.value.lazySrc&&"loaded"!==s.value&&(0,i.Wm)("img",{class:["v-img__img","v-img__img--preload",m.value],src:f.value.lazySrc,alt:""},null,10,["src"])]}},8,["transition"])})),w=(0,i.Fl)((function(){if(r.placeholder)return(0,i.Wm)(R,{transition:t.transition,appear:!0},{default:function(){return[("loading"===s.value||"error"===s.value&&!r.error)&&(0,i.Wm)("div",{class:"v-img__placeholder"},[r.placeholder()])]}},8,["transition","appear"])})),x=(0,i.Fl)((function(){if(r.error)return(0,i.Wm)(R,{transition:t.transition,appear:!0},{default:function(){return["error"===s.value&&(0,i.Wm)("div",{class:"v-img__error"},[r.error()])]}},8,["transition","appear"])}));return Z((function(){return(0,i.wy)((0,i.Wm)(A,{class:"v-img",aspectRatio:h.value,"aria-label":t.alt,role:t.alt?"img":void 0},{additional:function(){return[_.value,b.value,w.value,x.value]},default:r.default},8,["aspectRatio","aria-label","role"]),[[(0,i.Q2)("intersect"),{handler:d,options:t.options},null,{once:!0}]])})),{currentSrc:o,image:a,state:s,naturalWidth:l,naturalHeight:u}}}),z=(0,f.U)({border:[Boolean,Number,String]},"border");function N(t,e){var n=(0,i.Fl)((function(){var n=[];if(null!=t.border&&!1!==t.border&&n.push("".concat(e,"--border")),"string"===typeof t.border&&""!==t.border||0===t.border){var r,i=(0,u.Z)(String(t.border).split(" "));try{for(i.s();!(r=i.n()).done;){var o=r.value;n.push("border-".concat(o))}}catch(a){i.e(a)}finally{i.f()}}return n}));return{borderClasses:n}}var W=[null,"default","comfortable","compact"],U=(0,f.U)({density:{type:String,default:"default",validator:function(t){return W.includes(t)}}},"density");function V(t,e){var n=(0,i.Fl)((function(){return"".concat(e,"--density-").concat(t.density)}));return{densityClasses:n}}var j=(0,f.U)({elevation:{type:[Number,String],validator:function(t){var e=parseInt(t);return!isNaN(e)&&e>=0&&e<=24}}},"elevation");function H(t){var e=(0,i.Fl)((function(){var e=[];return null==t.elevation||e.push("elevation-".concat(t.elevation)),e}));return{elevationClasses:e}}var G=(0,f.U)({rounded:{type:[Boolean,Number,String],default:void 0},tile:Boolean},"rounded");function q(t,e){var n=(0,i.Fl)((function(){var n=[];if(t.tile)n.push("".concat(e,"--tile"));else if(!0===t.rounded||""===t.rounded)n.push("".concat(e,"--rounded"));else if("string"===typeof t.rounded||0===t.rounded){var r,i=(0,u.Z)(String(t.rounded).split(" "));try{for(i.s();!(r=i.n()).done;){var o=r.value;n.push("rounded-".concat(o))}}catch(a){i.e(a)}finally{i.f()}}return n}));return{roundedClasses:n}}var Y=(0,f.U)({tag:{type:String,default:"div"}},"tag"),X=n(6100);function $(t){var e=(0,i.Fl)((function(){return(0,X.NA)(t.value.background)})),n=(0,i.Fl)((function(){return(0,X.NA)(t.value.text)})),r=(0,i.Fl)((function(){var r=[];return t.value.background&&!e.value&&r.push("bg-".concat(t.value.background)),t.value.text&&!n.value&&r.push("text-".concat(t.value.text)),r})),o=(0,i.Fl)((function(){var r={};return t.value.background&&e.value&&(r.backgroundColor=t.value.background),t.value.text&&n.value&&(r.color=t.value.text,r.caretColor=t.value.text),r}));return{colorClasses:r,colorStyles:o}}function K(t,e){var n=(0,i.Fl)((function(){return{text:(0,c.dq)(t)?t.value:e?t[e]:null}})),r=$(n),o=r.colorClasses,a=r.colorStyles;return{textColorClasses:o,textColorStyles:a}}function J(t,e){var n=(0,i.Fl)((function(){return{background:(0,c.dq)(t)?t.value:e?t[e]:null}})),r=$(n),o=r.colorClasses,a=r.colorStyles;return{backgroundColorClasses:o,backgroundColorStyles:a}}var Q=n(1006);function tt(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(t){return t},o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(t){return t},a=(0,i.FN)();a||(0,Q.N6)("useProxiedModel must be called from inside a setup function");var s=(0,i.Fl)((function(){var n,r;return!("undefined"===typeof t[e]||!(null!=a&&null!=(n=a.vnode.props)&&n.hasOwnProperty(e)||null!=a&&null!=(r=a.vnode.props)&&r.hasOwnProperty((0,h.mA)(e))))})),l=(0,c.iH)(r(t[e]));return(0,i.Fl)({get:function(){return s.value?r(t[e]):l.value},set:function(t){l.value=t,null==a||a.emit("update:".concat(e),o(t))}})}var et=(0,b.a)({name:"VAppBar",props:(0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({collapse:Boolean,color:String,flat:Boolean,height:{type:[Number,String],default:64},extensionHeight:{type:[Number,String],default:48},floating:Boolean,image:String,modelValue:{type:Boolean,default:!0},prominent:Boolean,prominentHeight:{type:[Number,String],default:128},position:{type:String,default:"top",validator:function(t){return["top","bottom"].includes(t)}}},z()),U()),j()),G()),v({name:"app-bar"})),Y({tag:"header"})),emits:{"update:modelValue":function(t){return!0}},setup:function(t,e){var n=e.slots,r=N(t,"v-app-bar"),o=r.borderClasses,a=V(t,"v-app-bar"),s=a.densityClasses,l=H(t),u=l.elevationClasses,f=q(t,"v-app-bar"),d=f.roundedClasses,p=J((0,c.Vh)(t,"color")),v=p.backgroundColorClasses,g=p.backgroundColorStyles,m=(0,c.iH)(!!n.extension),_=(0,i.Fl)((function(){return Number(t.prominent?t.prominentHeight:t.height)+Number(m.value?t.extensionHeight:0)-("comfortable"===t.density?8:0)-("compact"===t.density?16:0)})),b=tt(t,"modelValue",t.modelValue),w=y(t.name,(0,c.Vh)(t,"priority"),(0,c.Vh)(t,"position"),_,_,b);return function(){var e,r,a,l=!(!n.image&&!t.image);return(0,i.Wm)(t.tag,{class:["v-app-bar",{"v-app-bar--bottom":"bottom"===t.position,"v-app-bar--collapsed":t.collapse,"v-app-bar--flat":t.flat,"v-app-bar--floating":t.floating,"v-app-bar--is-active":b.value,"v-app-bar--prominent":t.prominent,"v-app-bar--absolute":t.absolute},v.value,o.value,s.value,u.value,d.value],style:[g.value,w.value]},{default:function(){return[l&&(0,i.Wm)("div",{class:"v-app-bar__image"},[n.image?null==(e=n.img)?void 0:e.call(n,{src:t.image}):(0,i.Wm)(F,{src:t.image,cover:!0},null,8,["src","cover"])]),(0,i.Wm)("div",{class:"v-app-bar__content"},[n.prepend&&(0,i.Wm)("div",{class:"v-app-bar__prepend"},[n.prepend()]),null==(r=n.default)?void 0:r.call(n),n.append&&(0,i.Wm)("div",{class:"v-app-bar__append"},[n.append()])]),n.extension&&(0,i.Wm)("div",{class:"v-app-bar__extension",style:{height:(0,h.kb)(t.extensionHeight)},ref:m},[null==(a=n.extension)?void 0:a.call(n)],4)]},_:1},8,["class","style"])}}}),nt=["x-small","small","default","large","x-large"],rt=(0,f.U)({size:{type:[String,Number],default:"default"}},"size");function it(t,e){var n=(0,i.Fl)((function(){return nt.includes(t.size)?"".concat(e,"--size-").concat(t.size):null})),r=(0,i.Fl)((function(){return!nt.includes(t.size)&&t.size?{width:(0,h.kb)(t.size),height:(0,h.kb)(t.size)}:null}));return{sizeClasses:n,sizeStyles:r}}var ot=n(7825),at=(0,b.a)({name:"VIcon",props:(0,r.Z)((0,r.Z)({color:String,left:Boolean,right:Boolean,icon:{type:[String,Object]}},rt()),Y({tag:"i"})),setup:function(t,e){var n,r=e.slots;r.default&&(n=(0,i.Fl)((function(){var t,e,n=null==(t=r.default)?void 0:t.call(r);if(n)return null==(e=(0,h.RA)(n).filter((function(t){return t.children&&"string"===typeof t.children}))[0])?void 0:e.children})));var o=(0,ot.bi)(n||t),a=o.iconData,s=it(t,"v-icon"),l=s.sizeClasses,u=K((0,c.Vh)(t,"color")),f=u.textColorClasses,d=u.textColorStyles;return function(){return(0,i.Wm)(a.value.component,{tag:t.tag,icon:a.value.icon,class:["v-icon","notranslate",l.value,f.value,{"v-icon--left":t.left,"v-icon--right":t.right}],style:[l.value?void 0:{fontSize:(0,h.kb)(t.size),width:(0,h.kb)(t.size),height:(0,h.kb)(t.size)},d.value],"aria-hidden":"true"},null,8,["tag","icon","class","style"])}}}),st=(n(9253),["static","relative","fixed","absolute","sticky"]),lt=(0,f.U)({absolute:Boolean,bottom:[Boolean,Number,String],fixed:Boolean,left:[Boolean,Number,String],position:{type:String,validator:function(t){return st.includes(t)}},right:[Boolean,Number,String],top:[Boolean,Number,String]},"position");function ut(t,e){var n=["top","right","bottom","left"],r=(0,i.Fl)((function(){return t.fixed?"".concat(e,"--fixed"):t.absolute?"".concat(e,"--absolute"):t.position?"position-".concat(t.position):void 0})),o=(0,i.Fl)((function(){var e,r={},i=(0,u.Z)(n);try{for(i.s();!(e=i.n()).done;){var o=e.value,a=t[o];null!=a&&!1!==a&&(r[o]=(0,h.kb)(!0===a?"0":String(a)))}}catch(s){i.e(s)}finally{i.f()}return r}));return{positionClasses:r,positionStyles:o}}function ct(){var t,e;return null==(t=(0,i.FN)())||null==(e=t.proxy)?void 0:e.$router}function ft(t,e){var n=(0,i.LL)("RouterLink"),o=(0,i.Fl)((function(){return!(!t.href&&!t.to)})),a=(0,i.Fl)((function(){return(null==o?void 0:o.value)||!(!e.onClick&&!e.onClickOnce)}));if("string"===typeof n)return{isLink:o,isClickable:a,href:(0,c.Vh)(t,"href")};var s=t.to?n.useLink(t):void 0;return(0,r.Z)((0,r.Z)({},s),{},{isLink:o,isClickable:a,href:(0,i.Fl)((function(){return t.to?null==s?void 0:s.route.value.href:t.href}))})}var ht=(0,f.U)({href:String,replace:Boolean,to:[String,Object]},"router");function dt(t){var e,n=ct(),r=!1;function o(t){t.state.replaced||(r=!0,setTimeout((function(){return r=!1})))}(0,i.bv)((function(){window.addEventListener("popstate",o),e=null==n?void 0:n.beforeEach((function(e,n,i){setTimeout((function(){return r?t(i):i()}))}))})),(0,i.Jd)((function(){var t;window.removeEventListener("popstate",o),null==(t=e)||t()}))}var pt=["contained","outlined","plain","text","contained-text"];function vt(t,e){return(0,i.Wm)(i.HY,null,[t&&(0,i.Wm)("div",{class:"".concat(e,"__overlay")},null),(0,i.Wm)("div",{class:"".concat(e,"__underlay")},null)])}var gt=(0,f.U)({color:String,textColor:String,variant:{type:String,default:"contained",validator:function(t){return pt.includes(t)}}},"variant");function yt(t,e){var n=(0,i.Fl)((function(){return"".concat(e,"--variant-").concat(t.variant)})),r=$((0,i.Fl)((function(){return(0,l.Z)({text:t.textColor},"contained"===t.variant?"background":"text",t.color)}))),o=r.colorClasses,a=r.colorStyles;return{colorClasses:o,colorStyles:a,variantClasses:n}}var mt=n(6460),_t=(0,b.a)({name:"VBtn",directives:{Ripple:mt.H},props:(0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({flat:Boolean,icon:[Boolean,String],prependIcon:String,appendIcon:String,block:Boolean,stacked:Boolean,disabled:Boolean,ripple:{type:Boolean,default:!0}},z()),G()),U()),k()),j()),lt()),ht()),rt()),Y({tag:"button"})),(0,o.x$)()),gt({variant:"contained"})),setup:function(t,e){var n=e.attrs,r=e.slots,a=(0,o.Fg)(t),s=a.themeClasses,l=N(t,"v-btn"),u=l.borderClasses,c=yt(t,"v-btn"),f=c.colorClasses,h=c.colorStyles,d=c.variantClasses,p=V(t,"v-btn"),v=p.densityClasses,g=C(t),y=g.dimensionStyles,m=H(t),_=m.elevationClasses,b=ut(t,"v-btn"),w=b.positionClasses,x=b.positionStyles,S=q(t,"v-btn"),k=S.roundedClasses,T=it(t,"v-btn"),A=T.sizeClasses,I=ft(t,n),M=(0,i.Fl)((function(){return"contained"===t.variant&&!(t.disabled||t.flat||t.border)}));return function(){var e,n,o=I.isLink.value?"a":t.tag;return(0,i.wy)((0,i.Wm)(o,{type:"a"===o?void 0:"button",class:["v-btn",{"v-btn--active":null==(e=I.isExactActive)?void 0:e.value,"v-btn--block":t.block,"v-btn--disabled":t.disabled,"v-btn--elevated":M.value,"v-btn--icon":!!t.icon,"v-btn--stacked":t.stacked},s.value,u.value,f.value,v.value,_.value,w.value,k.value,A.value,d.value],style:[h.value,y.value,x.value],disabled:t.disabled||void 0,href:I.href.value,onClick:t.disabled||I.navigate},{default:function(){return[vt(!0,"v-btn"),!t.icon&&t.prependIcon&&(0,i.Wm)(at,{class:"v-btn__icon",icon:t.prependIcon,left:!t.stacked},null,8,["icon","left"]),"boolean"===typeof t.icon?null==(n=r.default)?void 0:n.call(r):(0,i.Wm)(at,{class:"v-btn__icon",icon:t.icon,size:t.size},null,8,["icon","size"]),!t.icon&&t.appendIcon&&(0,i.Wm)(at,{class:"v-btn__icon",icon:t.appendIcon,right:!t.stacked},null,8,["icon","right"])]},_:1},8,["type","class","style","disabled","href","onClick"]),[[(0,i.Q2)("ripple"),!t.disabled&&t.ripple,null]])}}}),bt=(0,b.a)({name:"VAppBarNavIcon",props:{icon:{type:String,default:"$menu"}},setup:function(t,e){var n=e.slots;return function(){var e;return(0,i.Wm)(_t,{class:"v-app-bar-nav-icon",icon:t.icon},{default:function(){return[null==(e=n.default)?void 0:e.call(n)]}},8,["icon"])}}}),wt=(0,b.a)({name:"VAppBarTitle",props:(0,r.Z)({},Y({tag:"header"})),setup:function(t,e){var n=e.slots;return function(){return(0,i.Wm)(t.tag,{class:"v-app-bar-title"},{default:function(){return[n.default&&(0,i.Wm)("div",{class:"v-app-bar-title__placeholder"},[n.default()])]}})}}}),xt=(0,b.a)({name:"VAvatar",props:(0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({color:String,left:Boolean,right:Boolean,icon:String,image:String},U()),G()),rt()),Y()),setup:function(t,e){var n=e.slots,r=J((0,c.Vh)(t,"color")),o=r.backgroundColorClasses,a=r.backgroundColorStyles,s=V(t,"v-avatar"),l=s.densityClasses,u=q(t,"v-avatar"),f=u.roundedClasses,h=it(t,"v-avatar"),d=h.sizeClasses,p=h.sizeStyles;return function(){var e;return(0,i.Wm)(t.tag,{class:["v-avatar",{"v-avatar--left":t.left,"v-avatar--right":t.right},o.value,l.value,f.value,d.value],style:[a.value,p.value]},{default:function(){return[t.image&&(0,i.Wm)(F,{src:t.image,alt:""},null,8,["src"]),t.icon&&!t.image&&(0,i.Wm)(at,{icon:t.icon},null,8,["icon"]),null==(e=n.default)?void 0:e.call(n)]},_:1},8,["class","style"])}}}),St=["success","info","warning","error"],kt=(0,b.a)({name:"VAlert",props:(0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({border:{type:[Boolean,String],validator:function(t){return"boolean"===typeof t||["top","end","bottom","start"].includes(t)}},borderColor:String,closable:Boolean,closeIcon:{type:String,default:"$close"},closeLabel:{type:String,default:"$vuetify.close"},icon:{type:[Boolean,String],default:null},modelValue:{type:Boolean,default:!0},prominent:Boolean,sticky:Boolean,text:String,tip:Boolean,type:{type:String,validator:function(t){return St.includes(t)}}},U()),j()),lt()),G()),Y()),(0,o.x$)()),gt()),emits:{"update:modelValue":function(t){return!0}},setup:function(t,e){var n=e.slots,r=(0,i.Fl)((function(){return{border:!0===t.border||t.tip?"start":t.border}})),a=tt(t,"modelValue"),s=(0,i.Fl)((function(){var e;if(!1!==t.icon)return t.type?null!=(e=t.icon)?e:"$".concat(t.type):t.icon})),u=(0,c.qj)({color:(0,i.Fl)((function(){var e;return null!=(e=t.color)?e:t.type})),textColor:(0,c.Vh)(t,"textColor"),variant:(0,c.Vh)(t,"variant")}),f=(0,o.Fg)(t),h=f.themeClasses,d=N(r.value,"v-alert"),p=d.borderClasses,v=yt(u,"v-alert"),g=v.colorClasses,y=v.colorStyles,m=v.variantClasses,_=V(t,"v-alert"),b=_.densityClasses,w=H(t),x=w.elevationClasses,S=ut(t,"v-alert"),k=S.positionClasses,C=S.positionStyles,T=q(t,"v-alert"),A=T.roundedClasses,I=K((0,i.Fl)((function(){var e;return null!=(e=t.borderColor)?e:t.tip?u.color:void 0}))),M=I.textColorClasses,D=I.textColorStyles;function O(t){a.value=!1}return function(){var e,o=!!r.value.border,u=!(!n.close&&!t.closable),c=!!(n.prepend||t.icon||t.type),f=!!(n.default||t.text||u);return a.value&&(0,i.Wm)(t.tag,{class:["v-alert",(e={},(0,l.Z)(e,"v-alert--border-".concat(r.value.border),o),(0,l.Z)(e,"v-alert--prominent",t.prominent),(0,l.Z)(e,"v-alert--tip",t.tip),e),h.value,p.value,!t.tip&&g.value,b.value,x.value,k.value,A.value,m.value],style:[!t.tip&&y.value,C.value],role:"alert"},{default:function(){return[o&&(0,i.Wm)("div",{class:["v-alert__border",M.value],style:D.value},null,6),(0,i.Wm)("div",{class:"v-alert__underlay"},null),(0,i.Wm)("div",{class:"v-alert__content"},[c&&(0,i.Wm)("div",{class:"v-alert__avatar"},[n.prepend?n.prepend():(0,i.Wm)(xt,{class:t.tip&&M.value,style:t.tip&&D.value,density:t.density,icon:s.value},null,8,["class","style","density","icon"])]),f&&(0,i.Wm)("div",{class:"v-alert__text"},[n.default?n.default():t.text,u&&(0,i.Wm)("div",{class:"v-alert__close"},[n.close?n.close({props:{onClick:O}}):(0,i.Wm)(_t,{density:t.density,icon:t.closeIcon,variant:"text",onClick:O},null,8,["density","icon","onClick"])])])])]},_:1},8,["class","style"])}}}),Ct=(0,b.a)({name:"VBadge",inheritAttrs:!1,props:(0,r.Z)((0,r.Z)((0,r.Z)({bordered:Boolean,color:{type:String,default:"primary"},content:String,dot:Boolean,floating:Boolean,icon:String,inline:Boolean,label:{type:String,default:"$vuetify.badge"},location:{type:String,default:"top-right",validator:function(t){var e=(null!=t?t:"").split("-"),n=(0,s.Z)(e,2),r=n[0],i=n[1];return["top","bottom"].includes(r)&&["left","right"].includes(i)}},max:[Number,String],modelValue:{type:Boolean,default:!0},offsetX:[Number,String],offsetY:[Number,String],textColor:String},G()),Y()),L({transition:"scale-rotate-transition"})),setup:function(t,e){var n=J((0,c.Vh)(t,"color")),r=n.backgroundColorClasses,o=n.backgroundColorStyles,a=q(t,"v-badge"),l=a.roundedClasses,u=K((0,c.Vh)(t,"textColor")),f=u.textColorClasses,d=u.textColorStyles,p=(0,i.Fl)((function(){return t.floating?t.dot?2:4:t.dot?8:12}));function v(t){return"calc(100% - ".concat((0,h.kb)(p.value+parseInt(null!=t?t:0,10)),")")}var g=(0,i.Fl)((function(){var e,n=(null!=(e=t.location)?e:"").split("-"),r=(0,s.Z)(n,2),i=r[0],o=r[1],a={bottom:"auto",left:"auto",right:"auto",top:"auto"};return t.inline||(a["left"===o?"right":"left"]=v(t.offsetX),a["top"===i?"bottom":"top"]=v(t.offsetY)),a}));return function(){var n,a,u,c,p=Number(t.content),v=!t.max||isNaN(p)?t.content:p<=t.max?p:"".concat(t.max,"+"),y=(0,h.Kl)(e.attrs,["aria-atomic","aria-label","aria-live","role","title"]),m=(0,s.Z)(y,2),_=m[0],b=m[1];return(0,i.Wm)(t.tag,(0,i.dG)({class:["v-badge",{"v-badge--bordered":t.bordered,"v-badge--dot":t.dot,"v-badge--floating":t.floating,"v-badge--inline":t.inline}]},b),{default:function(){return[(0,i.Wm)("div",{class:"v-badge__wrapper"},[null==(n=(a=e.slots).default)?void 0:n.call(a),(0,i.Wm)(R,{transition:t.transition},{default:function(){return[(0,i.wy)((0,i.Wm)("span",(0,i.dG)({class:["v-badge__badge",r.value,l.value,f.value],style:[o.value,g.value,d.value],"aria-atomic":"true","aria-label":"locale string here","aria-live":"polite",role:"status"},_),[t.dot?void 0:e.slots.badge?null==(u=(c=e.slots).badge)?void 0:u.call(c):t.icon?(0,i.Wm)(at,{icon:t.icon},null,8,["icon"]):(0,i.Wm)("span",{class:"v-badge__content"},[v])],16),[[O.F8,t.modelValue]])]}},8,["transition"])])]}},16,["class"])}}}),Tt=(n(8386),n(5306),n(3577));function At(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"div",n=arguments.length>2?arguments[2]:void 0;return(0,b.a)({name:null!=n?n:(0,Tt.kC)((0,Tt._A)(t.replace(/__/g,"-"))),props:{tag:{type:String,default:e}},setup:function(e,n){var r=n.slots;return function(){var n;return(0,i.h)(e.tag,{class:t},null==(n=r.default)?void 0:n.call(r))}}})}var It=At("v-banner-actions"),Mt=(0,b.a)({name:"VBannerAvatar",props:(0,r.Z)({left:Boolean,right:Boolean},Y()),setup:function(t,e){var n=e.slots;return function(){return(0,i.Wm)(t.tag,{class:["v-banner-avatar",{"v-banner-avatar--start":t.left,"v-banner-avatar--end":t.right}]},n,8,["class"])}}}),Dt=At("v-banner-content"),Ot=At("v-banner-text"),Et=n(1040),Pt=(0,b.a)({name:"VBanner",props:(0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({avatar:String,color:String,icon:String,lines:{type:String,default:"one"},sticky:Boolean,text:String},z()),U()),k()),j()),lt()),G()),Y()),(0,o.x$)()),setup:function(t,e){var n=e.slots,r=(0,o.Fg)(t),a=r.themeClasses,s=N(t,"v-banner"),u=s.borderClasses,f=V(t,"v-banner"),h=f.densityClasses,d=C(t),p=d.dimensionStyles,v=(0,Et.AW)(),g=v.mobile,y=H(t),m=y.elevationClasses,_=ut(t,"v-banner"),b=_.positionClasses,w=_.positionStyles,x=q(t,"v-banner"),S=x.roundedClasses,k=K((0,c.Vh)(t,"color")),T=k.textColorClasses,A=k.textColorStyles;return function(){var e,r=!!(t.avatar||t.icon||n.avatar||n.icon),o=!(!t.text&&!n.text),s=r||o||n.default;return(0,i.Wm)(t.tag,{class:["v-banner",(0,l.Z)({"v-banner--mobile":g.value,"v-banner--sticky":t.sticky},"v-banner--".concat(t.lines,"-line"),!0),u.value,h.value,m.value,b.value,S.value,T.value,a.value],style:[p.value,w.value,A.value],role:"banner"},{default:function(){return[s&&(0,i.Wm)(Dt,null,{default:function(){return[r&&(0,i.Wm)(Mt,null,{default:function(){return[n.avatar?n.avatar():(0,i.Wm)(xt,{density:t.density,icon:t.icon,image:t.avatar},null,8,["density","icon","image"])]}}),o&&(0,i.Wm)(Ot,null,{default:function(){return[n.text?n.text():t.text]}}),null==(e=n.default)?void 0:e.call(n)]},_:1}),n.actions&&(0,i.Wm)(It,null,{default:n.actions})]},_:1},8,["class","style"])}}}),Lt=(0,b.a)({name:"VBottomNavigation",props:(0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({bgColor:String,color:String,grow:Boolean,modelValue:{type:Boolean,default:!0},mode:{type:String,validator:function(t){return!t||["horizontal","shift"].includes(t)}},height:{type:[Number,String],default:56}},z()),U()),j()),G()),v({name:"bottom-navigation"})),Y({tag:"header"})),(0,o.x$)()),emits:{"update:modelValue":function(t){return!0}},setup:function(t,e){var n=e.slots,r=(0,o.Fg)(t),a=r.themeClasses,s=N(t,"v-bottom-navigation"),l=s.borderClasses,u=J((0,i.Fl)((function(){return t.bgColor}))),c=u.backgroundColorClasses,f=u.backgroundColorStyles,d=K((0,i.Fl)((function(){return t.color}))),p=d.textColorClasses,v=d.textColorStyles,g=V(t,"v-bottom-navigation"),m=g.densityClasses,_=H(t),b=_.elevationClasses,w=q(t,"v-bottom-navigation"),x=w.roundedClasses,S=(0,i.Fl)((function(){return Number(t.height)-("comfortable"===t.density?8:0)-("compact"===t.density?16:0)})),k=tt(t,"modelValue",t.modelValue),C=y(t.name,(0,i.Fl)((function(){return t.priority})),(0,i.Fl)((function(){return"bottom"})),(0,i.Fl)((function(){return k.value?S.value:0})),S,k);return function(){return(0,i.Wm)(t.tag,{class:["v-bottom-navigation",{"v-bottom-navigation--grow":t.grow,"v-bottom-navigation--horizontal":"horizontal"===t.mode,"v-bottom-navigation--is-active":k.value,"v-bottom-navigation--shift":"shift"===t.mode,"v-bottom-navigation--absolute":t.absolute},a.value,c.value,l.value,m.value,b.value,x.value,p.value],style:[f.value,C.value,v.value,{height:(0,h.kb)(S.value),transform:"translateY(".concat((0,h.kb)(k.value?0:100,"%"),")")}]},{default:function(){return[n.default&&(0,i.Wm)("div",{class:"v-bottom-navigation__content"},[n.default()])]}},8,["class","style"])}}}),Rt=(0,b.a)({name:"VBreadcrumbsItem",props:(0,r.Z)((0,r.Z)({active:Boolean,activeClass:String,activeColor:String,color:String,disabled:Boolean,text:String},ht()),Y({tag:"li"})),setup:function(t,e){var n=e.slots,r=e.attrs,o=(0,i.f3)(Zt);if(!o)throw new Error("[Vuetify] Could not find v-breadcrumbs provider");var a=ft(t,r),s=(0,i.Fl)((function(){var e;return t.active||(null==(e=a.isExactActive)?void 0:e.value)})),u=(0,i.Fl)((function(){var e;return s.value?null!=(e=t.activeColor)?e:o.color.value:t.color})),c=K(u),f=c.textColorClasses,h=c.textColorStyles;return function(){var e,r=a.isLink.value?"a":t.tag;return(0,i.Wm)(r,{class:["v-breadcrumbs-item",(0,l.Z)({"v-breadcrumbs-item--active":s.value,"v-breadcrumbs-item--disabled":t.disabled||o.disabled.value,"v-breadcrumbs-item--link":a.isLink.value},"".concat(t.activeClass),s.value&&t.activeClass),f.value],style:[h.value],"aria-current":s.value?"page":void 0,onClick:s.value&&a.navigate},{default:function(){return[t.text,null==(e=n.default)?void 0:e.call(n)]},_:1},8,["class","style","aria-current","onClick"])}}}),Bt=At("v-breadcrumbs-divider","li"),Zt=Symbol.for("vuetify:breadcrumbs"),Ft=(0,b.a)({name:"VBreadcrumbs",props:(0,r.Z)((0,r.Z)((0,r.Z)({color:String,disabled:Boolean,divider:{type:String,default:"/"},icon:String,items:{type:Array,default:function(){return[]}}},U()),G()),Y({tag:"ul"})),setup:function(t,e){var n=e.slots,o=V(t,"v-breadcrumbs"),a=o.densityClasses,s=q(t,"v-breadcrumbs"),l=s.roundedClasses,u=K((0,c.Vh)(t,"color")),f=u.textColorClasses,h=u.textColorStyles,d=(0,i.Fl)((function(){return t.items.map((function(t,e,n){return{props:(0,r.Z)({disabled:e>=n.length-1},"string"===typeof t?{text:t}:t)}}))}));return(0,i.JJ)(Zt,{color:(0,c.Vh)(t,"color"),disabled:(0,c.Vh)(t,"disabled")}),function(){var e;return(0,i.Wm)(t.tag,{class:["v-breadcrumbs",a.value,l.value,f.value],style:[h.value]},{default:function(){return[t.icon&&(0,i.Wm)(at,{icon:t.icon,left:!0},null,8,["icon","left"]),d.value.map((function(e,o){var a;return(0,i.Wm)(i.HY,null,[(0,i.Wm)(Rt,(0,i.dG)({key:o},e.props),{default:function(){return[null==(a=n.item)?void 0:a.call(n,(0,r.Z)((0,r.Z)({},e),{},{index:o}))]}},16),ot.clientHeight}var fe=["modelValue","color"];function he(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function de(t,e){var n=(0,c.iH)(e.value);return(0,i.m0)((function(){(e.value||t.value)&&(n.value=!0)})),{isBooted:n}}var pe=["global","connected","flexible"],ve=["close","block","reposition"];function ge(t){t.modelValue,t.color;var e=D(t,fe);return(0,i.Wm)(O.uT,{name:"fade-transition",appear:!0},{default:function(){return[t.modelValue&&(0,i.Wm)("div",(0,i.dG)({class:["v-overlay__scrim",t.color.backgroundColorClasses.value],style:t.color.backgroundColorStyles.value},e),null,16)]}},8,["appear"])}var ye=function(){function t(e){var n=e.content,r=e.isActive;(0,ie.Z)(this,t),he(this,"scrollElements",[]),this.content=n,this.isActive=r}return(0,oe.Z)(t,[{key:"enable",value:function(){var t=this;this.scrollElements=[document].concat((0,a.Z)(ue(this.content.value))),this.scrollElements.forEach((function(e){e.addEventListener("scroll",t.onScroll.bind(t),{passive:!0})}))}},{key:"disable",value:function(){var t=this;this.scrollElements.forEach((function(e){e.removeEventListener("scroll",t.onScroll.bind(t))}))}},{key:"onScroll",value:function(){this.isActive.value=!1}}]),t}(),me=function(){function t(e){var n=e.content;(0,ie.Z)(this,t),he(this,"initialOverflow",[]),he(this,"scrollElements",[]),this.content=n}return(0,oe.Z)(t,[{key:"enable",value:function(){var t=this;this.scrollElements=ue(this.content.value);var e=window.innerWidth-document.documentElement.offsetWidth;document.documentElement.style.setProperty("--v-scrollbar-offset",(0,h.kb)(e)),this.scrollElements.forEach((function(n,r){t.initialOverflow[r]=n.style.overflowY,n.style.overflowY="hidden",n.style.setProperty("--v-scrollbar-offset",(0,h.kb)(e))}))}},{key:"disable",value:function(){var t=this;this.scrollElements.forEach((function(e,n){e.style.overflowY=t.initialOverflow[n],e.style.removeProperty("--v-scrollbar-offset")})),document.documentElement.style.removeProperty("--v-scrollbar-offset")}}]),t}(),_e=(0,b.a)({name:"VOverlay",directives:{ClickOutside:se.L},inheritAttrs:!1,props:(0,r.Z)((0,r.Z)({absolute:Boolean,attach:{type:[Boolean,String,Object],default:"body"},eager:Boolean,noClickAnimation:Boolean,modelValue:Boolean,origin:[String,Object],persistent:Boolean,positionStrategy:{type:String,default:"global",validator:function(t){return pe.includes(t)}},scrim:{type:[String,Boolean],default:!0},scrollStrategy:{type:String,default:"block",validator:function(t){return ve.includes(t)}}},(0,o.x$)()),L()),emits:{"click:outside":function(t){return!0},"update:modelValue":function(t){return!0}},setup:function(t,e){var n=e.slots,r=e.attrs,a=e.emit,s=tt(t,"modelValue"),l=ae((0,c.Vh)(t,"attach")),u=l.teleportTarget,f=(0,o.Fg)(t),d=f.themeClasses,p=(0,w.Vw)(),v=p.rtlClasses,g=de(s,(0,c.Vh)(t,"eager")),y=g.isBooted,m=J((0,i.Fl)((function(){return"string"===typeof t.scrim?t.scrim:null})));function _(e){a("click:outside",e),t.persistent?I():s.value=!1}function b(){return s.value}var x=(0,c.iH)();function S(t){x.value=t.currentTarget||t.target,s.value=!s.value}function k(e){"Escape"===e.key&&(t.persistent?I():s.value=!1)}dt((function(e){e(!s.value),t.persistent?I():s.value=!1}));var C=(0,c.iH)();(0,i.YP)(s,(function(t){(0,i.Y3)((function(){var e,n;t?null==(e=C.value)||e.focus():null==(n=x.value)||n.focus()}))}));var T=(0,c.iH)(),A=(0,c.iH)();function I(){var e;t.noClickAnimation||null==(e=C.value)||e.animate([{transformOrigin:"center"},{transform:"scale(1.03)"},{transformOrigin:"center"}],{duration:150,easing:Qt})}function M(){t.eager||(y.value=!1)}(0,i.YP)((function(){return s.value&&t.absolute&&null==u.value}),(function(t){if(t){var e=le(T.value);e&&e!==document.scrollingElement&&(A.value=e.scrollTop)}}));var D="close"===t.scrollStrategy?new ye({content:C,isActive:s}):"block"===t.scrollStrategy?new me({content:C}):null;return D&&(0,i.YP)(s,(function(t){(0,i.Y3)((function(){t?D.enable():D.disable()}))})),Z((function(){var e,o;return(0,i.Wm)(i.HY,null,[null==(e=n.activator)?void 0:e.call(n,{isActive:s.value,props:{modelValue:s.value,"onUpdate:modelValue":function(t){return s.value=t},onClick:S}}),(0,i.Wm)(i.lR,{disabled:!u.value,ref:T,to:u.value},{default:function(){return[y.value&&(0,i.Wm)("div",(0,i.dG)({class:["v-overlay",{"v-overlay--absolute":t.absolute,"v-overlay--active":s.value},d.value,v.value],style:null!=A.value?"top: ".concat((0,h.kb)(A.value)):void 0},r),[(0,i.Wm)(ge,{color:m,modelValue:s.value&&!!t.scrim},null,8,["color","modelValue"]),(0,i.Wm)(R,{appear:!0,onAfterLeave:M,persisted:!0,transition:t.transition},{default:function(){return[(0,i.wy)((0,i.Wm)("div",{ref:C,class:"v-overlay__content",tabindex:-1,onKeydown:k},[null==(o=n.default)?void 0:o.call(n,{isActive:s})],40,["tabindex","onKeydown"]),[[O.F8,s.value],[(0,i.Q2)("click-outside"),{handler:_,closeConditional:b}]])]}},8,["appear","onAfterLeave","persisted","transition"])],16)]}},8,["disabled","to"])])})),{animateClick:I,content:C}}}),be=["props"],we=(0,b.a)({name:"VDialog",props:(0,r.Z)((0,r.Z)({fullscreen:Boolean,origin:{type:String,default:"center center"},retainFocus:{type:Boolean,default:!0},scrollable:Boolean,modelValue:Boolean},k({width:"auto"})),L({transition:{component:ne}})),emits:{"update:modelValue":function(t){return!0}},setup:function(t,e){var n=e.attrs,o=e.slots,s=tt(t,"modelValue"),l=C(t),u=l.dimensionStyles,f=(0,c.iH)();function h(t){var e,n=t.relatedTarget,r=t.target;if(n!==r&&null!=(e=f.value)&&e.content&&![document,f.value.content].includes(r)&&!f.value.content.contains(r)){var i=(0,a.Z)(f.value.content.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')).filter((function(t){return!t.hasAttribute("disabled")}));if(!i.length)return;var o=i[0],s=i[i.length-1];n===o?s.focus():o.focus()}}B.BR&&(0,i.YP)((function(){return s.value&&t.retainFocus}),(function(t){t?document.addEventListener("focusin",h):document.removeEventListener("focusin",h)}),{immediate:!0});var d=(0,c.iH)(),p=function(t){var e,n=t.props,a=D(t,be);return null==(e=o.activator)?void 0:e.call(o,(0,r.Z)((0,r.Z)({},a),{},{props:(0,i.dG)(n,{"aria-haspopup":"dialog",onClick:function(t){d.value=t.currentTarget}})}))};return function(){var e=(0,i.dG)({target:d.value},"string"===typeof t.transition?{name:t.transition}:t.transition);return(0,i.Wm)(_e,(0,i.dG)({modelValue:s.value,"onUpdate:modelValue":function(t){return s.value=t},class:["v-dialog",{"v-dialog--fullscreen":t.fullscreen}],style:u.value,transition:e,ref:f,"aria-role":"dialog","aria-modal":"true"},n),{default:o.default,activator:p},16,["modelValue","onUpdate:modelValue","class","style","transition"])}}}),xe=(0,b.a)({name:"VDivider",props:(0,r.Z)({inset:Boolean,length:[Number,String],thickness:[Number,String],vertical:Boolean},(0,o.x$)()),setup:function(t,e){var n=e.attrs,r=(0,o.Fg)(t),a=r.themeClasses,s=(0,i.Fl)((function(){var e={};return t.length&&(e[t.vertical?"maxHeight":"maxWidth"]=(0,h.kb)(t.length)),t.thickness&&(e[t.vertical?"borderRightWidth":"borderTopWidth"]=(0,h.kb)(t.thickness)),e}));return function(){return(0,i.Wm)("hr",{class:[{"v-divider":!0,"v-divider--inset":t.inset,"v-divider--vertical":t.vertical},a.value],style:s.value,"aria-orientation":n.role&&"separator"!==n.role?void 0:t.vertical?"vertical":"horizontal",role:"".concat(n.role||"separator")},null,14,["aria-orientation"])}}}),Se=(0,b.a)({name:"VFooter",props:(0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},z()),k()),j()),lt()),G()),Y()),Y({tag:"footer"})),(0,o.x$)()),setup:function(t,e){var n=e.slots,r=(0,o.Fg)(t),a=r.themeClasses,s=N(t,"v-footer"),l=s.borderClasses,u=C(t),c=u.dimensionStyles,f=H(t),h=f.elevationClasses,d=ut(t,"v-footer"),p=d.positionClasses,v=d.positionStyles,g=q(t,"v-footer"),y=g.roundedClasses;return function(){return(0,i.Wm)(t.tag,{class:["v-footer",a.value,l.value,h.value,p.value,y.value],style:[c.value,v.value]},n,8,["class","style"])}}}),ke=(0,b.a)({name:"VContainer",props:(0,r.Z)({fluid:{type:Boolean,default:!1}},Y()),setup:function(t,e){var n=e.slots;return function(){return(0,i.Wm)(t.tag,{class:["v-container",{"v-container--fluid":t.fluid}]},n,8,["class"])}}}),Ce=["sm","md","lg","xl","xxl"],Te=function(){return Ce.reduce((function(t,e){return t[e]={type:[Boolean,String,Number],default:!1},t}),{})}(),Ae=function(){return Ce.reduce((function(t,e){return t["offset"+(0,Tt.kC)(e)]={type:[String,Number],default:null},t}),{})}(),Ie=function(){return Ce.reduce((function(t,e){return t["order"+(0,Tt.kC)(e)]={type:[String,Number],default:null},t}),{})}(),Me={col:Object.keys(Te),offset:Object.keys(Ae),order:Object.keys(Ie)};function De(t,e,n){var r=t;if(null!=n&&!1!==n){if(e){var i=e.replace(t,"");r+="-".concat(i)}return"col"===t&&(r="v-"+r),"col"!==t||""!==n&&!0!==n?(r+="-".concat(n),r.toLowerCase()):r.toLowerCase()}}var Oe=(0,b.a)({name:"VCol",props:(0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({cols:{type:[Boolean,String,Number],default:!1}},Te),{},{offset:{type:[String,Number],default:null}},Ae),{},{order:{type:[String,Number],default:null}},Ie),{},{alignSelf:{type:String,default:null,validator:function(t){return["auto","start","end","center","baseline","stretch"].includes(t)}}},Y()),setup:function(t,e){var n=e.slots,r=(0,i.Fl)((function(){var e,n,r=[];for(n in Me)Me[n].forEach((function(e){var i=t[e],o=De(n,e,i);o&&r.push(o)}));var i=r.some((function(t){return t.startsWith("v-col-")}));return r.push((e={"v-col":!i||!t.cols},(0,l.Z)(e,"v-col-".concat(t.cols),t.cols),(0,l.Z)(e,"offset-".concat(t.offset),t.offset),(0,l.Z)(e,"order-".concat(t.order),t.order),(0,l.Z)(e,"align-self-".concat(t.alignSelf),t.alignSelf),e)),r}));return function(){var e;return(0,i.h)(t.tag,{class:r.value},null==(e=n.default)?void 0:e.call(n))}}}),Ee=["sm","md","lg","xl","xxl"],Pe=["start","end","center"];function Le(t,e){return Ee.reduce((function(n,r){return n[t+(0,Tt.kC)(r)]=e(),n}),{})}var Re=function(t){return[].concat(Pe,["baseline","stretch"]).includes(t)},Be=Le("align",(function(){return{type:String,default:null,validator:Re}})),Ze=function(t){return[].concat(Pe,["space-between","space-around"]).includes(t)},Fe=Le("justify",(function(){return{type:String,default:null,validator:Ze}})),ze=function(t){return[].concat(Pe,["space-between","space-around","stretch"]).includes(t)},Ne=Le("alignContent",(function(){return{type:String,default:null,validator:ze}})),We={align:Object.keys(Be),justify:Object.keys(Fe),alignContent:Object.keys(Ne)},Ue={align:"align",justify:"justify",alignContent:"align-content"};function Ve(t,e,n){var r=Ue[t];if(null!=n){if(e){var i=e.replace(t,"");r+="-".concat(i)}return r+="-".concat(n),r.toLowerCase()}}var je=(0,b.a)({name:"VRow",props:(0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({dense:Boolean,noGutters:Boolean,align:{type:String,default:null,validator:Re}},Be),{},{justify:{type:String,default:null,validator:Ze}},Fe),{},{alignContent:{type:String,default:null,validator:ze}},Ne),Y()),setup:function(t,e){var n=e.slots,r=(0,i.Fl)((function(){var e,n,r=[];for(n in We)We[n].forEach((function(e){var i=t[e],o=Ve(n,e,i);o&&r.push(o)}));return r.push((e={"v-row--no-gutters":t.noGutters,"v-row--dense":t.dense},(0,l.Z)(e,"align-".concat(t.align),t.align),(0,l.Z)(e,"justify-".concat(t.justify),t.justify),(0,l.Z)(e,"align-content-".concat(t.alignContent),t.alignContent),e)),r}));return function(){var e;return(0,i.h)(t.tag,{class:["v-row",r.value]},null==(e=n.default)?void 0:e.call(n))}}}),He=At("flex-grow-1","div","VSpacer"),Ge=At("v-kbd"),qe=(n(561),(0,f.U)({modelValue:{type:[Number,Boolean,String,Array,Object],default:void 0},multiple:Boolean,mandatory:[Boolean,String],max:Number,selectedClass:String},"group")),Ye=(0,f.U)({value:{type:[Number,Boolean,String,Object],default:void 0},index:Number,disabled:Boolean,selectedClass:String},"group-item");function Xe(t,e){var n=(0,i.f3)(e,null);if(!n)throw new Error("[Vuetify] Could not find useGroup injection with symbol ".concat(e.description));var r=(0,h.sq)(),o=(0,c.Vh)(t,"value"),a=(0,c.Vh)(t,"disabled");n.register({id:r,value:o,disabled:a},t.index),(0,i.Jd)((function(){n.unregister(r)}));var s=(0,i.Fl)((function(){return n.isSelected(r)})),l=(0,i.Fl)((function(){var e;return s.value&&(null!=(e=n.selectedClass.value)?e:t.selectedClass)}));return{isSelected:s,toggle:function(){return n.select(r,!s.value)},select:function(t){return n.select(r,t)},selectedClass:l,value:o,disabled:a}}function $e(t,e){var n=!1,r=(0,c.qj)([]),o=tt(t,"modelValue",[],(function(t){return null==t?[]:Ke(r,(0,h.FT)(t))}),(function(e){var n=Je(r,e);return t.multiple?n:n[0]}));function a(t,e){var n=t;null!=e?r.splice(e,0,n):r.push(n)}function s(t){if(!n){o.value=o.value.filter((function(e){return e!==t})),l();var e=r.findIndex((function(e){return e.id===t}));r.splice(e,1)}}function l(){var e=r.find((function(t){return!t.disabled}));e&&"force"===t.mandatory&&!o.value.length&&(o.value=[e.id])}function u(e,n){var i=r.find((function(t){return t.id===e}));if(!n||null==i||!i.disabled)if(t.multiple){var a=o.value.slice(),s=a.findIndex((function(t){return t===e}));if(t.mandatory&&s>-1&&a.length<=1)return;if(null!=t.max&&s<0&&a.length+1>t.max)return;s<0&&n?a.push(e):s>=0&&!n&&a.splice(s,1),o.value=a}else{if(t.mandatory&&o.value.includes(e))return;o.value=n?[e]:[]}}function f(e){if(t.multiple&&(0,Q.Kd)('This method is not supported when using "multiple" prop'),o.value.length){var n=o.value[0],i=r.findIndex((function(t){return t.id===n})),a=(i+e)%r.length,s=r[a];while(s.disabled&&a!==i)a=(a+e)%r.length,s=r[a];if(s.disabled)return;o.value=[r[a].id]}else{var l=r.find((function(t){return!t.disabled}));l&&(o.value=[l.id])}}(0,i.bv)((function(){l()})),(0,i.Jd)((function(){n=!0}));var d={register:a,unregister:s,selected:o,select:u,prev:function(){return f(r.length-1)},next:function(){return f(1)},isSelected:function(t){return o.value.includes(t)},selectedClass:(0,i.Fl)((function(){return t.selectedClass}))};return(0,i.JJ)(e,d),d}function Ke(t,e){var n,r=[],i=(0,u.Z)(t);try{var o=function(){var t=n.value;null!=t.value?e.find((function(e){return(0,h.vZ)(e,t.value)}))&&r.push(t.id):e.includes(t.id)&&r.push(t.id)};for(i.s();!(n=i.n()).done;)o()}catch(a){i.e(a)}finally{i.f()}return r}function Je(t,e){var n,r=[],i=(0,u.Z)(t);try{for(i.s();!(n=i.n()).done;){var o=n.value;e.includes(o.id)&&r.push(null!=o.value?o.value:o.id)}}catch(a){i.e(a)}finally{i.f()}return r}var Qe=Symbol.for("vuetify:v-item-group"),tn=(0,b.a)({name:"VItemGroup",props:(0,r.Z)((0,r.Z)((0,r.Z)({},qe({selectedClass:"v-item--selected"})),Y()),(0,o.x$)()),emits:{"update:modelValue":function(t){return!0}},setup:function(t,e){var n=e.slots,r=(0,o.Fg)(t),a=r.themeClasses,s=$e(t,Qe),l=s.isSelected,u=s.select,c=s.next,f=s.prev,h=s.selected;return function(){var e;return(0,i.Wm)(t.tag,{class:["v-item-group",a.value]},{default:function(){return[null==(e=n.default)?void 0:e.call(n,{isSelected:l,select:u,next:c,prev:f,selected:h.value})]}},8,["class"])}}}),en=(0,b.a)({name:"VItem",props:Ye(),setup:function(t,e){var n=e.slots,r=Xe(t,Qe),i=r.isSelected,o=r.select,a=r.toggle,s=r.selectedClass,l=r.value,u=r.disabled;return function(){var t;return null==(t=n.default)?void 0:t.call(n,{isSelected:i.value,selectedClass:s.value,select:o,toggle:a,value:l.value,disabled:u.value})}}}),nn=(0,b.a)({name:"VLayout",props:p(),setup:function(t,e){var n=e.slots,r=_(t),o=r.layoutClasses,a=r.getLayoutItem,s=r.items;return Z((function(){var t;return(0,i.Wm)("div",{class:o.value},[null==(t=n.default)?void 0:t.call(n)],2)})),{getLayoutItem:a,items:s}}}),rn=(0,b.a)({name:"VLayoutItem",props:(0,r.Z)({position:{type:String,required:!0},size:{type:[Number,String],default:300},modelValue:Boolean},v()),setup:function(t,e){var n=e.slots,r=y(t.name,(0,c.Vh)(t,"priority"),(0,c.Vh)(t,"position"),(0,c.Vh)(t,"size"),(0,c.Vh)(t,"size"),(0,c.Vh)(t,"modelValue"));return function(){var e;return(0,i.Wm)("div",{class:["v-layout-item",{"v-layout-item--absolute":t.absolute}],style:r.value},[null==(e=n.default)?void 0:e.call(n)],6)}}}),on=n(3216),an=(0,b.a)({name:"VLocaleProvider",props:{locale:String,fallbackLocale:String,messages:Object,rtl:{type:Boolean,default:void 0}},setup:function(t,e){var n=e.slots,r=(0,on.O4)(t),o=(0,w.zr)(t,r),a=o.rtlClasses;return function(){var t;return(0,i.Wm)("div",{class:["v-locale-provider",a.value]},[null==(t=n.default)?void 0:t.call(n)],2)}}}),sn=(0,b.a)({name:"VListSubheader",props:(0,r.Z)({color:String,inset:Boolean},Y()),setup:function(t,e){var n=e.slots,r=K((0,c.Vh)(t,"color")),o=r.textColorClasses,a=r.textColorStyles;return function(){return(0,i.Wm)(t.tag,{class:["v-list-subheader",{"v-list-subheader--inset":t.inset},o.value],style:{textColorStyles:a}},{default:function(){return[n.default&&(0,i.Wm)("div",{class:"v-list-subheader__text"},[n.default()])]}},8,["class","style"])}}}),ln=(0,b.a)({name:"VList",props:(0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({color:String,disabled:Boolean,lines:{type:String,default:"one"},nav:Boolean,subheader:{type:[Boolean,String],default:!1}},z()),U()),k()),j()),G()),Y()),(0,o.x$)()),setup:function(t,e){var n=e.slots,r=(0,o.Fg)(t),a=r.themeClasses,s=J((0,c.Vh)(t,"color")),u=s.backgroundColorClasses,f=s.backgroundColorStyles,h=N(t,"v-list"),d=h.borderClasses,p=V(t,"v-list"),v=p.densityClasses,g=C(t),y=g.dimensionStyles,m=H(t),_=m.elevationClasses,b=q(t,"v-list"),w=b.roundedClasses;return function(){var e,r="string"===typeof t.subheader||n.subheader;return(0,i.Wm)(t.tag,{class:["v-list",(0,l.Z)({"v-list--disabled":t.disabled,"v-list--nav":t.nav,"v-list--subheader":t.subheader,"v-list--subheader-sticky":"sticky"===t.subheader},"v-list--".concat(t.lines,"-line"),!0),a.value,u.value,d.value,v.value,_.value,w.value],style:[f.value,y.value]},{default:function(){return[r&&(n.subheader?n.subheader():(0,i.Wm)(sn,null,{default:function(){return[t.subheader]}})),null==(e=n.default)?void 0:e.call(n)]},_:1},8,["class","style"])}}}),un=At("v-list-img"),cn=(0,b.a)({name:"VListItemAvatar",props:(0,r.Z)({left:Boolean,right:Boolean},Y()),setup:function(t,e){var n=e.slots;return function(){return(0,i.Wm)(t.tag,{class:["v-list-item-avatar",{"v-list-item-avatar--start":t.left,"v-list-item-avatar--end":t.right}]},n,8,["class"])}}}),fn=At("v-list-item-header"),hn=At("v-list-item-subtitle"),dn=At("v-list-item-title"),pn=(0,b.a)({name:"VListItem",directives:{Ripple:mt.H},props:(0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({active:Boolean,activeColor:String,activeClass:String,appendAvatar:String,appendIcon:String,disabled:Boolean,link:Boolean,prependAvatar:String,prependIcon:String,subtitle:String,title:String},z()),U()),k()),j()),G()),ht()),Y()),(0,o.x$)()),gt({variant:"text"})),setup:function(t,e){var n,r=e.attrs,a=e.slots,s=ft(t,r),u=(0,i.Fl)((function(){var e;return t.active||(null==(e=s.isExactActive)?void 0:e.value)})),f=null!=(n=t.activeColor)?n:t.color,h=(0,c.qj)({color:(0,i.Fl)((function(){return u.value?f:t.color})),textColor:(0,c.Vh)(t,"textColor"),variant:(0,c.Vh)(t,"variant")}),d=(0,o.Fg)(t),p=d.themeClasses,v=N(t,"v-list-item"),g=v.borderClasses,y=yt(h,"v-list-item"),m=y.colorClasses,_=y.colorStyles,b=y.variantClasses,w=V(t,"v-list-item"),x=w.densityClasses,S=C(t),k=S.dimensionStyles,T=H(t),A=T.elevationClasses,I=q(t,"v-list-item"),M=I.roundedClasses;return function(){var e,n=s.isLink.value?"a":t.tag,r=a.title||t.title,o=a.subtitle||t.subtitle,c=!(!r&&!o),f=a.append||t.appendAvatar||t.appendIcon,h=a.prepend||t.prependAvatar||t.prependIcon,d=!t.disabled&&(s.isClickable.value||t.link);return(0,i.wy)((0,i.Wm)(n,{class:["v-list-item",(0,l.Z)({"v-list-item--active":u.value,"v-list-item--disabled":t.disabled,"v-list-item--link":d},"".concat(t.activeClass),u.value&&t.activeClass),p.value,g.value,m.value,x.value,A.value,M.value,b.value],style:[_.value,k.value],href:s.href.value,tabindex:d?0:void 0,onClick:d&&s.navigate},{default:function(){return[vt(!(!d&&!u.value),"v-list-item"),h&&(a.prepend?a.prepend():(0,i.Wm)(cn,{left:!0},{default:function(){return[(0,i.Wm)(xt,{density:t.density,icon:t.prependIcon,image:t.prependAvatar},null,8,["density","icon","image"])]}},8,["left"])),c&&(0,i.Wm)(fn,null,{default:function(){return[r&&(0,i.Wm)(dn,null,{default:function(){return[a.title?a.title():t.title]}}),o&&(0,i.Wm)(hn,null,{default:function(){return[a.subtitle?a.subtitle():t.subtitle]}})]},_:1}),null==(e=a.default)?void 0:e.call(a),f&&(a.append?a.append():(0,i.Wm)(cn,{right:!0},{default:function(){return[(0,i.Wm)(xt,{density:t.density,icon:t.appendIcon,image:t.appendAvatar},null,8,["density","icon","image"])]}},8,["right"]))]},_:1},8,["class","style","href","tabindex","onClick"]),[[(0,i.Q2)("ripple"),d]])}}}),vn=(0,b.a)({name:"VListItemMedia",props:(0,r.Z)({left:Boolean,right:Boolean},Y()),setup:function(t,e){var n=e.slots;return function(){return(0,i.Wm)(t.tag,{class:["v-list-item-media",{"v-list-item-media--start":t.left,"v-list-item-media--end":t.right}]},n,8,["class"])}}}),gn=(0,b.a)({name:"VLazy",directives:{intersect:I.Z},props:(0,r.Z)((0,r.Z)((0,r.Z)({modelValue:Boolean,options:{type:Object,default:function(){return{root:void 0,rootMargin:void 0,threshold:void 0}}}},k()),Y()),L({transition:"fade-transition"})),emits:{"update:modelValue":function(t){return!0}},setup:function(t,e){var n=e.slots,r=C(t),o=r.dimensionStyles,a=tt(t,"modelValue");function s(t){a.value||(a.value=t)}return function(){var e;return(0,i.wy)((0,i.Wm)(t.tag,{class:"v-lazy",style:o.value},{default:function(){return[a.value&&(0,i.Wm)(R,{transition:t.transition},{default:function(){return[null==(e=n.default)?void 0:e.call(n)]}},8,["transition"])]}},8,["style"]),[[(0,i.Q2)("intersect"),s,t.options]])}}});function yn(){var t=(0,c.iH)(!1);(0,i.bv)((function(){window.requestAnimationFrame((function(){t.value=!0}))}));var e=(0,i.Fl)((function(){return t.value?void 0:{transition:"none !important"}}));return{ssrBootStyles:e}}var mn=(0,b.a)({name:"VMain",props:Y({tag:"main"}),setup:function(t,e){var n=e.slots,r=g(),o=r.mainStyles,a=yn(),s=a.ssrBootStyles;return function(){var e;return(0,i.Wm)(t.tag,{class:"v-main",style:[o.value,s.value]},{default:function(){return[(0,i.Wm)("div",{class:"v-main__wrap"},[null==(e=n.default)?void 0:e.call(n)])]}},8,["style"])}}}),_n=(0,b.a)({name:"VNavigationDrawer",props:(0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({color:String,disableResizeWatcher:Boolean,expandOnHover:Boolean,floating:Boolean,modelValue:{type:Boolean,default:null},permanent:Boolean,rail:Boolean,railWidth:{type:[Number,String],default:72},image:String,temporary:Boolean,width:{type:[Number,String],default:256},position:{type:String,default:"left",validator:function(t){return["left","right","bottom"].includes(t)}}},z()),j()),v()),G()),Y({tag:"nav"})),(0,o.x$)()),setup:function(t,e){var n=e.slots,r=(0,o.Fg)(t),a=r.themeClasses,s=N(t,"v-navigation-drawer"),l=s.borderClasses,u=J((0,c.Vh)(t,"color")),f=u.backgroundColorClasses,h=u.backgroundColorStyles,d=H(t),p=d.elevationClasses,v=(0,Et.AW)(),g=v.mobile,m=q(t,"v-navigation-drawer"),_=m.roundedClasses,b=tt(t,"modelValue"),w=(0,c.iH)(!1),x=(0,i.Fl)((function(){return t.rail&&t.expandOnHover&&w.value?t.width:Number(t.rail?t.railWidth:t.width)})),S=(0,i.Fl)((function(){return!t.permanent&&(g.value||t.temporary)})),k=y(t.name,(0,c.Vh)(t,"priority"),(0,c.Vh)(t,"position"),(0,i.Fl)((function(){return S.value?0:t.rail&&t.expandOnHover?Number(t.railWidth):x.value})),x,b);return t.disableResizeWatcher||(0,i.YP)(g,(function(e){return!t.permanent&&(b.value=!e)})),(0,i.YP)(t,(function(t){t.permanent&&(b.value=!0)})),(0,i.wF)((function(){null==t.modelValue&&(b.value=t.permanent||!g.value)})),function(){var e,r,o,s,u=n.image||t.image;return(0,i.Wm)(t.tag,{onMouseenter:function(){return w.value=!0},onMouseleave:function(){return w.value=!1},class:["v-navigation-drawer",{"v-navigation-drawer--bottom":"bottom"===t.position,"v-navigation-drawer--end":"right"===t.position,"v-navigation-drawer--expand-on-hover":t.expandOnHover,"v-navigation-drawer--floating":t.floating,"v-navigation-drawer--is-hovering":w.value,"v-navigation-drawer--rail":t.rail,"v-navigation-drawer--start":"left"===t.position,"v-navigation-drawer--temporary":S.value,"v-navigation-drawer--absolute":t.absolute},a.value,f.value,l.value,p.value,_.value],style:[h.value,k.value]},{default:function(){return[u&&(0,i.Wm)("div",{class:"v-navigation-drawer__img"},[n.image?null==(e=n.image)?void 0:e.call(n,{image:t.image}):(0,i.Wm)("img",{src:t.image,alt:""},null,8,["src"])]),n.prepend&&(0,i.Wm)("div",{class:"v-navigation-drawer__prepend"},[null==(r=n.prepend)?void 0:r.call(n)]),(0,i.Wm)("div",{class:"v-navigation-drawer__content"},[null==(o=n.default)?void 0:o.call(n)]),n.append&&(0,i.Wm)("div",{class:"v-navigation-drawer__append"},[null==(s=n.append)?void 0:s.call(n)])]},_:1},8,["onMouseenter","onMouseleave","class","style"])}}});function bn(t){var e=(0,c.iH)(),n=(0,c.iH)(),r=(0,c.iH)(),o=(0,c.iH)(),a=new ResizeObserver((function(e){null==t||t(e,a),e.length&&(n.value=e[0].contentRect,r.value=e[0].contentBoxSize[0],o.value=e[0].borderBoxSize[0])}));return(0,i.Jd)((function(){a.disconnect()})),(0,i.YP)(e,(function(t,e){e&&(a.unobserve(e),n.value=void 0,r.value=void 0,o.value=void 0),t&&a.observe(t)}),{flush:"post"}),{resizeRef:e,contentRect:(0,c.OT)(n),contentBoxSize:(0,c.OT)(r),borderBoxSize:(0,c.OT)(o)}}function wn(){var t=(0,c.iH)([]);function e(e,n){t.value[n]=e}return(0,i.Xn)((function(){return t.value=[]})),{refs:t,updateRef:e}}var xn=(0,b.a)({name:"VPagination",props:(0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({start:{type:[Number,String],default:1},modelValue:{type:Number,default:function(t){return t.start}},disabled:Boolean,length:{type:[Number,String],default:1,validator:function(t){return t%1===0}},totalVisible:[Number,String],firstIcon:{type:String,default:"$first"},prevIcon:{type:String,default:"$prev"},nextIcon:{type:String,default:"$next"},lastIcon:{type:String,default:"$last"},ariaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.root"},pageAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.page"},currentPageAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.currentPage"},firstAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.first"},previousAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.previous"},nextAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.next"},lastAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.last"},ellipsis:{type:String,default:"..."},showFirstLastPage:Boolean},Y({tag:"nav"})),j()),U()),G()),rt()),z()),(0,o.x$)()),gt({variant:"text"})),emits:{"update:modelValue":function(t){return!0},first:function(t){return!0},prev:function(t){return!0},next:function(t){return!0},last:function(t){return!0}},setup:function(t,e){var n=e.slots,s=e.emit,l=tt(t,"modelValue"),u=(0,on.bU)(),f=u.t,d=u.n,p=(0,w.Vw)(),v=p.isRtl,g=(0,o.Fg)(t),y=g.themeClasses,m=(0,c.iH)(-1),_=bn((function(t){if(t.length){var e=t[0],n=e.target,r=e.contentRect,i=n.querySelector(".v-pagination__list > *");if(i){var o=r.width,a=i.getBoundingClientRect().width+10;m.value=Math.max(0,Math.floor((o-96)/a))}}})),b=_.resizeRef,x=(0,i.Fl)((function(){return parseInt(t.length,10)})),S=(0,i.Fl)((function(){return parseInt(t.start,10)})),k=(0,i.Fl)((function(){var e;return t.totalVisible?Math.min(parseInt(null!=(e=t.totalVisible)?e:"",10),x.value):m.value>=0?m.value:x.value})),C=(0,i.Fl)((function(){if(x.value<=0)return[];if(k.value<=3)return[Math.min(Math.max(S.value,l.value),S.value+x.value)];if(t.length<=k.value)return(0,h.MT)(x.value,S.value);var e=Math.ceil(k.value/2),n=e,r=x.value-e;if(l.valuer){var i=k.value-2,o=x.value-i+S.value;return[S.value,t.ellipsis].concat((0,a.Z)((0,h.MT)(i,o)))}var s=Math.max(1,k.value-4),u=1===s?l.value:l.value-Math.ceil(s/2)+S.value;return[S.value,t.ellipsis].concat((0,a.Z)((0,h.MT)(s,u)),[t.ellipsis,x.value])}));function T(t,e,n){t.preventDefault(),l.value=e,n&&s(n,e)}var A=wn(),I=A.refs,M=A.updateRef,D=(0,i.Fl)((function(){var e={density:t.density,rounded:t.rounded,size:t.size};return C.value.map((function(n,i){var o=function(t){return M(t,i)};if("string"===typeof n)return{isActive:!1,page:n,props:(0,r.Z)((0,r.Z)({},e),{},{ref:o,ellipsis:!0,icon:!0,disabled:!0,variant:t.variant,border:t.border})};var a=n===l.value;return{isActive:a,page:d(n),props:(0,r.Z)((0,r.Z)({},e),{},{ref:o,ellipsis:!1,icon:!0,disabled:!!t.disabled||t.length<2,elevation:t.elevation,variant:t.variant,border:t.border,color:a?t.color:void 0,ariaCurrent:a,ariaLabel:f(a?t.currentPageAriaLabel:t.pageAriaLabel,i+1),onClick:function(t){return T(t,n)}})}}))})),O=(0,i.Fl)((function(){var e={color:void 0,density:t.density,rounded:t.rounded,size:t.size,variant:t.variant,border:t.border},n=!!t.disabled||l.value<=S.value,i=!!t.disabled||l.value>=S.value+x.value-1;return{first:t.showFirstLastPage?(0,r.Z)((0,r.Z)({},e),{},{icon:v.value?t.lastIcon:t.firstIcon,onClick:function(t){return T(t,S.value,"first")},disabled:n,ariaLabel:f(t.firstAriaLabel),ariaDisabled:n}):void 0,prev:(0,r.Z)((0,r.Z)({},e),{},{icon:v.value?t.nextIcon:t.prevIcon,onClick:function(t){return T(t,l.value-1,"prev")},disabled:n,ariaLabel:f(t.previousAriaLabel),ariaDisabled:n}),next:(0,r.Z)((0,r.Z)({},e),{},{icon:v.value?t.prevIcon:t.nextIcon,onClick:function(t){return T(t,l.value+1,"next")},disabled:i,ariaLabel:f(t.nextAriaLabel),ariaDisabled:i}),last:t.showFirstLastPage?(0,r.Z)((0,r.Z)({},e),{},{icon:v.value?t.firstIcon:t.lastIcon,onClick:function(t){return T(t,S.value+x.value-1,"last")},disabled:i,ariaLabel:f(t.lastAriaLabel),ariaDisabled:i}):void 0}}));function E(){var t,e=l.value-S.value;null==(t=I.value[e])||t.$el.focus()}function P(e){e.key===h.ff.left&&!t.disabled&&l.value>t.start?(l.value=l.value-1,(0,i.Y3)(E)):e.key===h.ff.right&&!t.disabled&&l.value-1,i=d.value>=e,o=g.value>=e,a=r?o:i,s=a?t.fullIcon:t.emptyIcon,l=null!=(n=t.activeColor)?n:t.color,u=i||o?l:t.color;return{isFilled:i,isHovered:o,icon:s,color:u}}))})),w=(0,i.Fl)((function(){return[0].concat((0,a.Z)(v.value)).map((function(e){function n(){g.value=e}function r(){g.value=-1}function i(){var t;0===e&&0===d.value?null==(t=m.value)||t.focus():y.value=e}function o(){_||(y.value=-1)}function a(){t.disabled||t.readonly||(d.value=d.value===e&&t.clearable?0:e)}return{onMouseenter:t.hover?n:void 0,onMouseleave:t.hover?r:void 0,onFocus:i,onBlur:o,onClick:a}}))}));function x(){_=!0}function S(){_=!1}var k=(0,i.Fl)((function(){var e;return null!=(e=t.name)?e:"v-rating-".concat((0,h.sq)())}));function C(e){var o,a,s=e.value,u=e.index,c=e.showStar,f=void 0===c||c,h=w.value[u+1],p=h.onMouseenter,v=h.onMouseleave,g=h.onFocus,y=h.onBlur,_=h.onClick,C="".concat(k.value,"-").concat(String(s).replace(".","-")),T={color:null==(o=b.value[u])?void 0:o.color,density:t.density,disabled:t.disabled,icon:null==(a=b.value[u])?void 0:a.icon,ripple:t.ripple,size:t.size,tag:"span",variant:"plain"};return(0,i.Wm)(i.HY,null,[(0,i.Wm)("label",{for:C,class:{"v-rating__item--half":t.halfIncrements&&s%1>0,"v-rating__item--full":t.halfIncrements&&s%1===0},onMousedown:x,onMouseup:S,onMouseenter:p,onMouseleave:v},[(0,i.Wm)("span",{class:"v-rating__hidden"},[l(t.itemAriaLabel,s,t.length)]),f?n.item?n.item((0,r.Z)((0,r.Z)({},b.value),{},{props:T,value:s,index:u})):(0,i.Wm)(_t,T,null,16):void 0],42,["for","onMousedown","onMouseup","onMouseenter","onMouseleave"]),(0,i.Wm)("input",{class:"v-rating__hidden",name:k.value,id:C,type:"radio",value:s,checked:d.value===s,onClick:_,onFocus:g,onBlur:y,ref:0===u?m:void 0,readonly:t.readonly,disabled:t.disabled},null,40,["name","id","value","checked","onClick","onFocus","onBlur","readonly","disabled"])])}return function(){var e,r=!(null==(e=t.itemLabels)||!e.length);return(0,i.Wm)(t.tag,{class:["v-rating",{"v-rating--readonly":t.readonly},f.value]},{default:function(){return[(0,i.Wm)(C,{value:0,index:-1,showStar:!1},null,8,["index"]),p.value.map((function(e,o){var a,s;return(0,i.Wm)("div",{class:"v-rating__wrapper"},[r?n["item-label"]?n["item-label"]():null!=(a=t.itemLabels)&&a[o]?(0,i.Wm)("span",null,[null==(s=t.itemLabels)?void 0:s[o]]):(0,i.Wm)("span",null,[(0,i.Uk)(" ")]):void 0,(0,i.Wm)("div",{class:["v-rating__item",{"v-rating__item--focused":Math.ceil(y.value)===e}]},[t.halfIncrements?(0,i.Wm)(i.HY,null,[(0,i.Wm)(C,{value:e-.5,index:2*o},null,8,["value","index"]),(0,i.Wm)(C,{value:e,index:2*o+1},null,8,["value","index"])]):(0,i.Wm)(C,{value:e,index:o},null,8,["value","index"])],2)])}))]},_:1},8,["class"])}}})),An=(0,b.a)({name:"VSystemBar",props:(0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({lightsOut:Boolean,window:Boolean},z()),k()),j()),lt()),G()),Y()),(0,o.x$)()),setup:function(t,e){var n=e.slots,r=(0,o.Fg)(t),a=r.themeClasses,s=N(t,"v-system-bar"),l=s.borderClasses,u=C(t),c=u.dimensionStyles,f=H(t),h=f.elevationClasses,d=ut(t,"v-system-bar"),p=d.positionClasses,v=d.positionStyles,g=q(t,"v-system-bar"),y=g.roundedClasses;return function(){return(0,i.Wm)(t.tag,{class:[{"v-system-bar":!0,"v-system-bar--lights-out":t.lightsOut,"v-system-bar--window":t.window},a.value,l.value,h.value,p.value,y.value],style:[c.value,v.value]},n,8,["class","style"])}}}),In=(0,b.a)({name:"VThemeProvider",props:(0,r.Z)((0,r.Z)({withBackground:Boolean},(0,o.x$)()),Y()),setup:function(t,e){var n=e.slots,r=(0,o.Fg)(t),a=r.themeClasses;return function(){var e,r;return t.withBackground?(0,i.Wm)(t.tag,{class:["v-theme-provider",a.value]},{default:function(){return[null==(r=n.default)?void 0:r.call(n)]}},8,["class"]):null==(e=n.default)?void 0:e.call(n)}}}),Mn=(0,i.aZ)({name:"VTimelineDivider",props:(0,r.Z)((0,r.Z)((0,r.Z)({hideDot:Boolean,lineColor:String,icon:String,iconColor:String,fillDot:Boolean,dotColor:String},G()),rt()),j()),setup:function(t,e){var n=e.slots,r=(0,i.f3)(On);if(!r)throw new Error("[Vuetify] Could not find v-timeline provider");var o=it(t,"v-timeline-divider__dot"),a=o.sizeClasses,s=o.sizeStyles,l=J((0,c.Vh)(t,"dotColor")),u=l.backgroundColorStyles,f=l.backgroundColorClasses,h=J(r.lineColor),d=h.backgroundColorStyles,p=h.backgroundColorClasses,v=q(t,"v-timeline-divider__dot"),g=v.roundedClasses,y=H(t),m=y.elevationClasses;return function(){return(0,i.Wm)("div",{class:["v-timeline-divider",{"v-timeline-divider--fill-dot":t.fillDot}]},[!t.hideDot&&(0,i.Wm)("div",{class:["v-timeline-divider__dot",g.value,a.value,m.value],style:s.value},[(0,i.Wm)("div",{class:["v-timeline-divider__inner-dot",g.value,f.value],style:u.value},[n.default?n.default({icon:t.icon,iconColor:t.iconColor,size:t.size}):t.icon?(0,i.Wm)(at,{icon:t.icon,color:t.iconColor,size:t.size},null,8,["icon","color","size"]):void 0],6)],6),(0,i.Wm)("div",{class:["v-timeline-divider__line",p.value],style:d.value},null,6)],2)}}}),Dn=(0,b.a)({name:"VTimelineItem",props:(0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({dotColor:String,fillDot:Boolean,hideDot:Boolean,hideOpposite:{type:Boolean,default:void 0},icon:String,iconColor:String},G()),j()),rt()),Y()),k()),setup:function(t,e){var n=e.slots,r=(0,i.f3)(On);if(!r)throw new Error("[Vuetify] Could not find v-timeline provider");var o=C(t),a=o.dimensionStyles,s=(0,c.iH)(0),l=(0,c.iH)();return(0,i.YP)(l,(function(t){var e,n;t&&(s.value=null!=(e=null==(n=t.$el.querySelector(".v-timeline-divider__dot"))?void 0:n.getBoundingClientRect().width)?e:0)}),{flush:"post"}),function(){var e,o;return(0,i.Wm)("div",{class:["v-timeline-item",{"v-timeline-item--fill-dot":t.fillDot}],style:{"--v-timeline-dot-size":(0,h.kb)(s.value)}},[(0,i.Wm)("div",{class:"v-timeline-item__body",style:a.value},[null==(e=n.default)?void 0:e.call(n)],4),(0,i.Wm)(Mn,{ref:l,hideDot:t.hideDot,icon:t.icon,iconColor:t.iconColor,size:t.size,elevation:t.elevation,dotColor:t.dotColor,fillDot:t.fillDot,rounded:t.rounded},{default:n.icon},8,["hideDot","icon","iconColor","size","elevation","dotColor","fillDot","rounded"]),"compact"!==r.density.value&&(0,i.Wm)("div",{class:"v-timeline-item__opposite"},[!t.hideOpposite&&(null==(o=n.opposite)?void 0:o.call(n))])],6)}}}),On=Symbol.for("vuetify:timeline"),En=(0,b.a)({name:"VTimeline",props:(0,r.Z)((0,r.Z)((0,r.Z)({direction:{type:String,default:"vertical",validator:function(t){return["vertical","horizontal"].includes(t)}},side:{type:String,validator:function(t){return null==t||["start","end"].includes(t)}},lineInset:{type:[String,Number],default:0},lineThickness:{type:[String,Number],default:2},lineColor:String,truncateLine:{type:String,default:"start",validator:function(t){return["none","start","end","both"].includes(t)}}},U()),Y()),(0,o.x$)()),setup:function(t,e){var n=e.slots,r=(0,o.Fg)(t),a=r.themeClasses,s=V(t,"v-timeline"),l=s.densityClasses;(0,i.JJ)(On,{density:(0,c.Vh)(t,"density"),lineColor:(0,c.Vh)(t,"lineColor")});var u=(0,i.Fl)((function(){var e=t.side?t.side:"default"!==t.density?"end":null;return e&&"v-timeline--side-".concat(e)}));return function(){var e;return(0,i.Wm)(t.tag,{class:["v-timeline","v-timeline--".concat(t.direction),{"v-timeline--inset-line":!!t.lineInset,"v-timeline--truncate-line-end":"end"===t.truncateLine||"both"===t.truncateLine},a.value,l.value,u.value],style:{"--v-timeline-line-thickness":(0,h.kb)(t.lineThickness),"--v-timeline-line-inset":(0,h.kb)(t.lineInset||void 0)}},{default:function(){return[("none"===t.truncateLine||"end"===t.truncateLine)&&(0,i.Wm)(Dn,{hideDot:!0},null,8,["hideDot"]),null==(e=n.default)?void 0:e.call(n)]},_:1},8,["class","style"])}}});function Pn(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top center 0",n=arguments.length>2?arguments[2]:void 0;return(0,b.a)({name:t,props:{group:Boolean,hideOnLeave:Boolean,leaveAbsolute:Boolean,mode:{type:String,default:n},origin:{type:String,default:e}},setup:function(e,n){var r=n.slots;return function(){var n=e.group?O.W3:O.uT;return(0,i.h)(n,{name:t,mode:e.mode,onBeforeEnter:function(t){t.style.transformOrigin=e.origin},onLeave:function(t){if(e.leaveAbsolute){var n=t.offsetTop,r=t.offsetLeft,i=t.offsetWidth,o=t.offsetHeight;t._transitionInitialStyles={position:t.style.position,top:t.style.top,left:t.style.left,width:t.style.width,height:t.style.height},t.style.position="absolute",t.style.top="".concat(n,"px"),t.style.left="".concat(r,"px"),t.style.width="".concat(i,"px"),t.style.height="".concat(o,"px")}e.hideOnLeave&&(t._initialDisplay=t.style.display,t.style.display="none")},onAfterLeave:function(t){if(e.leaveAbsolute&&null!=t&&t._transitionInitialStyles){var n=t._transitionInitialStyles,r=n.position,i=n.top,o=n.left,a=n.width,s=n.height;delete t._transitionInitialStyles,t.style.position=r||"",t.style.top=i||"",t.style.left=o||"",t.style.width=a||"",t.style.height=s||""}e.hideOnLeave&&t&&(t.style.display=t._initialDisplay||"")}},r.default)}}})}function Ln(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"in-out";return(0,b.a)({name:t,props:{mode:{type:String,default:n}},setup:function(n,o){var a=o.slots;return function(){return(0,i.h)(O.uT,(0,r.Z)({name:t},e),a.default)}}})}function Rn(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e?"width":"height",r=(0,Tt._A)("offset-".concat(n));return{onBeforeEnter:function(t){t._parent=t.parentNode,t._initialStyle=(0,l.Z)({transition:t.style.transition,overflow:t.style.overflow},n,t.style[n])},onEnter:function(e){var i=e._initialStyle;e.style.setProperty("transition","none","important"),e.style.overflow="hidden";var o="".concat(e[r],"px");e.style[n]="0",e.offsetHeight,e.style.transition=i.transition,t&&e._parent&&e._parent.classList.add(t),requestAnimationFrame((function(){e.style[n]=o}))},onAfterEnter:o,onEnterCancelled:o,onLeave:function(t){t._initialStyle=(0,l.Z)({transition:"",overflow:t.style.overflow},n,t.style[n]),t.style.overflow="hidden",t.style[n]="".concat(t[r],"px"),t.offsetHeight,requestAnimationFrame((function(){return t.style[n]="0"}))},onAfterLeave:i,onLeaveCancelled:i};function i(e){t&&e._parent&&e._parent.classList.remove(t),o(e)}function o(t){var e=t._initialStyle[n];t.style.overflow=t._initialStyle.overflow,null!=e&&(t.style[n]=e),delete t._initialStyle}}var Bn=Pn("carousel-transition"),Zn=Pn("carousel-reverse-transition"),Fn=Pn("tab-transition"),zn=Pn("tab-reverse-transition"),Nn=Pn("menu-transition"),Wn=Pn("fab-transition","center center","out-in"),Un=Pn("dialog-bottom-transition"),Vn=Pn("dialog-top-transition"),jn=Pn("fade-transition"),Hn=Pn("scale-transition"),Gn=Pn("scroll-x-transition"),qn=Pn("scroll-x-reverse-transition"),Yn=Pn("scroll-y-transition"),Xn=Pn("scroll-y-reverse-transition"),$n=Pn("slide-x-transition"),Kn=Pn("slide-x-reverse-transition"),Jn=Pn("slide-y-transition"),Qn=Pn("slide-y-reverse-transition"),tr=Ln("expand-transition",Rn()),er=Ln("expand-x-transition",Rn("",!0))},620:function(t,e,n){"use strict";n.d(e,{AF:function(){return u},qy:function(){return l},tI:function(){return a},yB:function(){return s}});n(2526),n(1817),n(1539);var r=n(2262),i=n(6252),o=n(791),a=Symbol.for("vuetify:defaults");function s(t){return(0,r.iH)(null!=t?t:{})}function l(){var t=(0,i.f3)(a);if(!t)throw new Error("[Vuetify] Could not find defaults instance");return t}function u(t){var e=l(),n=(0,i.Fl)((function(){return(0,o.Ee)(e.value,null==t?void 0:t.defaults)}));return(0,i.JJ)(a,n),n}},1040:function(t,e,n){"use strict";n.d(e,{AW:function(){return p},fT:function(){return d},x6:function(){return s}});n(2526),n(1817),n(1539),n(4916),n(4723),n(8309);var r=n(2262),i=n(6252),o=n(791),a=n(5191),s=Symbol.for("vuetify:display"),l={mobileBreakpoint:"lg",thresholds:{xs:0,sm:600,md:960,lg:1280,xl:1920,xxl:2560}},u=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l;return(0,o.Ee)(l,t)};function c(){return a.BR?Math.max(document.documentElement.clientWidth,window.innerWidth):0}function f(){return a.BR?Math.max(document.documentElement.clientHeight,window.innerHeight):0}function h(){var t=a.BR?window.navigator.userAgent:"ssr";function e(e){return Boolean(t.match(e))}var n=e(/android/i),r=e(/iphone|ipad|ipod/i),i=e(/cordova/i),o=e(/electron/i),s=e(/chrome/i),l=e(/edge/i),u=e(/firefox/i),c=e(/opera/i),f=e(/win/i),h=e(/mac/i),d=e(/linux/i),p=e(/ssr/i);return{android:n,ios:r,cordova:i,electron:o,chrome:s,edge:l,firefox:u,opera:c,win:f,mac:h,linux:d,touch:a.sR,ssr:p}}function d(t){var e=u(t),n=e.thresholds,o=e.mobileBreakpoint,s=(0,r.iH)(f()),l=h(),d=(0,r.qj)({}),p=(0,r.iH)(c());function v(){s.value=f(),p.value=c()}return(0,i.m0)((function(){var t=p.value=n.xxl,c=t?"xs":e?"sm":r?"md":i?"lg":a?"xl":"xxl",f="number"===typeof o?o:n[o],h=l.ssr?l.android||l.ios||l.opera:p.value1?a-1:0),l=1;l>16&255)/255,d),i=Math.pow((t>>8&255)/255,d),o=Math.pow((t>>0&255)/255,d),a=Math.pow((e>>16&255)/255,d),s=Math.pow((e>>8&255)/255,d),l=Math.pow((e>>0&255)/255,d),u=r*p+i*v+o*g,c=a*p+s*v+l*g;if(u<=w&&(u+=Math.pow(w-u,x)),c<=w&&(c+=Math.pow(w-c,x)),Math.abs(c-u)u){var f=(Math.pow(c,y)-Math.pow(u,m))*k;n=f-M?0:h>-T?h-h*A*I:h+I}return 100*n}var O=Symbol.for("vuetify:theme"),E=(0,s.U)({theme:String},"theme"),P={defaultTheme:"light",variations:{colors:[],lighten:0,darken:0},themes:{light:{dark:!1,colors:{background:"#FFFFFF",surface:"#FFFFFF",primary:"#6200EE","primary-darken-1":"#3700B3",secondary:"#03DAC6","secondary-darken-1":"#018786",error:"#B00020",info:"#2196F3",success:"#4CAF50",warning:"#FB8C00"},variables:{"border-color":"#000000","border-opacity":.12,"high-emphasis-opacity":.87,"medium-emphasis-opacity":.6,"disabled-opacity":.38,"activated-opacity":.12,"hover-opacity":.04,"focus-opacity":.12,"selected-opacity":.08,"dragged-opacity":.08,"pressed-opacity":.16,"kbd-background-color":"#212529","kbd-color":"#FFFFFF","code-background-color":"#C2C2C2"}},dark:{dark:!0,colors:{background:"#121212",surface:"#212121",primary:"#BB86FC","primary-darken-1":"#3700B3",secondary:"#03DAC5","secondary-darken-1":"#03DAC5",error:"#CF6679",info:"#2196F3",success:"#4CAF50",warning:"#FB8C00"},variables:{"border-color":"#FFFFFF","border-opacity":.12,"high-emphasis-opacity":.87,"medium-emphasis-opacity":.6,"disabled-opacity":.38,"activated-opacity":.12,"hover-opacity":.04,"focus-opacity":.12,"selected-opacity":.08,"dragged-opacity":.08,"pressed-opacity":.16,"kbd-background-color":"#212529","kbd-color":"#FFFFFF","code-background-color":"#B7B7B7"}}}},L=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:P;return t?(0,l.Ee)(P,t):(0,a.Z)((0,a.Z)({},P),{},{isDisabled:!0})};function R(t){var e=L(t),n=(0,c.iH)(),s=(0,c.iH)(e.defaultTheme),h=(0,c.iH)(e.themes),d=(0,c.iH)(e.variations),p=(0,f.Fl)((function(){return Object.keys(h.value).reduce((function(t,n){for(var r,i=(0,a.Z)((0,a.Z)({},h.value[n]),{},{colors:(0,a.Z)((0,a.Z)({},h.value[n].colors),(null!=(r=e.variations.colors)?r:[]).reduce((function(t,e){return(0,a.Z)((0,a.Z)({},t),v(e,h.value[n].colors[e]))}),{}))}),o=0,s=Object.keys(i.colors);oMath.min(d,50)?"#fff":"#000"}}return t[n]=i,t}),{})}));function v(t,e){for(var n={},r=0,i=["lighten","darken"];r.18?n:r))}return o}function y(){if("undefined"!==typeof document&&!n.value){var t=document.createElement("style");t.type="text/css",t.id="vuetify-theme-stylesheet",n.value=t,document.head.appendChild(n.value)}}function m(t,e){return["".concat(t," {\n")].concat((0,r.Z)(e.map((function(t){return" ".concat(t,";\n")}))),["}\n"])}function _(){if(!e.isDisabled){y();for(var t=[],i=function(){var e=a[o],n=p.value[e].variables;t.push.apply(t,(0,r.Z)(m(".v-theme--".concat(e),[].concat((0,r.Z)(g(e)),(0,r.Z)(Object.keys(n).map((function(t){var e=n[t],r="string"===typeof e&&e.startsWith("#")?(0,u.nA)(e):void 0,i=r?"".concat(r.r,", ").concat(r.g,", ").concat(r.b):void 0;return"--v-".concat(t,": ").concat(null!=i?i:e)})))))))},o=0,a=Object.keys(p.value);oe+a&&t.right(t)),Math.abs(t.offsetX)r+a&&t.down(t))};function y(t,e){var n,r=t.changedTouches[0];e.touchstartX=r.clientX,e.touchstartY=r.clientY,null==(n=e.start)||n.call(e,(0,p.Z)((0,p.Z)({},t),e))}function m(t,e){var n,r=t.changedTouches[0];e.touchendX=r.clientX,e.touchendY=r.clientY,null==(n=e.end)||n.call(e,(0,p.Z)((0,p.Z)({},t),e)),g(e)}function _(t,e){var n,r=t.changedTouches[0];e.touchmoveX=r.clientX,e.touchmoveY=r.clientY,null==(n=e.move)||n.call(e,(0,p.Z)((0,p.Z)({},t),e))}function b(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e={touchstartX:0,touchstartY:0,touchendX:0,touchendY:0,touchmoveX:0,touchmoveY:0,offsetX:0,offsetY:0,left:t.left,right:t.right,up:t.up,down:t.down,start:t.start,move:t.move,end:t.end};return{touchstart:function(t){return y(t,e)},touchend:function(t){return m(t,e)},touchmove:function(t){return _(t,e)}}}function w(t,e){var n,r,i,o=e.value,a=null!=o&&o.parent?t.parentElement:t,s=null!=(n=null==o?void 0:o.options)?n:{passive:!0},l=null==(r=e.instance)?void 0:r.$.uid;if(a&&l){var u=b(e.value);a._touchHandlers=null!=(i=a._touchHandlers)?i:Object.create(null),a._touchHandlers[l]=u,(0,v.XP)(u).forEach((function(t){a.addEventListener(t,u[t],s)}))}}function x(t,e){var n,r,i=null!=(n=e.value)&&n.parent?t.parentElement:t,o=null==(r=e.instance)?void 0:r.$.uid;if(null!=i&&i._touchHandlers&&o){var a=i._touchHandlers[o];(0,v.XP)(a).forEach((function(t){i.removeEventListener(t,a[t])})),delete i._touchHandlers[o]}}var S={mounted:w,unmounted:x}},1295:function(t,e,n){"use strict";n.d(e,{N:function(){return s}});var r=n(4402),i=(n(1539),n(5191));function o(t,e){if(i.cu){var n=e.modifiers||{},o=e.value,s="object"===(0,r.Z)(o)?o:{handler:o,options:{}},l=s.handler,u=s.options,c=new IntersectionObserver((function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],r=arguments.length>1?arguments[1]:void 0;if(t._observe){var i=e.some((function(t){return t.isIntersecting}));!l||n.quiet&&!t._observe.init||n.once&&!i&&t._observe.init||l(i,e,r),i&&n.once?a(t):t._observe.init=!0}}),u);t._observe={init:!1,observer:c},c.observe(t)}}function a(t){t._observe&&(t._observe.observer.unobserve(t),delete t._observe)}var s={mounted:o,unmounted:a};e["Z"]=s},6460:function(t,e,n){"use strict";n.d(e,{H:function(){return C}});n(2526),n(1817),n(1539),n(8309),n(2222),n(9653);var r=n(791),i=Symbol("rippleStop"),o=80;function a(t,e){t.style.transform=e,t.style.webkitTransform=e}function s(t,e){t.style.opacity="calc(".concat(e," * var(--v-theme-overlay-multiplier))")}function l(t){return"TouchEvent"===t.constructor.name}function u(t){return"KeyboardEvent"===t.constructor.name}var c=function(t,e){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=0,o=0;if(!u(t)){var a=e.getBoundingClientRect(),s=l(t)?t.touches[t.touches.length-1]:t;i=s.clientX-a.left,o=s.clientY-a.top}var c=0,f=.3;null!=(n=e._ripple)&&n.circle?(f=.15,c=e.clientWidth/2,c=r.center?c:c+Math.sqrt(Math.pow(i-c,2)+Math.pow(o-c,2))/4):c=Math.sqrt(Math.pow(e.clientWidth,2)+Math.pow(e.clientHeight,2))/2;var h="".concat((e.clientWidth-2*c)/2,"px"),d="".concat((e.clientHeight-2*c)/2,"px"),p=r.center?h:"".concat(i-c,"px"),v=r.center?d:"".concat(o-c,"px");return{radius:c,scale:f,x:p,y:v,centerX:h,centerY:d}},f={show:function(t,e){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(null!=e&&null!=(n=e._ripple)&&n.enabled){var i=document.createElement("span"),o=document.createElement("span");i.appendChild(o),i.className="v-ripple__container",r.class&&(i.className+=" ".concat(r.class));var l=c(t,e,r),u=l.radius,f=l.scale,h=l.x,d=l.y,p=l.centerX,v=l.centerY,g="".concat(2*u,"px");o.className="v-ripple__animation",o.style.width=g,o.style.height=g,e.appendChild(i);var y=window.getComputedStyle(e);y&&"static"===y.position&&(e.style.position="relative",e.dataset.previousPosition="static"),o.classList.add("v-ripple__animation--enter"),o.classList.add("v-ripple__animation--visible"),a(o,"translate(".concat(h,", ").concat(d,") scale3d(").concat(f,",").concat(f,",").concat(f,")")),s(o,0),o.dataset.activated=String(performance.now()),setTimeout((function(){o.classList.remove("v-ripple__animation--enter"),o.classList.add("v-ripple__animation--in"),a(o,"translate(".concat(p,", ").concat(v,") scale3d(1,1,1)")),s(o,.08)}),0)}},hide:function(t){var e;if(null!=t&&null!=(e=t._ripple)&&e.enabled){var n=t.getElementsByClassName("v-ripple__animation");if(0!==n.length){var r=n[n.length-1];if(!r.dataset.isHiding){r.dataset.isHiding="true";var i=performance.now()-Number(r.dataset.activated),o=Math.max(250-i,0);setTimeout((function(){r.classList.remove("v-ripple__animation--in"),r.classList.add("v-ripple__animation--out"),s(r,0),setTimeout((function(){var e=t.getElementsByClassName("v-ripple__animation");1===e.length&&t.dataset.previousPosition&&(t.style.position=t.dataset.previousPosition,delete t.dataset.previousPosition),r.parentNode&&t.removeChild(r.parentNode)}),300)}),o)}}}}};function h(t){return"undefined"===typeof t||!!t}function d(t){var e={},n=t.currentTarget;if(null!=n&&n._ripple&&!n._ripple.touched&&!t[i]){if(t[i]=!0,l(t))n._ripple.touched=!0,n._ripple.isTouch=!0;else if(n._ripple.isTouch)return;if(e.center=n._ripple.centered||u(t),n._ripple.class&&(e.class=n._ripple.class),l(t)){if(n._ripple.showTimerCommit)return;n._ripple.showTimerCommit=function(){f.show(t,n,e)},n._ripple.showTimer=window.setTimeout((function(){var t;null!=n&&null!=(t=n._ripple)&&t.showTimerCommit&&(n._ripple.showTimerCommit(),n._ripple.showTimerCommit=null)}),o)}else f.show(t,n,e)}}function p(t){var e=t.currentTarget;if(e&&e._ripple){if(window.clearTimeout(e._ripple.showTimer),"touchend"===t.type&&e._ripple.showTimerCommit)return e._ripple.showTimerCommit(),e._ripple.showTimerCommit=null,void(e._ripple.showTimer=setTimeout((function(){p(t)})));window.setTimeout((function(){e._ripple&&(e._ripple.touched=!1)})),f.hide(e)}}function v(t){var e=t.currentTarget;e&&e._ripple&&(e._ripple.showTimerCommit&&(e._ripple.showTimerCommit=null),window.clearTimeout(e._ripple.showTimer))}var g=!1;function y(t){g||t.keyCode!==r.Do.enter&&t.keyCode!==r.Do.space||(g=!0,d(t))}function m(t){g=!1,p(t)}function _(t){g&&(g=!1,p(t))}function b(t,e,n){var i,o=e.value,a=e.modifiers,s=h(o);s||f.hide(t),t._ripple=null!=(i=t._ripple)?i:{},t._ripple.enabled=s,t._ripple.centered=a.center,t._ripple.circle=a.circle,(0,r.Kn)(o)&&o.class&&(t._ripple.class=o.class),s&&!n?(t.addEventListener("touchstart",d,{passive:!0}),t.addEventListener("touchend",p,{passive:!0}),t.addEventListener("touchmove",v,{passive:!0}),t.addEventListener("touchcancel",p),t.addEventListener("mousedown",d),t.addEventListener("mouseup",p),t.addEventListener("mouseleave",p),t.addEventListener("keydown",y),t.addEventListener("keyup",m),t.addEventListener("blur",_),t.addEventListener("dragstart",p,{passive:!0})):!s&&n&&w(t)}function w(t){t.removeEventListener("mousedown",d),t.removeEventListener("touchstart",d),t.removeEventListener("touchend",p),t.removeEventListener("touchmove",v),t.removeEventListener("touchcancel",p),t.removeEventListener("mouseup",p),t.removeEventListener("mouseleave",p),t.removeEventListener("keydown",y),t.removeEventListener("keyup",m),t.removeEventListener("dragstart",p),t.removeEventListener("blur",_)}function x(t,e){b(t,e,!1)}function S(t){delete t._ripple,w(t)}function k(t,e){if(e.value!==e.oldValue){var n=h(e.oldValue);b(t,e,n)}}var C={mounted:x,unmounted:S,updated:k}},6784:function(t,e,n){"use strict";n.d(e,{R:function(){return v}});var r=n(4141),i=n(1040),o=n(142),a=n(7825),s=n(620),l=n(3216),u=n(5048),c=n(6252),f={complete:"mdi-check",cancel:"mdi-close-circle",close:"mdi-close",delete:"mdi-close-circle",clear:"mdi-close",success:"mdi-check-circle",info:"mdi-information",warning:"mdi-alert-circle",error:"mdi-close-circle",prev:"mdi-chevron-left",next:"mdi-chevron-right",checkboxOn:"mdi-checkbox-marked",checkboxOff:"mdi-checkbox-blank-outline",checkboxIndeterminate:"mdi-minus-box",delimiter:"mdi-circle",sort:"mdi-arrow-up",expand:"mdi-chevron-down",menu:"mdi-menu",subgroup:"mdi-menu-down",dropdown:"mdi-menu-down",radioOn:"mdi-radiobox-marked",radioOff:"mdi-radiobox-blank",edit:"mdi-pencil",ratingEmpty:"mdi-star-outline",ratingFull:"mdi-star",ratingHalf:"mdi-star-half-full",loading:"mdi-cached",first:"mdi-page-first",last:"mdi-page-last",unfold:"mdi-unfold-more-horizontal",file:"mdi-paperclip",plus:"mdi-plus",minus:"mdi-minus"},h={component:function(t){return(0,c.h)(a.$0,(0,r.Z)((0,r.Z)({},t),{},{class:"mdi"}))}},d=n(2262),p=n(791),v=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=function(e){var n=t.components,c=void 0===n?{}:n,v=t.directives,g=void 0===v?{}:v,y=t.icons,m=void 0===y?{}:y;for(var _ in g){var b=g[_];e.directive(_,b)}for(var w in c){var x=c[w];e.component(w,x)}e.provide(s.tI,(0,s.yB)(t.defaults)),e.provide(i.x6,(0,i.fT)(t.display)),e.provide(o.bo,(0,o.jG)(t.theme)),e.provide(a.YK,(0,p.Ee)({defaultSet:"mdi",sets:(0,r.Z)((0,r.Z)({},a.xe),{},{mdi:h}),aliases:f},m));var S=(0,l.aU)(e,null==t?void 0:t.locale),k=S.adapter,C=S.rootInstance;function T(t){var e,n,r,i=this.$,o=null!=(e=null==(n=i.parent)?void 0:n.provides)?e:null==(r=i.vnode.appContext)?void 0:r.provides;if(o&&t in o)return o[t]}e.provide(l.uM,k),e.provide(u.Cm,(0,u.is)(C,null==t?void 0:t.locale)),e.mixin({computed:{$vuetify:function(){return(0,d.qj)({defaults:T.call(this,s.tI),display:T.call(this,i.x6),theme:T.call(this,o.bo),icons:T.call(this,a.YK),locale:T.call(this,l.uM),rtl:T.call(this,u.Cm)})}}})};return{install:e}}},6100:function(t,e,n){"use strict";n.d(e,{jx:function(){return y},nA:function(){return _},_j:function(){return w},zT:function(){return x},I4:function(){return m},NA:function(){return g},$n:function(){return b}});n(4141),n(1851),n(4916),n(7601),n(6755),n(9600),n(1249),n(3123),n(8309),n(5306),n(3210),n(1539),n(9714),n(2481),n(2222),n(7042),n(2479);var r=n(1006),i=n(791),o=[[3.2406,-1.5372,-.4986],[-.9689,1.8758,.0415],[.0557,-.204,1.057]],a=function(t){return t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055},s=[[.4124,.3576,.1805],[.2126,.7152,.0722],[.0193,.1192,.9505]],l=function(t){return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)};function u(t){for(var e=Array(3),n=a,r=o,s=0;s<3;++s)e[s]=Math.round(255*(0,i.uZ)(n(r[s][0]*t[0]+r[s][1]*t[1]+r[s][2]*t[2])));return(e[0]<<16)+(e[1]<<8)+(e[2]<<0)}function c(t){for(var e=[0,0,0],n=l,r=s,i=n((t>>16&255)/255),o=n((t>>8&255)/255),a=n((t>>0&255)/255),u=0;u<3;++u)e[u]=r[u][0]*i+r[u][1]*o+r[u][2]*a;return e}n(3484);var f=.20689655172413793,h=function(t){return t>Math.pow(f,3)?Math.cbrt(t):t/(3*Math.pow(f,2))+4/29},d=function(t){return t>f?Math.pow(t,3):3*Math.pow(f,2)*(t-4/29)};function p(t){var e=h,n=e(t[1]);return[116*n-16,500*(e(t[0]/.95047)-n),200*(n-e(t[2]/1.08883))]}function v(t){var e=d,n=(t[0]+16)/116;return[.95047*e(n+t[1]/500),e(n),1.08883*e(n-t[2]/200)]}function g(t){return!!t&&/^(#|var\(--|(rgb|hsl)a?\()/.test(t)}function y(t){var e;if("number"===typeof t)e=t;else{if("string"!==typeof t)throw new TypeError("Colors can only be numbers or strings, recieved ".concat(null==t?t:t.constructor.name," instead"));var n=t.startsWith("#")?t.substring(1):t;3===n.length&&(n=n.split("").map((function(t){return t+t})).join("")),6!==n.length&&(0,r.Kd)("'".concat(t,"' is not a valid rgb color")),e=parseInt(n,16)}return e<0?((0,r.Kd)("Colors cannot be negative: '".concat(t,"'")),e=0):(e>16777215||isNaN(e))&&((0,r.Kd)("'".concat(t,"' is not a valid rgb color")),e=16777215),e}function m(t){var e=t.toString(16);return e.length<6&&(e="0".repeat(6-e.length)+e),"#"+e}function _(t){var e=y(t);return{r:(16711680&e)>>16,g:(65280&e)>>8,b:255&e}}function b(t,e){var n=p(c(t));return n[0]=n[0]+10*e,u(v(n))}function w(t,e){var n=p(c(t));return n[0]=n[0]-10*e,u(v(n))}function x(t){var e=y(t);return c(e)[1]}},1006:function(t,e,n){"use strict";n.d(e,{Kd:function(){return i},N6:function(){return o}});n(6699),n(2023),n(2222),n(4916),n(5306),n(8309),n(4723),n(9600),n(1249),n(2481);function r(t,e,n){if(n&&(e={_isVue:!0,$parent:n,$options:e}),e){if(e.$_alreadyWarned=e.$_alreadyWarned||[],e.$_alreadyWarned.includes(t))return;e.$_alreadyWarned.push(t)}return"[Vuetify] ".concat(t)+(e?u(e):"")}function i(t,e,n){var i=r(t,e,n);null!=i&&console.warn(i)}function o(t,e,n){var i=r(t,e,n);null!=i&&console.error(i)}var a=/(?:^|[-_])(\w)/g,s=function(t){return t.replace(a,(function(t){return t.toUpperCase()})).replace(/[-_]/g,"")};function l(t,e){if(t.$root===t)return"";var n="function"===typeof t&&null!=t.cid?t.options:t._isVue?t.$options||t.constructor.options:t||{},r=n.name||n._componentTag,i=n.__file;if(!r&&i){var o=i.match(/([^/\\]+)\.vue$/);r=null==o?void 0:o[1]}return(r?"<".concat(s(r),">"):"")+(i&&!1!==e?" at ".concat(i):"")}function u(t){if(t._isVue&&t.$parent){var e=[],n=0;while(t){if(e.length>0){var r=e[e.length-1];if(r.constructor===t.constructor){n++,t=t.$parent;continue}n>0&&(e[e.length-1]=[r,n],n=0)}e.push(t),t=t.$parent}return"\n\nfound in\n\n"+e.map((function(t,e){return"".concat(0===e?"---\x3e ":" ".repeat(5+2*e)).concat(Array.isArray(t)?"".concat(l(t[0]),"... (").concat(t[1]," recursive calls)"):l(t))})).join("\n")}return"\n\n(found in ".concat(l(t),")")}},646:function(t,e,n){"use strict";n.d(e,{a:function(){return c}});var r=n(4141),i=(n(8309),n(7941),n(6252)),o=n(2262),a=n(1006),s=n(791),l=n(620);function u(t,e){var n,r;return(null==(n=t.props)?void 0:n.hasOwnProperty(e))||(null==(r=t.props)?void 0:r.hasOwnProperty((0,s.mA)(e)))}var c=function(t){var e=t.setup;return t.name?(e&&(t.setup=function(n,a){var s=(0,i.FN)(),c=(0,l.qy)(),f=(0,o.Um)((0,r.Z)({},(0,o.IU)(n)));return(0,i.m0)((function(){for(var e=c.value.global,r=c.value[t.name],i=0,o=Object.keys(n);i0)},791:function(t,e,n){"use strict";n.d(e,{Bc:function(){return S},Do:function(){return d},Ee:function(){return _},FT:function(){return y},Kl:function(){return g},Kn:function(){return h},MT:function(){return c},RA:function(){return w},XP:function(){return v},ff:function(){return p},kb:function(){return f},mA:function(){return x},sq:function(){return b},uZ:function(){return m},vO:function(){return u},vZ:function(){return l}});var r=n(1851),i=n(4402),o=(n(7941),n(1539),n(4916),n(5306),n(3123),n(1038),n(8783),n(2222),n(9653),n(3371),n(4747),n(9720),n(6699),n(2023),n(2707),n(1249),n(9714),n(3210),n(7327),n(6755),n(2481),n(6977),n(3290),n(4944),n(3792),n(7042),n(6252)),a=n(2262);function s(t,e,n){var r=e.length-1;if(r<0)return void 0===t?n:t;for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:0;return Array.from({length:t},(function(t,n){return e+n}))}function f(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"px";return null==t||""===t?void 0:isNaN(+t)?String(t):"".concat(Number(t)).concat(e)}function h(t){return null!==t&&"object"===(0,i.Z)(t)}var d=Object.freeze({enter:13,tab:9,delete:46,esc:27,space:32,up:38,down:40,left:37,right:39,end:35,home:36,del:46,backspace:8,insert:45,pageup:33,pagedown:34,shift:16}),p=Object.freeze({enter:"Enter",tab:"Tab",delete:"Delete",esc:"Escape",space:"Space",up:"ArrowUp",down:"ArrowDown",left:"ArrowLeft",right:"ArrowRight",end:"End",home:"Home",del:"Delete",backspace:"Backspace",insert:"Insert",pageup:"PageUp",pagedown:"PageDown",shift:"Shift"});function v(t){return Object.keys(t)}function g(t,e){var n={},i={};return Object.entries(t).forEach((function(t){var o=(0,r.Z)(t,2),a=o[0],s=o[1];e.includes(a)?n[a]=s:i[a]=s})),[n,i]}function y(t){return null==t?[]:Array.isArray(t)?t:[t]}function m(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return Math.max(e,Math.min(n,t))}function _(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(var n in e){var r=t[n],i=e[n];h(r)&&h(i)?t[n]=_(r,i):t[n]=i}return t}function b(){return b._uid++}function w(t){return t.map((function(t){return t.type===o.HY?w(t.children):t})).flat()}b._uid=0;var x=function(t){return t.replace(/([A-Z])/g,(function(t){return"-".concat(t.toLowerCase())}))};function S(t){return(0,a.dq)(t)?t:(0,a.iH)(t)}},4563:function(t,e,n){"use strict";n.d(e,{U:function(){return o}});var r=n(4141),i=n(4402);n(1539),n(7941);function o(t,e){return function(n){return Object.keys(t).reduce((function(o,a){var s="object"===(0,i.Z)(t[a])&&null!=t[a]&&!Array.isArray(t[a]),l=s?t[a]:{type:t[a]};return o[a]=n&&a in n?(0,r.Z)((0,r.Z)({},l),{},{default:n[a]}):l,e&&(o[a].source=e),o}),{})}}},8593:function(t){"use strict";t.exports=JSON.parse('{"name":"axios","version":"0.21.4","description":"Promise based HTTP client for the browser and node.js","main":"index.js","scripts":{"test":"grunt test","start":"node ./sandbox/server.js","build":"NODE_ENV=production grunt build","preversion":"npm test","version":"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json","postversion":"git push && git push --tags","examples":"node ./examples/server.js","coveralls":"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","fix":"eslint --fix lib/**/*.js"},"repository":{"type":"git","url":"https://github.com/axios/axios.git"},"keywords":["xhr","http","ajax","promise","node"],"author":"Matt Zabriskie","license":"MIT","bugs":{"url":"https://github.com/axios/axios/issues"},"homepage":"https://axios-http.com/","devDependencies":{"coveralls":"^3.0.0","es6-promise":"^4.2.4","grunt":"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1","karma":"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2","minimist":"^1.2.0","mocha":"^8.2.1","sinon":"^4.5.0","terser-webpack-plugin":"^4.2.3","typescript":"^4.0.5","url-search-params":"^0.10.0","webpack":"^4.44.2","webpack-dev-server":"^3.11.0"},"browser":{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},"jsdelivr":"dist/axios.min.js","unpkg":"dist/axios.min.js","typings":"./index.d.ts","dependencies":{"follow-redirects":"^1.14.0"},"bundlesize":[{"path":"./dist/axios.min.js","threshold":"5kB"}]}')}}]); +//# sourceMappingURL=chunk-vendors-legacy.0735c942.js.map \ No newline at end of file diff --git a/analyseOTA/js/chunk-vendors-legacy.0735c942.js.map b/analyseOTA/js/chunk-vendors-legacy.0735c942.js.map new file mode 100644 index 0000000..ea1cb79 --- /dev/null +++ b/analyseOTA/js/chunk-vendors-legacy.0735c942.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/chunk-vendors-legacy.0735c942.js","mappings":"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,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI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AAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,G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","sources":["webpack://ota-analyzer/./node_modules/@protobufjs/aspromise/index.js","webpack://ota-analyzer/./node_modules/@protobufjs/base64/index.js","webpack://ota-analyzer/./node_modules/@protobufjs/eventemitter/index.js","webpack://ota-analyzer/./node_modules/@protobufjs/float/index.js","webpack://ota-analyzer/./node_modules/@protobufjs/inquire/index.js","webpack://ota-analyzer/./node_modules/@protobufjs/pool/index.js","webpack://ota-analyzer/./node_modules/@protobufjs/utf8/index.js","webpack://ota-analyzer/./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","webpack://ota-analyzer/./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","webpack://ota-analyzer/./node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","webpack://ota-analyzer/./node_modules/@vue/shared/dist/shared.esm-bundler.js","webpack://ota-analyzer/./node_modules/axios/index.js","webpack://ota-analyzer/./node_modules/axios/lib/adapters/xhr.js","webpack://ota-analyzer/./node_modules/axios/lib/axios.js","webpack://ota-analyzer/./node_modules/axios/lib/cancel/Cancel.js","webpack://ota-analyzer/./node_modules/axios/lib/cancel/CancelToken.js","webpack://ota-analyzer/./node_modules/axios/lib/cancel/isCancel.js","webpack://ota-analyzer/./node_modules/axios/lib/core/Axios.js","webpack://ota-analyzer/./node_modules/axios/lib/core/InterceptorManager.js","webpack://ota-analyzer/./node_modules/axios/lib/core/buildFullPath.js","webpack://ota-analyzer/./node_modules/axios/lib/core/createError.js","webpack://ota-analyzer/./node_modules/axios/lib/core/dispatchRequest.js","webpack://ota-analyzer/./node_modules/axios/lib/core/enhanceError.js","webpack://ota-analyzer/./node_modules/axios/lib/core/mergeConfig.js","webpack://ota-analyzer/./node_modules/axios/lib/core/settle.js","webpack://ota-analyzer/./node_modules/axios/lib/core/transformData.js","webpack://ota-analyzer/./node_modules/axios/lib/defaults.js","webpack://ota-analyzer/./node_modules/axios/lib/helpers/bind.js","webpack://ota-analyzer/./node_modules/axios/lib/helpers/buildURL.js","webpack://ota-analyzer/./node_modules/axios/lib/helpers/combineURLs.js","webpack://ota-analyzer/./node_modules/axios/lib/helpers/cookies.js","webpack://ota-analyzer/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://ota-analyzer/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://ota-analyzer/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://ota-analyzer/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://ota-analyzer/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://ota-analyzer/./node_modules/axios/lib/helpers/spread.js","webpack://ota-analyzer/./node_modules/axios/lib/helpers/validator.js","webpack://ota-analyzer/./node_modules/axios/lib/utils.js","webpack://ota-analyzer/./node_modules/core-js/internals/a-function.js","webpack://ota-analyzer/./node_modules/core-js/internals/a-possible-prototype.js","webpack://ota-analyzer/./node_modules/core-js/internals/add-to-unscopables.js","webpack://ota-analyzer/./node_modules/core-js/internals/advance-string-index.js","webpack://ota-analyzer/./node_modules/core-js/internals/an-instance.js","webpack://ota-analyzer/./node_modules/core-js/internals/an-object.js","webpack://ota-analyzer/./node_modules/core-js/internals/array-buffer-native.js","webpack://ota-analyzer/./node_modules/core-js/internals/array-buffer-view-core.js","webpack://ota-analyzer/./node_modules/core-js/internals/array-buffer.js","webpack://ota-analyzer/./node_modules/core-js/internals/array-copy-within.js","webpack://ota-analyzer/./node_modules/core-js/internals/array-fill.js","webpack://ota-analyzer/./node_modules/core-js/internals/array-for-each.js","webpack://ota-analyzer/./node_modules/core-js/internals/array-from.js","webpack://ota-analyzer/./node_modules/core-js/internals/array-includes.js","webpack://ota-analyzer/./node_modules/core-js/internals/array-iteration.js","webpack://ota-analyzer/./node_modules/core-js/internals/array-last-index-of.js","webpack://ota-analyzer/./node_modules/core-js/internals/array-method-has-species-support.js","webpack://ota-analyzer/./node_modules/core-js/internals/array-method-is-strict.js","webpack://ota-analyzer/./node_modules/core-js/internals/array-reduce.js","webpack://ota-analyzer/./node_modules/core-js/internals/array-sort.js","webpack://ota-analyzer/./node_modules/core-js/internals/array-species-create.js","webpack://ota-analyzer/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://ota-analyzer/./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://ota-analyzer/./node_modules/core-js/internals/classof-raw.js","webpack://ota-analyzer/./node_modules/core-js/internals/classof.js","webpack://ota-analyzer/./node_modules/core-js/internals/collection-strong.js","webpack://ota-analyzer/./node_modules/core-js/internals/collection-weak.js","webpack://ota-analyzer/./node_modules/core-js/internals/collection.js","webpack://ota-analyzer/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://ota-analyzer/./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack://ota-analyzer/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://ota-analyzer/./node_modules/core-js/internals/create-html.js","webpack://ota-analyzer/./node_modules/core-js/internals/create-iterator-constructor.js","webpack://ota-analyzer/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://ota-analyzer/./node_modules/core-js/internals/create-property-descriptor.js","webpack://ota-analyzer/./node_modules/core-js/internals/create-property.js","webpack://ota-analyzer/./node_modules/core-js/internals/define-iterator.js","webpack://ota-analyzer/./node_modules/core-js/internals/define-well-known-symbol.js","webpack://ota-analyzer/./node_modules/core-js/internals/descriptors.js","webpack://ota-analyzer/./node_modules/core-js/internals/document-create-element.js","webpack://ota-analyzer/./node_modules/core-js/internals/dom-iterables.js","webpack://ota-analyzer/./node_modules/core-js/internals/engine-ff-version.js","webpack://ota-analyzer/./node_modules/core-js/internals/engine-is-browser.js","webpack://ota-analyzer/./node_modules/core-js/internals/engine-is-ie-or-edge.js","webpack://ota-analyzer/./node_modules/core-js/internals/engine-is-ios.js","webpack://ota-analyzer/./node_modules/core-js/internals/engine-is-node.js","webpack://ota-analyzer/./node_modules/core-js/internals/engine-is-webos-webkit.js","webpack://ota-analyzer/./node_modules/core-js/internals/engine-user-agent.js","webpack://ota-analyzer/./node_modules/core-js/internals/engine-v8-version.js","webpack://ota-analyzer/./node_modules/core-js/internals/engine-webkit-version.js","webpack://ota-analyzer/./node_modules/core-js/internals/enum-bug-keys.js","webpack://ota-analyzer/./node_modules/core-js/internals/export.js","webpack://ota-analyzer/./node_modules/core-js/internals/fails.js","webpack://ota-analyzer/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://ota-analyzer/./node_modules/core-js/internals/flatten-into-array.js","webpack://ota-analyzer/./node_modules/core-js/internals/freezing.js","webpack://ota-analyzer/./node_modules/core-js/internals/function-bind-context.js","webpack://ota-analyzer/./node_modules/core-js/internals/function-bind.js","webpack://ota-analyzer/./node_modules/core-js/internals/get-built-in.js","webpack://ota-analyzer/./node_modules/core-js/internals/get-iterator-method.js","webpack://ota-analyzer/./node_modules/core-js/internals/get-iterator.js","webpack://ota-analyzer/./node_modules/core-js/internals/get-substitution.js","webpack://ota-analyzer/./node_modules/core-js/internals/global.js","webpack://ota-analyzer/./node_modules/core-js/internals/has.js","webpack://ota-analyzer/./node_modules/core-js/internals/hidden-keys.js","webpack://ota-analyzer/./node_modules/core-js/internals/host-report-errors.js","webpack://ota-analyzer/./node_modules/core-js/internals/html.js","webpack://ota-analyzer/./node_modules/core-js/internals/ie8-dom-define.js","webpack://ota-analyzer/./node_modules/core-js/internals/ieee754.js","webpack://ota-analyzer/./node_modules/core-js/internals/indexed-object.js","webpack://ota-analyzer/./node_modules/core-js/internals/inherit-if-required.js","webpack://ota-analyzer/./node_modules/core-js/internals/inspect-source.js","webpack://ota-analyzer/./node_modules/core-js/internals/internal-metadata.js","webpack://ota-analyzer/./node_modules/core-js/internals/internal-state.js","webpack://ota-analyzer/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://ota-analyzer/./node_modules/core-js/internals/is-array.js","webpack://ota-analyzer/./node_modules/core-js/internals/is-forced.js","webpack://ota-analyzer/./node_modules/core-js/internals/is-object.js","webpack://ota-analyzer/./node_modules/core-js/internals/is-pure.js","webpack://ota-analyzer/./node_modules/core-js/internals/is-regexp.js","webpack://ota-analyzer/./node_modules/core-js/internals/iterate.js","webpack://ota-analyzer/./node_modules/core-js/internals/iterator-close.js","webpack://ota-analyzer/./node_modules/core-js/internals/iterators-core.js","webpack://ota-analyzer/./node_modules/core-js/internals/iterators.js","webpack://ota-analyzer/./node_modules/core-js/internals/math-sign.js","webpack://ota-analyzer/./node_modules/core-js/internals/microtask.js","webpack://ota-analyzer/./node_modules/core-js/internals/native-promise-constructor.js","webpack://ota-analyzer/./node_modules/core-js/internals/native-symbol.js","webpack://ota-analyzer/./node_modules/core-js/internals/native-url.js","webpack://ota-analyzer/./node_modules/core-js/internals/native-weak-map.js","webpack://ota-analyzer/./node_modules/core-js/internals/new-promise-capability.js","webpack://ota-analyzer/./node_modules/core-js/internals/not-a-regexp.js","webpack://ota-analyzer/./node_modules/core-js/internals/object-assign.js","webpack://ota-analyzer/./node_modules/core-js/internals/object-create.js","webpack://ota-analyzer/./node_modules/core-js/internals/object-define-properties.js","webpack://ota-analyzer/./node_modules/core-js/internals/object-define-property.js","webpack://ota-analyzer/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://ota-analyzer/./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack://ota-analyzer/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://ota-analyzer/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://ota-analyzer/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://ota-analyzer/./node_modules/core-js/internals/object-keys-internal.js","webpack://ota-analyzer/./node_modules/core-js/internals/object-keys.js","webpack://ota-analyzer/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://ota-analyzer/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://ota-analyzer/./node_modules/core-js/internals/object-to-array.js","webpack://ota-analyzer/./node_modules/core-js/internals/object-to-string.js","webpack://ota-analyzer/./node_modules/core-js/internals/own-keys.js","webpack://ota-analyzer/./node_modules/core-js/internals/path.js","webpack://ota-analyzer/./node_modules/core-js/internals/perform.js","webpack://ota-analyzer/./node_modules/core-js/internals/promise-resolve.js","webpack://ota-analyzer/./node_modules/core-js/internals/redefine-all.js","webpack://ota-analyzer/./node_modules/core-js/internals/redefine.js","webpack://ota-analyzer/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://ota-analyzer/./node_modules/core-js/internals/regexp-exec.js","webpack://ota-analyzer/./node_modules/core-js/internals/regexp-flags.js","webpack://ota-analyzer/./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://ota-analyzer/./node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack://ota-analyzer/./node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack://ota-analyzer/./node_modules/core-js/internals/require-object-coercible.js","webpack://ota-analyzer/./node_modules/core-js/internals/set-global.js","webpack://ota-analyzer/./node_modules/core-js/internals/set-species.js","webpack://ota-analyzer/./node_modules/core-js/internals/set-to-string-tag.js","webpack://ota-analyzer/./node_modules/core-js/internals/shared-key.js","webpack://ota-analyzer/./node_modules/core-js/internals/shared-store.js","webpack://ota-analyzer/./node_modules/core-js/internals/shared.js","webpack://ota-analyzer/./node_modules/core-js/internals/species-constructor.js","webpack://ota-analyzer/./node_modules/core-js/internals/string-html-forced.js","webpack://ota-analyzer/./node_modules/core-js/internals/string-multibyte.js","webpack://ota-analyzer/./node_modules/core-js/internals/string-punycode-to-ascii.js","webpack://ota-analyzer/./node_modules/core-js/internals/string-repeat.js","webpack://ota-analyzer/./node_modules/core-js/internals/string-trim-forced.js","webpack://ota-analyzer/./node_modules/core-js/internals/string-trim.js","webpack://ota-analyzer/./node_modules/core-js/internals/task.js","webpack://ota-analyzer/./node_modules/core-js/internals/this-number-value.js","webpack://ota-analyzer/./node_modules/core-js/internals/to-absolute-index.js","webpack://ota-analyzer/./node_modules/core-js/internals/to-index.js","webpack://ota-analyzer/./node_modules/core-js/internals/to-indexed-object.js","webpack://ota-analyzer/./node_modules/core-js/internals/to-integer.js","webpack://ota-analyzer/./node_modules/core-js/internals/to-length.js","webpack://ota-analyzer/./node_modules/core-js/internals/to-object.js","webpack://ota-analyzer/./node_modules/core-js/internals/to-offset.js","webpack://ota-analyzer/./node_modules/core-js/internals/to-positive-integer.js","webpack://ota-analyzer/./node_modules/core-js/internals/to-primitive.js","webpack://ota-analyzer/./node_modules/core-js/internals/to-string-tag-support.js","webpack://ota-analyzer/./node_modules/core-js/internals/typed-array-constructor.js","webpack://ota-analyzer/./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","webpack://ota-analyzer/./node_modules/core-js/internals/typed-array-from-species-and-list.js","webpack://ota-analyzer/./node_modules/core-js/internals/typed-array-from.js","webpack://ota-analyzer/./node_modules/core-js/internals/uid.js","webpack://ota-analyzer/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://ota-analyzer/./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack://ota-analyzer/./node_modules/core-js/internals/well-known-symbol.js","webpack://ota-analyzer/./node_modules/core-js/internals/whitespaces.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.array.concat.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.array.fill.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.array.filter.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.array.find-index.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.array.find.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.array.flat-map.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.array.flat.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.array.from.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.array.includes.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.array.iterator.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.array.join.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.array.map.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.array.slice.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.array.sort.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.array.splice.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.array.unscopables.flat-map.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.array.unscopables.flat.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.function.name.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.map.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.math.cbrt.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.number.constructor.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.number.to-fixed.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.object.assign.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.object.entries.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.object.freeze.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.object.get-prototype-of.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.object.keys.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.object.to-string.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.object.values.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.promise.finally.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.promise.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.reflect.construct.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.reflect.get.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.reflect.to-string-tag.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.regexp.constructor.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.regexp.dot-all.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.regexp.exec.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.regexp.sticky.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.regexp.test.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.regexp.to-string.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.set.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.string.ends-with.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.string.fixed.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.string.includes.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.string.iterator.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.string.link.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.string.match.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.string.repeat.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.string.replace.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.string.split.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.string.starts-with.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.string.trim.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.symbol.description.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.symbol.iterator.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.symbol.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.copy-within.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.every.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.fill.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.filter.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.find-index.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.find.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.for-each.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.includes.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.index-of.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.iterator.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.join.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.map.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.reduce.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.reverse.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.set.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.slice.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.some.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.sort.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.subarray.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.to-string.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.typed-array.uint8-array.js","webpack://ota-analyzer/./node_modules/core-js/modules/es.weak-map.js","webpack://ota-analyzer/./node_modules/core-js/modules/esnext.typed-array.at.js","webpack://ota-analyzer/./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack://ota-analyzer/./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://ota-analyzer/./node_modules/core-js/modules/web.url-search-params.js","webpack://ota-analyzer/./node_modules/core-js/modules/web.url.js","webpack://ota-analyzer/./node_modules/core-js/modules/web.url.to-json.js","webpack://ota-analyzer/./node_modules/echarts/lib/animation/basicTrasition.js","webpack://ota-analyzer/./node_modules/echarts/lib/chart/pie/pieLayout.js","webpack://ota-analyzer/./node_modules/echarts/lib/processor/dataFilter.js","webpack://ota-analyzer/./node_modules/echarts/lib/label/labelGuideHelper.js","webpack://ota-analyzer/./node_modules/echarts/lib/chart/pie/labelLayout.js","webpack://ota-analyzer/./node_modules/echarts/lib/chart/helper/pieHelper.js","webpack://ota-analyzer/./node_modules/echarts/lib/chart/pie/PieView.js","webpack://ota-analyzer/./node_modules/echarts/lib/data/SeriesDimensionDefine.js","webpack://ota-analyzer/./node_modules/echarts/lib/data/helper/SeriesDataSchema.js","webpack://ota-analyzer/./node_modules/echarts/lib/data/helper/createDimensions.js","webpack://ota-analyzer/./node_modules/echarts/lib/data/DataDiffer.js","webpack://ota-analyzer/./node_modules/echarts/lib/data/helper/dimensionHelper.js","webpack://ota-analyzer/./node_modules/echarts/lib/data/SeriesData.js","webpack://ota-analyzer/./node_modules/echarts/lib/chart/helper/createSeriesDataSimply.js","webpack://ota-analyzer/./node_modules/echarts/lib/visual/LegendVisualProvider.js","webpack://ota-analyzer/./node_modules/echarts/lib/chart/pie/PieSeries.js","webpack://ota-analyzer/./node_modules/echarts/lib/processor/negativeDataFilter.js","webpack://ota-analyzer/./node_modules/echarts/lib/chart/pie/install.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/legend/LegendModel.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/helper/listComponent.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/legend/LegendView.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/legend/legendFilter.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/legend/legendAction.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/legend/installLegendPlain.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/legend/ScrollableLegendModel.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/legend/ScrollableLegendView.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/legend/scrollableLegendAction.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/legend/installLegendScroll.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/legend/install.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/title/install.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/axisPointer/modelHelper.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/axis/AxisView.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js","webpack://ota-analyzer/./node_modules/echarts/lib/coord/axisHelper.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/axis/AxisBuilder.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/axisPointer/viewHelper.js","webpack://ota-analyzer/./node_modules/echarts/lib/coord/cartesian/cartesianAxisHelper.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/axisPointer/AxisPointerModel.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/axisPointer/globalListener.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/axisPointer/AxisPointerView.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/axisPointer/axisTrigger.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/axisPointer/install.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/tooltip/TooltipModel.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/tooltip/helper.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/tooltip/TooltipHTMLContent.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/tooltip/TooltipRichContent.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/tooltip/TooltipView.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/tooltip/install.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/tooltip/tooltipMarkup.js","webpack://ota-analyzer/./node_modules/echarts/lib/model/globalDefault.js","webpack://ota-analyzer/./node_modules/echarts/lib/model/internalComponentCreator.js","webpack://ota-analyzer/./node_modules/echarts/lib/model/Global.js","webpack://ota-analyzer/./node_modules/echarts/lib/core/ExtensionAPI.js","webpack://ota-analyzer/./node_modules/echarts/lib/core/CoordinateSystem.js","webpack://ota-analyzer/./node_modules/echarts/lib/model/OptionManager.js","webpack://ota-analyzer/./node_modules/echarts/lib/preprocessor/helper/compatStyle.js","webpack://ota-analyzer/./node_modules/echarts/lib/preprocessor/backwardCompat.js","webpack://ota-analyzer/./node_modules/echarts/lib/processor/dataStack.js","webpack://ota-analyzer/./node_modules/echarts/lib/visual/style.js","webpack://ota-analyzer/./node_modules/echarts/lib/loading/default.js","webpack://ota-analyzer/./node_modules/echarts/lib/core/Scheduler.js","webpack://ota-analyzer/./node_modules/echarts/lib/theme/light.js","webpack://ota-analyzer/./node_modules/echarts/lib/theme/dark.js","webpack://ota-analyzer/./node_modules/echarts/lib/util/ECEventProcessor.js","webpack://ota-analyzer/./node_modules/echarts/lib/visual/symbol.js","webpack://ota-analyzer/./node_modules/echarts/lib/visual/helper.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/WeakMap.js","webpack://ota-analyzer/./node_modules/echarts/lib/util/decal.js","webpack://ota-analyzer/./node_modules/echarts/lib/visual/decal.js","webpack://ota-analyzer/./node_modules/echarts/lib/core/lifecycle.js","webpack://ota-analyzer/./node_modules/echarts/lib/core/echarts.js","webpack://ota-analyzer/./node_modules/echarts/lib/core/impl.js","webpack://ota-analyzer/./node_modules/echarts/lib/i18n/langEN.js","webpack://ota-analyzer/./node_modules/echarts/lib/i18n/langZH.js","webpack://ota-analyzer/./node_modules/echarts/lib/core/locale.js","webpack://ota-analyzer/./node_modules/echarts/lib/core/task.js","webpack://ota-analyzer/./node_modules/echarts/lib/data/DataStore.js","webpack://ota-analyzer/./node_modules/echarts/lib/data/Source.js","webpack://ota-analyzer/./node_modules/echarts/lib/data/helper/dataProvider.js","webpack://ota-analyzer/./node_modules/echarts/lib/data/helper/dataValueHelper.js","webpack://ota-analyzer/./node_modules/echarts/lib/data/helper/sourceHelper.js","webpack://ota-analyzer/./node_modules/echarts/lib/data/helper/transform.js","webpack://ota-analyzer/./node_modules/echarts/lib/extension.js","webpack://ota-analyzer/./node_modules/echarts/lib/label/labelLayoutHelper.js","webpack://ota-analyzer/./node_modules/echarts/lib/label/labelStyle.js","webpack://ota-analyzer/./node_modules/echarts/lib/legacy/dataSelectAction.js","webpack://ota-analyzer/./node_modules/echarts/lib/model/Component.js","webpack://ota-analyzer/./node_modules/echarts/lib/model/mixin/areaStyle.js","webpack://ota-analyzer/./node_modules/echarts/lib/model/mixin/textStyle.js","webpack://ota-analyzer/./node_modules/echarts/lib/model/Model.js","webpack://ota-analyzer/./node_modules/echarts/lib/data/helper/sourceManager.js","webpack://ota-analyzer/./node_modules/echarts/lib/component/tooltip/seriesFormatTooltip.js","webpack://ota-analyzer/./node_modules/echarts/lib/model/Series.js","webpack://ota-analyzer/./node_modules/echarts/lib/model/mixin/dataFormat.js","webpack://ota-analyzer/./node_modules/echarts/lib/model/mixin/itemStyle.js","webpack://ota-analyzer/./node_modules/echarts/lib/model/mixin/lineStyle.js","webpack://ota-analyzer/./node_modules/echarts/lib/model/mixin/makeStyleMapper.js","webpack://ota-analyzer/./node_modules/echarts/lib/model/mixin/palette.js","webpack://ota-analyzer/./node_modules/zrender/lib/canvas/Layer.js","webpack://ota-analyzer/./node_modules/zrender/lib/canvas/Painter.js","webpack://ota-analyzer/./node_modules/echarts/lib/renderer/installCanvasRenderer.js","webpack://ota-analyzer/./node_modules/echarts/lib/util/clazz.js","webpack://ota-analyzer/./node_modules/echarts/lib/util/component.js","webpack://ota-analyzer/./node_modules/echarts/lib/util/event.js","webpack://ota-analyzer/./node_modules/echarts/lib/util/format.js","webpack://ota-analyzer/./node_modules/zrender/lib/tool/transformPath.js","webpack://ota-analyzer/./node_modules/zrender/lib/tool/path.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/shape/Ellipse.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/shape/Ring.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/shape/Polygon.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/shape/BezierCurve.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/CompoundPath.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/Gradient.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/LinearGradient.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/RadialGradient.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/IncrementalDisplayable.js","webpack://ota-analyzer/./node_modules/echarts/lib/util/graphic.js","webpack://ota-analyzer/./node_modules/echarts/lib/util/innerStore.js","webpack://ota-analyzer/./node_modules/echarts/lib/util/layout.js","webpack://ota-analyzer/./node_modules/echarts/lib/util/log.js","webpack://ota-analyzer/./node_modules/echarts/lib/util/model.js","webpack://ota-analyzer/./node_modules/echarts/lib/util/number.js","webpack://ota-analyzer/./node_modules/echarts/lib/util/states.js","webpack://ota-analyzer/./node_modules/echarts/lib/util/symbol.js","webpack://ota-analyzer/./node_modules/echarts/lib/util/throttle.js","webpack://ota-analyzer/./node_modules/echarts/lib/util/time.js","webpack://ota-analyzer/./node_modules/echarts/lib/util/types.js","webpack://ota-analyzer/./node_modules/echarts/lib/chart/helper/createRenderPlanner.js","webpack://ota-analyzer/./node_modules/echarts/lib/view/Chart.js","webpack://ota-analyzer/./node_modules/echarts/lib/view/Component.js","webpack://ota-analyzer/./node_modules/echarts/node_modules/tslib/tslib.es6.js","webpack://ota-analyzer/./node_modules/protobufjs/minimal.js","webpack://ota-analyzer/./node_modules/protobufjs/src/index-minimal.js","webpack://ota-analyzer/./node_modules/protobufjs/src/reader.js","webpack://ota-analyzer/./node_modules/protobufjs/src/reader_buffer.js","webpack://ota-analyzer/./node_modules/protobufjs/src/roots.js","webpack://ota-analyzer/./node_modules/protobufjs/src/rpc.js","webpack://ota-analyzer/./node_modules/protobufjs/src/rpc/service.js","webpack://ota-analyzer/./node_modules/protobufjs/src/util/longbits.js","webpack://ota-analyzer/./node_modules/protobufjs/src/util/minimal.js","webpack://ota-analyzer/./node_modules/protobufjs/src/writer.js","webpack://ota-analyzer/./node_modules/protobufjs/src/writer_buffer.js","webpack://ota-analyzer/./node_modules/regenerator-runtime/runtime.js","webpack://ota-analyzer/./node_modules/vue-demi/lib/index.esm.js","webpack://ota-analyzer/./node_modules/resize-detector/esm/index.js","webpack://ota-analyzer/./node_modules/vue-echarts/dist/index.esm.min.js","webpack://ota-analyzer/./node_modules/vue-loader/dist/exportHelper.js","webpack://ota-analyzer/./node_modules/vue-router/dist/vue-router.esm-bundler.js","webpack://ota-analyzer/./node_modules/@vue/devtools-api/lib/esm/env.js","webpack://ota-analyzer/./node_modules/@vue/devtools-api/lib/esm/const.js","webpack://ota-analyzer/./node_modules/@vue/devtools-api/lib/esm/index.js","webpack://ota-analyzer/./node_modules/vuex/dist/vuex.esm-bundler.js","webpack://ota-analyzer/./node_modules/zrender/lib/Element.js","webpack://ota-analyzer/./node_modules/zrender/lib/animation/easing.js","webpack://ota-analyzer/./node_modules/zrender/lib/animation/cubicEasing.js","webpack://ota-analyzer/./node_modules/zrender/lib/animation/Clip.js","webpack://ota-analyzer/./node_modules/zrender/lib/svg/helper.js","webpack://ota-analyzer/./node_modules/zrender/lib/animation/Animator.js","webpack://ota-analyzer/./node_modules/zrender/lib/animation/requestAnimationFrame.js","webpack://ota-analyzer/./node_modules/zrender/lib/canvas/dashStyle.js","webpack://ota-analyzer/./node_modules/zrender/lib/canvas/graphic.js","webpack://ota-analyzer/./node_modules/zrender/lib/canvas/helper.js","webpack://ota-analyzer/./node_modules/zrender/lib/config.js","webpack://ota-analyzer/./node_modules/zrender/lib/contain/text.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/BoundingRect.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/Eventful.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/LRU.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/OrientedBoundingRect.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/bbox.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/PathProxy.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/Point.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/Transformable.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/curve.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/fourPointsTransform.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/dom.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/env.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/event.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/matrix.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/platform.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/timsort.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/util.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/vector.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/Displayable.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/Group.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/Image.js","webpack://ota-analyzer/./node_modules/zrender/lib/contain/line.js","webpack://ota-analyzer/./node_modules/zrender/lib/contain/cubic.js","webpack://ota-analyzer/./node_modules/zrender/lib/contain/quadratic.js","webpack://ota-analyzer/./node_modules/zrender/lib/contain/util.js","webpack://ota-analyzer/./node_modules/zrender/lib/contain/arc.js","webpack://ota-analyzer/./node_modules/zrender/lib/contain/windingLine.js","webpack://ota-analyzer/./node_modules/zrender/lib/contain/path.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/Path.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/TSpan.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/helper/parseText.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/Text.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/constants.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/helper/image.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/helper/smoothBezier.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/helper/poly.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/helper/subPixelOptimize.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/shape/Arc.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/shape/Circle.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/shape/Line.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/shape/Polyline.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/helper/roundRect.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/shape/Rect.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/helper/roundSector.js","webpack://ota-analyzer/./node_modules/zrender/lib/graphic/shape/Sector.js","webpack://ota-analyzer/./node_modules/zrender/lib/tool/color.js","webpack://ota-analyzer/./node_modules/zrender/lib/mixin/Draggable.js","webpack://ota-analyzer/./node_modules/zrender/lib/core/GestureMgr.js","webpack://ota-analyzer/./node_modules/zrender/lib/Handler.js","webpack://ota-analyzer/./node_modules/zrender/lib/Storage.js","webpack://ota-analyzer/./node_modules/zrender/lib/animation/Animation.js","webpack://ota-analyzer/./node_modules/zrender/lib/dom/HandlerProxy.js","webpack://ota-analyzer/./node_modules/zrender/lib/zrender.js","webpack://ota-analyzer/./node_modules/zrender/node_modules/tslib/tslib.es6.js","webpack://ota-analyzer/./node_modules/@zip.js/zip.js/dist/zip.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/createSuper.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/superPropBase.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/get.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/construct.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack://ota-analyzer/../../src/composables/layout.ts","webpack://ota-analyzer/../../../src/components/VApp/VApp.tsx","webpack://ota-analyzer/../../src/composables/dimensions.ts","webpack://ota-analyzer/../../../src/components/VResponsive/VResponsive.tsx","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://ota-analyzer/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://ota-analyzer/../../src/composables/transition.ts","webpack://ota-analyzer/../../src/util/useRender.ts","webpack://ota-analyzer/../../../src/components/VImg/VImg.tsx","webpack://ota-analyzer/../../src/composables/border.ts","webpack://ota-analyzer/../../src/composables/density.ts","webpack://ota-analyzer/../../src/composables/elevation.ts","webpack://ota-analyzer/../../src/composables/rounded.ts","webpack://ota-analyzer/../../src/composables/tag.ts","webpack://ota-analyzer/../../src/composables/color.ts","webpack://ota-analyzer/../../src/composables/proxiedModel.ts","webpack://ota-analyzer/../../../src/components/VAppBar/VAppBar.tsx","webpack://ota-analyzer/../../src/composables/size.ts","webpack://ota-analyzer/../../../src/components/VIcon/VIcon.tsx","webpack://ota-analyzer/../../src/composables/position.ts","webpack://ota-analyzer/../../src/composables/router.tsx","webpack://ota-analyzer/../../src/composables/variant.tsx","webpack://ota-analyzer/../../../src/components/VBtn/VBtn.tsx","webpack://ota-analyzer/../../../src/components/VAppBar/VAppBarNavIcon.tsx","webpack://ota-analyzer/../../../src/components/VAppBar/VAppBarTitle.tsx","webpack://ota-analyzer/../../../src/components/VAvatar/VAvatar.tsx","webpack://ota-analyzer/../../../src/components/VAlert/VAlert.tsx","webpack://ota-analyzer/../../../src/components/VBadge/VBadge.tsx","webpack://ota-analyzer/../../src/util/createSimpleFunctional.ts","webpack://ota-analyzer/../../../src/components/VBanner/VBannerActions.ts","webpack://ota-analyzer/../../../src/components/VBanner/VBannerAvatar.tsx","webpack://ota-analyzer/../../../src/components/VBanner/VBannerContent.ts","webpack://ota-analyzer/../../../src/components/VBanner/VBannerText.ts","webpack://ota-analyzer/../../../src/components/VBanner/VBanner.tsx","webpack://ota-analyzer/../../../src/components/VBottomNavigation/VBottomNavigation.tsx","webpack://ota-analyzer/../../../src/components/VBreadcrumbs/VBreadcrumbsItem.tsx","webpack://ota-analyzer/../../../src/components/VBreadcrumbs/VBreadcrumbsDivider.tsx","webpack://ota-analyzer/../../../src/components/VBreadcrumbs/VBreadcrumbs.tsx","webpack://ota-analyzer/../../../src/components/VCard/VCardActions.ts","webpack://ota-analyzer/../../../src/components/VCard/VCardAvatar.ts","webpack://ota-analyzer/../../../src/components/VCard/VCardHeader.ts","webpack://ota-analyzer/../../../src/components/VCard/VCardHeaderText.ts","webpack://ota-analyzer/../../../src/components/VCard/VCardImg.ts","webpack://ota-analyzer/../../../src/components/VCard/VCardMedia.ts","webpack://ota-analyzer/../../../src/components/VCard/VCardSubtitle.ts","webpack://ota-analyzer/../../../src/components/VCard/VCardText.ts","webpack://ota-analyzer/../../../src/components/VCard/VCardTitle.ts","webpack://ota-analyzer/../../../src/components/VCard/VCard.tsx","webpack://ota-analyzer/../../../src/components/VChip/VChip.tsx","webpack://ota-analyzer/../../../src/components/VCode/index.ts","webpack://ota-analyzer/../../../src/components/VDefaultsProvider/VDefaultsProvider.tsx","webpack://ota-analyzer/../../src/util/easing.ts","webpack://ota-analyzer/../../../src/components/transitions/dialog-transition.tsx","webpack://ota-analyzer/../../src/composables/teleport.ts","webpack://ota-analyzer/../../src/util/getScrollParent.ts","webpack://ota-analyzer/../../../src/components/VOverlay/VOverlay.tsx","webpack://ota-analyzer/../../../src/components/VDialog/VDialog.tsx","webpack://ota-analyzer/../../../src/components/VDivider/VDivider.tsx","webpack://ota-analyzer/../../../src/components/VFooter/VFooter.tsx","webpack://ota-analyzer/../../../src/components/VGrid/VContainer.tsx","webpack://ota-analyzer/../../../src/components/VGrid/VCol.ts","webpack://ota-analyzer/../../../src/components/VGrid/VRow.ts","webpack://ota-analyzer/../../../src/components/VGrid/VSpacer.ts","webpack://ota-analyzer/../../../src/components/VKbd/index.ts","webpack://ota-analyzer/../../src/composables/group.ts","webpack://ota-analyzer/../../../src/components/VItemGroup/VItemGroup.tsx","webpack://ota-analyzer/../../../src/components/VItemGroup/VItem.tsx","webpack://ota-analyzer/../../../src/components/VLayout/VLayout.tsx","webpack://ota-analyzer/../../../src/components/VLayout/VLayoutItem.tsx","webpack://ota-analyzer/../../../src/components/VLocaleProvider/VLocaleProvider.tsx","webpack://ota-analyzer/../../../src/components/VList/VListSubheader.tsx","webpack://ota-analyzer/../../../src/components/VList/VList.tsx","webpack://ota-analyzer/../../../src/components/VList/VListImg.ts","webpack://ota-analyzer/../../../src/components/VList/VListItemAvatar.tsx","webpack://ota-analyzer/../../../src/components/VList/VListItemHeader.ts","webpack://ota-analyzer/../../../src/components/VList/VListItemSubtitle.ts","webpack://ota-analyzer/../../../src/components/VList/VListItemTitle.ts","webpack://ota-analyzer/../../../src/components/VList/VListItem.tsx","webpack://ota-analyzer/../../../src/components/VList/VListItemMedia.tsx","webpack://ota-analyzer/../../../src/components/VLazy/VLazy.tsx","webpack://ota-analyzer/../../src/composables/ssrBoot.ts","webpack://ota-analyzer/../../../src/components/VMain/VMain.tsx","webpack://ota-analyzer/../../../src/components/VNavigationDrawer/VNavigationDrawer.tsx","webpack://ota-analyzer/../../src/composables/resizeObserver.ts","webpack://ota-analyzer/../../src/composables/refs.ts","webpack://ota-analyzer/../../../src/components/VPagination/VPagination.tsx","webpack://ota-analyzer/../../../src/components/VSheet/VSheet.tsx","webpack://ota-analyzer/../../src/composables/intersectionObserver.ts","webpack://ota-analyzer/../../../src/components/VProgressCircular/VProgressCircular.tsx","webpack://ota-analyzer/../../../src/components/VRating/VRating.tsx","webpack://ota-analyzer/../../../src/components/VSystemBar/VSystemBar.tsx","webpack://ota-analyzer/../../../src/components/VThemeProvider/VThemeProvider.tsx","webpack://ota-analyzer/../../../src/components/VTimeline/VTimelineDivider.tsx","webpack://ota-analyzer/../../../src/components/VTimeline/VTimelineItem.tsx","webpack://ota-analyzer/../../../src/components/VTimeline/VTimeline.tsx","webpack://ota-analyzer/../../../src/components/transitions/createTransition.ts","webpack://ota-analyzer/../../../src/components/transitions/expand-transition.ts","webpack://ota-analyzer/../../../src/components/transitions/index.ts","webpack://ota-analyzer/../../src/composables/defaults.ts","webpack://ota-analyzer/../../src/composables/display.ts","webpack://ota-analyzer/../../src/composables/icons.tsx","webpack://ota-analyzer/../../src/locale/en.ts","webpack://ota-analyzer/../../src/composables/locale.ts","webpack://ota-analyzer/../../src/locale/index.ts","webpack://ota-analyzer/../../src/composables/rtl.ts","webpack://ota-analyzer/../../../src/util/color/APCA.ts","webpack://ota-analyzer/../../src/composables/theme.ts","webpack://ota-analyzer/../../src/util/dom.ts","webpack://ota-analyzer/../../../src/directives/click-outside/index.ts","webpack://ota-analyzer/../../../src/directives/resize/index.ts","webpack://ota-analyzer/../../../src/directives/scroll/index.ts","webpack://ota-analyzer/../../../src/directives/touch/index.ts","webpack://ota-analyzer/../../../src/directives/intersect/index.ts","webpack://ota-analyzer/../../../src/directives/ripple/index.ts","webpack://ota-analyzer/../../src/iconsets/mdi.ts","webpack://ota-analyzer/../src/framework.ts","webpack://ota-analyzer/../../../src/util/color/transformSRGB.ts","webpack://ota-analyzer/../../../src/util/color/transformCIELAB.ts","webpack://ota-analyzer/../../src/util/colorUtils.ts","webpack://ota-analyzer/../../src/util/console.ts","webpack://ota-analyzer/../../src/util/defineComponent.tsx","webpack://ota-analyzer/../../src/util/globals.ts","webpack://ota-analyzer/../../src/util/helpers.ts","webpack://ota-analyzer/../../src/util/propsFactory.ts"],"sourcesContent":["\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n","\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n","\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","import { extend, isArray, isMap, isIntegerKey, hasOwn, isSymbol, isObject, hasChanged, makeMap, capitalize, toRawType, def, isFunction, NOOP } from '@vue/shared';\n\nfunction warn(msg, ...args) {\r\n console.warn(`[Vue warn] ${msg}`, ...args);\r\n}\n\nlet activeEffectScope;\r\nclass EffectScope {\r\n constructor(detached = false) {\r\n /**\r\n * @internal\r\n */\r\n this.active = true;\r\n /**\r\n * @internal\r\n */\r\n this.effects = [];\r\n /**\r\n * @internal\r\n */\r\n this.cleanups = [];\r\n if (!detached && activeEffectScope) {\r\n this.parent = activeEffectScope;\r\n this.index =\r\n (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\r\n }\r\n }\r\n run(fn) {\r\n if (this.active) {\r\n const currentEffectScope = activeEffectScope;\r\n try {\r\n activeEffectScope = this;\r\n return fn();\r\n }\r\n finally {\r\n activeEffectScope = currentEffectScope;\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`cannot run an inactive effect scope.`);\r\n }\r\n }\r\n /**\r\n * This should only be called on non-detached scopes\r\n * @internal\r\n */\r\n on() {\r\n activeEffectScope = this;\r\n }\r\n /**\r\n * This should only be called on non-detached scopes\r\n * @internal\r\n */\r\n off() {\r\n activeEffectScope = this.parent;\r\n }\r\n stop(fromParent) {\r\n if (this.active) {\r\n let i, l;\r\n for (i = 0, l = this.effects.length; i < l; i++) {\r\n this.effects[i].stop();\r\n }\r\n for (i = 0, l = this.cleanups.length; i < l; i++) {\r\n this.cleanups[i]();\r\n }\r\n if (this.scopes) {\r\n for (i = 0, l = this.scopes.length; i < l; i++) {\r\n this.scopes[i].stop(true);\r\n }\r\n }\r\n // nested scope, dereference from parent to avoid memory leaks\r\n if (this.parent && !fromParent) {\r\n // optimized O(1) removal\r\n const last = this.parent.scopes.pop();\r\n if (last && last !== this) {\r\n this.parent.scopes[this.index] = last;\r\n last.index = this.index;\r\n }\r\n }\r\n this.active = false;\r\n }\r\n }\r\n}\r\nfunction effectScope(detached) {\r\n return new EffectScope(detached);\r\n}\r\nfunction recordEffectScope(effect, scope = activeEffectScope) {\r\n if (scope && scope.active) {\r\n scope.effects.push(effect);\r\n }\r\n}\r\nfunction getCurrentScope() {\r\n return activeEffectScope;\r\n}\r\nfunction onScopeDispose(fn) {\r\n if (activeEffectScope) {\r\n activeEffectScope.cleanups.push(fn);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`onScopeDispose() is called when there is no active effect scope` +\r\n ` to be associated with.`);\r\n }\r\n}\n\nconst createDep = (effects) => {\r\n const dep = new Set(effects);\r\n dep.w = 0;\r\n dep.n = 0;\r\n return dep;\r\n};\r\nconst wasTracked = (dep) => (dep.w & trackOpBit) > 0;\r\nconst newTracked = (dep) => (dep.n & trackOpBit) > 0;\r\nconst initDepMarkers = ({ deps }) => {\r\n if (deps.length) {\r\n for (let i = 0; i < deps.length; i++) {\r\n deps[i].w |= trackOpBit; // set was tracked\r\n }\r\n }\r\n};\r\nconst finalizeDepMarkers = (effect) => {\r\n const { deps } = effect;\r\n if (deps.length) {\r\n let ptr = 0;\r\n for (let i = 0; i < deps.length; i++) {\r\n const dep = deps[i];\r\n if (wasTracked(dep) && !newTracked(dep)) {\r\n dep.delete(effect);\r\n }\r\n else {\r\n deps[ptr++] = dep;\r\n }\r\n // clear bits\r\n dep.w &= ~trackOpBit;\r\n dep.n &= ~trackOpBit;\r\n }\r\n deps.length = ptr;\r\n }\r\n};\n\nconst targetMap = new WeakMap();\r\n// The number of effects currently being tracked recursively.\r\nlet effectTrackDepth = 0;\r\nlet trackOpBit = 1;\r\n/**\r\n * The bitwise track markers support at most 30 levels of recursion.\r\n * This value is chosen to enable modern JS engines to use a SMI on all platforms.\r\n * When recursion depth is greater, fall back to using a full cleanup.\r\n */\r\nconst maxMarkerBits = 30;\r\nlet activeEffect;\r\nconst ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'iterate' : '');\r\nconst MAP_KEY_ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'Map key iterate' : '');\r\nclass ReactiveEffect {\r\n constructor(fn, scheduler = null, scope) {\r\n this.fn = fn;\r\n this.scheduler = scheduler;\r\n this.active = true;\r\n this.deps = [];\r\n this.parent = undefined;\r\n recordEffectScope(this, scope);\r\n }\r\n run() {\r\n if (!this.active) {\r\n return this.fn();\r\n }\r\n let parent = activeEffect;\r\n let lastShouldTrack = shouldTrack;\r\n while (parent) {\r\n if (parent === this) {\r\n return;\r\n }\r\n parent = parent.parent;\r\n }\r\n try {\r\n this.parent = activeEffect;\r\n activeEffect = this;\r\n shouldTrack = true;\r\n trackOpBit = 1 << ++effectTrackDepth;\r\n if (effectTrackDepth <= maxMarkerBits) {\r\n initDepMarkers(this);\r\n }\r\n else {\r\n cleanupEffect(this);\r\n }\r\n return this.fn();\r\n }\r\n finally {\r\n if (effectTrackDepth <= maxMarkerBits) {\r\n finalizeDepMarkers(this);\r\n }\r\n trackOpBit = 1 << --effectTrackDepth;\r\n activeEffect = this.parent;\r\n shouldTrack = lastShouldTrack;\r\n this.parent = undefined;\r\n if (this.deferStop) {\r\n this.stop();\r\n }\r\n }\r\n }\r\n stop() {\r\n // stopped while running itself - defer the cleanup\r\n if (activeEffect === this) {\r\n this.deferStop = true;\r\n }\r\n else if (this.active) {\r\n cleanupEffect(this);\r\n if (this.onStop) {\r\n this.onStop();\r\n }\r\n this.active = false;\r\n }\r\n }\r\n}\r\nfunction cleanupEffect(effect) {\r\n const { deps } = effect;\r\n if (deps.length) {\r\n for (let i = 0; i < deps.length; i++) {\r\n deps[i].delete(effect);\r\n }\r\n deps.length = 0;\r\n }\r\n}\r\nfunction effect(fn, options) {\r\n if (fn.effect) {\r\n fn = fn.effect.fn;\r\n }\r\n const _effect = new ReactiveEffect(fn);\r\n if (options) {\r\n extend(_effect, options);\r\n if (options.scope)\r\n recordEffectScope(_effect, options.scope);\r\n }\r\n if (!options || !options.lazy) {\r\n _effect.run();\r\n }\r\n const runner = _effect.run.bind(_effect);\r\n runner.effect = _effect;\r\n return runner;\r\n}\r\nfunction stop(runner) {\r\n runner.effect.stop();\r\n}\r\nlet shouldTrack = true;\r\nconst trackStack = [];\r\nfunction pauseTracking() {\r\n trackStack.push(shouldTrack);\r\n shouldTrack = false;\r\n}\r\nfunction enableTracking() {\r\n trackStack.push(shouldTrack);\r\n shouldTrack = true;\r\n}\r\nfunction resetTracking() {\r\n const last = trackStack.pop();\r\n shouldTrack = last === undefined ? true : last;\r\n}\r\nfunction track(target, type, key) {\r\n if (shouldTrack && activeEffect) {\r\n let depsMap = targetMap.get(target);\r\n if (!depsMap) {\r\n targetMap.set(target, (depsMap = new Map()));\r\n }\r\n let dep = depsMap.get(key);\r\n if (!dep) {\r\n depsMap.set(key, (dep = createDep()));\r\n }\r\n const eventInfo = (process.env.NODE_ENV !== 'production')\r\n ? { effect: activeEffect, target, type, key }\r\n : undefined;\r\n trackEffects(dep, eventInfo);\r\n }\r\n}\r\nfunction trackEffects(dep, debuggerEventExtraInfo) {\r\n let shouldTrack = false;\r\n if (effectTrackDepth <= maxMarkerBits) {\r\n if (!newTracked(dep)) {\r\n dep.n |= trackOpBit; // set newly tracked\r\n shouldTrack = !wasTracked(dep);\r\n }\r\n }\r\n else {\r\n // Full cleanup mode.\r\n shouldTrack = !dep.has(activeEffect);\r\n }\r\n if (shouldTrack) {\r\n dep.add(activeEffect);\r\n activeEffect.deps.push(dep);\r\n if ((process.env.NODE_ENV !== 'production') && activeEffect.onTrack) {\r\n activeEffect.onTrack(Object.assign({ effect: activeEffect }, debuggerEventExtraInfo));\r\n }\r\n }\r\n}\r\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\r\n const depsMap = targetMap.get(target);\r\n if (!depsMap) {\r\n // never been tracked\r\n return;\r\n }\r\n let deps = [];\r\n if (type === \"clear\" /* CLEAR */) {\r\n // collection being cleared\r\n // trigger all effects for target\r\n deps = [...depsMap.values()];\r\n }\r\n else if (key === 'length' && isArray(target)) {\r\n depsMap.forEach((dep, key) => {\r\n if (key === 'length' || key >= newValue) {\r\n deps.push(dep);\r\n }\r\n });\r\n }\r\n else {\r\n // schedule runs for SET | ADD | DELETE\r\n if (key !== void 0) {\r\n deps.push(depsMap.get(key));\r\n }\r\n // also run for iteration key on ADD | DELETE | Map.SET\r\n switch (type) {\r\n case \"add\" /* ADD */:\r\n if (!isArray(target)) {\r\n deps.push(depsMap.get(ITERATE_KEY));\r\n if (isMap(target)) {\r\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\r\n }\r\n }\r\n else if (isIntegerKey(key)) {\r\n // new index added to array -> length changes\r\n deps.push(depsMap.get('length'));\r\n }\r\n break;\r\n case \"delete\" /* DELETE */:\r\n if (!isArray(target)) {\r\n deps.push(depsMap.get(ITERATE_KEY));\r\n if (isMap(target)) {\r\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\r\n }\r\n }\r\n break;\r\n case \"set\" /* SET */:\r\n if (isMap(target)) {\r\n deps.push(depsMap.get(ITERATE_KEY));\r\n }\r\n break;\r\n }\r\n }\r\n const eventInfo = (process.env.NODE_ENV !== 'production')\r\n ? { target, type, key, newValue, oldValue, oldTarget }\r\n : undefined;\r\n if (deps.length === 1) {\r\n if (deps[0]) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n triggerEffects(deps[0], eventInfo);\r\n }\r\n else {\r\n triggerEffects(deps[0]);\r\n }\r\n }\r\n }\r\n else {\r\n const effects = [];\r\n for (const dep of deps) {\r\n if (dep) {\r\n effects.push(...dep);\r\n }\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n triggerEffects(createDep(effects), eventInfo);\r\n }\r\n else {\r\n triggerEffects(createDep(effects));\r\n }\r\n }\r\n}\r\nfunction triggerEffects(dep, debuggerEventExtraInfo) {\r\n // spread into array for stabilization\r\n const effects = isArray(dep) ? dep : [...dep];\r\n for (const effect of effects) {\r\n if (effect.computed) {\r\n triggerEffect(effect, debuggerEventExtraInfo);\r\n }\r\n }\r\n for (const effect of effects) {\r\n if (!effect.computed) {\r\n triggerEffect(effect, debuggerEventExtraInfo);\r\n }\r\n }\r\n}\r\nfunction triggerEffect(effect, debuggerEventExtraInfo) {\r\n if (effect !== activeEffect || effect.allowRecurse) {\r\n if ((process.env.NODE_ENV !== 'production') && effect.onTrigger) {\r\n effect.onTrigger(extend({ effect }, debuggerEventExtraInfo));\r\n }\r\n if (effect.scheduler) {\r\n effect.scheduler();\r\n }\r\n else {\r\n effect.run();\r\n }\r\n }\r\n}\n\nconst isNonTrackableKeys = /*#__PURE__*/ makeMap(`__proto__,__v_isRef,__isVue`);\r\nconst builtInSymbols = new Set(\r\n/*#__PURE__*/\r\nObject.getOwnPropertyNames(Symbol)\r\n // ios10.x Object.getOwnPropertyNames(Symbol) can enumerate 'arguments' and 'caller'\r\n // but accessing them on Symbol leads to TypeError because Symbol is a strict mode\r\n // function\r\n .filter(key => key !== 'arguments' && key !== 'caller')\r\n .map(key => Symbol[key])\r\n .filter(isSymbol));\r\nconst get = /*#__PURE__*/ createGetter();\r\nconst shallowGet = /*#__PURE__*/ createGetter(false, true);\r\nconst readonlyGet = /*#__PURE__*/ createGetter(true);\r\nconst shallowReadonlyGet = /*#__PURE__*/ createGetter(true, true);\r\nconst arrayInstrumentations = /*#__PURE__*/ createArrayInstrumentations();\r\nfunction createArrayInstrumentations() {\r\n const instrumentations = {};\r\n ['includes', 'indexOf', 'lastIndexOf'].forEach(key => {\r\n instrumentations[key] = function (...args) {\r\n const arr = toRaw(this);\r\n for (let i = 0, l = this.length; i < l; i++) {\r\n track(arr, \"get\" /* GET */, i + '');\r\n }\r\n // we run the method using the original args first (which may be reactive)\r\n const res = arr[key](...args);\r\n if (res === -1 || res === false) {\r\n // if that didn't work, run it again using raw values.\r\n return arr[key](...args.map(toRaw));\r\n }\r\n else {\r\n return res;\r\n }\r\n };\r\n });\r\n ['push', 'pop', 'shift', 'unshift', 'splice'].forEach(key => {\r\n instrumentations[key] = function (...args) {\r\n pauseTracking();\r\n const res = toRaw(this)[key].apply(this, args);\r\n resetTracking();\r\n return res;\r\n };\r\n });\r\n return instrumentations;\r\n}\r\nfunction createGetter(isReadonly = false, shallow = false) {\r\n return function get(target, key, receiver) {\r\n if (key === \"__v_isReactive\" /* IS_REACTIVE */) {\r\n return !isReadonly;\r\n }\r\n else if (key === \"__v_isReadonly\" /* IS_READONLY */) {\r\n return isReadonly;\r\n }\r\n else if (key === \"__v_isShallow\" /* IS_SHALLOW */) {\r\n return shallow;\r\n }\r\n else if (key === \"__v_raw\" /* RAW */ &&\r\n receiver ===\r\n (isReadonly\r\n ? shallow\r\n ? shallowReadonlyMap\r\n : readonlyMap\r\n : shallow\r\n ? shallowReactiveMap\r\n : reactiveMap).get(target)) {\r\n return target;\r\n }\r\n const targetIsArray = isArray(target);\r\n if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) {\r\n return Reflect.get(arrayInstrumentations, key, receiver);\r\n }\r\n const res = Reflect.get(target, key, receiver);\r\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\r\n return res;\r\n }\r\n if (!isReadonly) {\r\n track(target, \"get\" /* GET */, key);\r\n }\r\n if (shallow) {\r\n return res;\r\n }\r\n if (isRef(res)) {\r\n // ref unwrapping - skip unwrap for Array + integer key.\r\n return targetIsArray && isIntegerKey(key) ? res : res.value;\r\n }\r\n if (isObject(res)) {\r\n // Convert returned value into a proxy as well. we do the isObject check\r\n // here to avoid invalid value warning. Also need to lazy access readonly\r\n // and reactive here to avoid circular dependency.\r\n return isReadonly ? readonly(res) : reactive(res);\r\n }\r\n return res;\r\n };\r\n}\r\nconst set = /*#__PURE__*/ createSetter();\r\nconst shallowSet = /*#__PURE__*/ createSetter(true);\r\nfunction createSetter(shallow = false) {\r\n return function set(target, key, value, receiver) {\r\n let oldValue = target[key];\r\n if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {\r\n return false;\r\n }\r\n if (!shallow && !isReadonly(value)) {\r\n if (!isShallow(value)) {\r\n value = toRaw(value);\r\n oldValue = toRaw(oldValue);\r\n }\r\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\r\n oldValue.value = value;\r\n return true;\r\n }\r\n }\r\n const hadKey = isArray(target) && isIntegerKey(key)\r\n ? Number(key) < target.length\r\n : hasOwn(target, key);\r\n const result = Reflect.set(target, key, value, receiver);\r\n // don't trigger if target is something up in the prototype chain of original\r\n if (target === toRaw(receiver)) {\r\n if (!hadKey) {\r\n trigger(target, \"add\" /* ADD */, key, value);\r\n }\r\n else if (hasChanged(value, oldValue)) {\r\n trigger(target, \"set\" /* SET */, key, value, oldValue);\r\n }\r\n }\r\n return result;\r\n };\r\n}\r\nfunction deleteProperty(target, key) {\r\n const hadKey = hasOwn(target, key);\r\n const oldValue = target[key];\r\n const result = Reflect.deleteProperty(target, key);\r\n if (result && hadKey) {\r\n trigger(target, \"delete\" /* DELETE */, key, undefined, oldValue);\r\n }\r\n return result;\r\n}\r\nfunction has(target, key) {\r\n const result = Reflect.has(target, key);\r\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\r\n track(target, \"has\" /* HAS */, key);\r\n }\r\n return result;\r\n}\r\nfunction ownKeys(target) {\r\n track(target, \"iterate\" /* ITERATE */, isArray(target) ? 'length' : ITERATE_KEY);\r\n return Reflect.ownKeys(target);\r\n}\r\nconst mutableHandlers = {\r\n get,\r\n set,\r\n deleteProperty,\r\n has,\r\n ownKeys\r\n};\r\nconst readonlyHandlers = {\r\n get: readonlyGet,\r\n set(target, key) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Set operation on key \"${String(key)}\" failed: target is readonly.`, target);\r\n }\r\n return true;\r\n },\r\n deleteProperty(target, key) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Delete operation on key \"${String(key)}\" failed: target is readonly.`, target);\r\n }\r\n return true;\r\n }\r\n};\r\nconst shallowReactiveHandlers = /*#__PURE__*/ extend({}, mutableHandlers, {\r\n get: shallowGet,\r\n set: shallowSet\r\n});\r\n// Props handlers are special in the sense that it should not unwrap top-level\r\n// refs (in order to allow refs to be explicitly passed down), but should\r\n// retain the reactivity of the normal readonly object.\r\nconst shallowReadonlyHandlers = /*#__PURE__*/ extend({}, readonlyHandlers, {\r\n get: shallowReadonlyGet\r\n});\n\nconst toShallow = (value) => value;\r\nconst getProto = (v) => Reflect.getPrototypeOf(v);\r\nfunction get$1(target, key, isReadonly = false, isShallow = false) {\r\n // #1772: readonly(reactive(Map)) should return readonly + reactive version\r\n // of the value\r\n target = target[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const rawKey = toRaw(key);\r\n if (!isReadonly) {\r\n if (key !== rawKey) {\r\n track(rawTarget, \"get\" /* GET */, key);\r\n }\r\n track(rawTarget, \"get\" /* GET */, rawKey);\r\n }\r\n const { has } = getProto(rawTarget);\r\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\r\n if (has.call(rawTarget, key)) {\r\n return wrap(target.get(key));\r\n }\r\n else if (has.call(rawTarget, rawKey)) {\r\n return wrap(target.get(rawKey));\r\n }\r\n else if (target !== rawTarget) {\r\n // #3602 readonly(reactive(Map))\r\n // ensure that the nested reactive `Map` can do tracking for itself\r\n target.get(key);\r\n }\r\n}\r\nfunction has$1(key, isReadonly = false) {\r\n const target = this[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const rawKey = toRaw(key);\r\n if (!isReadonly) {\r\n if (key !== rawKey) {\r\n track(rawTarget, \"has\" /* HAS */, key);\r\n }\r\n track(rawTarget, \"has\" /* HAS */, rawKey);\r\n }\r\n return key === rawKey\r\n ? target.has(key)\r\n : target.has(key) || target.has(rawKey);\r\n}\r\nfunction size(target, isReadonly = false) {\r\n target = target[\"__v_raw\" /* RAW */];\r\n !isReadonly && track(toRaw(target), \"iterate\" /* ITERATE */, ITERATE_KEY);\r\n return Reflect.get(target, 'size', target);\r\n}\r\nfunction add(value) {\r\n value = toRaw(value);\r\n const target = toRaw(this);\r\n const proto = getProto(target);\r\n const hadKey = proto.has.call(target, value);\r\n if (!hadKey) {\r\n target.add(value);\r\n trigger(target, \"add\" /* ADD */, value, value);\r\n }\r\n return this;\r\n}\r\nfunction set$1(key, value) {\r\n value = toRaw(value);\r\n const target = toRaw(this);\r\n const { has, get } = getProto(target);\r\n let hadKey = has.call(target, key);\r\n if (!hadKey) {\r\n key = toRaw(key);\r\n hadKey = has.call(target, key);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n checkIdentityKeys(target, has, key);\r\n }\r\n const oldValue = get.call(target, key);\r\n target.set(key, value);\r\n if (!hadKey) {\r\n trigger(target, \"add\" /* ADD */, key, value);\r\n }\r\n else if (hasChanged(value, oldValue)) {\r\n trigger(target, \"set\" /* SET */, key, value, oldValue);\r\n }\r\n return this;\r\n}\r\nfunction deleteEntry(key) {\r\n const target = toRaw(this);\r\n const { has, get } = getProto(target);\r\n let hadKey = has.call(target, key);\r\n if (!hadKey) {\r\n key = toRaw(key);\r\n hadKey = has.call(target, key);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n checkIdentityKeys(target, has, key);\r\n }\r\n const oldValue = get ? get.call(target, key) : undefined;\r\n // forward the operation before queueing reactions\r\n const result = target.delete(key);\r\n if (hadKey) {\r\n trigger(target, \"delete\" /* DELETE */, key, undefined, oldValue);\r\n }\r\n return result;\r\n}\r\nfunction clear() {\r\n const target = toRaw(this);\r\n const hadItems = target.size !== 0;\r\n const oldTarget = (process.env.NODE_ENV !== 'production')\r\n ? isMap(target)\r\n ? new Map(target)\r\n : new Set(target)\r\n : undefined;\r\n // forward the operation before queueing reactions\r\n const result = target.clear();\r\n if (hadItems) {\r\n trigger(target, \"clear\" /* CLEAR */, undefined, undefined, oldTarget);\r\n }\r\n return result;\r\n}\r\nfunction createForEach(isReadonly, isShallow) {\r\n return function forEach(callback, thisArg) {\r\n const observed = this;\r\n const target = observed[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\r\n !isReadonly && track(rawTarget, \"iterate\" /* ITERATE */, ITERATE_KEY);\r\n return target.forEach((value, key) => {\r\n // important: make sure the callback is\r\n // 1. invoked with the reactive map as `this` and 3rd arg\r\n // 2. the value received should be a corresponding reactive/readonly.\r\n return callback.call(thisArg, wrap(value), wrap(key), observed);\r\n });\r\n };\r\n}\r\nfunction createIterableMethod(method, isReadonly, isShallow) {\r\n return function (...args) {\r\n const target = this[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const targetIsMap = isMap(rawTarget);\r\n const isPair = method === 'entries' || (method === Symbol.iterator && targetIsMap);\r\n const isKeyOnly = method === 'keys' && targetIsMap;\r\n const innerIterator = target[method](...args);\r\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\r\n !isReadonly &&\r\n track(rawTarget, \"iterate\" /* ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);\r\n // return a wrapped iterator which returns observed versions of the\r\n // values emitted from the real iterator\r\n return {\r\n // iterator protocol\r\n next() {\r\n const { value, done } = innerIterator.next();\r\n return done\r\n ? { value, done }\r\n : {\r\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\r\n done\r\n };\r\n },\r\n // iterable protocol\r\n [Symbol.iterator]() {\r\n return this;\r\n }\r\n };\r\n };\r\n}\r\nfunction createReadonlyMethod(type) {\r\n return function (...args) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\r\n console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));\r\n }\r\n return type === \"delete\" /* DELETE */ ? false : this;\r\n };\r\n}\r\nfunction createInstrumentations() {\r\n const mutableInstrumentations = {\r\n get(key) {\r\n return get$1(this, key);\r\n },\r\n get size() {\r\n return size(this);\r\n },\r\n has: has$1,\r\n add,\r\n set: set$1,\r\n delete: deleteEntry,\r\n clear,\r\n forEach: createForEach(false, false)\r\n };\r\n const shallowInstrumentations = {\r\n get(key) {\r\n return get$1(this, key, false, true);\r\n },\r\n get size() {\r\n return size(this);\r\n },\r\n has: has$1,\r\n add,\r\n set: set$1,\r\n delete: deleteEntry,\r\n clear,\r\n forEach: createForEach(false, true)\r\n };\r\n const readonlyInstrumentations = {\r\n get(key) {\r\n return get$1(this, key, true);\r\n },\r\n get size() {\r\n return size(this, true);\r\n },\r\n has(key) {\r\n return has$1.call(this, key, true);\r\n },\r\n add: createReadonlyMethod(\"add\" /* ADD */),\r\n set: createReadonlyMethod(\"set\" /* SET */),\r\n delete: createReadonlyMethod(\"delete\" /* DELETE */),\r\n clear: createReadonlyMethod(\"clear\" /* CLEAR */),\r\n forEach: createForEach(true, false)\r\n };\r\n const shallowReadonlyInstrumentations = {\r\n get(key) {\r\n return get$1(this, key, true, true);\r\n },\r\n get size() {\r\n return size(this, true);\r\n },\r\n has(key) {\r\n return has$1.call(this, key, true);\r\n },\r\n add: createReadonlyMethod(\"add\" /* ADD */),\r\n set: createReadonlyMethod(\"set\" /* SET */),\r\n delete: createReadonlyMethod(\"delete\" /* DELETE */),\r\n clear: createReadonlyMethod(\"clear\" /* CLEAR */),\r\n forEach: createForEach(true, true)\r\n };\r\n const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator];\r\n iteratorMethods.forEach(method => {\r\n mutableInstrumentations[method] = createIterableMethod(method, false, false);\r\n readonlyInstrumentations[method] = createIterableMethod(method, true, false);\r\n shallowInstrumentations[method] = createIterableMethod(method, false, true);\r\n shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true);\r\n });\r\n return [\r\n mutableInstrumentations,\r\n readonlyInstrumentations,\r\n shallowInstrumentations,\r\n shallowReadonlyInstrumentations\r\n ];\r\n}\r\nconst [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* #__PURE__*/ createInstrumentations();\r\nfunction createInstrumentationGetter(isReadonly, shallow) {\r\n const instrumentations = shallow\r\n ? isReadonly\r\n ? shallowReadonlyInstrumentations\r\n : shallowInstrumentations\r\n : isReadonly\r\n ? readonlyInstrumentations\r\n : mutableInstrumentations;\r\n return (target, key, receiver) => {\r\n if (key === \"__v_isReactive\" /* IS_REACTIVE */) {\r\n return !isReadonly;\r\n }\r\n else if (key === \"__v_isReadonly\" /* IS_READONLY */) {\r\n return isReadonly;\r\n }\r\n else if (key === \"__v_raw\" /* RAW */) {\r\n return target;\r\n }\r\n return Reflect.get(hasOwn(instrumentations, key) && key in target\r\n ? instrumentations\r\n : target, key, receiver);\r\n };\r\n}\r\nconst mutableCollectionHandlers = {\r\n get: /*#__PURE__*/ createInstrumentationGetter(false, false)\r\n};\r\nconst shallowCollectionHandlers = {\r\n get: /*#__PURE__*/ createInstrumentationGetter(false, true)\r\n};\r\nconst readonlyCollectionHandlers = {\r\n get: /*#__PURE__*/ createInstrumentationGetter(true, false)\r\n};\r\nconst shallowReadonlyCollectionHandlers = {\r\n get: /*#__PURE__*/ createInstrumentationGetter(true, true)\r\n};\r\nfunction checkIdentityKeys(target, has, key) {\r\n const rawKey = toRaw(key);\r\n if (rawKey !== key && has.call(target, rawKey)) {\r\n const type = toRawType(target);\r\n console.warn(`Reactive ${type} contains both the raw and reactive ` +\r\n `versions of the same object${type === `Map` ? ` as keys` : ``}, ` +\r\n `which can lead to inconsistencies. ` +\r\n `Avoid differentiating between the raw and reactive versions ` +\r\n `of an object and only use the reactive version if possible.`);\r\n }\r\n}\n\nconst reactiveMap = new WeakMap();\r\nconst shallowReactiveMap = new WeakMap();\r\nconst readonlyMap = new WeakMap();\r\nconst shallowReadonlyMap = new WeakMap();\r\nfunction targetTypeMap(rawType) {\r\n switch (rawType) {\r\n case 'Object':\r\n case 'Array':\r\n return 1 /* COMMON */;\r\n case 'Map':\r\n case 'Set':\r\n case 'WeakMap':\r\n case 'WeakSet':\r\n return 2 /* COLLECTION */;\r\n default:\r\n return 0 /* INVALID */;\r\n }\r\n}\r\nfunction getTargetType(value) {\r\n return value[\"__v_skip\" /* SKIP */] || !Object.isExtensible(value)\r\n ? 0 /* INVALID */\r\n : targetTypeMap(toRawType(value));\r\n}\r\nfunction reactive(target) {\r\n // if trying to observe a readonly proxy, return the readonly version.\r\n if (isReadonly(target)) {\r\n return target;\r\n }\r\n return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);\r\n}\r\n/**\r\n * Return a shallowly-reactive copy of the original object, where only the root\r\n * level properties are reactive. It also does not auto-unwrap refs (even at the\r\n * root level).\r\n */\r\nfunction shallowReactive(target) {\r\n return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);\r\n}\r\n/**\r\n * Creates a readonly copy of the original object. Note the returned copy is not\r\n * made reactive, but `readonly` can be called on an already reactive object.\r\n */\r\nfunction readonly(target) {\r\n return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);\r\n}\r\n/**\r\n * Returns a reactive-copy of the original object, where only the root level\r\n * properties are readonly, and does NOT unwrap refs nor recursively convert\r\n * returned properties.\r\n * This is used for creating the props proxy object for stateful components.\r\n */\r\nfunction shallowReadonly(target) {\r\n return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap);\r\n}\r\nfunction createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {\r\n if (!isObject(target)) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n console.warn(`value cannot be made reactive: ${String(target)}`);\r\n }\r\n return target;\r\n }\r\n // target is already a Proxy, return it.\r\n // exception: calling readonly() on a reactive object\r\n if (target[\"__v_raw\" /* RAW */] &&\r\n !(isReadonly && target[\"__v_isReactive\" /* IS_REACTIVE */])) {\r\n return target;\r\n }\r\n // target already has corresponding Proxy\r\n const existingProxy = proxyMap.get(target);\r\n if (existingProxy) {\r\n return existingProxy;\r\n }\r\n // only specific value types can be observed.\r\n const targetType = getTargetType(target);\r\n if (targetType === 0 /* INVALID */) {\r\n return target;\r\n }\r\n const proxy = new Proxy(target, targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers);\r\n proxyMap.set(target, proxy);\r\n return proxy;\r\n}\r\nfunction isReactive(value) {\r\n if (isReadonly(value)) {\r\n return isReactive(value[\"__v_raw\" /* RAW */]);\r\n }\r\n return !!(value && value[\"__v_isReactive\" /* IS_REACTIVE */]);\r\n}\r\nfunction isReadonly(value) {\r\n return !!(value && value[\"__v_isReadonly\" /* IS_READONLY */]);\r\n}\r\nfunction isShallow(value) {\r\n return !!(value && value[\"__v_isShallow\" /* IS_SHALLOW */]);\r\n}\r\nfunction isProxy(value) {\r\n return isReactive(value) || isReadonly(value);\r\n}\r\nfunction toRaw(observed) {\r\n const raw = observed && observed[\"__v_raw\" /* RAW */];\r\n return raw ? toRaw(raw) : observed;\r\n}\r\nfunction markRaw(value) {\r\n def(value, \"__v_skip\" /* SKIP */, true);\r\n return value;\r\n}\r\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\r\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nfunction trackRefValue(ref) {\r\n if (shouldTrack && activeEffect) {\r\n ref = toRaw(ref);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n trackEffects(ref.dep || (ref.dep = createDep()), {\r\n target: ref,\r\n type: \"get\" /* GET */,\r\n key: 'value'\r\n });\r\n }\r\n else {\r\n trackEffects(ref.dep || (ref.dep = createDep()));\r\n }\r\n }\r\n}\r\nfunction triggerRefValue(ref, newVal) {\r\n ref = toRaw(ref);\r\n if (ref.dep) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n triggerEffects(ref.dep, {\r\n target: ref,\r\n type: \"set\" /* SET */,\r\n key: 'value',\r\n newValue: newVal\r\n });\r\n }\r\n else {\r\n triggerEffects(ref.dep);\r\n }\r\n }\r\n}\r\nfunction isRef(r) {\r\n return !!(r && r.__v_isRef === true);\r\n}\r\nfunction ref(value) {\r\n return createRef(value, false);\r\n}\r\nfunction shallowRef(value) {\r\n return createRef(value, true);\r\n}\r\nfunction createRef(rawValue, shallow) {\r\n if (isRef(rawValue)) {\r\n return rawValue;\r\n }\r\n return new RefImpl(rawValue, shallow);\r\n}\r\nclass RefImpl {\r\n constructor(value, __v_isShallow) {\r\n this.__v_isShallow = __v_isShallow;\r\n this.dep = undefined;\r\n this.__v_isRef = true;\r\n this._rawValue = __v_isShallow ? value : toRaw(value);\r\n this._value = __v_isShallow ? value : toReactive(value);\r\n }\r\n get value() {\r\n trackRefValue(this);\r\n return this._value;\r\n }\r\n set value(newVal) {\r\n newVal = this.__v_isShallow ? newVal : toRaw(newVal);\r\n if (hasChanged(newVal, this._rawValue)) {\r\n this._rawValue = newVal;\r\n this._value = this.__v_isShallow ? newVal : toReactive(newVal);\r\n triggerRefValue(this, newVal);\r\n }\r\n }\r\n}\r\nfunction triggerRef(ref) {\r\n triggerRefValue(ref, (process.env.NODE_ENV !== 'production') ? ref.value : void 0);\r\n}\r\nfunction unref(ref) {\r\n return isRef(ref) ? ref.value : ref;\r\n}\r\nconst shallowUnwrapHandlers = {\r\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\r\n set: (target, key, value, receiver) => {\r\n const oldValue = target[key];\r\n if (isRef(oldValue) && !isRef(value)) {\r\n oldValue.value = value;\r\n return true;\r\n }\r\n else {\r\n return Reflect.set(target, key, value, receiver);\r\n }\r\n }\r\n};\r\nfunction proxyRefs(objectWithRefs) {\r\n return isReactive(objectWithRefs)\r\n ? objectWithRefs\r\n : new Proxy(objectWithRefs, shallowUnwrapHandlers);\r\n}\r\nclass CustomRefImpl {\r\n constructor(factory) {\r\n this.dep = undefined;\r\n this.__v_isRef = true;\r\n const { get, set } = factory(() => trackRefValue(this), () => triggerRefValue(this));\r\n this._get = get;\r\n this._set = set;\r\n }\r\n get value() {\r\n return this._get();\r\n }\r\n set value(newVal) {\r\n this._set(newVal);\r\n }\r\n}\r\nfunction customRef(factory) {\r\n return new CustomRefImpl(factory);\r\n}\r\nfunction toRefs(object) {\r\n if ((process.env.NODE_ENV !== 'production') && !isProxy(object)) {\r\n console.warn(`toRefs() expects a reactive object but received a plain one.`);\r\n }\r\n const ret = isArray(object) ? new Array(object.length) : {};\r\n for (const key in object) {\r\n ret[key] = toRef(object, key);\r\n }\r\n return ret;\r\n}\r\nclass ObjectRefImpl {\r\n constructor(_object, _key, _defaultValue) {\r\n this._object = _object;\r\n this._key = _key;\r\n this._defaultValue = _defaultValue;\r\n this.__v_isRef = true;\r\n }\r\n get value() {\r\n const val = this._object[this._key];\r\n return val === undefined ? this._defaultValue : val;\r\n }\r\n set value(newVal) {\r\n this._object[this._key] = newVal;\r\n }\r\n}\r\nfunction toRef(object, key, defaultValue) {\r\n const val = object[key];\r\n return isRef(val)\r\n ? val\r\n : new ObjectRefImpl(object, key, defaultValue);\r\n}\n\nclass ComputedRefImpl {\r\n constructor(getter, _setter, isReadonly, isSSR) {\r\n this._setter = _setter;\r\n this.dep = undefined;\r\n this.__v_isRef = true;\r\n this._dirty = true;\r\n this.effect = new ReactiveEffect(getter, () => {\r\n if (!this._dirty) {\r\n this._dirty = true;\r\n triggerRefValue(this);\r\n }\r\n });\r\n this.effect.computed = this;\r\n this.effect.active = this._cacheable = !isSSR;\r\n this[\"__v_isReadonly\" /* IS_READONLY */] = isReadonly;\r\n }\r\n get value() {\r\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\r\n const self = toRaw(this);\r\n trackRefValue(self);\r\n if (self._dirty || !self._cacheable) {\r\n self._dirty = false;\r\n self._value = self.effect.run();\r\n }\r\n return self._value;\r\n }\r\n set value(newValue) {\r\n this._setter(newValue);\r\n }\r\n}\r\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\r\n let getter;\r\n let setter;\r\n const onlyGetter = isFunction(getterOrOptions);\r\n if (onlyGetter) {\r\n getter = getterOrOptions;\r\n setter = (process.env.NODE_ENV !== 'production')\r\n ? () => {\r\n console.warn('Write operation failed: computed value is readonly');\r\n }\r\n : NOOP;\r\n }\r\n else {\r\n getter = getterOrOptions.get;\r\n setter = getterOrOptions.set;\r\n }\r\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\r\n if ((process.env.NODE_ENV !== 'production') && debugOptions && !isSSR) {\r\n cRef.effect.onTrack = debugOptions.onTrack;\r\n cRef.effect.onTrigger = debugOptions.onTrigger;\r\n }\r\n return cRef;\r\n}\n\nvar _a;\r\nconst tick = /*#__PURE__*/ Promise.resolve();\r\nconst queue = [];\r\nlet queued = false;\r\nconst scheduler = (fn) => {\r\n queue.push(fn);\r\n if (!queued) {\r\n queued = true;\r\n tick.then(flush);\r\n }\r\n};\r\nconst flush = () => {\r\n for (let i = 0; i < queue.length; i++) {\r\n queue[i]();\r\n }\r\n queue.length = 0;\r\n queued = false;\r\n};\r\nclass DeferredComputedRefImpl {\r\n constructor(getter) {\r\n this.dep = undefined;\r\n this._dirty = true;\r\n this.__v_isRef = true;\r\n this[_a] = true;\r\n let compareTarget;\r\n let hasCompareTarget = false;\r\n let scheduled = false;\r\n this.effect = new ReactiveEffect(getter, (computedTrigger) => {\r\n if (this.dep) {\r\n if (computedTrigger) {\r\n compareTarget = this._value;\r\n hasCompareTarget = true;\r\n }\r\n else if (!scheduled) {\r\n const valueToCompare = hasCompareTarget ? compareTarget : this._value;\r\n scheduled = true;\r\n hasCompareTarget = false;\r\n scheduler(() => {\r\n if (this.effect.active && this._get() !== valueToCompare) {\r\n triggerRefValue(this);\r\n }\r\n scheduled = false;\r\n });\r\n }\r\n // chained upstream computeds are notified synchronously to ensure\r\n // value invalidation in case of sync access; normal effects are\r\n // deferred to be triggered in scheduler.\r\n for (const e of this.dep) {\r\n if (e.computed instanceof DeferredComputedRefImpl) {\r\n e.scheduler(true /* computedTrigger */);\r\n }\r\n }\r\n }\r\n this._dirty = true;\r\n });\r\n this.effect.computed = this;\r\n }\r\n _get() {\r\n if (this._dirty) {\r\n this._dirty = false;\r\n return (this._value = this.effect.run());\r\n }\r\n return this._value;\r\n }\r\n get value() {\r\n trackRefValue(this);\r\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\r\n return toRaw(this)._get();\r\n }\r\n}\r\n_a = \"__v_isReadonly\" /* IS_READONLY */;\r\nfunction deferredComputed(getter) {\r\n return new DeferredComputedRefImpl(getter);\r\n}\n\nexport { EffectScope, ITERATE_KEY, ReactiveEffect, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, pauseTracking, proxyRefs, reactive, readonly, ref, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, track, trigger, triggerRef, unref };\n","import { pauseTracking, resetTracking, isRef, toRaw, isShallow as isShallow$1, isReactive, ReactiveEffect, ref, shallowReadonly, track, reactive, shallowReactive, trigger, isProxy, EffectScope, markRaw, proxyRefs, computed as computed$1, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, NOOP, getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, toNumber, hyphenate, camelize, isOn, hasOwn, isModelListener, hasChanged, remove, isObject, isSet, isMap, isPlainObject, invokeArrayFns, isBuiltInDirective, capitalize, isGloballyWhitelisted, def, isReservedProp, EMPTY_ARR, toRawType, makeMap, NO, normalizeClass, normalizeStyle } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\r\nfunction pushWarningContext(vnode) {\r\n stack.push(vnode);\r\n}\r\nfunction popWarningContext() {\r\n stack.pop();\r\n}\r\nfunction warn(msg, ...args) {\r\n // avoid props formatting or warn handler tracking deps that might be mutated\r\n // during patch, leading to infinite recursion.\r\n pauseTracking();\r\n const instance = stack.length ? stack[stack.length - 1].component : null;\r\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\r\n const trace = getComponentTrace();\r\n if (appWarnHandler) {\r\n callWithErrorHandling(appWarnHandler, instance, 11 /* APP_WARN_HANDLER */, [\r\n msg + args.join(''),\r\n instance && instance.proxy,\r\n trace\r\n .map(({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`)\r\n .join('\\n'),\r\n trace\r\n ]);\r\n }\r\n else {\r\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\r\n /* istanbul ignore if */\r\n if (trace.length &&\r\n // avoid spamming console during tests\r\n !false) {\r\n warnArgs.push(`\\n`, ...formatTrace(trace));\r\n }\r\n console.warn(...warnArgs);\r\n }\r\n resetTracking();\r\n}\r\nfunction getComponentTrace() {\r\n let currentVNode = stack[stack.length - 1];\r\n if (!currentVNode) {\r\n return [];\r\n }\r\n // we can't just use the stack because it will be incomplete during updates\r\n // that did not start from the root. Re-construct the parent chain using\r\n // instance parent pointers.\r\n const normalizedStack = [];\r\n while (currentVNode) {\r\n const last = normalizedStack[0];\r\n if (last && last.vnode === currentVNode) {\r\n last.recurseCount++;\r\n }\r\n else {\r\n normalizedStack.push({\r\n vnode: currentVNode,\r\n recurseCount: 0\r\n });\r\n }\r\n const parentInstance = currentVNode.component && currentVNode.component.parent;\r\n currentVNode = parentInstance && parentInstance.vnode;\r\n }\r\n return normalizedStack;\r\n}\r\n/* istanbul ignore next */\r\nfunction formatTrace(trace) {\r\n const logs = [];\r\n trace.forEach((entry, i) => {\r\n logs.push(...(i === 0 ? [] : [`\\n`]), ...formatTraceEntry(entry));\r\n });\r\n return logs;\r\n}\r\nfunction formatTraceEntry({ vnode, recurseCount }) {\r\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\r\n const isRoot = vnode.component ? vnode.component.parent == null : false;\r\n const open = ` at <${formatComponentName(vnode.component, vnode.type, isRoot)}`;\r\n const close = `>` + postfix;\r\n return vnode.props\r\n ? [open, ...formatProps(vnode.props), close]\r\n : [open + close];\r\n}\r\n/* istanbul ignore next */\r\nfunction formatProps(props) {\r\n const res = [];\r\n const keys = Object.keys(props);\r\n keys.slice(0, 3).forEach(key => {\r\n res.push(...formatProp(key, props[key]));\r\n });\r\n if (keys.length > 3) {\r\n res.push(` ...`);\r\n }\r\n return res;\r\n}\r\n/* istanbul ignore next */\r\nfunction formatProp(key, value, raw) {\r\n if (isString(value)) {\r\n value = JSON.stringify(value);\r\n return raw ? value : [`${key}=${value}`];\r\n }\r\n else if (typeof value === 'number' ||\r\n typeof value === 'boolean' ||\r\n value == null) {\r\n return raw ? value : [`${key}=${value}`];\r\n }\r\n else if (isRef(value)) {\r\n value = formatProp(key, toRaw(value.value), true);\r\n return raw ? value : [`${key}=Ref<`, value, `>`];\r\n }\r\n else if (isFunction(value)) {\r\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\r\n }\r\n else {\r\n value = toRaw(value);\r\n return raw ? value : [`${key}=`, value];\r\n }\r\n}\n\nconst ErrorTypeStrings = {\r\n [\"sp\" /* SERVER_PREFETCH */]: 'serverPrefetch hook',\r\n [\"bc\" /* BEFORE_CREATE */]: 'beforeCreate hook',\r\n [\"c\" /* CREATED */]: 'created hook',\r\n [\"bm\" /* BEFORE_MOUNT */]: 'beforeMount hook',\r\n [\"m\" /* MOUNTED */]: 'mounted hook',\r\n [\"bu\" /* BEFORE_UPDATE */]: 'beforeUpdate hook',\r\n [\"u\" /* UPDATED */]: 'updated',\r\n [\"bum\" /* BEFORE_UNMOUNT */]: 'beforeUnmount hook',\r\n [\"um\" /* UNMOUNTED */]: 'unmounted hook',\r\n [\"a\" /* ACTIVATED */]: 'activated hook',\r\n [\"da\" /* DEACTIVATED */]: 'deactivated hook',\r\n [\"ec\" /* ERROR_CAPTURED */]: 'errorCaptured hook',\r\n [\"rtc\" /* RENDER_TRACKED */]: 'renderTracked hook',\r\n [\"rtg\" /* RENDER_TRIGGERED */]: 'renderTriggered hook',\r\n [0 /* SETUP_FUNCTION */]: 'setup function',\r\n [1 /* RENDER_FUNCTION */]: 'render function',\r\n [2 /* WATCH_GETTER */]: 'watcher getter',\r\n [3 /* WATCH_CALLBACK */]: 'watcher callback',\r\n [4 /* WATCH_CLEANUP */]: 'watcher cleanup function',\r\n [5 /* NATIVE_EVENT_HANDLER */]: 'native event handler',\r\n [6 /* COMPONENT_EVENT_HANDLER */]: 'component event handler',\r\n [7 /* VNODE_HOOK */]: 'vnode hook',\r\n [8 /* DIRECTIVE_HOOK */]: 'directive hook',\r\n [9 /* TRANSITION_HOOK */]: 'transition hook',\r\n [10 /* APP_ERROR_HANDLER */]: 'app errorHandler',\r\n [11 /* APP_WARN_HANDLER */]: 'app warnHandler',\r\n [12 /* FUNCTION_REF */]: 'ref function',\r\n [13 /* ASYNC_COMPONENT_LOADER */]: 'async component loader',\r\n [14 /* SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' +\r\n 'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core'\r\n};\r\nfunction callWithErrorHandling(fn, instance, type, args) {\r\n let res;\r\n try {\r\n res = args ? fn(...args) : fn();\r\n }\r\n catch (err) {\r\n handleError(err, instance, type);\r\n }\r\n return res;\r\n}\r\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\r\n if (isFunction(fn)) {\r\n const res = callWithErrorHandling(fn, instance, type, args);\r\n if (res && isPromise(res)) {\r\n res.catch(err => {\r\n handleError(err, instance, type);\r\n });\r\n }\r\n return res;\r\n }\r\n const values = [];\r\n for (let i = 0; i < fn.length; i++) {\r\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\r\n }\r\n return values;\r\n}\r\nfunction handleError(err, instance, type, throwInDev = true) {\r\n const contextVNode = instance ? instance.vnode : null;\r\n if (instance) {\r\n let cur = instance.parent;\r\n // the exposed instance is the render proxy to keep it consistent with 2.x\r\n const exposedInstance = instance.proxy;\r\n // in production the hook receives only the error code\r\n const errorInfo = (process.env.NODE_ENV !== 'production') ? ErrorTypeStrings[type] : type;\r\n while (cur) {\r\n const errorCapturedHooks = cur.ec;\r\n if (errorCapturedHooks) {\r\n for (let i = 0; i < errorCapturedHooks.length; i++) {\r\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\r\n return;\r\n }\r\n }\r\n }\r\n cur = cur.parent;\r\n }\r\n // app-level handling\r\n const appErrorHandler = instance.appContext.config.errorHandler;\r\n if (appErrorHandler) {\r\n callWithErrorHandling(appErrorHandler, null, 10 /* APP_ERROR_HANDLER */, [err, exposedInstance, errorInfo]);\r\n return;\r\n }\r\n }\r\n logError(err, type, contextVNode, throwInDev);\r\n}\r\nfunction logError(err, type, contextVNode, throwInDev = true) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const info = ErrorTypeStrings[type];\r\n if (contextVNode) {\r\n pushWarningContext(contextVNode);\r\n }\r\n warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\r\n if (contextVNode) {\r\n popWarningContext();\r\n }\r\n // crash in dev by default so it's more noticeable\r\n if (throwInDev) {\r\n throw err;\r\n }\r\n else {\r\n console.error(err);\r\n }\r\n }\r\n else {\r\n // recover in prod to reduce the impact on end-user\r\n console.error(err);\r\n }\r\n}\n\nlet isFlushing = false;\r\nlet isFlushPending = false;\r\nconst queue = [];\r\nlet flushIndex = 0;\r\nconst pendingPreFlushCbs = [];\r\nlet activePreFlushCbs = null;\r\nlet preFlushIndex = 0;\r\nconst pendingPostFlushCbs = [];\r\nlet activePostFlushCbs = null;\r\nlet postFlushIndex = 0;\r\nconst resolvedPromise = /*#__PURE__*/ Promise.resolve();\r\nlet currentFlushPromise = null;\r\nlet currentPreFlushParentJob = null;\r\nconst RECURSION_LIMIT = 100;\r\nfunction nextTick(fn) {\r\n const p = currentFlushPromise || resolvedPromise;\r\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\r\n}\r\n// #2768\r\n// Use binary-search to find a suitable position in the queue,\r\n// so that the queue maintains the increasing order of job's id,\r\n// which can prevent the job from being skipped and also can avoid repeated patching.\r\nfunction findInsertionIndex(id) {\r\n // the start index should be `flushIndex + 1`\r\n let start = flushIndex + 1;\r\n let end = queue.length;\r\n while (start < end) {\r\n const middle = (start + end) >>> 1;\r\n const middleJobId = getId(queue[middle]);\r\n middleJobId < id ? (start = middle + 1) : (end = middle);\r\n }\r\n return start;\r\n}\r\nfunction queueJob(job) {\r\n // the dedupe search uses the startIndex argument of Array.includes()\r\n // by default the search index includes the current job that is being run\r\n // so it cannot recursively trigger itself again.\r\n // if the job is a watch() callback, the search will start with a +1 index to\r\n // allow it recursively trigger itself - it is the user's responsibility to\r\n // ensure it doesn't end up in an infinite loop.\r\n if ((!queue.length ||\r\n !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) &&\r\n job !== currentPreFlushParentJob) {\r\n if (job.id == null) {\r\n queue.push(job);\r\n }\r\n else {\r\n queue.splice(findInsertionIndex(job.id), 0, job);\r\n }\r\n queueFlush();\r\n }\r\n}\r\nfunction queueFlush() {\r\n if (!isFlushing && !isFlushPending) {\r\n isFlushPending = true;\r\n currentFlushPromise = resolvedPromise.then(flushJobs);\r\n }\r\n}\r\nfunction invalidateJob(job) {\r\n const i = queue.indexOf(job);\r\n if (i > flushIndex) {\r\n queue.splice(i, 1);\r\n }\r\n}\r\nfunction queueCb(cb, activeQueue, pendingQueue, index) {\r\n if (!isArray(cb)) {\r\n if (!activeQueue ||\r\n !activeQueue.includes(cb, cb.allowRecurse ? index + 1 : index)) {\r\n pendingQueue.push(cb);\r\n }\r\n }\r\n else {\r\n // if cb is an array, it is a component lifecycle hook which can only be\r\n // triggered by a job, which is already deduped in the main queue, so\r\n // we can skip duplicate check here to improve perf\r\n pendingQueue.push(...cb);\r\n }\r\n queueFlush();\r\n}\r\nfunction queuePreFlushCb(cb) {\r\n queueCb(cb, activePreFlushCbs, pendingPreFlushCbs, preFlushIndex);\r\n}\r\nfunction queuePostFlushCb(cb) {\r\n queueCb(cb, activePostFlushCbs, pendingPostFlushCbs, postFlushIndex);\r\n}\r\nfunction flushPreFlushCbs(seen, parentJob = null) {\r\n if (pendingPreFlushCbs.length) {\r\n currentPreFlushParentJob = parentJob;\r\n activePreFlushCbs = [...new Set(pendingPreFlushCbs)];\r\n pendingPreFlushCbs.length = 0;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n seen = seen || new Map();\r\n }\r\n for (preFlushIndex = 0; preFlushIndex < activePreFlushCbs.length; preFlushIndex++) {\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n checkRecursiveUpdates(seen, activePreFlushCbs[preFlushIndex])) {\r\n continue;\r\n }\r\n activePreFlushCbs[preFlushIndex]();\r\n }\r\n activePreFlushCbs = null;\r\n preFlushIndex = 0;\r\n currentPreFlushParentJob = null;\r\n // recursively flush until it drains\r\n flushPreFlushCbs(seen, parentJob);\r\n }\r\n}\r\nfunction flushPostFlushCbs(seen) {\r\n // flush any pre cbs queued during the flush (e.g. pre watchers)\r\n flushPreFlushCbs();\r\n if (pendingPostFlushCbs.length) {\r\n const deduped = [...new Set(pendingPostFlushCbs)];\r\n pendingPostFlushCbs.length = 0;\r\n // #1947 already has active queue, nested flushPostFlushCbs call\r\n if (activePostFlushCbs) {\r\n activePostFlushCbs.push(...deduped);\r\n return;\r\n }\r\n activePostFlushCbs = deduped;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n seen = seen || new Map();\r\n }\r\n activePostFlushCbs.sort((a, b) => getId(a) - getId(b));\r\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\r\n continue;\r\n }\r\n activePostFlushCbs[postFlushIndex]();\r\n }\r\n activePostFlushCbs = null;\r\n postFlushIndex = 0;\r\n }\r\n}\r\nconst getId = (job) => job.id == null ? Infinity : job.id;\r\nfunction flushJobs(seen) {\r\n isFlushPending = false;\r\n isFlushing = true;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n seen = seen || new Map();\r\n }\r\n flushPreFlushCbs(seen);\r\n // Sort queue before flush.\r\n // This ensures that:\r\n // 1. Components are updated from parent to child. (because parent is always\r\n // created before the child so its render effect will have smaller\r\n // priority number)\r\n // 2. If a component is unmounted during a parent component's update,\r\n // its update can be skipped.\r\n queue.sort((a, b) => getId(a) - getId(b));\r\n // conditional usage of checkRecursiveUpdate must be determined out of\r\n // try ... catch block since Rollup by default de-optimizes treeshaking\r\n // inside try-catch. This can leave all warning code unshaked. Although\r\n // they would get eventually shaken by a minifier like terser, some minifiers\r\n // would fail to do that (e.g. https://github.com/evanw/esbuild/issues/1610)\r\n const check = (process.env.NODE_ENV !== 'production')\r\n ? (job) => checkRecursiveUpdates(seen, job)\r\n : NOOP;\r\n try {\r\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\r\n const job = queue[flushIndex];\r\n if (job && job.active !== false) {\r\n if ((process.env.NODE_ENV !== 'production') && check(job)) {\r\n continue;\r\n }\r\n // console.log(`running:`, job.id)\r\n callWithErrorHandling(job, null, 14 /* SCHEDULER */);\r\n }\r\n }\r\n }\r\n finally {\r\n flushIndex = 0;\r\n queue.length = 0;\r\n flushPostFlushCbs(seen);\r\n isFlushing = false;\r\n currentFlushPromise = null;\r\n // some postFlushCb queued jobs!\r\n // keep flushing until it drains.\r\n if (queue.length ||\r\n pendingPreFlushCbs.length ||\r\n pendingPostFlushCbs.length) {\r\n flushJobs(seen);\r\n }\r\n }\r\n}\r\nfunction checkRecursiveUpdates(seen, fn) {\r\n if (!seen.has(fn)) {\r\n seen.set(fn, 1);\r\n }\r\n else {\r\n const count = seen.get(fn);\r\n if (count > RECURSION_LIMIT) {\r\n const instance = fn.ownerInstance;\r\n const componentName = instance && getComponentName(instance.type);\r\n warn(`Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. ` +\r\n `This means you have a reactive effect that is mutating its own ` +\r\n `dependencies and thus recursively triggering itself. Possible sources ` +\r\n `include component template, render function, updated hook or ` +\r\n `watcher source function.`);\r\n return true;\r\n }\r\n else {\r\n seen.set(fn, count + 1);\r\n }\r\n }\r\n}\n\n/* eslint-disable no-restricted-globals */\r\nlet isHmrUpdating = false;\r\nconst hmrDirtyComponents = new Set();\r\n// Expose the HMR runtime on the global object\r\n// This makes it entirely tree-shakable without polluting the exports and makes\r\n// it easier to be used in toolings like vue-loader\r\n// Note: for a component to be eligible for HMR it also needs the __hmrId option\r\n// to be set so that its instances can be registered / removed.\r\nif ((process.env.NODE_ENV !== 'production')) {\r\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\r\n createRecord: tryWrap(createRecord),\r\n rerender: tryWrap(rerender),\r\n reload: tryWrap(reload)\r\n };\r\n}\r\nconst map = new Map();\r\nfunction registerHMR(instance) {\r\n const id = instance.type.__hmrId;\r\n let record = map.get(id);\r\n if (!record) {\r\n createRecord(id, instance.type);\r\n record = map.get(id);\r\n }\r\n record.instances.add(instance);\r\n}\r\nfunction unregisterHMR(instance) {\r\n map.get(instance.type.__hmrId).instances.delete(instance);\r\n}\r\nfunction createRecord(id, initialDef) {\r\n if (map.has(id)) {\r\n return false;\r\n }\r\n map.set(id, {\r\n initialDef: normalizeClassComponent(initialDef),\r\n instances: new Set()\r\n });\r\n return true;\r\n}\r\nfunction normalizeClassComponent(component) {\r\n return isClassComponent(component) ? component.__vccOpts : component;\r\n}\r\nfunction rerender(id, newRender) {\r\n const record = map.get(id);\r\n if (!record) {\r\n return;\r\n }\r\n // update initial record (for not-yet-rendered component)\r\n record.initialDef.render = newRender;\r\n [...record.instances].forEach(instance => {\r\n if (newRender) {\r\n instance.render = newRender;\r\n normalizeClassComponent(instance.type).render = newRender;\r\n }\r\n instance.renderCache = [];\r\n // this flag forces child components with slot content to update\r\n isHmrUpdating = true;\r\n instance.update();\r\n isHmrUpdating = false;\r\n });\r\n}\r\nfunction reload(id, newComp) {\r\n const record = map.get(id);\r\n if (!record)\r\n return;\r\n newComp = normalizeClassComponent(newComp);\r\n // update initial def (for not-yet-rendered components)\r\n updateComponentDef(record.initialDef, newComp);\r\n // create a snapshot which avoids the set being mutated during updates\r\n const instances = [...record.instances];\r\n for (const instance of instances) {\r\n const oldComp = normalizeClassComponent(instance.type);\r\n if (!hmrDirtyComponents.has(oldComp)) {\r\n // 1. Update existing comp definition to match new one\r\n if (oldComp !== record.initialDef) {\r\n updateComponentDef(oldComp, newComp);\r\n }\r\n // 2. mark definition dirty. This forces the renderer to replace the\r\n // component on patch.\r\n hmrDirtyComponents.add(oldComp);\r\n }\r\n // 3. invalidate options resolution cache\r\n instance.appContext.optionsCache.delete(instance.type);\r\n // 4. actually update\r\n if (instance.ceReload) {\r\n // custom element\r\n hmrDirtyComponents.add(oldComp);\r\n instance.ceReload(newComp.styles);\r\n hmrDirtyComponents.delete(oldComp);\r\n }\r\n else if (instance.parent) {\r\n // 4. Force the parent instance to re-render. This will cause all updated\r\n // components to be unmounted and re-mounted. Queue the update so that we\r\n // don't end up forcing the same parent to re-render multiple times.\r\n queueJob(instance.parent.update);\r\n // instance is the inner component of an async custom element\r\n // invoke to reset styles\r\n if (instance.parent.type.__asyncLoader &&\r\n instance.parent.ceReload) {\r\n instance.parent.ceReload(newComp.styles);\r\n }\r\n }\r\n else if (instance.appContext.reload) {\r\n // root instance mounted via createApp() has a reload method\r\n instance.appContext.reload();\r\n }\r\n else if (typeof window !== 'undefined') {\r\n // root instance inside tree created via raw render(). Force reload.\r\n window.location.reload();\r\n }\r\n else {\r\n console.warn('[HMR] Root or manually mounted instance modified. Full reload required.');\r\n }\r\n }\r\n // 5. make sure to cleanup dirty hmr components after update\r\n queuePostFlushCb(() => {\r\n for (const instance of instances) {\r\n hmrDirtyComponents.delete(normalizeClassComponent(instance.type));\r\n }\r\n });\r\n}\r\nfunction updateComponentDef(oldComp, newComp) {\r\n extend(oldComp, newComp);\r\n for (const key in oldComp) {\r\n if (key !== '__file' && !(key in newComp)) {\r\n delete oldComp[key];\r\n }\r\n }\r\n}\r\nfunction tryWrap(fn) {\r\n return (id, arg) => {\r\n try {\r\n return fn(id, arg);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n console.warn(`[HMR] Something went wrong during Vue component hot-reload. ` +\r\n `Full reload required.`);\r\n }\r\n };\r\n}\n\nlet devtools;\r\nlet buffer = [];\r\nlet devtoolsNotInstalled = false;\r\nfunction emit(event, ...args) {\r\n if (devtools) {\r\n devtools.emit(event, ...args);\r\n }\r\n else if (!devtoolsNotInstalled) {\r\n buffer.push({ event, args });\r\n }\r\n}\r\nfunction setDevtoolsHook(hook, target) {\r\n var _a, _b;\r\n devtools = hook;\r\n if (devtools) {\r\n devtools.enabled = true;\r\n buffer.forEach(({ event, args }) => devtools.emit(event, ...args));\r\n buffer = [];\r\n }\r\n else if (\r\n // handle late devtools injection - only do this if we are in an actual\r\n // browser environment to avoid the timer handle stalling test runner exit\r\n // (#4815)\r\n typeof window !== 'undefined' &&\r\n // some envs mock window but not fully\r\n window.HTMLElement &&\r\n // also exclude jsdom\r\n !((_b = (_a = window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) === null || _b === void 0 ? void 0 : _b.includes('jsdom'))) {\r\n const replay = (target.__VUE_DEVTOOLS_HOOK_REPLAY__ =\r\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []);\r\n replay.push((newHook) => {\r\n setDevtoolsHook(newHook, target);\r\n });\r\n // clear buffer after 3s - the user probably doesn't have devtools installed\r\n // at all, and keeping the buffer will cause memory leaks (#4738)\r\n setTimeout(() => {\r\n if (!devtools) {\r\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\r\n devtoolsNotInstalled = true;\r\n buffer = [];\r\n }\r\n }, 3000);\r\n }\r\n else {\r\n // non-browser env, assume not installed\r\n devtoolsNotInstalled = true;\r\n buffer = [];\r\n }\r\n}\r\nfunction devtoolsInitApp(app, version) {\r\n emit(\"app:init\" /* APP_INIT */, app, version, {\r\n Fragment,\r\n Text,\r\n Comment,\r\n Static\r\n });\r\n}\r\nfunction devtoolsUnmountApp(app) {\r\n emit(\"app:unmount\" /* APP_UNMOUNT */, app);\r\n}\r\nconst devtoolsComponentAdded = /*#__PURE__*/ createDevtoolsComponentHook(\"component:added\" /* COMPONENT_ADDED */);\r\nconst devtoolsComponentUpdated = \r\n/*#__PURE__*/ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\r\nconst devtoolsComponentRemoved = \r\n/*#__PURE__*/ createDevtoolsComponentHook(\"component:removed\" /* COMPONENT_REMOVED */);\r\nfunction createDevtoolsComponentHook(hook) {\r\n return (component) => {\r\n emit(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component);\r\n };\r\n}\r\nconst devtoolsPerfStart = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:start\" /* PERFORMANCE_START */);\r\nconst devtoolsPerfEnd = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:end\" /* PERFORMANCE_END */);\r\nfunction createDevtoolsPerformanceHook(hook) {\r\n return (component, type, time) => {\r\n emit(hook, component.appContext.app, component.uid, component, type, time);\r\n };\r\n}\r\nfunction devtoolsComponentEmit(component, event, params) {\r\n emit(\"component:emit\" /* COMPONENT_EMIT */, component.appContext.app, component, event, params);\r\n}\n\nfunction emit$1(instance, event, ...rawArgs) {\r\n if (instance.isUnmounted)\r\n return;\r\n const props = instance.vnode.props || EMPTY_OBJ;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const { emitsOptions, propsOptions: [propsOptions] } = instance;\r\n if (emitsOptions) {\r\n if (!(event in emitsOptions) &&\r\n !(false )) {\r\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\r\n warn(`Component emitted event \"${event}\" but it is neither declared in ` +\r\n `the emits option nor as an \"${toHandlerKey(event)}\" prop.`);\r\n }\r\n }\r\n else {\r\n const validator = emitsOptions[event];\r\n if (isFunction(validator)) {\r\n const isValid = validator(...rawArgs);\r\n if (!isValid) {\r\n warn(`Invalid event arguments: event validation failed for event \"${event}\".`);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n let args = rawArgs;\r\n const isModelListener = event.startsWith('update:');\r\n // for v-model update:xxx events, apply modifiers on args\r\n const modelArg = isModelListener && event.slice(7);\r\n if (modelArg && modelArg in props) {\r\n const modifiersKey = `${modelArg === 'modelValue' ? 'model' : modelArg}Modifiers`;\r\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\r\n if (trim) {\r\n args = rawArgs.map(a => a.trim());\r\n }\r\n if (number) {\r\n args = rawArgs.map(toNumber);\r\n }\r\n }\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n devtoolsComponentEmit(instance, event, args);\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const lowerCaseEvent = event.toLowerCase();\r\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\r\n warn(`Event \"${lowerCaseEvent}\" is emitted in component ` +\r\n `${formatComponentName(instance, instance.type)} but the handler is registered for \"${event}\". ` +\r\n `Note that HTML attributes are case-insensitive and you cannot use ` +\r\n `v-on to listen to camelCase events when using in-DOM templates. ` +\r\n `You should probably use \"${hyphenate(event)}\" instead of \"${event}\".`);\r\n }\r\n }\r\n let handlerName;\r\n let handler = props[(handlerName = toHandlerKey(event))] ||\r\n // also try camelCase event handler (#2249)\r\n props[(handlerName = toHandlerKey(camelize(event)))];\r\n // for v-model update:xxx events, also trigger kebab-case equivalent\r\n // for props passed via kebab-case\r\n if (!handler && isModelListener) {\r\n handler = props[(handlerName = toHandlerKey(hyphenate(event)))];\r\n }\r\n if (handler) {\r\n callWithAsyncErrorHandling(handler, instance, 6 /* COMPONENT_EVENT_HANDLER */, args);\r\n }\r\n const onceHandler = props[handlerName + `Once`];\r\n if (onceHandler) {\r\n if (!instance.emitted) {\r\n instance.emitted = {};\r\n }\r\n else if (instance.emitted[handlerName]) {\r\n return;\r\n }\r\n instance.emitted[handlerName] = true;\r\n callWithAsyncErrorHandling(onceHandler, instance, 6 /* COMPONENT_EVENT_HANDLER */, args);\r\n }\r\n}\r\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\r\n const cache = appContext.emitsCache;\r\n const cached = cache.get(comp);\r\n if (cached !== undefined) {\r\n return cached;\r\n }\r\n const raw = comp.emits;\r\n let normalized = {};\r\n // apply mixin/extends props\r\n let hasExtends = false;\r\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\r\n const extendEmits = (raw) => {\r\n const normalizedFromExtend = normalizeEmitsOptions(raw, appContext, true);\r\n if (normalizedFromExtend) {\r\n hasExtends = true;\r\n extend(normalized, normalizedFromExtend);\r\n }\r\n };\r\n if (!asMixin && appContext.mixins.length) {\r\n appContext.mixins.forEach(extendEmits);\r\n }\r\n if (comp.extends) {\r\n extendEmits(comp.extends);\r\n }\r\n if (comp.mixins) {\r\n comp.mixins.forEach(extendEmits);\r\n }\r\n }\r\n if (!raw && !hasExtends) {\r\n cache.set(comp, null);\r\n return null;\r\n }\r\n if (isArray(raw)) {\r\n raw.forEach(key => (normalized[key] = null));\r\n }\r\n else {\r\n extend(normalized, raw);\r\n }\r\n cache.set(comp, normalized);\r\n return normalized;\r\n}\r\n// Check if an incoming prop key is a declared emit event listener.\r\n// e.g. With `emits: { click: null }`, props named `onClick` and `onclick` are\r\n// both considered matched listeners.\r\nfunction isEmitListener(options, key) {\r\n if (!options || !isOn(key)) {\r\n return false;\r\n }\r\n key = key.slice(2).replace(/Once$/, '');\r\n return (hasOwn(options, key[0].toLowerCase() + key.slice(1)) ||\r\n hasOwn(options, hyphenate(key)) ||\r\n hasOwn(options, key));\r\n}\n\n/**\r\n * mark the current rendering instance for asset resolution (e.g.\r\n * resolveComponent, resolveDirective) during render\r\n */\r\nlet currentRenderingInstance = null;\r\nlet currentScopeId = null;\r\n/**\r\n * Note: rendering calls maybe nested. The function returns the parent rendering\r\n * instance if present, which should be restored after the render is done:\r\n *\r\n * ```js\r\n * const prev = setCurrentRenderingInstance(i)\r\n * // ...render\r\n * setCurrentRenderingInstance(prev)\r\n * ```\r\n */\r\nfunction setCurrentRenderingInstance(instance) {\r\n const prev = currentRenderingInstance;\r\n currentRenderingInstance = instance;\r\n currentScopeId = (instance && instance.type.__scopeId) || null;\r\n return prev;\r\n}\r\n/**\r\n * Set scope id when creating hoisted vnodes.\r\n * @private compiler helper\r\n */\r\nfunction pushScopeId(id) {\r\n currentScopeId = id;\r\n}\r\n/**\r\n * Technically we no longer need this after 3.0.8 but we need to keep the same\r\n * API for backwards compat w/ code generated by compilers.\r\n * @private\r\n */\r\nfunction popScopeId() {\r\n currentScopeId = null;\r\n}\r\n/**\r\n * Only for backwards compat\r\n * @private\r\n */\r\nconst withScopeId = (_id) => withCtx;\r\n/**\r\n * Wrap a slot function to memoize current rendering instance\r\n * @private compiler helper\r\n */\r\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot // false only\r\n) {\r\n if (!ctx)\r\n return fn;\r\n // already normalized\r\n if (fn._n) {\r\n return fn;\r\n }\r\n const renderFnWithContext = (...args) => {\r\n // If a user calls a compiled slot inside a template expression (#1745), it\r\n // can mess up block tracking, so by default we disable block tracking and\r\n // force bail out when invoking a compiled slot (indicated by the ._d flag).\r\n // This isn't necessary if rendering a compiled ``, so we flip the\r\n // ._d flag off when invoking the wrapped fn inside `renderSlot`.\r\n if (renderFnWithContext._d) {\r\n setBlockTracking(-1);\r\n }\r\n const prevInstance = setCurrentRenderingInstance(ctx);\r\n const res = fn(...args);\r\n setCurrentRenderingInstance(prevInstance);\r\n if (renderFnWithContext._d) {\r\n setBlockTracking(1);\r\n }\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n devtoolsComponentUpdated(ctx);\r\n }\r\n return res;\r\n };\r\n // mark normalized to avoid duplicated wrapping\r\n renderFnWithContext._n = true;\r\n // mark this as compiled by default\r\n // this is used in vnode.ts -> normalizeChildren() to set the slot\r\n // rendering flag.\r\n renderFnWithContext._c = true;\r\n // disable block tracking by default\r\n renderFnWithContext._d = true;\r\n return renderFnWithContext;\r\n}\n\n/**\r\n * dev only flag to track whether $attrs was used during render.\r\n * If $attrs was used during render then the warning for failed attrs\r\n * fallthrough can be suppressed.\r\n */\r\nlet accessedAttrs = false;\r\nfunction markAttrsAccessed() {\r\n accessedAttrs = true;\r\n}\r\nfunction renderComponentRoot(instance) {\r\n const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render, renderCache, data, setupState, ctx, inheritAttrs } = instance;\r\n let result;\r\n let fallthroughAttrs;\r\n const prev = setCurrentRenderingInstance(instance);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n accessedAttrs = false;\r\n }\r\n try {\r\n if (vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */) {\r\n // withProxy is a proxy with a different `has` trap only for\r\n // runtime-compiled render functions using `with` block.\r\n const proxyToUse = withProxy || proxy;\r\n result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));\r\n fallthroughAttrs = attrs;\r\n }\r\n else {\r\n // functional\r\n const render = Component;\r\n // in dev, mark attrs accessed if optional props (attrs === props)\r\n if ((process.env.NODE_ENV !== 'production') && attrs === props) {\r\n markAttrsAccessed();\r\n }\r\n result = normalizeVNode(render.length > 1\r\n ? render(props, (process.env.NODE_ENV !== 'production')\r\n ? {\r\n get attrs() {\r\n markAttrsAccessed();\r\n return attrs;\r\n },\r\n slots,\r\n emit\r\n }\r\n : { attrs, slots, emit })\r\n : render(props, null /* we know it doesn't need it */));\r\n fallthroughAttrs = Component.props\r\n ? attrs\r\n : getFunctionalFallthrough(attrs);\r\n }\r\n }\r\n catch (err) {\r\n blockStack.length = 0;\r\n handleError(err, instance, 1 /* RENDER_FUNCTION */);\r\n result = createVNode(Comment);\r\n }\r\n // attr merging\r\n // in dev mode, comments are preserved, and it's possible for a template\r\n // to have comments along side the root element which makes it a fragment\r\n let root = result;\r\n let setRoot = undefined;\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n result.patchFlag > 0 &&\r\n result.patchFlag & 2048 /* DEV_ROOT_FRAGMENT */) {\r\n [root, setRoot] = getChildRoot(result);\r\n }\r\n if (fallthroughAttrs && inheritAttrs !== false) {\r\n const keys = Object.keys(fallthroughAttrs);\r\n const { shapeFlag } = root;\r\n if (keys.length) {\r\n if (shapeFlag & (1 /* ELEMENT */ | 6 /* COMPONENT */)) {\r\n if (propsOptions && keys.some(isModelListener)) {\r\n // If a v-model listener (onUpdate:xxx) has a corresponding declared\r\n // prop, it indicates this component expects to handle v-model and\r\n // it should not fallthrough.\r\n // related: #1543, #1643, #1989\r\n fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);\r\n }\r\n root = cloneVNode(root, fallthroughAttrs);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production') && !accessedAttrs && root.type !== Comment) {\r\n const allAttrs = Object.keys(attrs);\r\n const eventAttrs = [];\r\n const extraAttrs = [];\r\n for (let i = 0, l = allAttrs.length; i < l; i++) {\r\n const key = allAttrs[i];\r\n if (isOn(key)) {\r\n // ignore v-model handlers when they fail to fallthrough\r\n if (!isModelListener(key)) {\r\n // remove `on`, lowercase first letter to reflect event casing\r\n // accurately\r\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\r\n }\r\n }\r\n else {\r\n extraAttrs.push(key);\r\n }\r\n }\r\n if (extraAttrs.length) {\r\n warn(`Extraneous non-props attributes (` +\r\n `${extraAttrs.join(', ')}) ` +\r\n `were passed to component but could not be automatically inherited ` +\r\n `because component renders fragment or text root nodes.`);\r\n }\r\n if (eventAttrs.length) {\r\n warn(`Extraneous non-emits event listeners (` +\r\n `${eventAttrs.join(', ')}) ` +\r\n `were passed to component but could not be automatically inherited ` +\r\n `because component renders fragment or text root nodes. ` +\r\n `If the listener is intended to be a component custom event listener only, ` +\r\n `declare it using the \"emits\" option.`);\r\n }\r\n }\r\n }\r\n }\r\n // inherit directives\r\n if (vnode.dirs) {\r\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\r\n warn(`Runtime directive used on component with non-element root node. ` +\r\n `The directives will not function as intended.`);\r\n }\r\n // clone before mutating since the root may be a hoisted vnode\r\n root = cloneVNode(root);\r\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\r\n }\r\n // inherit transition data\r\n if (vnode.transition) {\r\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\r\n warn(`Component inside renders non-element root node ` +\r\n `that cannot be animated.`);\r\n }\r\n root.transition = vnode.transition;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && setRoot) {\r\n setRoot(root);\r\n }\r\n else {\r\n result = root;\r\n }\r\n setCurrentRenderingInstance(prev);\r\n return result;\r\n}\r\n/**\r\n * dev only\r\n * In dev mode, template root level comments are rendered, which turns the\r\n * template into a fragment root, but we need to locate the single element\r\n * root for attrs and scope id processing.\r\n */\r\nconst getChildRoot = (vnode) => {\r\n const rawChildren = vnode.children;\r\n const dynamicChildren = vnode.dynamicChildren;\r\n const childRoot = filterSingleRoot(rawChildren);\r\n if (!childRoot) {\r\n return [vnode, undefined];\r\n }\r\n const index = rawChildren.indexOf(childRoot);\r\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\r\n const setRoot = (updatedRoot) => {\r\n rawChildren[index] = updatedRoot;\r\n if (dynamicChildren) {\r\n if (dynamicIndex > -1) {\r\n dynamicChildren[dynamicIndex] = updatedRoot;\r\n }\r\n else if (updatedRoot.patchFlag > 0) {\r\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\r\n }\r\n }\r\n };\r\n return [normalizeVNode(childRoot), setRoot];\r\n};\r\nfunction filterSingleRoot(children) {\r\n let singleRoot;\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n if (isVNode(child)) {\r\n // ignore user comment\r\n if (child.type !== Comment || child.children === 'v-if') {\r\n if (singleRoot) {\r\n // has more than 1 non-comment child, return now\r\n return;\r\n }\r\n else {\r\n singleRoot = child;\r\n }\r\n }\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n return singleRoot;\r\n}\r\nconst getFunctionalFallthrough = (attrs) => {\r\n let res;\r\n for (const key in attrs) {\r\n if (key === 'class' || key === 'style' || isOn(key)) {\r\n (res || (res = {}))[key] = attrs[key];\r\n }\r\n }\r\n return res;\r\n};\r\nconst filterModelListeners = (attrs, props) => {\r\n const res = {};\r\n for (const key in attrs) {\r\n if (!isModelListener(key) || !(key.slice(9) in props)) {\r\n res[key] = attrs[key];\r\n }\r\n }\r\n return res;\r\n};\r\nconst isElementRoot = (vnode) => {\r\n return (vnode.shapeFlag & (6 /* COMPONENT */ | 1 /* ELEMENT */) ||\r\n vnode.type === Comment // potential v-if branch switch\r\n );\r\n};\r\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\r\n const { props: prevProps, children: prevChildren, component } = prevVNode;\r\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\r\n const emits = component.emitsOptions;\r\n // Parent component's render function was hot-updated. Since this may have\r\n // caused the child component's slots content to have changed, we need to\r\n // force the child to update as well.\r\n if ((process.env.NODE_ENV !== 'production') && (prevChildren || nextChildren) && isHmrUpdating) {\r\n return true;\r\n }\r\n // force child update for runtime directive or transition on component vnode.\r\n if (nextVNode.dirs || nextVNode.transition) {\r\n return true;\r\n }\r\n if (optimized && patchFlag >= 0) {\r\n if (patchFlag & 1024 /* DYNAMIC_SLOTS */) {\r\n // slot content that references values that might have changed,\r\n // e.g. in a v-for\r\n return true;\r\n }\r\n if (patchFlag & 16 /* FULL_PROPS */) {\r\n if (!prevProps) {\r\n return !!nextProps;\r\n }\r\n // presence of this flag indicates props are always non-null\r\n return hasPropsChanged(prevProps, nextProps, emits);\r\n }\r\n else if (patchFlag & 8 /* PROPS */) {\r\n const dynamicProps = nextVNode.dynamicProps;\r\n for (let i = 0; i < dynamicProps.length; i++) {\r\n const key = dynamicProps[i];\r\n if (nextProps[key] !== prevProps[key] &&\r\n !isEmitListener(emits, key)) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // this path is only taken by manually written render functions\r\n // so presence of any children leads to a forced update\r\n if (prevChildren || nextChildren) {\r\n if (!nextChildren || !nextChildren.$stable) {\r\n return true;\r\n }\r\n }\r\n if (prevProps === nextProps) {\r\n return false;\r\n }\r\n if (!prevProps) {\r\n return !!nextProps;\r\n }\r\n if (!nextProps) {\r\n return true;\r\n }\r\n return hasPropsChanged(prevProps, nextProps, emits);\r\n }\r\n return false;\r\n}\r\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\r\n const nextKeys = Object.keys(nextProps);\r\n if (nextKeys.length !== Object.keys(prevProps).length) {\r\n return true;\r\n }\r\n for (let i = 0; i < nextKeys.length; i++) {\r\n const key = nextKeys[i];\r\n if (nextProps[key] !== prevProps[key] &&\r\n !isEmitListener(emitsOptions, key)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction updateHOCHostEl({ vnode, parent }, el // HostNode\r\n) {\r\n while (parent && parent.subTree === vnode) {\r\n (vnode = parent.vnode).el = el;\r\n parent = parent.parent;\r\n }\r\n}\n\nconst isSuspense = (type) => type.__isSuspense;\r\n// Suspense exposes a component-like API, and is treated like a component\r\n// in the compiler, but internally it's a special built-in type that hooks\r\n// directly into the renderer.\r\nconst SuspenseImpl = {\r\n name: 'Suspense',\r\n // In order to make Suspense tree-shakable, we need to avoid importing it\r\n // directly in the renderer. The renderer checks for the __isSuspense flag\r\n // on a vnode's type and calls the `process` method, passing in renderer\r\n // internals.\r\n __isSuspense: true,\r\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, \r\n // platform-specific impl passed from renderer\r\n rendererInternals) {\r\n if (n1 == null) {\r\n mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals);\r\n }\r\n else {\r\n patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals);\r\n }\r\n },\r\n hydrate: hydrateSuspense,\r\n create: createSuspenseBoundary,\r\n normalize: normalizeSuspenseChildren\r\n};\r\n// Force-casted public typing for h and TSX props inference\r\nconst Suspense = (SuspenseImpl );\r\nfunction triggerEvent(vnode, name) {\r\n const eventListener = vnode.props && vnode.props[name];\r\n if (isFunction(eventListener)) {\r\n eventListener();\r\n }\r\n}\r\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {\r\n const { p: patch, o: { createElement } } = rendererInternals;\r\n const hiddenContainer = createElement('div');\r\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals));\r\n // start mounting the content subtree in an off-dom container\r\n patch(null, (suspense.pendingBranch = vnode.ssContent), hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds);\r\n // now check if we have encountered any async deps\r\n if (suspense.deps > 0) {\r\n // has async\r\n // invoke @fallback event\r\n triggerEvent(vnode, 'onPending');\r\n triggerEvent(vnode, 'onFallback');\r\n // mount the fallback tree\r\n patch(null, vnode.ssFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG, slotScopeIds);\r\n setActiveBranch(suspense, vnode.ssFallback);\r\n }\r\n else {\r\n // Suspense has no async deps. Just resolve.\r\n suspense.resolve();\r\n }\r\n}\r\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\r\n const suspense = (n2.suspense = n1.suspense);\r\n suspense.vnode = n2;\r\n n2.el = n1.el;\r\n const newBranch = n2.ssContent;\r\n const newFallback = n2.ssFallback;\r\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\r\n if (pendingBranch) {\r\n suspense.pendingBranch = newBranch;\r\n if (isSameVNodeType(newBranch, pendingBranch)) {\r\n // same root type but content may have changed.\r\n patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n if (suspense.deps <= 0) {\r\n suspense.resolve();\r\n }\r\n else if (isInFallback) {\r\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG, slotScopeIds, optimized);\r\n setActiveBranch(suspense, newFallback);\r\n }\r\n }\r\n else {\r\n // toggled before pending tree is resolved\r\n suspense.pendingId++;\r\n if (isHydrating) {\r\n // if toggled before hydration is finished, the current DOM tree is\r\n // no longer valid. set it as the active branch so it will be unmounted\r\n // when resolved\r\n suspense.isHydrating = false;\r\n suspense.activeBranch = pendingBranch;\r\n }\r\n else {\r\n unmount(pendingBranch, parentComponent, suspense);\r\n }\r\n // increment pending ID. this is used to invalidate async callbacks\r\n // reset suspense state\r\n suspense.deps = 0;\r\n // discard effects from pending branch\r\n suspense.effects.length = 0;\r\n // discard previous container\r\n suspense.hiddenContainer = createElement('div');\r\n if (isInFallback) {\r\n // already in fallback state\r\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n if (suspense.deps <= 0) {\r\n suspense.resolve();\r\n }\r\n else {\r\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG, slotScopeIds, optimized);\r\n setActiveBranch(suspense, newFallback);\r\n }\r\n }\r\n else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\r\n // toggled \"back\" to current active branch\r\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n // force resolve\r\n suspense.resolve(true);\r\n }\r\n else {\r\n // switched to a 3rd branch\r\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n if (suspense.deps <= 0) {\r\n suspense.resolve();\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\r\n // root did not change, just normal patch\r\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n setActiveBranch(suspense, newBranch);\r\n }\r\n else {\r\n // root node toggled\r\n // invoke @pending event\r\n triggerEvent(n2, 'onPending');\r\n // mount pending branch in off-dom container\r\n suspense.pendingBranch = newBranch;\r\n suspense.pendingId++;\r\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n if (suspense.deps <= 0) {\r\n // incoming branch has no async deps, resolve now.\r\n suspense.resolve();\r\n }\r\n else {\r\n const { timeout, pendingId } = suspense;\r\n if (timeout > 0) {\r\n setTimeout(() => {\r\n if (suspense.pendingId === pendingId) {\r\n suspense.fallback(newFallback);\r\n }\r\n }, timeout);\r\n }\r\n else if (timeout === 0) {\r\n suspense.fallback(newFallback);\r\n }\r\n }\r\n }\r\n }\r\n}\r\nlet hasWarned = false;\r\nfunction createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\r\n /* istanbul ignore if */\r\n if ((process.env.NODE_ENV !== 'production') && !false && !hasWarned) {\r\n hasWarned = true;\r\n // @ts-ignore `console.info` cannot be null error\r\n console[console.info ? 'info' : 'log'](` is an experimental feature and its API will likely change.`);\r\n }\r\n const { p: patch, m: move, um: unmount, n: next, o: { parentNode, remove } } = rendererInternals;\r\n const timeout = toNumber(vnode.props && vnode.props.timeout);\r\n const suspense = {\r\n vnode,\r\n parent,\r\n parentComponent,\r\n isSVG,\r\n container,\r\n hiddenContainer,\r\n anchor,\r\n deps: 0,\r\n pendingId: 0,\r\n timeout: typeof timeout === 'number' ? timeout : -1,\r\n activeBranch: null,\r\n pendingBranch: null,\r\n isInFallback: true,\r\n isHydrating,\r\n isUnmounted: false,\r\n effects: [],\r\n resolve(resume = false) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (!resume && !suspense.pendingBranch) {\r\n throw new Error(`suspense.resolve() is called without a pending branch.`);\r\n }\r\n if (suspense.isUnmounted) {\r\n throw new Error(`suspense.resolve() is called on an already unmounted suspense boundary.`);\r\n }\r\n }\r\n const { vnode, activeBranch, pendingBranch, pendingId, effects, parentComponent, container } = suspense;\r\n if (suspense.isHydrating) {\r\n suspense.isHydrating = false;\r\n }\r\n else if (!resume) {\r\n const delayEnter = activeBranch &&\r\n pendingBranch.transition &&\r\n pendingBranch.transition.mode === 'out-in';\r\n if (delayEnter) {\r\n activeBranch.transition.afterLeave = () => {\r\n if (pendingId === suspense.pendingId) {\r\n move(pendingBranch, container, anchor, 0 /* ENTER */);\r\n }\r\n };\r\n }\r\n // this is initial anchor on mount\r\n let { anchor } = suspense;\r\n // unmount current active tree\r\n if (activeBranch) {\r\n // if the fallback tree was mounted, it may have been moved\r\n // as part of a parent suspense. get the latest anchor for insertion\r\n anchor = next(activeBranch);\r\n unmount(activeBranch, parentComponent, suspense, true);\r\n }\r\n if (!delayEnter) {\r\n // move content from off-dom container to actual container\r\n move(pendingBranch, container, anchor, 0 /* ENTER */);\r\n }\r\n }\r\n setActiveBranch(suspense, pendingBranch);\r\n suspense.pendingBranch = null;\r\n suspense.isInFallback = false;\r\n // flush buffered effects\r\n // check if there is a pending parent suspense\r\n let parent = suspense.parent;\r\n let hasUnresolvedAncestor = false;\r\n while (parent) {\r\n if (parent.pendingBranch) {\r\n // found a pending parent suspense, merge buffered post jobs\r\n // into that parent\r\n parent.effects.push(...effects);\r\n hasUnresolvedAncestor = true;\r\n break;\r\n }\r\n parent = parent.parent;\r\n }\r\n // no pending parent suspense, flush all jobs\r\n if (!hasUnresolvedAncestor) {\r\n queuePostFlushCb(effects);\r\n }\r\n suspense.effects = [];\r\n // invoke @resolve event\r\n triggerEvent(vnode, 'onResolve');\r\n },\r\n fallback(fallbackVNode) {\r\n if (!suspense.pendingBranch) {\r\n return;\r\n }\r\n const { vnode, activeBranch, parentComponent, container, isSVG } = suspense;\r\n // invoke @fallback event\r\n triggerEvent(vnode, 'onFallback');\r\n const anchor = next(activeBranch);\r\n const mountFallback = () => {\r\n if (!suspense.isInFallback) {\r\n return;\r\n }\r\n // mount the fallback tree\r\n patch(null, fallbackVNode, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG, slotScopeIds, optimized);\r\n setActiveBranch(suspense, fallbackVNode);\r\n };\r\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in';\r\n if (delayEnter) {\r\n activeBranch.transition.afterLeave = mountFallback;\r\n }\r\n suspense.isInFallback = true;\r\n // unmount current active branch\r\n unmount(activeBranch, parentComponent, null, // no suspense so unmount hooks fire now\r\n true // shouldRemove\r\n );\r\n if (!delayEnter) {\r\n mountFallback();\r\n }\r\n },\r\n move(container, anchor, type) {\r\n suspense.activeBranch &&\r\n move(suspense.activeBranch, container, anchor, type);\r\n suspense.container = container;\r\n },\r\n next() {\r\n return suspense.activeBranch && next(suspense.activeBranch);\r\n },\r\n registerDep(instance, setupRenderEffect) {\r\n const isInPendingSuspense = !!suspense.pendingBranch;\r\n if (isInPendingSuspense) {\r\n suspense.deps++;\r\n }\r\n const hydratedEl = instance.vnode.el;\r\n instance\r\n .asyncDep.catch(err => {\r\n handleError(err, instance, 0 /* SETUP_FUNCTION */);\r\n })\r\n .then(asyncSetupResult => {\r\n // retry when the setup() promise resolves.\r\n // component may have been unmounted before resolve.\r\n if (instance.isUnmounted ||\r\n suspense.isUnmounted ||\r\n suspense.pendingId !== instance.suspenseId) {\r\n return;\r\n }\r\n // retry from this component\r\n instance.asyncResolved = true;\r\n const { vnode } = instance;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n pushWarningContext(vnode);\r\n }\r\n handleSetupResult(instance, asyncSetupResult, false);\r\n if (hydratedEl) {\r\n // vnode may have been replaced if an update happened before the\r\n // async dep is resolved.\r\n vnode.el = hydratedEl;\r\n }\r\n const placeholder = !hydratedEl && instance.subTree.el;\r\n setupRenderEffect(instance, vnode, \r\n // component may have been moved before resolve.\r\n // if this is not a hydration, instance.subTree will be the comment\r\n // placeholder.\r\n parentNode(hydratedEl || instance.subTree.el), \r\n // anchor will not be used if this is hydration, so only need to\r\n // consider the comment placeholder case.\r\n hydratedEl ? null : next(instance.subTree), suspense, isSVG, optimized);\r\n if (placeholder) {\r\n remove(placeholder);\r\n }\r\n updateHOCHostEl(instance, vnode.el);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n popWarningContext();\r\n }\r\n // only decrease deps count if suspense is not already resolved\r\n if (isInPendingSuspense && --suspense.deps === 0) {\r\n suspense.resolve();\r\n }\r\n });\r\n },\r\n unmount(parentSuspense, doRemove) {\r\n suspense.isUnmounted = true;\r\n if (suspense.activeBranch) {\r\n unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove);\r\n }\r\n if (suspense.pendingBranch) {\r\n unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove);\r\n }\r\n }\r\n };\r\n return suspense;\r\n}\r\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {\r\n /* eslint-disable no-restricted-globals */\r\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode, document.createElement('div'), null, isSVG, slotScopeIds, optimized, rendererInternals, true /* hydrating */));\r\n // there are two possible scenarios for server-rendered suspense:\r\n // - success: ssr content should be fully resolved\r\n // - failure: ssr content should be the fallback branch.\r\n // however, on the client we don't really know if it has failed or not\r\n // attempt to hydrate the DOM assuming it has succeeded, but we still\r\n // need to construct a suspense boundary first\r\n const result = hydrateNode(node, (suspense.pendingBranch = vnode.ssContent), parentComponent, suspense, slotScopeIds, optimized);\r\n if (suspense.deps === 0) {\r\n suspense.resolve();\r\n }\r\n return result;\r\n /* eslint-enable no-restricted-globals */\r\n}\r\nfunction normalizeSuspenseChildren(vnode) {\r\n const { shapeFlag, children } = vnode;\r\n const isSlotChildren = shapeFlag & 32 /* SLOTS_CHILDREN */;\r\n vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children);\r\n vnode.ssFallback = isSlotChildren\r\n ? normalizeSuspenseSlot(children.fallback)\r\n : createVNode(Comment);\r\n}\r\nfunction normalizeSuspenseSlot(s) {\r\n let block;\r\n if (isFunction(s)) {\r\n const trackBlock = isBlockTreeEnabled && s._c;\r\n if (trackBlock) {\r\n // disableTracking: false\r\n // allow block tracking for compiled slots\r\n // (see ./componentRenderContext.ts)\r\n s._d = false;\r\n openBlock();\r\n }\r\n s = s();\r\n if (trackBlock) {\r\n s._d = true;\r\n block = currentBlock;\r\n closeBlock();\r\n }\r\n }\r\n if (isArray(s)) {\r\n const singleChild = filterSingleRoot(s);\r\n if ((process.env.NODE_ENV !== 'production') && !singleChild) {\r\n warn(` slots expect a single root node.`);\r\n }\r\n s = singleChild;\r\n }\r\n s = normalizeVNode(s);\r\n if (block && !s.dynamicChildren) {\r\n s.dynamicChildren = block.filter(c => c !== s);\r\n }\r\n return s;\r\n}\r\nfunction queueEffectWithSuspense(fn, suspense) {\r\n if (suspense && suspense.pendingBranch) {\r\n if (isArray(fn)) {\r\n suspense.effects.push(...fn);\r\n }\r\n else {\r\n suspense.effects.push(fn);\r\n }\r\n }\r\n else {\r\n queuePostFlushCb(fn);\r\n }\r\n}\r\nfunction setActiveBranch(suspense, branch) {\r\n suspense.activeBranch = branch;\r\n const { vnode, parentComponent } = suspense;\r\n const el = (vnode.el = branch.el);\r\n // in case suspense is the root node of a component,\r\n // recursively update the HOC el\r\n if (parentComponent && parentComponent.subTree === vnode) {\r\n parentComponent.vnode.el = el;\r\n updateHOCHostEl(parentComponent, el);\r\n }\r\n}\n\nfunction provide(key, value) {\r\n if (!currentInstance) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`provide() can only be used inside setup().`);\r\n }\r\n }\r\n else {\r\n let provides = currentInstance.provides;\r\n // by default an instance inherits its parent's provides object\r\n // but when it needs to provide values of its own, it creates its\r\n // own provides object using parent provides object as prototype.\r\n // this way in `inject` we can simply look up injections from direct\r\n // parent and let the prototype chain do the work.\r\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\r\n if (parentProvides === provides) {\r\n provides = currentInstance.provides = Object.create(parentProvides);\r\n }\r\n // TS doesn't allow symbol as index type\r\n provides[key] = value;\r\n }\r\n}\r\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\r\n // fallback to `currentRenderingInstance` so that this can be called in\r\n // a functional component\r\n const instance = currentInstance || currentRenderingInstance;\r\n if (instance) {\r\n // #2400\r\n // to support `app.use` plugins,\r\n // fallback to appContext's `provides` if the instance is at root\r\n const provides = instance.parent == null\r\n ? instance.vnode.appContext && instance.vnode.appContext.provides\r\n : instance.parent.provides;\r\n if (provides && key in provides) {\r\n // TS doesn't allow symbol as index type\r\n return provides[key];\r\n }\r\n else if (arguments.length > 1) {\r\n return treatDefaultAsFactory && isFunction(defaultValue)\r\n ? defaultValue.call(instance.proxy)\r\n : defaultValue;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`injection \"${String(key)}\" not found.`);\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`inject() can only be used inside setup() or functional components.`);\r\n }\r\n}\n\n// Simple effect.\r\nfunction watchEffect(effect, options) {\r\n return doWatch(effect, null, options);\r\n}\r\nfunction watchPostEffect(effect, options) {\r\n return doWatch(effect, null, ((process.env.NODE_ENV !== 'production')\r\n ? Object.assign(Object.assign({}, options), { flush: 'post' }) : { flush: 'post' }));\r\n}\r\nfunction watchSyncEffect(effect, options) {\r\n return doWatch(effect, null, ((process.env.NODE_ENV !== 'production')\r\n ? Object.assign(Object.assign({}, options), { flush: 'sync' }) : { flush: 'sync' }));\r\n}\r\n// initial value for watchers to trigger on undefined initial values\r\nconst INITIAL_WATCHER_VALUE = {};\r\n// implementation\r\nfunction watch(source, cb, options) {\r\n if ((process.env.NODE_ENV !== 'production') && !isFunction(cb)) {\r\n warn(`\\`watch(fn, options?)\\` signature has been moved to a separate API. ` +\r\n `Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only ` +\r\n `supports \\`watch(source, cb, options?) signature.`);\r\n }\r\n return doWatch(source, cb, options);\r\n}\r\nfunction doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) {\r\n if ((process.env.NODE_ENV !== 'production') && !cb) {\r\n if (immediate !== undefined) {\r\n warn(`watch() \"immediate\" option is only respected when using the ` +\r\n `watch(source, callback, options?) signature.`);\r\n }\r\n if (deep !== undefined) {\r\n warn(`watch() \"deep\" option is only respected when using the ` +\r\n `watch(source, callback, options?) signature.`);\r\n }\r\n }\r\n const warnInvalidSource = (s) => {\r\n warn(`Invalid watch source: `, s, `A watch source can only be a getter/effect function, a ref, ` +\r\n `a reactive object, or an array of these types.`);\r\n };\r\n const instance = currentInstance;\r\n let getter;\r\n let forceTrigger = false;\r\n let isMultiSource = false;\r\n if (isRef(source)) {\r\n getter = () => source.value;\r\n forceTrigger = isShallow$1(source);\r\n }\r\n else if (isReactive(source)) {\r\n getter = () => source;\r\n deep = true;\r\n }\r\n else if (isArray(source)) {\r\n isMultiSource = true;\r\n forceTrigger = source.some(s => isReactive(s) || isShallow$1(s));\r\n getter = () => source.map(s => {\r\n if (isRef(s)) {\r\n return s.value;\r\n }\r\n else if (isReactive(s)) {\r\n return traverse(s);\r\n }\r\n else if (isFunction(s)) {\r\n return callWithErrorHandling(s, instance, 2 /* WATCH_GETTER */);\r\n }\r\n else {\r\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(s);\r\n }\r\n });\r\n }\r\n else if (isFunction(source)) {\r\n if (cb) {\r\n // getter with cb\r\n getter = () => callWithErrorHandling(source, instance, 2 /* WATCH_GETTER */);\r\n }\r\n else {\r\n // no cb -> simple effect\r\n getter = () => {\r\n if (instance && instance.isUnmounted) {\r\n return;\r\n }\r\n if (cleanup) {\r\n cleanup();\r\n }\r\n return callWithAsyncErrorHandling(source, instance, 3 /* WATCH_CALLBACK */, [onCleanup]);\r\n };\r\n }\r\n }\r\n else {\r\n getter = NOOP;\r\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(source);\r\n }\r\n if (cb && deep) {\r\n const baseGetter = getter;\r\n getter = () => traverse(baseGetter());\r\n }\r\n let cleanup;\r\n let onCleanup = (fn) => {\r\n cleanup = effect.onStop = () => {\r\n callWithErrorHandling(fn, instance, 4 /* WATCH_CLEANUP */);\r\n };\r\n };\r\n // in SSR there is no need to setup an actual effect, and it should be noop\r\n // unless it's eager\r\n if (isInSSRComponentSetup) {\r\n // we will also not call the invalidate callback (+ runner is not set up)\r\n onCleanup = NOOP;\r\n if (!cb) {\r\n getter();\r\n }\r\n else if (immediate) {\r\n callWithAsyncErrorHandling(cb, instance, 3 /* WATCH_CALLBACK */, [\r\n getter(),\r\n isMultiSource ? [] : undefined,\r\n onCleanup\r\n ]);\r\n }\r\n return NOOP;\r\n }\r\n let oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE;\r\n const job = () => {\r\n if (!effect.active) {\r\n return;\r\n }\r\n if (cb) {\r\n // watch(source, cb)\r\n const newValue = effect.run();\r\n if (deep ||\r\n forceTrigger ||\r\n (isMultiSource\r\n ? newValue.some((v, i) => hasChanged(v, oldValue[i]))\r\n : hasChanged(newValue, oldValue)) ||\r\n (false )) {\r\n // cleanup before running cb again\r\n if (cleanup) {\r\n cleanup();\r\n }\r\n callWithAsyncErrorHandling(cb, instance, 3 /* WATCH_CALLBACK */, [\r\n newValue,\r\n // pass undefined as the old value when it's changed for the first time\r\n oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue,\r\n onCleanup\r\n ]);\r\n oldValue = newValue;\r\n }\r\n }\r\n else {\r\n // watchEffect\r\n effect.run();\r\n }\r\n };\r\n // important: mark the job as a watcher callback so that scheduler knows\r\n // it is allowed to self-trigger (#1727)\r\n job.allowRecurse = !!cb;\r\n let scheduler;\r\n if (flush === 'sync') {\r\n scheduler = job; // the scheduler function gets called directly\r\n }\r\n else if (flush === 'post') {\r\n scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\r\n }\r\n else {\r\n // default: 'pre'\r\n scheduler = () => queuePreFlushCb(job);\r\n }\r\n const effect = new ReactiveEffect(getter, scheduler);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n effect.onTrack = onTrack;\r\n effect.onTrigger = onTrigger;\r\n }\r\n // initial run\r\n if (cb) {\r\n if (immediate) {\r\n job();\r\n }\r\n else {\r\n oldValue = effect.run();\r\n }\r\n }\r\n else if (flush === 'post') {\r\n queuePostRenderEffect(effect.run.bind(effect), instance && instance.suspense);\r\n }\r\n else {\r\n effect.run();\r\n }\r\n return () => {\r\n effect.stop();\r\n if (instance && instance.scope) {\r\n remove(instance.scope.effects, effect);\r\n }\r\n };\r\n}\r\n// this.$watch\r\nfunction instanceWatch(source, value, options) {\r\n const publicThis = this.proxy;\r\n const getter = isString(source)\r\n ? source.includes('.')\r\n ? createPathGetter(publicThis, source)\r\n : () => publicThis[source]\r\n : source.bind(publicThis, publicThis);\r\n let cb;\r\n if (isFunction(value)) {\r\n cb = value;\r\n }\r\n else {\r\n cb = value.handler;\r\n options = value;\r\n }\r\n const cur = currentInstance;\r\n setCurrentInstance(this);\r\n const res = doWatch(getter, cb.bind(publicThis), options);\r\n if (cur) {\r\n setCurrentInstance(cur);\r\n }\r\n else {\r\n unsetCurrentInstance();\r\n }\r\n return res;\r\n}\r\nfunction createPathGetter(ctx, path) {\r\n const segments = path.split('.');\r\n return () => {\r\n let cur = ctx;\r\n for (let i = 0; i < segments.length && cur; i++) {\r\n cur = cur[segments[i]];\r\n }\r\n return cur;\r\n };\r\n}\r\nfunction traverse(value, seen) {\r\n if (!isObject(value) || value[\"__v_skip\" /* SKIP */]) {\r\n return value;\r\n }\r\n seen = seen || new Set();\r\n if (seen.has(value)) {\r\n return value;\r\n }\r\n seen.add(value);\r\n if (isRef(value)) {\r\n traverse(value.value, seen);\r\n }\r\n else if (isArray(value)) {\r\n for (let i = 0; i < value.length; i++) {\r\n traverse(value[i], seen);\r\n }\r\n }\r\n else if (isSet(value) || isMap(value)) {\r\n value.forEach((v) => {\r\n traverse(v, seen);\r\n });\r\n }\r\n else if (isPlainObject(value)) {\r\n for (const key in value) {\r\n traverse(value[key], seen);\r\n }\r\n }\r\n return value;\r\n}\n\nfunction useTransitionState() {\r\n const state = {\r\n isMounted: false,\r\n isLeaving: false,\r\n isUnmounting: false,\r\n leavingVNodes: new Map()\r\n };\r\n onMounted(() => {\r\n state.isMounted = true;\r\n });\r\n onBeforeUnmount(() => {\r\n state.isUnmounting = true;\r\n });\r\n return state;\r\n}\r\nconst TransitionHookValidator = [Function, Array];\r\nconst BaseTransitionImpl = {\r\n name: `BaseTransition`,\r\n props: {\r\n mode: String,\r\n appear: Boolean,\r\n persisted: Boolean,\r\n // enter\r\n onBeforeEnter: TransitionHookValidator,\r\n onEnter: TransitionHookValidator,\r\n onAfterEnter: TransitionHookValidator,\r\n onEnterCancelled: TransitionHookValidator,\r\n // leave\r\n onBeforeLeave: TransitionHookValidator,\r\n onLeave: TransitionHookValidator,\r\n onAfterLeave: TransitionHookValidator,\r\n onLeaveCancelled: TransitionHookValidator,\r\n // appear\r\n onBeforeAppear: TransitionHookValidator,\r\n onAppear: TransitionHookValidator,\r\n onAfterAppear: TransitionHookValidator,\r\n onAppearCancelled: TransitionHookValidator\r\n },\r\n setup(props, { slots }) {\r\n const instance = getCurrentInstance();\r\n const state = useTransitionState();\r\n let prevTransitionKey;\r\n return () => {\r\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\r\n if (!children || !children.length) {\r\n return;\r\n }\r\n let child = children[0];\r\n if (children.length > 1) {\r\n let hasFound = false;\r\n // locate first non-comment child\r\n for (const c of children) {\r\n if (c.type !== Comment) {\r\n if ((process.env.NODE_ENV !== 'production') && hasFound) {\r\n // warn more than one non-comment child\r\n warn(' can only be used on a single element or component. ' +\r\n 'Use for lists.');\r\n break;\r\n }\r\n child = c;\r\n hasFound = true;\r\n if (!(process.env.NODE_ENV !== 'production'))\r\n break;\r\n }\r\n }\r\n }\r\n // there's no need to track reactivity for these props so use the raw\r\n // props for a bit better perf\r\n const rawProps = toRaw(props);\r\n const { mode } = rawProps;\r\n // check mode\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n mode &&\r\n mode !== 'in-out' &&\r\n mode !== 'out-in' &&\r\n mode !== 'default') {\r\n warn(`invalid mode: ${mode}`);\r\n }\r\n if (state.isLeaving) {\r\n return emptyPlaceholder(child);\r\n }\r\n // in the case of , we need to\r\n // compare the type of the kept-alive children.\r\n const innerChild = getKeepAliveChild(child);\r\n if (!innerChild) {\r\n return emptyPlaceholder(child);\r\n }\r\n const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);\r\n setTransitionHooks(innerChild, enterHooks);\r\n const oldChild = instance.subTree;\r\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\r\n let transitionKeyChanged = false;\r\n const { getTransitionKey } = innerChild.type;\r\n if (getTransitionKey) {\r\n const key = getTransitionKey();\r\n if (prevTransitionKey === undefined) {\r\n prevTransitionKey = key;\r\n }\r\n else if (key !== prevTransitionKey) {\r\n prevTransitionKey = key;\r\n transitionKeyChanged = true;\r\n }\r\n }\r\n // handle mode\r\n if (oldInnerChild &&\r\n oldInnerChild.type !== Comment &&\r\n (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\r\n const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);\r\n // update old tree's hooks in case of dynamic transition\r\n setTransitionHooks(oldInnerChild, leavingHooks);\r\n // switching between different views\r\n if (mode === 'out-in') {\r\n state.isLeaving = true;\r\n // return placeholder node and queue update when leave finishes\r\n leavingHooks.afterLeave = () => {\r\n state.isLeaving = false;\r\n instance.update();\r\n };\r\n return emptyPlaceholder(child);\r\n }\r\n else if (mode === 'in-out' && innerChild.type !== Comment) {\r\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\r\n const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);\r\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\r\n // early removal callback\r\n el._leaveCb = () => {\r\n earlyRemove();\r\n el._leaveCb = undefined;\r\n delete enterHooks.delayedLeave;\r\n };\r\n enterHooks.delayedLeave = delayedLeave;\r\n };\r\n }\r\n }\r\n return child;\r\n };\r\n }\r\n};\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\nconst BaseTransition = BaseTransitionImpl;\r\nfunction getLeavingNodesForType(state, vnode) {\r\n const { leavingVNodes } = state;\r\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\r\n if (!leavingVNodesCache) {\r\n leavingVNodesCache = Object.create(null);\r\n leavingVNodes.set(vnode.type, leavingVNodesCache);\r\n }\r\n return leavingVNodesCache;\r\n}\r\n// The transition hooks are attached to the vnode as vnode.transition\r\n// and will be called at appropriate timing in the renderer.\r\nfunction resolveTransitionHooks(vnode, props, state, instance) {\r\n const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;\r\n const key = String(vnode.key);\r\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\r\n const callHook = (hook, args) => {\r\n hook &&\r\n callWithAsyncErrorHandling(hook, instance, 9 /* TRANSITION_HOOK */, args);\r\n };\r\n const callAsyncHook = (hook, args) => {\r\n const done = args[1];\r\n callHook(hook, args);\r\n if (isArray(hook)) {\r\n if (hook.every(hook => hook.length <= 1))\r\n done();\r\n }\r\n else if (hook.length <= 1) {\r\n done();\r\n }\r\n };\r\n const hooks = {\r\n mode,\r\n persisted,\r\n beforeEnter(el) {\r\n let hook = onBeforeEnter;\r\n if (!state.isMounted) {\r\n if (appear) {\r\n hook = onBeforeAppear || onBeforeEnter;\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n // for same element (v-show)\r\n if (el._leaveCb) {\r\n el._leaveCb(true /* cancelled */);\r\n }\r\n // for toggled element with same key (v-if)\r\n const leavingVNode = leavingVNodesCache[key];\r\n if (leavingVNode &&\r\n isSameVNodeType(vnode, leavingVNode) &&\r\n leavingVNode.el._leaveCb) {\r\n // force early removal (not cancelled)\r\n leavingVNode.el._leaveCb();\r\n }\r\n callHook(hook, [el]);\r\n },\r\n enter(el) {\r\n let hook = onEnter;\r\n let afterHook = onAfterEnter;\r\n let cancelHook = onEnterCancelled;\r\n if (!state.isMounted) {\r\n if (appear) {\r\n hook = onAppear || onEnter;\r\n afterHook = onAfterAppear || onAfterEnter;\r\n cancelHook = onAppearCancelled || onEnterCancelled;\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n let called = false;\r\n const done = (el._enterCb = (cancelled) => {\r\n if (called)\r\n return;\r\n called = true;\r\n if (cancelled) {\r\n callHook(cancelHook, [el]);\r\n }\r\n else {\r\n callHook(afterHook, [el]);\r\n }\r\n if (hooks.delayedLeave) {\r\n hooks.delayedLeave();\r\n }\r\n el._enterCb = undefined;\r\n });\r\n if (hook) {\r\n callAsyncHook(hook, [el, done]);\r\n }\r\n else {\r\n done();\r\n }\r\n },\r\n leave(el, remove) {\r\n const key = String(vnode.key);\r\n if (el._enterCb) {\r\n el._enterCb(true /* cancelled */);\r\n }\r\n if (state.isUnmounting) {\r\n return remove();\r\n }\r\n callHook(onBeforeLeave, [el]);\r\n let called = false;\r\n const done = (el._leaveCb = (cancelled) => {\r\n if (called)\r\n return;\r\n called = true;\r\n remove();\r\n if (cancelled) {\r\n callHook(onLeaveCancelled, [el]);\r\n }\r\n else {\r\n callHook(onAfterLeave, [el]);\r\n }\r\n el._leaveCb = undefined;\r\n if (leavingVNodesCache[key] === vnode) {\r\n delete leavingVNodesCache[key];\r\n }\r\n });\r\n leavingVNodesCache[key] = vnode;\r\n if (onLeave) {\r\n callAsyncHook(onLeave, [el, done]);\r\n }\r\n else {\r\n done();\r\n }\r\n },\r\n clone(vnode) {\r\n return resolveTransitionHooks(vnode, props, state, instance);\r\n }\r\n };\r\n return hooks;\r\n}\r\n// the placeholder really only handles one special case: KeepAlive\r\n// in the case of a KeepAlive in a leave phase we need to return a KeepAlive\r\n// placeholder with empty content to avoid the KeepAlive instance from being\r\n// unmounted.\r\nfunction emptyPlaceholder(vnode) {\r\n if (isKeepAlive(vnode)) {\r\n vnode = cloneVNode(vnode);\r\n vnode.children = null;\r\n return vnode;\r\n }\r\n}\r\nfunction getKeepAliveChild(vnode) {\r\n return isKeepAlive(vnode)\r\n ? vnode.children\r\n ? vnode.children[0]\r\n : undefined\r\n : vnode;\r\n}\r\nfunction setTransitionHooks(vnode, hooks) {\r\n if (vnode.shapeFlag & 6 /* COMPONENT */ && vnode.component) {\r\n setTransitionHooks(vnode.component.subTree, hooks);\r\n }\r\n else if (vnode.shapeFlag & 128 /* SUSPENSE */) {\r\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\r\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\r\n }\r\n else {\r\n vnode.transition = hooks;\r\n }\r\n}\r\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\r\n let ret = [];\r\n let keyedFragmentCount = 0;\r\n for (let i = 0; i < children.length; i++) {\r\n let child = children[i];\r\n // #5360 inherit parent key in case of