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.
- package/README.md +1010 -999
- package/bin/morpheus.js +48 -48
- package/dist/channels/telegram.js +34 -29
- package/dist/cli/commands/start.js +41 -3
- package/dist/runtime/lifecycle.js +13 -0
- package/dist/runtime/memory/backfill-embeddings.js +12 -12
- package/dist/runtime/memory/sati/index.js +5 -5
- package/dist/runtime/memory/sati/repository.js +186 -186
- package/dist/runtime/memory/sati/system-prompts.js +52 -52
- package/dist/runtime/memory/session-embedding-worker.js +32 -32
- package/dist/runtime/memory/sqlite.js +151 -151
- package/dist/runtime/oracle.js +116 -116
- package/dist/runtime/tools/analytics-tools.js +12 -12
- package/dist/ui/index.html +13 -2
- package/dist/ui/manifest.webmanifest +1 -0
- package/dist/ui/pwa-192x192.png +0 -0
- package/dist/ui/pwa-512x512.png +0 -0
- package/dist/ui/pwa-maskable-192x192.png +0 -0
- package/dist/ui/pwa-maskable-512x512.png +0 -0
- package/dist/ui/registerSW.js +1 -0
- package/dist/ui/sw.js +1 -0
- package/dist/ui/vite.svg +31 -31
- package/dist/ui/workbox-26f462e7.js +1 -0
- package/package.json +84 -84
- package/dist/http/__tests__/status_api.test.js +0 -55
- package/dist/http/__tests__/status_with_server_api.test.js +0 -60
- package/dist/runtime/__tests__/agent.test.js +0 -95
- package/dist/runtime/__tests__/agent_memory_limit.test.js +0 -61
- package/dist/runtime/__tests__/agent_persistence.test.js +0 -154
- package/dist/runtime/__tests__/manual_santi_verify.js +0 -55
- package/dist/runtime/agent.js +0 -172
- package/dist/runtime/audio-agent.js +0 -55
- package/dist/runtime/santi/contracts.js +0 -1
- package/dist/runtime/santi/middleware.js +0 -61
- package/dist/runtime/santi/santi.js +0 -109
- package/dist/runtime/santi/store.js +0 -158
- package/dist/runtime/tools/__tests__/factory.test.js +0 -42
package/dist/runtime/oracle.js
CHANGED
|
@@ -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();
|
package/dist/ui/index.html
CHANGED
|
@@ -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
|
-
|
|
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});
|