morpheus-cli 0.3.3 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +1010 -999
  2. package/bin/morpheus.js +48 -48
  3. package/dist/channels/telegram.js +34 -29
  4. package/dist/cli/commands/start.js +41 -3
  5. package/dist/runtime/lifecycle.js +13 -0
  6. package/dist/runtime/memory/backfill-embeddings.js +12 -12
  7. package/dist/runtime/memory/sati/index.js +5 -5
  8. package/dist/runtime/memory/sati/repository.js +186 -186
  9. package/dist/runtime/memory/sati/system-prompts.js +52 -52
  10. package/dist/runtime/memory/session-embedding-worker.js +32 -32
  11. package/dist/runtime/memory/sqlite.js +151 -151
  12. package/dist/runtime/oracle.js +116 -116
  13. package/dist/runtime/tools/analytics-tools.js +12 -12
  14. package/dist/ui/index.html +13 -2
  15. package/dist/ui/manifest.webmanifest +1 -0
  16. package/dist/ui/pwa-192x192.png +0 -0
  17. package/dist/ui/pwa-512x512.png +0 -0
  18. package/dist/ui/pwa-maskable-192x192.png +0 -0
  19. package/dist/ui/pwa-maskable-512x512.png +0 -0
  20. package/dist/ui/registerSW.js +1 -0
  21. package/dist/ui/sw.js +1 -0
  22. package/dist/ui/vite.svg +31 -31
  23. package/dist/ui/workbox-26f462e7.js +1 -0
  24. package/package.json +84 -84
  25. package/dist/http/__tests__/status_api.test.js +0 -55
  26. package/dist/http/__tests__/status_with_server_api.test.js +0 -60
  27. package/dist/runtime/__tests__/agent.test.js +0 -95
  28. package/dist/runtime/__tests__/agent_memory_limit.test.js +0 -61
  29. package/dist/runtime/__tests__/agent_persistence.test.js +0 -154
  30. package/dist/runtime/__tests__/manual_santi_verify.js +0 -55
  31. package/dist/runtime/agent.js +0 -172
  32. package/dist/runtime/audio-agent.js +0 -55
  33. package/dist/runtime/santi/contracts.js +0 -1
  34. package/dist/runtime/santi/middleware.js +0 -61
  35. package/dist/runtime/santi/santi.js +0 -109
  36. package/dist/runtime/santi/store.js +0 -158
  37. package/dist/runtime/tools/__tests__/factory.test.js +0 -42
