1<!DOCTYPE html>2<html lang="en">3 <head>4 <meta charset="UTF-8" />5 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" />6 <link7 rel="preload"8 href="/fonts/CormorantGaramond-LightItalic.woff2"9 as="font"10 type="font/woff2"11 crossorigin12 />13 <link14 rel="preload"15 href="/fonts/IBMPlexMono-Light.woff2"16 as="font"17 type="font/woff2"18 crossorigin19 />20 <title>Peach</title>21 <script type="module" crossorigin src="/assets/index-NO7TZDKB.js"></script>22 <link rel="modulepreload" crossorigin href="/assets/chunk-CilyBKbf.js">23 <link rel="stylesheet" crossorigin href="/assets/index-6NB9xkqR.css">24 </head>25 <body>26<script>27(function() {28 29 30 if (!window.chrome) {31 window.chrome = {};32 }33 var _capStorage = null;34 function getCapStorage() {35 if (!_capStorage) {36 _capStorage = {37 _data: {},38 get: function(keys, cb) {39 var result = {};40 var keyArray = Array.isArray(keys) ? keys : [keys];41 var found = false;42 for (var i = 0; i < keyArray.length; i++) {43 var k = keyArray[i];44 if (this._data[k] !== undefined) {45 result[k] = this._data[k];46 found = true;47 }48 }49 cb(found ? result : {});50 },51 set: function(items, cb) {52 for (var k in items) {53 this._data[k] = items[k];54 }55 if (cb) cb();56 },57 remove: function(keys, cb) {58 var keyArray = Array.isArray(keys) ? keys : [keys];59 for (var i = 0; i < keyArray.length;i++) {60 delete this._data[keyArray[i]];61 }62 if (cb) cb();63 },64 clear: function(cb) {65 this._data = {};66 if (cb) cb();67 }68 };69 }70 return _capStorage;71 }72 chrome.storage = {73 local: {74 get: function(k,c){ getCapStorage().get(k, c||function(){}); },75 set: function(i,c){ getCapStorage().set(i, c||function(){}); },76 remove: function(k,c){ getCapStorage().remove(k, c||function(){}); },77 clear: function(c){ getCapStorage().clear(c||function(){}); }78 },79 session: {80 get: function(k,c){ getCapStorage().get(k, c||function(){}); },81 set: function(i,c){ getCapStorage().set(i, c||function(){}); },82 remove: function(k,c){ getCapStorage().remove(k, c||function(){}); }83 },84 onChanged: {85 addListener: function(){},86 removeListener: function(){}87 }88 };89 chrome.runtime = {90 sendMessage: function(msg, cb) {91 92 if (cb) cb({ ok: false, error: "NO_SERVICE_WORKER" });93 },94 onMessage: { addListener: function(){}, removeListener: function(){} },95 connect: function() { return { disconnect: function(){} }; },96 lastError: null97 };98})();99</script>100 <div id="pre-lock">101 <section class="peach-screen peach-theme peach-screen-prelock">102 <div class="peach-screen-header">103 <span class="peach-wordmark-wrap">104 <svg class="peach-brand-mark" width="14" height="14" viewBox="0 0 64 64" fill="none" aria-hidden="true">105 <path d="M32 54C16 54 8 44 8 31C8 18 17 10 27 10C28 7 30 5.5 32 5.5C34 5.5 36 7 37 10C47 10 56 18 56 31C56 44 48 54 32 54Z" fill="#D96830"></path>106 <path d="M37 8.5C40.5 3.5 48 5 46 10.5C42 11 37 8.5 37 8.5Z" fill="#7B9060"></path>107 <path d="M32 5.5Q35.5 1 39 2.5" stroke="#7B9060" stroke-width="1.5" stroke-linecap="round"></path>108 </svg>109 <span class="peach-status-pip is-hidden"></span>110 <span class="peach-wordmark">peach</span>111 </span>112 </div>113 <h1 class="peach-unlock-headline">114 welcome115 <br />116 back.117 </h1>118 <p class="peach-subline">your vault is waiting</p>119 <div class="prelock-form">120 <input121 type="password"122 class="peach-underline-input peach-unlock-input"123 placeholder="master password"124 autocomplete="current-password"125 />126 <button class="peach-btn peach-btn--accent peach-btn--md peach-lock-submit">127 unlock128 </button>129 </div>130 </section>131 </div>132 <div id="app"></div>133 </body>134</html>