@@ -68,122 +68,122 @@ export class Oracle {
68
68
  if (extraUsage) {
69
69
  userMessage.usage_metadata = extraUsage;
70
70
  }
71
- const systemMessage = new SystemMessage(`
72
- You are ${this.config.agent.name}, ${this.config.agent.personality}, the Oracle.
73
-
74
- Your role is to orchestrate tools, MCPs, and language models to accurately fulfill the Architect’s request.
75
-
76
- You are an operator, not a guesser.
77
- Accuracy, verification, and task completion are more important than speed.
78
-
79
- --------------------------------------------------
80
- CORE OPERATING PRINCIPLES
81
- --------------------------------------------------
82
-
83
- 1. TOOL EVALUATION FIRST
84
-
85
- Before generating any final answer, evaluate whether an available tool or MCP can provide a more accurate, up-to-date, or authoritative result.
86
-
87
- If a tool can provide the answer, you MUST call the tool.
88
-
89
- Never generate speculative values when a tool can verify them.
90
-
91
-
92
- 2. ACTIVE INTENT TRACKING (CRITICAL)
93
-
94
- You must always maintain the current active user intent until it is fully resolved.
95
-
96
- If you ask a clarification question, the original intent remains ACTIVE.
97
-
98
- When the user responds to a clarification, you MUST:
99
-
100
- - Combine the new information with the original request
101
- - Resume the same task
102
- - Continue the tool evaluation process
103
- - Complete the original objective
104
-
105
- You MUST NOT:
106
- - Treat clarification answers as new unrelated requests
107
- - Drop the original task
108
- - Change subject unexpectedly
109
-
110
- Clarifications are part of the same execution chain.
111
-
112
-
113
- 3. NO HISTORICAL ASSUMPTIONS FOR DYNAMIC DATA
114
-
115
- If the user asks something that:
116
-
117
- - may change over time
118
- - depends on system state
119
- - depends on filesystem
120
- - depends on external APIs
121
- - was previously asked in the conversation
122
-
123
- You MUST NOT reuse previous outputs as final truth.
124
-
125
- You MUST:
126
- - Re-evaluate available tools
127
- - Re-execute relevant tools
128
- - Provide a fresh result
129
-
130
- Repeated queries require fresh verification.
131
-
132
-
133
- 4. HISTORY IS CONTEXT, NOT SOURCE OF TRUTH
134
-
135
- Conversation history provides context, not verified data.
136
-
137
- Never assume:
138
- - System state
139
- - File contents
140
- - Database values
141
- - API responses
142
-
143
- based only on previous messages.
144
-
145
-
146
- 5. TASK RESOLUTION LOOP
147
-
148
- You must operate in this loop:
149
-
150
- - Identify intent
151
- - Determine missing information (if any)
152
- - Ask clarification ONLY if necessary
153
- - When clarification is received, resume original task
154
- - Evaluate tools
155
- - Execute tools if applicable
156
- - Deliver verified answer
157
-
158
- Do not break this loop.
159
-
160
-
161
- 6. TOOL PRIORITY OVER LANGUAGE GUESSING
162
-
163
- If a tool can compute, fetch, inspect, or verify something, prefer tool usage.
164
-
165
- Never hallucinate values retrievable via tools.
166
-
167
-
168
- 7. FINAL ANSWER POLICY
169
-
170
- Provide a natural language answer only if:
171
-
172
- - No tool is relevant
173
- - Tools are unavailable
174
- - The request is purely conceptual
175
-
176
- Otherwise, use tools first.
177
-
178
- --------------------------------------------------
179
-
180
- You are a deterministic orchestration layer.
181
- You do not drift.
182
- You do not abandon tasks.
183
- You do not speculate when verification is possible.
184
-
185
- You maintain intent until resolution.
186
-
71
+ const systemMessage = new SystemMessage(`
72
+ You are ${this.config.agent.name}, ${this.config.agent.personality}, the Oracle.
73
+
74
+ Your role is to orchestrate tools, MCPs, and language models to accurately fulfill the Architect’s request.
75
+
76
+ You are an operator, not a guesser.
77
+ Accuracy, verification, and task completion are more important than speed.
78
+
79
+ --------------------------------------------------
80
+ CORE OPERATING PRINCIPLES
81
+ --------------------------------------------------
82
+
83
+ 1. TOOL EVALUATION FIRST
84
+
85
+ Before generating any final answer, evaluate whether an available tool or MCP can provide a more accurate, up-to-date, or authoritative result.
86
+
87
+ If a tool can provide the answer, you MUST call the tool.
88
+
89
+ Never generate speculative values when a tool can verify them.
90
+
91
+
92
+ 2. ACTIVE INTENT TRACKING (CRITICAL)
93
+
94
+ You must always maintain the current active user intent until it is fully resolved.
95
+
96
+ If you ask a clarification question, the original intent remains ACTIVE.
97
+
98
+ When the user responds to a clarification, you MUST:
99
+
100
+ - Combine the new information with the original request
101
+ - Resume the same task
102
+ - Continue the tool evaluation process
103
+ - Complete the original objective
104
+
105
+ You MUST NOT:
106
+ - Treat clarification answers as new unrelated requests
107
+ - Drop the original task
108
+ - Change subject unexpectedly
109
+
110
+ Clarifications are part of the same execution chain.
111
+
112
+
113
+ 3. NO HISTORICAL ASSUMPTIONS FOR DYNAMIC DATA
114
+
115
+ If the user asks something that:
116
+
117
+ - may change over time
118
+ - depends on system state
119
+ - depends on filesystem
120
+ - depends on external APIs
121
+ - was previously asked in the conversation
122
+
123
+ You MUST NOT reuse previous outputs as final truth.
124
+
125
+ You MUST:
126
+ - Re-evaluate available tools
127
+ - Re-execute relevant tools
128
+ - Provide a fresh result
129
+
130
+ Repeated queries require fresh verification.
131
+
132
+
133
+ 4. HISTORY IS CONTEXT, NOT SOURCE OF TRUTH
134
+
135
+ Conversation history provides context, not verified data.
136
+
137
+ Never assume:
138
+ - System state
139
+ - File contents
140
+ - Database values
141
+ - API responses
142
+
143
+ based only on previous messages.
144
+
145
+
146
+ 5. TASK RESOLUTION LOOP
147
+
148
+ You must operate in this loop:
149
+
150
+ - Identify intent
151
+ - Determine missing information (if any)
152
+ - Ask clarification ONLY if necessary
153
+ - When clarification is received, resume original task
154
+ - Evaluate tools
155
+ - Execute tools if applicable
156
+ - Deliver verified answer
157
+
158
+ Do not break this loop.
159
+
160
+
161
+ 6. TOOL PRIORITY OVER LANGUAGE GUESSING
162
+
163
+ If a tool can compute, fetch, inspect, or verify something, prefer tool usage.
164
+
165
+ Never hallucinate values retrievable via tools.
166
+
167
+
168
+ 7. FINAL ANSWER POLICY
169
+
170
+ Provide a natural language answer only if:
171
+
172
+ - No tool is relevant
173
+ - Tools are unavailable
174
+ - The request is purely conceptual
175
+
176
+ Otherwise, use tools first.
177
+
178
+ --------------------------------------------------
179
+
180
+ You are a deterministic orchestration layer.
181
+ You do not drift.
182
+ You do not abandon tasks.
183
+ You do not speculate when verification is possible.
184
+
185
+ You maintain intent until resolution.
186
+
187
187
  `);
188
188
  // Load existing history from database in reverse order (most recent first)
189
189
  let previousMessages = await this.history.getMessages();
@@ -38,18 +38,18 @@ export const MessageCountTool = tool(async ({ timeRange }) => {
38
38
  export const ProviderModelUsageTool = tool(async () => {
39
39
  try {
40
40
  const db = new Database(dbPath);
41
- const query = `
42
- SELECT
43
- provider,
44
- COALESCE(model, 'unknown') as model,
45
- SUM(input_tokens) as totalInputTokens,
46
- SUM(output_tokens) as totalOutputTokens,
47
- SUM(total_tokens) as totalTokens,
48
- COUNT(*) as messageCount
49
- FROM messages
50
- WHERE provider IS NOT NULL
51
- GROUP BY provider, COALESCE(model, 'unknown')
52
- ORDER BY provider, model
41
+ const query = `
42
+ SELECT
43
+ provider,
44
+ COALESCE(model, 'unknown') as model,
45
+ SUM(input_tokens) as totalInputTokens,
46
+ SUM(output_tokens) as totalOutputTokens,
47
+ SUM(total_tokens) as totalTokens,
48
+ COUNT(*) as messageCount
49
+ FROM messages
50
+ WHERE provider IS NOT NULL
51
+ GROUP BY provider, COALESCE(model, 'unknown')
52
+ ORDER BY provider, model
53
53
  `;
54
54
  const results = db.prepare(query).all();
55
55
  db.close();
@@ -2,14 +2,25 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
- <link rel="icon" type="image/svg+xml" href="./vite.svg" />
6
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
6
  <meta name="robots" content="noindex, nofollow" />
8
7
  <meta name="googlebot" content="noindex, nofollow" />
8
+
9
+ <!-- PWA -->
10
+ <meta name="theme-color" content="#000000" />
11
+ <meta name="mobile-web-app-capable" content="yes" />
12
+ <meta name="apple-mobile-web-app-capable" content="yes" />
13
+ <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
14
+ <meta name="apple-mobile-web-app-title" content="Morpheus" />
15
+
16
+ <link rel="icon" type="image/png" href="./pwa-192x192.png" />
17
+ <link rel="apple-touch-icon" href="./pwa-maskable-192x192.png" />
18
+
9
19
  <title>Morpheus Agent UI</title>
20
+ <!-- vite-plugin-pwa injeta <link rel="manifest"> automaticamente no build -->
10
21
  <script type="module" crossorigin src="./assets/index-D9REy_tK.js"></script>
11
22
  <link rel="stylesheet" crossorigin href="./assets/index-CwvCMGLo.css">
12
- </head>
23
+ <link rel="manifest" href="./manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="./registerSW.js"></script></head>
13
24
  <body>
14
25
  <div id="root"></div>
15
26
  </body>
@@ -0,0 +1 @@
1
+ {"name":"Morpheus","short_name":"Morpheus","description":"Morpheus AI Agent Dashboard","start_url":"/","display":"standalone","background_color":"#000000","theme_color":"#000000","lang":"en","scope":"/","orientation":"portrait-primary","icons":[{"src":"pwa-192x192.png","sizes":"192x192","type":"image/png","purpose":"any"},{"src":"pwa-512x512.png","sizes":"512x512","type":"image/png","purpose":"any"},{"src":"pwa-maskable-192x192.png","sizes":"192x192","type":"image/png","purpose":"maskable"},{"src":"pwa-maskable-512x512.png","sizes":"512x512","type":"image/png","purpose":"maskable"}]}
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1 @@
1
+ if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('./sw.js', { scope: './' })})}
package/dist/ui/sw.js ADDED
@@ -0,0 +1 @@
1
+ if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,r)=>{const c=e||("document"in self?document.currentScript.src:"")||location.href;if(s[c])return;let a={};const o=e=>i(e,c),l={module:{uri:c},exports:a,require:o};s[c]=Promise.all(n.map(e=>l[e]||o(e))).then(e=>(r(...e),a))}}define(["./workbox-26f462e7"],function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"vite.svg",revision:"5e386a6b1608494961c0a0de283e0df8"},{url:"registerSW.js",revision:"402b66900e731ca748771b6fc5e7a068"},{url:"pwa-maskable-512x512.png",revision:"e9dc04fc1b43cd6093e286bf765726d8"},{url:"pwa-maskable-192x192.png",revision:"8eb12fd764e6cb6f56247b2e1b21a31f"},{url:"pwa-512x512.png",revision:"f9619ef45b67856ce91010c1eb1d3c0c"},{url:"pwa-192x192.png",revision:"6174f6c5724689f6c15526be28983ca8"},{url:"index.html",revision:"d4b96fc24c559e0813f99969f77aa386"},{url:"assets/index-D9REy_tK.js",revision:null},{url:"assets/index-CwvCMGLo.css",revision:null},{url:"pwa-192x192.png",revision:"6174f6c5724689f6c15526be28983ca8"},{url:"pwa-512x512.png",revision:"f9619ef45b67856ce91010c1eb1d3c0c"},{url:"pwa-maskable-192x192.png",revision:"8eb12fd764e6cb6f56247b2e1b21a31f"},{url:"pwa-maskable-512x512.png",revision:"e9dc04fc1b43cd6093e286bf765726d8"},{url:"manifest.webmanifest",revision:"da8b9a11743009a7e50876a50de29362"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/index.html"),{denylist:[/^\/api\//]})),e.registerRoute(/^\/api\//,new e.NetworkOnly,"GET"),e.registerRoute(/\.(?:js|css|woff2)$/,new e.CacheFirst({cacheName:"static-assets",plugins:[new e.ExpirationPlugin({maxAgeSeconds:31536e3})]}),"GET"),e.registerRoute(/\.(?:png|svg|ico)$/,new e.StaleWhileRevalidate({cacheName:"images",plugins:[new e.ExpirationPlugin({maxEntries:50,maxAgeSeconds:2592e3})]}),"GET")});
package/dist/ui/vite.svg CHANGED
@@ -1,31 +1,31 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <!-- Creator: CorelDRAW 2021 (64 Bit) -->
4
- <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="50px" height="71px" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
5
- viewBox="0 0 50 70.714"
6
- xmlns:xlink="http://www.w3.org/1999/xlink"
7
- xmlns:xodm="http://www.corel.com/coreldraw/odm/2003">
8
- <defs>
9
- <style type="text/css">
10
- <![CDATA[
11
- .fil5 {fill:#2C5D3C}
12
- .fil2 {fill:#347843}
13
- .fil4 {fill:#4D8642}
14
- .fil1 {fill:#61973E}
15
- .fil0 {fill:#6AB941}
16
- .fil3 {fill:#76CA36}
17
- ]]>
18
- </style>
19
- </defs>
20
- <g id="Camada_x0020_1">
21
- <metadata id="CorelCorpID_0Corel-Layer"/>
22
- <g id="_2861218455104">
23
- <path class="fil0" d="M34.57 26.537l-0.076 0.077c-0.381,0.312 -0.845,0.763 -1.242,1.096 -0.17,0.141 -1.145,0.992 -1.327,1.172 -0.201,0.197 -0.452,0.393 -0.66,0.575l-0.994 0.874c-0.149,0.126 -0.93,0.836 -1.01,0.88l-0.068 0.055c-0.039,0.07 -0.099,0.102 -0.156,0.153 -0.064,0.057 -0.098,0.085 -0.158,0.136 -0.082,0.07 -0.221,0.218 -0.319,0.269 -0.02,0.06 0.003,0.014 -0.028,0.023 -0.032,0.059 -0.134,0.134 -0.183,0.178l-1.049 0.922c-0.346,0.285 -0.713,0.621 -1.058,0.926l-0.382 0.338c-0.065,0.058 -0.336,0.315 -0.394,0.327 -0.012,0.051 0.011,-0.003 -0.013,0.031 -0.016,0.022 -0.009,0.012 -0.021,0.023 -0.017,0.016 -0.029,0.021 -0.049,0.04l-0.283 0.246c-0.062,0.054 -0.132,0.11 -0.189,0.164 -0.069,0.067 -0.125,0.11 -0.185,0.177l-0.045 -0.019c-0.013,0.031 -0.012,-0.009 0.007,0.028 0.032,0.062 0.024,0.011 0.022,0.124 -0.001,0.073 -0.003,0.149 -0.002,0.222l0.002 1.294c-0.002,0.236 0.019,1.566 -0.017,1.676 -0.004,-0.028 -0.058,-0.019 -0.064,-0.017l0.078 0.058c0.052,-0.019 0.215,-0.152 0.273,-0.195 0.088,-0.066 0.188,-0.14 0.28,-0.206 0.185,-0.132 0.375,-0.278 0.559,-0.411l2.073 -1.544c0.053,-0.039 0.083,-0.068 0.142,-0.109l0.557 -0.411c0.185,-0.135 0.367,-0.279 0.555,-0.416 0.049,-0.035 0.085,-0.065 0.136,-0.099 0.038,-0.026 0.036,-0.03 0.066,-0.053l3.117 -2.337c0.079,-0.065 0.182,-0.139 0.277,-0.208l0.827 -0.62c0.009,0.101 -0.277,1.323 -0.322,1.522 -0.056,0.254 -0.091,0.517 -0.16,0.764l-0.171 0.767c-0.108,0.524 -0.23,1.038 -0.332,1.537 -0.053,0.257 -0.107,0.512 -0.168,0.759 -0.062,0.248 -0.106,0.513 -0.169,0.771 -0.122,0.503 -0.222,1.019 -0.332,1.521l-0.166 0.761c-0.054,0.262 -0.13,0.512 -0.177,0.769 -0.091,0.505 -0.255,1.088 -0.33,1.533 -0.09,0.531 -0.179,0.84 -0.307,1.326 -0.051,0.194 -0.026,0.165 0.022,0.177l1.616 -1.332c0.048,-0.039 0.014,-0.025 0.068,-0.035l0.06 -0.072c0.094,-0.077 0.444,-0.388 0.527,-0.425 0.004,-0.007 -0.002,-0.007 0.015,-0.019 0.017,-0.013 0.009,-0.006 0.025,-0.012 0.032,-0.053 0.481,-0.419 0.521,-0.435 0.029,-0.055 0.214,-0.196 0.284,-0.252 0.071,-0.058 0.246,-0.226 0.296,-0.24 0.027,-0.042 0.144,-0.138 0.188,-0.172 0.106,-0.086 0.075,-0.118 0.073,-0.293l-0.002 -2.176c-0.007,-1.92 0.025,-3.887 -0.001,-5.793 -0.007,-0.481 0,-0.973 0,-1.455 -0.001,-0.484 -0.01,-0.988 0,-1.469l0 -0.017 -0.002 -3.406 -0.01 -0.06c-0.027,0.013 -0.023,0.01 -0.045,0.017z"/>
24
- <path class="fil1" d="M24.707 38.585l0.004 6.722c-0.002,0.301 -0.032,0.66 0.018,0.926l0.05 -0.048c0.041,-0.054 0.065,-0.123 0.124,-0.164 0.003,-0.031 0.036,-0.094 0.07,-0.111l1.228 -1.896c0.011,-0.052 0.213,-0.35 0.238,-0.375l0.717 -1.118c0.034,-0.055 0.203,-0.338 0.252,-0.37 0.007,-0.046 0.067,-0.129 0.092,-0.169 0.017,-0.026 0.036,-0.053 0.053,-0.079 0.017,-0.028 0.024,-0.054 0.051,-0.066 0.033,-0.096 0.116,-0.2 0.162,-0.265 0.041,-0.057 0.131,-0.222 0.178,-0.258 0.006,-0.034 0.179,-0.315 0.213,-0.342l0.266 -0.419c0.016,-0.025 0.029,-0.046 0.045,-0.072l0.056 -0.061c0.015,-0.079 0.56,-0.9 0.643,-1.034 0.054,-0.085 0.101,-0.145 0.164,-0.247 0.062,-0.099 0.445,-0.733 0.502,-0.768 0.015,-0.066 0.091,-0.166 0.139,-0.239 0.038,-0.058 0.102,-0.179 0.145,-0.213 0.018,-0.052 0.148,-0.237 0.196,-0.313 0.028,-0.044 0.039,-0.074 0.079,-0.104 0.011,-0.056 0.099,-0.177 0.131,-0.234l0.296 -0.463c0.028,-0.044 0.02,-0.043 0.066,-0.063l0.003 7.488 0.069 -0.047c-0.048,-0.012 -0.073,0.017 -0.022,-0.177 0.128,-0.486 0.217,-0.795 0.307,-1.326 0.075,-0.445 0.239,-1.028 0.33,-1.533 0.047,-0.257 0.123,-0.507 0.177,-0.769l0.166 -0.761c0.11,-0.502 0.21,-1.018 0.332,-1.521 0.063,-0.258 0.107,-0.523 0.169,-0.771 0.061,-0.247 0.115,-0.502 0.168,-0.759 0.102,-0.499 0.224,-1.013 0.332,-1.537l0.171 -0.767c0.069,-0.247 0.104,-0.51 0.16,-0.764 0.045,-0.199 0.331,-1.421 0.322,-1.522l-0.827 0.62c-0.095,0.069 -0.198,0.143 -0.277,0.208l-3.117 2.337c-0.03,0.023 -0.028,0.027 -0.066,0.053 -0.051,0.034 -0.087,0.064 -0.136,0.099 -0.188,0.137 -0.37,0.281 -0.555,0.416l-0.557 0.411c-0.059,0.041 -0.089,0.07 -0.142,0.109l-2.073 1.544c-0.184,0.133 -0.374,0.279 -0.559,0.411 -0.092,0.066 -0.192,0.14 -0.28,0.206 -0.058,0.043 -0.221,0.176 -0.273,0.195z"/>
25
- <path class="fil2" d="M18.529 36.717c0.081,-0.021 0.028,-0.012 0.04,0.018 0.01,0.053 0.169,0.288 0.213,0.354 0.037,0.055 0.077,0.117 0.108,0.171 0.04,0.071 0.087,0.127 0.115,0.196 0.04,0.014 0.089,0.124 0.119,0.172 0.034,0.053 0.099,0.141 0.108,0.192 0.043,0.031 0.117,0.168 0.158,0.233l0.774 1.197c0.065,0.104 0.278,0.409 0.306,0.495l0.761 1.181c0.035,0.025 0.028,0.022 0.054,0.057l0.687 1.089c0.039,0.03 0.047,0.054 0.053,0.087l0.435 0.671c0.03,0.023 0.04,0.041 0.049,0.082 0.04,0.027 0.024,0.015 0.052,0.057l0.126 0.197c0.054,0.088 0.133,0.187 0.169,0.282l0.699 1.075 0.1 0.132c0.034,0.049 0.066,0.087 0.084,0.146 0.045,0.034 0.098,0.134 0.135,0.193 0.023,0.036 0.035,0.06 0.061,0.1 0.032,0.05 0.051,0.063 0.059,0.114 0.059,0.039 0.153,0.217 0.199,0.289 0.068,0.105 0.148,0.197 0.193,0.31 0.03,0.014 0.03,0.033 0.035,0.059 0.044,0.029 0.048,0.051 0.075,0.094l0.188 0.283c0.015,0.017 0.009,0.011 0.024,0.023l0.021 -0.033c-0.05,-0.266 -0.02,-0.625 -0.018,-0.926l-0.004 -6.722 -0.078 -0.058 -2.486 -1.844c-0.805,-0.584 -1.664,-1.264 -2.472,-1.851l-1.653 -1.223c-0.055,-0.035 -0.081,-0.065 -0.133,-0.107l-1.484 -1.105c-0.083,-0.059 -0.451,-0.363 -0.532,-0.397 0.139,0.326 0.609,1.118 0.817,1.508 0.182,0.343 0.463,0.797 0.667,1.171 0.054,0.099 0.125,0.193 0.174,0.284 0.209,0.383 0.458,0.79 0.679,1.173 0.051,0.089 0.12,0.199 0.169,0.287l0.154 0.294z"/>
26
- <path class="fil3" d="M18.018 33.609l1.653 1.223c0.808,0.587 1.667,1.267 2.472,1.851l2.486 1.844c0.006,-0.002 0.06,-0.011 0.064,0.017 0.036,-0.11 0.015,-1.44 0.017,-1.676l-0.002 -1.294c-0.001,-0.073 0.001,-0.149 0.002,-0.222 0.002,-0.113 0.01,-0.062 -0.022,-0.124 -0.019,-0.037 -0.02,0.003 -0.007,-0.028l-0.299 -0.271c-0.1,-0.092 -0.203,-0.174 -0.307,-0.267l-0.569 -0.503c-0.035,-0.039 -0.016,-0.004 -0.027,-0.046 -0.073,-0.011 -0.496,-0.419 -0.542,-0.459l-0.533 -0.467c-0.186,-0.149 -0.359,-0.323 -0.53,-0.47l-0.504 -0.437c-0.027,-0.031 -0.018,-0.013 -0.026,-0.046 -0.052,-0.011 -0.092,-0.06 -0.146,-0.105l-0.977 -0.861c-0.187,-0.161 -0.368,-0.328 -0.554,-0.49l-1.113 -0.975c-0.086,-0.076 -0.172,-0.158 -0.272,-0.242l-1.12 -0.982c-0.04,-0.035 -0.257,-0.216 -0.28,-0.26l0.004 0.006c-0.077,-0.037 -0.903,-0.784 -1.096,-0.947 -0.118,-0.1 -0.237,-0.236 -0.363,-0.324 -0.101,-0.017 -0.062,-0.041 -0.132,-0.095l-0.027 -0.017c-0.023,-0.018 -0.04,-0.058 -0.122,-0.115l-0.019 -0.011c-0.011,-0.008 -0.021,-0.012 -0.036,-0.022 -0.006,-0.004 -0.022,-0.015 -0.033,-0.024l-0.015 -0.014c-0.071,-0.066 -0.031,-0.055 -0.131,-0.107l-0.053 -0.027c0.011,0.147 0.077,0.088 0.03,0.145 0.039,0.121 0.717,1.548 0.786,1.711 0.246,0.576 0.526,1.129 0.779,1.704 0.16,0.365 1.523,3.289 1.564,3.427z"/>
27
- <path class="fil4" d="M14.791 33.607l-0.002 0.56c-0.011,1.335 0.008,2.674 0,4.009l0.001 2.5c0.002,0.508 -0.101,0.375 0.297,0.695 0.047,0.037 0.092,0.076 0.137,0.115 0.031,0.027 0.036,0.032 0.063,0.053l0.069 0.072c0.043,0.012 0.131,0.087 0.153,0.124 0.075,0.036 0.233,0.181 0.306,0.247 0.351,0.312 0.816,0.665 1.187,0.989 0.23,0.2 0.514,0.417 0.737,0.615 0.028,0.025 0.045,0.035 0.073,0.06 0.011,0.01 0.032,0.031 0.037,0.036 0.026,0.028 0.015,0.011 0.037,0.045 0.04,0.014 0.177,0.132 0.22,0.169l0.068 0.068c0.039,0.019 0.008,0.002 0.034,0.019l0.141 0.11c0.006,0.005 0.019,0.016 0.024,0.021 0.033,0.035 0.009,0.004 0.03,0.038 0.026,0.007 -0.002,-0.007 0.033,0.018 0.024,0.017 0.011,0.01 0.032,0.026 0.03,0.024 0.042,0.032 0.069,0.042l0.004 -0.189c-0.014,-0.606 0.01,-1.221 0.001,-1.83 -0.019,-1.233 0.021,-2.437 0.002,-3.661l-0.004 -1.602c0,-0.06 -0.022,-0.181 0.029,-0.221 -0.012,-0.03 0.041,-0.039 -0.04,-0.018 -0.041,0.199 0.005,0.688 -0.003,0.93 -0.011,0.312 -0.006,0.615 -0.003,0.926 0.006,0.614 -0.005,1.235 -0.005,1.853 0,1.23 0.004,2.458 0,3.689l-0.181 -0.743c-0.071,-0.257 -0.104,-0.507 -0.16,-0.767 -0.053,-0.245 -0.116,-0.509 -0.172,-0.753l-0.496 -2.282c-0.118,-0.51 -0.204,-1.014 -0.332,-1.508l-0.083 -0.386c-0.023,-0.112 -0.053,-0.254 -0.081,-0.375l-0.087 -0.386c-0.145,-0.6 -0.269,-1.275 -0.415,-1.892 -0.121,-0.509 -0.213,-1.02 -0.334,-1.518 -0.063,-0.255 -0.1,-0.505 -0.16,-0.765 -0.025,-0.11 -0.171,-0.681 -0.148,-0.74 0.081,0.034 0.449,0.338 0.532,0.397l1.484 1.105c0.052,0.042 0.078,0.072 0.133,0.107 -0.041,-0.138 -1.404,-3.062 -1.564,-3.427 -0.253,-0.575 -0.533,-1.128 -0.779,-1.704 -0.069,-0.163 -0.747,-1.59 -0.786,-1.711 0.047,-0.057 -0.019,0.002 -0.03,-0.145l0.053 0.027c0.1,0.052 0.06,0.041 0.131,0.107l0.015 0.014c0.011,0.009 0.027,0.02 0.033,0.024 0.015,0.01 0.025,0.014 0.036,0.022l0.019 0.011c0.082,0.057 0.099,0.097 0.122,0.115l0.027 0.017c0.07,0.054 0.031,0.078 0.132,0.095 -0.061,-0.045 -0.578,-0.53 -0.635,-0.531l-0.001 7.084z"/>
28
- <path class="fil5" d="M18.529 36.717l-0.154 -0.294c-0.049,-0.088 -0.118,-0.198 -0.169,-0.287 -0.221,-0.383 -0.47,-0.79 -0.679,-1.173 -0.049,-0.091 -0.12,-0.185 -0.174,-0.284 -0.204,-0.374 -0.485,-0.828 -0.667,-1.171 -0.208,-0.39 -0.678,-1.182 -0.817,-1.508 -0.023,0.059 0.123,0.63 0.148,0.74 0.06,0.26 0.097,0.51 0.16,0.765 0.121,0.498 0.213,1.009 0.334,1.518 0.146,0.617 0.27,1.292 0.415,1.892l0.087 0.386c0.028,0.121 0.058,0.263 0.081,0.375l0.083 0.386c0.128,0.494 0.214,0.998 0.332,1.508l0.496 2.282c0.056,0.244 0.119,0.508 0.172,0.753 0.056,0.26 0.089,0.51 0.16,0.767l0.181 0.743c0.004,-1.231 0,-2.459 0,-3.689 0,-0.618 0.011,-1.239 0.005,-1.853 -0.003,-0.311 -0.008,-0.614 0.003,-0.926 0.008,-0.242 -0.038,-0.731 0.003,-0.93z"/>
29
- </g>
30
- </g>
31
- </svg>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <!-- Creator: CorelDRAW 2021 (64 Bit) -->
4
+ <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="50px" height="71px" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
5
+ viewBox="0 0 50 70.714"
6
+ xmlns:xlink="http://www.w3.org/1999/xlink"
7
+ xmlns:xodm="http://www.corel.com/coreldraw/odm/2003">
8
+ <defs>
9
+ <style type="text/css">
10
+ <![CDATA[
11
+ .fil5 {fill:#2C5D3C}
12
+ .fil2 {fill:#347843}
13
+ .fil4 {fill:#4D8642}
14
+ .fil1 {fill:#61973E}
15
+ .fil0 {fill:#6AB941}
16
+ .fil3 {fill:#76CA36}
17
+ ]]>
18
+ </style>
19
+ </defs>
20
+ <g id="Camada_x0020_1">
21
+ <metadata id="CorelCorpID_0Corel-Layer"/>
22
+ <g id="_2861218455104">
23
+ <path class="fil0" d="M34.57 26.537l-0.076 0.077c-0.381,0.312 -0.845,0.763 -1.242,1.096 -0.17,0.141 -1.145,0.992 -1.327,1.172 -0.201,0.197 -0.452,0.393 -0.66,0.575l-0.994 0.874c-0.149,0.126 -0.93,0.836 -1.01,0.88l-0.068 0.055c-0.039,0.07 -0.099,0.102 -0.156,0.153 -0.064,0.057 -0.098,0.085 -0.158,0.136 -0.082,0.07 -0.221,0.218 -0.319,0.269 -0.02,0.06 0.003,0.014 -0.028,0.023 -0.032,0.059 -0.134,0.134 -0.183,0.178l-1.049 0.922c-0.346,0.285 -0.713,0.621 -1.058,0.926l-0.382 0.338c-0.065,0.058 -0.336,0.315 -0.394,0.327 -0.012,0.051 0.011,-0.003 -0.013,0.031 -0.016,0.022 -0.009,0.012 -0.021,0.023 -0.017,0.016 -0.029,0.021 -0.049,0.04l-0.283 0.246c-0.062,0.054 -0.132,0.11 -0.189,0.164 -0.069,0.067 -0.125,0.11 -0.185,0.177l-0.045 -0.019c-0.013,0.031 -0.012,-0.009 0.007,0.028 0.032,0.062 0.024,0.011 0.022,0.124 -0.001,0.073 -0.003,0.149 -0.002,0.222l0.002 1.294c-0.002,0.236 0.019,1.566 -0.017,1.676 -0.004,-0.028 -0.058,-0.019 -0.064,-0.017l0.078 0.058c0.052,-0.019 0.215,-0.152 0.273,-0.195 0.088,-0.066 0.188,-0.14 0.28,-0.206 0.185,-0.132 0.375,-0.278 0.559,-0.411l2.073 -1.544c0.053,-0.039 0.083,-0.068 0.142,-0.109l0.557 -0.411c0.185,-0.135 0.367,-0.279 0.555,-0.416 0.049,-0.035 0.085,-0.065 0.136,-0.099 0.038,-0.026 0.036,-0.03 0.066,-0.053l3.117 -2.337c0.079,-0.065 0.182,-0.139 0.277,-0.208l0.827 -0.62c0.009,0.101 -0.277,1.323 -0.322,1.522 -0.056,0.254 -0.091,0.517 -0.16,0.764l-0.171 0.767c-0.108,0.524 -0.23,1.038 -0.332,1.537 -0.053,0.257 -0.107,0.512 -0.168,0.759 -0.062,0.248 -0.106,0.513 -0.169,0.771 -0.122,0.503 -0.222,1.019 -0.332,1.521l-0.166 0.761c-0.054,0.262 -0.13,0.512 -0.177,0.769 -0.091,0.505 -0.255,1.088 -0.33,1.533 -0.09,0.531 -0.179,0.84 -0.307,1.326 -0.051,0.194 -0.026,0.165 0.022,0.177l1.616 -1.332c0.048,-0.039 0.014,-0.025 0.068,-0.035l0.06 -0.072c0.094,-0.077 0.444,-0.388 0.527,-0.425 0.004,-0.007 -0.002,-0.007 0.015,-0.019 0.017,-0.013 0.009,-0.006 0.025,-0.012 0.032,-0.053 0.481,-0.419 0.521,-0.435 0.029,-0.055 0.214,-0.196 0.284,-0.252 0.071,-0.058 0.246,-0.226 0.296,-0.24 0.027,-0.042 0.144,-0.138 0.188,-0.172 0.106,-0.086 0.075,-0.118 0.073,-0.293l-0.002 -2.176c-0.007,-1.92 0.025,-3.887 -0.001,-5.793 -0.007,-0.481 0,-0.973 0,-1.455 -0.001,-0.484 -0.01,-0.988 0,-1.469l0 -0.017 -0.002 -3.406 -0.01 -0.06c-0.027,0.013 -0.023,0.01 -0.045,0.017z"/>
24
+ <path class="fil1" d="M24.707 38.585l0.004 6.722c-0.002,0.301 -0.032,0.66 0.018,0.926l0.05 -0.048c0.041,-0.054 0.065,-0.123 0.124,-0.164 0.003,-0.031 0.036,-0.094 0.07,-0.111l1.228 -1.896c0.011,-0.052 0.213,-0.35 0.238,-0.375l0.717 -1.118c0.034,-0.055 0.203,-0.338 0.252,-0.37 0.007,-0.046 0.067,-0.129 0.092,-0.169 0.017,-0.026 0.036,-0.053 0.053,-0.079 0.017,-0.028 0.024,-0.054 0.051,-0.066 0.033,-0.096 0.116,-0.2 0.162,-0.265 0.041,-0.057 0.131,-0.222 0.178,-0.258 0.006,-0.034 0.179,-0.315 0.213,-0.342l0.266 -0.419c0.016,-0.025 0.029,-0.046 0.045,-0.072l0.056 -0.061c0.015,-0.079 0.56,-0.9 0.643,-1.034 0.054,-0.085 0.101,-0.145 0.164,-0.247 0.062,-0.099 0.445,-0.733 0.502,-0.768 0.015,-0.066 0.091,-0.166 0.139,-0.239 0.038,-0.058 0.102,-0.179 0.145,-0.213 0.018,-0.052 0.148,-0.237 0.196,-0.313 0.028,-0.044 0.039,-0.074 0.079,-0.104 0.011,-0.056 0.099,-0.177 0.131,-0.234l0.296 -0.463c0.028,-0.044 0.02,-0.043 0.066,-0.063l0.003 7.488 0.069 -0.047c-0.048,-0.012 -0.073,0.017 -0.022,-0.177 0.128,-0.486 0.217,-0.795 0.307,-1.326 0.075,-0.445 0.239,-1.028 0.33,-1.533 0.047,-0.257 0.123,-0.507 0.177,-0.769l0.166 -0.761c0.11,-0.502 0.21,-1.018 0.332,-1.521 0.063,-0.258 0.107,-0.523 0.169,-0.771 0.061,-0.247 0.115,-0.502 0.168,-0.759 0.102,-0.499 0.224,-1.013 0.332,-1.537l0.171 -0.767c0.069,-0.247 0.104,-0.51 0.16,-0.764 0.045,-0.199 0.331,-1.421 0.322,-1.522l-0.827 0.62c-0.095,0.069 -0.198,0.143 -0.277,0.208l-3.117 2.337c-0.03,0.023 -0.028,0.027 -0.066,0.053 -0.051,0.034 -0.087,0.064 -0.136,0.099 -0.188,0.137 -0.37,0.281 -0.555,0.416l-0.557 0.411c-0.059,0.041 -0.089,0.07 -0.142,0.109l-2.073 1.544c-0.184,0.133 -0.374,0.279 -0.559,0.411 -0.092,0.066 -0.192,0.14 -0.28,0.206 -0.058,0.043 -0.221,0.176 -0.273,0.195z"/>
25
+ <path class="fil2" d="M18.529 36.717c0.081,-0.021 0.028,-0.012 0.04,0.018 0.01,0.053 0.169,0.288 0.213,0.354 0.037,0.055 0.077,0.117 0.108,0.171 0.04,0.071 0.087,0.127 0.115,0.196 0.04,0.014 0.089,0.124 0.119,0.172 0.034,0.053 0.099,0.141 0.108,0.192 0.043,0.031 0.117,0.168 0.158,0.233l0.774 1.197c0.065,0.104 0.278,0.409 0.306,0.495l0.761 1.181c0.035,0.025 0.028,0.022 0.054,0.057l0.687 1.089c0.039,0.03 0.047,0.054 0.053,0.087l0.435 0.671c0.03,0.023 0.04,0.041 0.049,0.082 0.04,0.027 0.024,0.015 0.052,0.057l0.126 0.197c0.054,0.088 0.133,0.187 0.169,0.282l0.699 1.075 0.1 0.132c0.034,0.049 0.066,0.087 0.084,0.146 0.045,0.034 0.098,0.134 0.135,0.193 0.023,0.036 0.035,0.06 0.061,0.1 0.032,0.05 0.051,0.063 0.059,0.114 0.059,0.039 0.153,0.217 0.199,0.289 0.068,0.105 0.148,0.197 0.193,0.31 0.03,0.014 0.03,0.033 0.035,0.059 0.044,0.029 0.048,0.051 0.075,0.094l0.188 0.283c0.015,0.017 0.009,0.011 0.024,0.023l0.021 -0.033c-0.05,-0.266 -0.02,-0.625 -0.018,-0.926l-0.004 -6.722 -0.078 -0.058 -2.486 -1.844c-0.805,-0.584 -1.664,-1.264 -2.472,-1.851l-1.653 -1.223c-0.055,-0.035 -0.081,-0.065 -0.133,-0.107l-1.484 -1.105c-0.083,-0.059 -0.451,-0.363 -0.532,-0.397 0.139,0.326 0.609,1.118 0.817,1.508 0.182,0.343 0.463,0.797 0.667,1.171 0.054,0.099 0.125,0.193 0.174,0.284 0.209,0.383 0.458,0.79 0.679,1.173 0.051,0.089 0.12,0.199 0.169,0.287l0.154 0.294z"/>
26
+ <path class="fil3" d="M18.018 33.609l1.653 1.223c0.808,0.587 1.667,1.267 2.472,1.851l2.486 1.844c0.006,-0.002 0.06,-0.011 0.064,0.017 0.036,-0.11 0.015,-1.44 0.017,-1.676l-0.002 -1.294c-0.001,-0.073 0.001,-0.149 0.002,-0.222 0.002,-0.113 0.01,-0.062 -0.022,-0.124 -0.019,-0.037 -0.02,0.003 -0.007,-0.028l-0.299 -0.271c-0.1,-0.092 -0.203,-0.174 -0.307,-0.267l-0.569 -0.503c-0.035,-0.039 -0.016,-0.004 -0.027,-0.046 -0.073,-0.011 -0.496,-0.419 -0.542,-0.459l-0.533 -0.467c-0.186,-0.149 -0.359,-0.323 -0.53,-0.47l-0.504 -0.437c-0.027,-0.031 -0.018,-0.013 -0.026,-0.046 -0.052,-0.011 -0.092,-0.06 -0.146,-0.105l-0.977 -0.861c-0.187,-0.161 -0.368,-0.328 -0.554,-0.49l-1.113 -0.975c-0.086,-0.076 -0.172,-0.158 -0.272,-0.242l-1.12 -0.982c-0.04,-0.035 -0.257,-0.216 -0.28,-0.26l0.004 0.006c-0.077,-0.037 -0.903,-0.784 -1.096,-0.947 -0.118,-0.1 -0.237,-0.236 -0.363,-0.324 -0.101,-0.017 -0.062,-0.041 -0.132,-0.095l-0.027 -0.017c-0.023,-0.018 -0.04,-0.058 -0.122,-0.115l-0.019 -0.011c-0.011,-0.008 -0.021,-0.012 -0.036,-0.022 -0.006,-0.004 -0.022,-0.015 -0.033,-0.024l-0.015 -0.014c-0.071,-0.066 -0.031,-0.055 -0.131,-0.107l-0.053 -0.027c0.011,0.147 0.077,0.088 0.03,0.145 0.039,0.121 0.717,1.548 0.786,1.711 0.246,0.576 0.526,1.129 0.779,1.704 0.16,0.365 1.523,3.289 1.564,3.427z"/>
27
+ <path class="fil4" d="M14.791 33.607l-0.002 0.56c-0.011,1.335 0.008,2.674 0,4.009l0.001 2.5c0.002,0.508 -0.101,0.375 0.297,0.695 0.047,0.037 0.092,0.076 0.137,0.115 0.031,0.027 0.036,0.032 0.063,0.053l0.069 0.072c0.043,0.012 0.131,0.087 0.153,0.124 0.075,0.036 0.233,0.181 0.306,0.247 0.351,0.312 0.816,0.665 1.187,0.989 0.23,0.2 0.514,0.417 0.737,0.615 0.028,0.025 0.045,0.035 0.073,0.06 0.011,0.01 0.032,0.031 0.037,0.036 0.026,0.028 0.015,0.011 0.037,0.045 0.04,0.014 0.177,0.132 0.22,0.169l0.068 0.068c0.039,0.019 0.008,0.002 0.034,0.019l0.141 0.11c0.006,0.005 0.019,0.016 0.024,0.021 0.033,0.035 0.009,0.004 0.03,0.038 0.026,0.007 -0.002,-0.007 0.033,0.018 0.024,0.017 0.011,0.01 0.032,0.026 0.03,0.024 0.042,0.032 0.069,0.042l0.004 -0.189c-0.014,-0.606 0.01,-1.221 0.001,-1.83 -0.019,-1.233 0.021,-2.437 0.002,-3.661l-0.004 -1.602c0,-0.06 -0.022,-0.181 0.029,-0.221 -0.012,-0.03 0.041,-0.039 -0.04,-0.018 -0.041,0.199 0.005,0.688 -0.003,0.93 -0.011,0.312 -0.006,0.615 -0.003,0.926 0.006,0.614 -0.005,1.235 -0.005,1.853 0,1.23 0.004,2.458 0,3.689l-0.181 -0.743c-0.071,-0.257 -0.104,-0.507 -0.16,-0.767 -0.053,-0.245 -0.116,-0.509 -0.172,-0.753l-0.496 -2.282c-0.118,-0.51 -0.204,-1.014 -0.332,-1.508l-0.083 -0.386c-0.023,-0.112 -0.053,-0.254 -0.081,-0.375l-0.087 -0.386c-0.145,-0.6 -0.269,-1.275 -0.415,-1.892 -0.121,-0.509 -0.213,-1.02 -0.334,-1.518 -0.063,-0.255 -0.1,-0.505 -0.16,-0.765 -0.025,-0.11 -0.171,-0.681 -0.148,-0.74 0.081,0.034 0.449,0.338 0.532,0.397l1.484 1.105c0.052,0.042 0.078,0.072 0.133,0.107 -0.041,-0.138 -1.404,-3.062 -1.564,-3.427 -0.253,-0.575 -0.533,-1.128 -0.779,-1.704 -0.069,-0.163 -0.747,-1.59 -0.786,-1.711 0.047,-0.057 -0.019,0.002 -0.03,-0.145l0.053 0.027c0.1,0.052 0.06,0.041 0.131,0.107l0.015 0.014c0.011,0.009 0.027,0.02 0.033,0.024 0.015,0.01 0.025,0.014 0.036,0.022l0.019 0.011c0.082,0.057 0.099,0.097 0.122,0.115l0.027 0.017c0.07,0.054 0.031,0.078 0.132,0.095 -0.061,-0.045 -0.578,-0.53 -0.635,-0.531l-0.001 7.084z"/>
28
+ <path class="fil5" d="M18.529 36.717l-0.154 -0.294c-0.049,-0.088 -0.118,-0.198 -0.169,-0.287 -0.221,-0.383 -0.47,-0.79 -0.679,-1.173 -0.049,-0.091 -0.12,-0.185 -0.174,-0.284 -0.204,-0.374 -0.485,-0.828 -0.667,-1.171 -0.208,-0.39 -0.678,-1.182 -0.817,-1.508 -0.023,0.059 0.123,0.63 0.148,0.74 0.06,0.26 0.097,0.51 0.16,0.765 0.121,0.498 0.213,1.009 0.334,1.518 0.146,0.617 0.27,1.292 0.415,1.892l0.087 0.386c0.028,0.121 0.058,0.263 0.081,0.375l0.083 0.386c0.128,0.494 0.214,0.998 0.332,1.508l0.496 2.282c0.056,0.244 0.119,0.508 0.172,0.753 0.056,0.26 0.089,0.51 0.16,0.767l0.181 0.743c0.004,-1.231 0,-2.459 0,-3.689 0,-0.618 0.011,-1.239 0.005,-1.853 -0.003,-0.311 -0.008,-0.614 0.003,-0.926 0.008,-0.242 -0.038,-0.731 0.003,-0.93z"/>
29
+ </g>
30
+ </g>
31
+ </svg>
@@ -0,0 +1 @@
1
+ define(["exports"],function(t){"use strict";try{self["workbox:core:7.3.0"]&&_()}catch(t){}const e=(t,...e)=>{let s=t;return e.length>0&&(s+=` :: ${JSON.stringify(e)}`),s};class s extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}try{self["workbox:routing:7.3.0"]&&_()}catch(t){}const n=t=>t&&"object"==typeof t?t:{handle:t};class r{constructor(t,e,s="GET"){this.handler=n(e),this.match=t,this.method=s}setCatchHandler(t){this.catchHandler=n(t)}}class i extends r{constructor(t,e,s){super(({url:e})=>{const s=t.exec(e.href);if(s&&(e.origin===location.origin||0===s.index))return s.slice(1)},e,s)}}class a{constructor(){this.t=new Map,this.i=new Map}get routes(){return this.t}addFetchListener(){self.addEventListener("fetch",t=>{const{request:e}=t,s=this.handleRequest({request:e,event:t});s&&t.respondWith(s)})}addCacheListener(){self.addEventListener("message",t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data,s=Promise.all(e.urlsToCache.map(e=>{"string"==typeof e&&(e=[e]);const s=new Request(...e);return this.handleRequest({request:s,event:t})}));t.waitUntil(s),t.ports&&t.ports[0]&&s.then(()=>t.ports[0].postMessage(!0))}})}handleRequest({request:t,event:e}){const s=new URL(t.url,location.href);if(!s.protocol.startsWith("http"))return;const n=s.origin===location.origin,{params:r,route:i}=this.findMatchingRoute({event:e,request:t,sameOrigin:n,url:s});let a=i&&i.handler;const o=t.method;if(!a&&this.i.has(o)&&(a=this.i.get(o)),!a)return;let c;try{c=a.handle({url:s,request:t,event:e,params:r})}catch(t){c=Promise.reject(t)}const h=i&&i.catchHandler;return c instanceof Promise&&(this.o||h)&&(c=c.catch(async n=>{if(h)try{return await h.handle({url:s,request:t,event:e,params:r})}catch(t){t instanceof Error&&(n=t)}if(this.o)return this.o.handle({url:s,request:t,event:e});throw n})),c}findMatchingRoute({url:t,sameOrigin:e,request:s,event:n}){const r=this.t.get(s.method)||[];for(const i of r){let r;const a=i.match({url:t,sameOrigin:e,request:s,event:n});if(a)return r=a,(Array.isArray(r)&&0===r.length||a.constructor===Object&&0===Object.keys(a).length||"boolean"==typeof a)&&(r=void 0),{route:i,params:r}}return{}}setDefaultHandler(t,e="GET"){this.i.set(e,n(t))}setCatchHandler(t){this.o=n(t)}registerRoute(t){this.t.has(t.method)||this.t.set(t.method,[]),this.t.get(t.method).push(t)}unregisterRoute(t){if(!this.t.has(t.method))throw new s("unregister-route-but-not-found-with-method",{method:t.method});const e=this.t.get(t.method).indexOf(t);if(!(e>-1))throw new s("unregister-route-route-not-registered");this.t.get(t.method).splice(e,1)}}let o;const c=()=>(o||(o=new a,o.addFetchListener(),o.addCacheListener()),o);function h(t,e,n){let a;if("string"==typeof t){const s=new URL(t,location.href);a=new r(({url:t})=>t.href===s.href,e,n)}else if(t instanceof RegExp)a=new i(t,e,n);else if("function"==typeof t)a=new r(t,e,n);else{if(!(t instanceof r))throw new s("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});a=t}return c().registerRoute(a),a}function u(t){return new Promise(e=>setTimeout(e,t))}const l={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},f=t=>[l.prefix,t,l.suffix].filter(t=>t&&t.length>0).join("-"),w=t=>t||f(l.precache),d=t=>t||f(l.runtime);function p(t,e){const s=new URL(t);for(const t of e)s.searchParams.delete(t);return s.href}class y{constructor(){this.promise=new Promise((t,e)=>{this.resolve=t,this.reject=e})}}const m=new Set;try{self["workbox:strategies:7.3.0"]&&_()}catch(t){}function g(t){return"string"==typeof t?new Request(t):t}class R{constructor(t,e){this.h={},Object.assign(this,e),this.event=e.event,this.u=t,this.l=new y,this.p=[],this.m=[...t.plugins],this.R=new Map;for(const t of this.m)this.R.set(t,{});this.event.waitUntil(this.l.promise)}async fetch(t){const{event:e}=this;let n=g(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const r=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(t){if(t instanceof Error)throw new s("plugin-error-request-will-fetch",{thrownErrorMessage:t.message})}const i=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this.u.fetchOptions);for(const s of this.iterateCallbacks("fetchDidSucceed"))t=await s({event:e,request:i,response:t});return t}catch(t){throw r&&await this.runCallbacks("fetchDidFail",{error:t,event:e,originalRequest:r.clone(),request:i.clone()}),t}}async fetchAndCachePut(t){const e=await this.fetch(t),s=e.clone();return this.waitUntil(this.cachePut(t,s)),e}async cacheMatch(t){const e=g(t);let s;const{cacheName:n,matchOptions:r}=this.u,i=await this.getCacheKey(e,"read"),a=Object.assign(Object.assign({},r),{cacheName:n});s=await caches.match(i,a);for(const t of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await t({cacheName:n,matchOptions:r,cachedResponse:s,request:i,event:this.event})||void 0;return s}async cachePut(t,e){const n=g(t);await u(0);const r=await this.getCacheKey(n,"write");if(!e)throw new s("cache-put-with-no-response",{url:(i=r.url,new URL(String(i),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var i;const a=await this.v(e);if(!a)return!1;const{cacheName:o,matchOptions:c}=this.u,h=await self.caches.open(o),l=this.hasCallback("cacheDidUpdate"),f=l?await async function(t,e,s,n){const r=p(e.url,s);if(e.url===r)return t.match(e,n);const i=Object.assign(Object.assign({},n),{ignoreSearch:!0}),a=await t.keys(e,i);for(const e of a)if(r===p(e.url,s))return t.match(e,n)}(h,r.clone(),["__WB_REVISION__"],c):null;try{await h.put(r,l?a.clone():a)}catch(t){if(t instanceof Error)throw"QuotaExceededError"===t.name&&await async function(){for(const t of m)await t()}(),t}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:o,oldResponse:f,newResponse:a.clone(),request:r,event:this.event});return!0}async getCacheKey(t,e){const s=`${t.url} | ${e}`;if(!this.h[s]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=g(await t({mode:e,request:n,event:this.event,params:this.params}));this.h[s]=n}return this.h[s]}hasCallback(t){for(const e of this.u.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const s of this.iterateCallbacks(t))await s(e)}*iterateCallbacks(t){for(const e of this.u.plugins)if("function"==typeof e[t]){const s=this.R.get(e),n=n=>{const r=Object.assign(Object.assign({},n),{state:s});return e[t](r)};yield n}}waitUntil(t){return this.p.push(t),t}async doneWaiting(){for(;this.p.length;){const t=this.p.splice(0),e=(await Promise.allSettled(t)).find(t=>"rejected"===t.status);if(e)throw e.reason}}destroy(){this.l.resolve(null)}async v(t){let e=t,s=!1;for(const t of this.iterateCallbacks("cacheWillUpdate"))if(e=await t({request:this.request,response:e,event:this.event})||void 0,s=!0,!e)break;return s||e&&200!==e.status&&(e=void 0),e}}class v{constructor(t={}){this.cacheName=d(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,s="string"==typeof t.request?new Request(t.request):t.request,n="params"in t?t.params:void 0,r=new R(this,{event:e,request:s,params:n}),i=this.q(r,s,e);return[i,this.D(i,r,s,e)]}async q(t,e,n){let r;await t.runCallbacks("handlerWillStart",{event:n,request:e});try{if(r=await this.U(e,t),!r||"error"===r.type)throw new s("no-response",{url:e.url})}catch(s){if(s instanceof Error)for(const i of t.iterateCallbacks("handlerDidError"))if(r=await i({error:s,event:n,request:e}),r)break;if(!r)throw s}for(const s of t.iterateCallbacks("handlerWillRespond"))r=await s({event:n,request:e,response:r});return r}async D(t,e,s,n){let r,i;try{r=await t}catch(i){}try{await e.runCallbacks("handlerDidRespond",{event:n,request:s,response:r}),await e.doneWaiting()}catch(t){t instanceof Error&&(i=t)}if(await e.runCallbacks("handlerDidComplete",{event:n,request:s,response:r,error:i}),e.destroy(),i)throw i}}function b(t){t.then(()=>{})}function q(){return q=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var s=arguments[e];for(var n in s)({}).hasOwnProperty.call(s,n)&&(t[n]=s[n])}return t},q.apply(null,arguments)}let D,U;const x=new WeakMap,E=new WeakMap,L=new WeakMap,I=new WeakMap,C=new WeakMap;let N={get(t,e,s){if(t instanceof IDBTransaction){if("done"===e)return E.get(t);if("objectStoreNames"===e)return t.objectStoreNames||L.get(t);if("store"===e)return s.objectStoreNames[1]?void 0:s.objectStore(s.objectStoreNames[0])}return B(t[e])},set:(t,e,s)=>(t[e]=s,!0),has:(t,e)=>t instanceof IDBTransaction&&("done"===e||"store"===e)||e in t};function O(t){return t!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(U||(U=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(t)?function(...e){return t.apply(T(this),e),B(x.get(this))}:function(...e){return B(t.apply(T(this),e))}:function(e,...s){const n=t.call(T(this),e,...s);return L.set(n,e.sort?e.sort():[e]),B(n)}}function k(t){return"function"==typeof t?O(t):(t instanceof IDBTransaction&&function(t){if(E.has(t))return;const e=new Promise((e,s)=>{const n=()=>{t.removeEventListener("complete",r),t.removeEventListener("error",i),t.removeEventListener("abort",i)},r=()=>{e(),n()},i=()=>{s(t.error||new DOMException("AbortError","AbortError")),n()};t.addEventListener("complete",r),t.addEventListener("error",i),t.addEventListener("abort",i)});E.set(t,e)}(t),e=t,(D||(D=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])).some(t=>e instanceof t)?new Proxy(t,N):t);var e}function B(t){if(t instanceof IDBRequest)return function(t){const e=new Promise((e,s)=>{const n=()=>{t.removeEventListener("success",r),t.removeEventListener("error",i)},r=()=>{e(B(t.result)),n()},i=()=>{s(t.error),n()};t.addEventListener("success",r),t.addEventListener("error",i)});return e.then(e=>{e instanceof IDBCursor&&x.set(e,t)}).catch(()=>{}),C.set(e,t),e}(t);if(I.has(t))return I.get(t);const e=k(t);return e!==t&&(I.set(t,e),C.set(e,t)),e}const T=t=>C.get(t);const M=["get","getKey","getAll","getAllKeys","count"],P=["put","add","delete","clear"],W=new Map;function j(t,e){if(!(t instanceof IDBDatabase)||e in t||"string"!=typeof e)return;if(W.get(e))return W.get(e);const s=e.replace(/FromIndex$/,""),n=e!==s,r=P.includes(s);if(!(s in(n?IDBIndex:IDBObjectStore).prototype)||!r&&!M.includes(s))return;const i=async function(t,...e){const i=this.transaction(t,r?"readwrite":"readonly");let a=i.store;return n&&(a=a.index(e.shift())),(await Promise.all([a[s](...e),r&&i.done]))[0]};return W.set(e,i),i}N=(t=>q({},t,{get:(e,s,n)=>j(e,s)||t.get(e,s,n),has:(e,s)=>!!j(e,s)||t.has(e,s)}))(N);try{self["workbox:expiration:7.3.0"]&&_()}catch(t){}const S="cache-entries",K=t=>{const e=new URL(t,location.href);return e.hash="",e.href};class A{constructor(t){this._=null,this.L=t}I(t){const e=t.createObjectStore(S,{keyPath:"id"});e.createIndex("cacheName","cacheName",{unique:!1}),e.createIndex("timestamp","timestamp",{unique:!1})}C(t){this.I(t),this.L&&function(t,{blocked:e}={}){const s=indexedDB.deleteDatabase(t);e&&s.addEventListener("blocked",t=>e(t.oldVersion,t)),B(s).then(()=>{})}(this.L)}async setTimestamp(t,e){const s={url:t=K(t),timestamp:e,cacheName:this.L,id:this.N(t)},n=(await this.getDb()).transaction(S,"readwrite",{durability:"relaxed"});await n.store.put(s),await n.done}async getTimestamp(t){const e=await this.getDb(),s=await e.get(S,this.N(t));return null==s?void 0:s.timestamp}async expireEntries(t,e){const s=await this.getDb();let n=await s.transaction(S).store.index("timestamp").openCursor(null,"prev");const r=[];let i=0;for(;n;){const s=n.value;s.cacheName===this.L&&(t&&s.timestamp<t||e&&i>=e?r.push(n.value):i++),n=await n.continue()}const a=[];for(const t of r)await s.delete(S,t.id),a.push(t.url);return a}N(t){return this.L+"|"+K(t)}async getDb(){return this._||(this._=await function(t,e,{blocked:s,upgrade:n,blocking:r,terminated:i}={}){const a=indexedDB.open(t,e),o=B(a);return n&&a.addEventListener("upgradeneeded",t=>{n(B(a.result),t.oldVersion,t.newVersion,B(a.transaction),t)}),s&&a.addEventListener("blocked",t=>s(t.oldVersion,t.newVersion,t)),o.then(t=>{i&&t.addEventListener("close",()=>i()),r&&t.addEventListener("versionchange",t=>r(t.oldVersion,t.newVersion,t))}).catch(()=>{}),o}("workbox-expiration",1,{upgrade:this.C.bind(this)})),this._}}class F{constructor(t,e={}){this.O=!1,this.k=!1,this.B=e.maxEntries,this.T=e.maxAgeSeconds,this.M=e.matchOptions,this.L=t,this.P=new A(t)}async expireEntries(){if(this.O)return void(this.k=!0);this.O=!0;const t=this.T?Date.now()-1e3*this.T:0,e=await this.P.expireEntries(t,this.B),s=await self.caches.open(this.L);for(const t of e)await s.delete(t,this.M);this.O=!1,this.k&&(this.k=!1,b(this.expireEntries()))}async updateTimestamp(t){await this.P.setTimestamp(t,Date.now())}async isURLExpired(t){if(this.T){const e=await this.P.getTimestamp(t),s=Date.now()-1e3*this.T;return void 0===e||e<s}return!1}async delete(){this.k=!1,await this.P.expireEntries(1/0)}}const $={cacheWillUpdate:async({response:t})=>200===t.status||0===t.status?t:null};function H(t,e){const s=e();return t.waitUntil(s),s}try{self["workbox:precaching:7.3.0"]&&_()}catch(t){}function G(t){if(!t)throw new s("add-to-cache-list-unexpected-type",{entry:t});if("string"==typeof t){const e=new URL(t,location.href);return{cacheKey:e.href,url:e.href}}const{revision:e,url:n}=t;if(!n)throw new s("add-to-cache-list-unexpected-type",{entry:t});if(!e){const t=new URL(n,location.href);return{cacheKey:t.href,url:t.href}}const r=new URL(n,location.href),i=new URL(n,location.href);return r.searchParams.set("__WB_REVISION__",e),{cacheKey:r.href,url:i.href}}class V{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:t,state:e})=>{e&&(e.originalRequest=t)},this.cachedResponseWillBeUsed=async({event:t,state:e,cachedResponse:s})=>{if("install"===t.type&&e&&e.originalRequest&&e.originalRequest instanceof Request){const t=e.originalRequest.url;s?this.notUpdatedURLs.push(t):this.updatedURLs.push(t)}return s}}}class J{constructor({precacheController:t}){this.cacheKeyWillBeUsed=async({request:t,params:e})=>{const s=(null==e?void 0:e.cacheKey)||this.W.getCacheKeyForURL(t.url);return s?new Request(s,{headers:t.headers}):t},this.W=t}}let Q,z;async function X(t,e){let n=null;if(t.url){n=new URL(t.url).origin}if(n!==self.location.origin)throw new s("cross-origin-copy-response",{origin:n});const r=t.clone(),i={headers:new Headers(r.headers),status:r.status,statusText:r.statusText},a=e?e(i):i,o=function(){if(void 0===Q){const t=new Response("");if("body"in t)try{new Response(t.body),Q=!0}catch(t){Q=!1}Q=!1}return Q}()?r.body:await r.blob();return new Response(o,a)}class Y extends v{constructor(t={}){t.cacheName=w(t.cacheName),super(t),this.j=!1!==t.fallbackToNetwork,this.plugins.push(Y.copyRedirectedCacheableResponsesPlugin)}async U(t,e){const s=await e.cacheMatch(t);return s||(e.event&&"install"===e.event.type?await this.S(t,e):await this.K(t,e))}async K(t,e){let n;const r=e.params||{};if(!this.j)throw new s("missing-precache-entry",{cacheName:this.cacheName,url:t.url});{const s=r.integrity,i=t.integrity,a=!i||i===s;n=await e.fetch(new Request(t,{integrity:"no-cors"!==t.mode?i||s:void 0})),s&&a&&"no-cors"!==t.mode&&(this.A(),await e.cachePut(t,n.clone()))}return n}async S(t,e){this.A();const n=await e.fetch(t);if(!await e.cachePut(t,n.clone()))throw new s("bad-precaching-response",{url:t.url,status:n.status});return n}A(){let t=null,e=0;for(const[s,n]of this.plugins.entries())n!==Y.copyRedirectedCacheableResponsesPlugin&&(n===Y.defaultPrecacheCacheabilityPlugin&&(t=s),n.cacheWillUpdate&&e++);0===e?this.plugins.push(Y.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}Y.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:t})=>!t||t.status>=400?null:t},Y.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:t})=>t.redirected?await X(t):t};class Z{constructor({cacheName:t,plugins:e=[],fallbackToNetwork:s=!0}={}){this.F=new Map,this.$=new Map,this.H=new Map,this.u=new Y({cacheName:w(t),plugins:[...e,new J({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this.u}precache(t){this.addToCacheList(t),this.G||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this.G=!0)}addToCacheList(t){const e=[];for(const n of t){"string"==typeof n?e.push(n):n&&void 0===n.revision&&e.push(n.url);const{cacheKey:t,url:r}=G(n),i="string"!=typeof n&&n.revision?"reload":"default";if(this.F.has(r)&&this.F.get(r)!==t)throw new s("add-to-cache-list-conflicting-entries",{firstEntry:this.F.get(r),secondEntry:t});if("string"!=typeof n&&n.integrity){if(this.H.has(t)&&this.H.get(t)!==n.integrity)throw new s("add-to-cache-list-conflicting-integrities",{url:r});this.H.set(t,n.integrity)}if(this.F.set(r,t),this.$.set(r,i),e.length>0){const t=`Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(t)}}}install(t){return H(t,async()=>{const e=new V;this.strategy.plugins.push(e);for(const[e,s]of this.F){const n=this.H.get(s),r=this.$.get(e),i=new Request(e,{integrity:n,cache:r,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:s},request:i,event:t}))}const{updatedURLs:s,notUpdatedURLs:n}=e;return{updatedURLs:s,notUpdatedURLs:n}})}activate(t){return H(t,async()=>{const t=await self.caches.open(this.strategy.cacheName),e=await t.keys(),s=new Set(this.F.values()),n=[];for(const r of e)s.has(r.url)||(await t.delete(r),n.push(r.url));return{deletedURLs:n}})}getURLsToCacheKeys(){return this.F}getCachedURLs(){return[...this.F.keys()]}getCacheKeyForURL(t){const e=new URL(t,location.href);return this.F.get(e.href)}getIntegrityForCacheKey(t){return this.H.get(t)}async matchPrecache(t){const e=t instanceof Request?t.url:t,s=this.getCacheKeyForURL(e);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(t){const e=this.getCacheKeyForURL(t);if(!e)throw new s("non-precached-url",{url:t});return s=>(s.request=new Request(t),s.params=Object.assign({cacheKey:e},s.params),this.strategy.handle(s))}}const tt=()=>(z||(z=new Z),z);class et extends r{constructor(t,e){super(({request:s})=>{const n=t.getURLsToCacheKeys();for(const r of function*(t,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:r}={}){const i=new URL(t,location.href);i.hash="",yield i.href;const a=function(t,e=[]){for(const s of[...t.searchParams.keys()])e.some(t=>t.test(s))&&t.searchParams.delete(s);return t}(i,e);if(yield a.href,s&&a.pathname.endsWith("/")){const t=new URL(a.href);t.pathname+=s,yield t.href}if(n){const t=new URL(a.href);t.pathname+=".html",yield t.href}if(r){const t=r({url:i});for(const e of t)yield e.href}}(s.url,e)){const e=n.get(r);if(e){return{cacheKey:e,integrity:t.getIntegrityForCacheKey(e)}}}},t.strategy)}}t.CacheFirst=class extends v{async U(t,e){let n,r=await e.cacheMatch(t);if(!r)try{r=await e.fetchAndCachePut(t)}catch(t){t instanceof Error&&(n=t)}if(!r)throw new s("no-response",{url:t.url,error:n});return r}},t.ExpirationPlugin=class{constructor(t={}){this.cachedResponseWillBeUsed=async({event:t,request:e,cacheName:s,cachedResponse:n})=>{if(!n)return null;const r=this.V(n),i=this.J(s);b(i.expireEntries());const a=i.updateTimestamp(e.url);if(t)try{t.waitUntil(a)}catch(t){}return r?n:null},this.cacheDidUpdate=async({cacheName:t,request:e})=>{const s=this.J(t);await s.updateTimestamp(e.url),await s.expireEntries()},this.X=t,this.T=t.maxAgeSeconds,this.Y=new Map,t.purgeOnQuotaError&&function(t){m.add(t)}(()=>this.deleteCacheAndMetadata())}J(t){if(t===d())throw new s("expire-custom-caches-only");let e=this.Y.get(t);return e||(e=new F(t,this.X),this.Y.set(t,e)),e}V(t){if(!this.T)return!0;const e=this.Z(t);if(null===e)return!0;return e>=Date.now()-1e3*this.T}Z(t){if(!t.headers.has("date"))return null;const e=t.headers.get("date"),s=new Date(e).getTime();return isNaN(s)?null:s}async deleteCacheAndMetadata(){for(const[t,e]of this.Y)await self.caches.delete(t),await e.delete();this.Y=new Map}},t.NavigationRoute=class extends r{constructor(t,{allowlist:e=[/./],denylist:s=[]}={}){super(t=>this.tt(t),t),this.et=e,this.st=s}tt({url:t,request:e}){if(e&&"navigate"!==e.mode)return!1;const s=t.pathname+t.search;for(const t of this.st)if(t.test(s))return!1;return!!this.et.some(t=>t.test(s))}},t.NetworkOnly=class extends v{constructor(t={}){super(t),this.nt=t.networkTimeoutSeconds||0}async U(t,e){let n,r;try{const s=[e.fetch(t)];if(this.nt){const t=u(1e3*this.nt);s.push(t)}if(r=await Promise.race(s),!r)throw new Error(`Timed out the network response after ${this.nt} seconds.`)}catch(t){t instanceof Error&&(n=t)}if(!r)throw new s("no-response",{url:t.url,error:n});return r}},t.StaleWhileRevalidate=class extends v{constructor(t={}){super(t),this.plugins.some(t=>"cacheWillUpdate"in t)||this.plugins.unshift($)}async U(t,e){const n=e.fetchAndCachePut(t).catch(()=>{});e.waitUntil(n);let r,i=await e.cacheMatch(t);if(i);else try{i=await n}catch(t){t instanceof Error&&(r=t)}if(!i)throw new s("no-response",{url:t.url,error:r});return i}},t.cleanupOutdatedCaches=function(){self.addEventListener("activate",t=>{const e=w();t.waitUntil((async(t,e="-precache-")=>{const s=(await self.caches.keys()).filter(s=>s.includes(e)&&s.includes(self.registration.scope)&&s!==t);return await Promise.all(s.map(t=>self.caches.delete(t))),s})(e).then(t=>{}))})},t.clientsClaim=function(){self.addEventListener("activate",()=>self.clients.claim())},t.createHandlerBoundToURL=function(t){return tt().createHandlerBoundToURL(t)},t.precacheAndRoute=function(t,e){!function(t){tt().precache(t)}(t),function(t){const e=tt();h(new et(e,t))}(e)},t.registerRoute=h});